WEBVTT

1
00:00:01.080 --> 00:00:04.799
How'd you like to listen to dot
net rocks with no ads? Easy?

2
00:00:05.360 --> 00:00:09.480
Become a patron for just five dollars
a month. You get access to a

3
00:00:09.480 --> 00:00:14.279
private RSS feed where all the shows
have no ads. Twenty dollars a month.

4
00:00:14.279 --> 00:00:18.440
We'll get you that and a special
dot net Rocks patron mug. Sign

5
00:00:18.519 --> 00:00:35.960
up now at Patreon dot dot NetRocks
dot com. Hey guess what, it's

6
00:00:36.000 --> 00:00:40.560
dot net rocks. I'm Carl Franklin
and I'm Richard Campbell here for your dot

7
00:00:40.679 --> 00:00:45.000
net edification, as we are every
week since two thousand and one, well

8
00:00:45.119 --> 00:00:47.880
almost every week two thousand and two, I think it was two thousand Did

9
00:00:47.920 --> 00:00:50.600
I say two thousand and one?
Yeah, yes, I'm at two thousand

10
00:00:50.640 --> 00:00:53.439
and two. How silly of me, and I wasn't even there and I

11
00:00:53.520 --> 00:01:00.600
know, right what's wrong here?
Okay, So thanks again, and we

12
00:01:00.679 --> 00:01:03.640
have some good stuff coming up today. Nick Randolph is here and we're talking

13
00:01:03.680 --> 00:01:07.920
about who Know and other things.
And Richard, how are you, my

14
00:01:08.040 --> 00:01:11.920
friend? I'm good. I really
want you to get into your better know

15
00:01:11.120 --> 00:01:17.439
because I have comments on it,
so very cool. As I've been working

16
00:01:17.480 --> 00:01:21.840
on some home assistant stuff which should
not surprise you, knowing me okay,

17
00:01:22.640 --> 00:01:26.680
and it relates all right, so
let's roll crazy music for better no framework

18
00:01:26.760 --> 00:01:36.760
awesome? All right, man,
what do you got? I think I

19
00:01:36.799 --> 00:01:41.799
know so not that you don't know. Yeah. So this is from Danny

20
00:01:41.879 --> 00:01:47.920
Avila and it's a GitHub repo called
libra chat l I, b R E

21
00:01:48.400 --> 00:01:57.040
chat And the explanation is enhanced chat
GPT clone features, open Ai, GPT

22
00:01:57.280 --> 00:02:04.120
for vision bing and THROP, open
router, Google, Gemini AI model switching,

23
00:02:04.879 --> 00:02:10.159
message search, lang chain, dal
E three chat GPT plugins, Open

24
00:02:10.199 --> 00:02:15.800
AI functions, secure multi user system
presets. It's completely open source for self

25
00:02:15.800 --> 00:02:20.840
hosting, more features and development,
film and eleven. So this is the

26
00:02:22.159 --> 00:02:27.319
sort of hip thing these days,
is to host your own GPT engine in

27
00:02:27.400 --> 00:02:30.240
one form another. Although it sounds
like it does, does it actually call

28
00:02:30.280 --> 00:02:34.159
out all these different services? It
looks like it calls out. Yeah,

29
00:02:34.199 --> 00:02:37.560
it's sort of like the one place
that you can put your prompts through and

30
00:02:37.599 --> 00:02:40.280
then it calls out to all these
different services with API keys. That's I

31
00:02:40.319 --> 00:02:43.439
don't know. I haven't run it, but that's what it looks like to

32
00:02:43.479 --> 00:02:45.360
me. Yeah, it does look
like that's what it's doing is doing.

33
00:02:45.520 --> 00:02:52.000
You can go to the per call
apikes, which I've also done. Yeah,

34
00:02:52.039 --> 00:02:54.039
in home and new house, I
a sture. We've had this house

35
00:02:54.039 --> 00:02:57.520
for years, and I put in
some simple things for when it was a

36
00:02:57.560 --> 00:03:00.680
rental house, so how to manage
it. But now that it's ma place,

37
00:03:00.879 --> 00:03:05.400
you know, things are getting a
little more sophisticated. And one of

38
00:03:05.439 --> 00:03:10.080
the features that was popular for us
is voice control. And the voice control

39
00:03:10.080 --> 00:03:14.599
systems were typically done through Google or
Amazon, both of which are not that

40
00:03:14.719 --> 00:03:17.879
good and seem to be going away
like they're both kind of failures. Do

41
00:03:17.919 --> 00:03:21.919
you remember when they were awesome?
Yeah, you know, and we kind

42
00:03:21.960 --> 00:03:24.960
of laughed at them. Oh isn't
that funny? You know she thought,

43
00:03:25.000 --> 00:03:29.319
I said, you know, mud
raker when I sent something, I was

44
00:03:29.400 --> 00:03:30.960
yeah, yeah, yeah, totally
right like that. That and then and

45
00:03:31.039 --> 00:03:36.280
so ha. Last year in twenty
twenty three, had this big open source

46
00:03:36.319 --> 00:03:40.240
initiative to do their own voice systems
that would be independent of those vendors of

47
00:03:40.280 --> 00:03:44.879
the of the big providers, which
is a big movement in a change general

48
00:03:44.960 --> 00:03:47.800
is to have everything hosted internally,
and so folks have already done extensions to

49
00:03:47.879 --> 00:03:53.479
it to access things like open ai'. So yeah, because the local recognizers

50
00:03:53.439 --> 00:03:57.360
are only so good, and I
could make them better with more compute,

51
00:03:57.479 --> 00:03:59.800
Like that's one of the things that's
like switch up to higher and hardware.

52
00:04:00.199 --> 00:04:01.759
But just to see if it would
really make a difference, I set up

53
00:04:01.759 --> 00:04:08.719
my open ai a PI account and
hooked it in. And the the problem

54
00:04:08.759 --> 00:04:12.439
is you're used to saying very simple
phrases to h A to do stuff right

55
00:04:12.560 --> 00:04:14.560
now. The fact that you can
say I watched you this, this,

56
00:04:14.560 --> 00:04:16.480
this, this, and this right
and it goes all right, I did

57
00:04:16.480 --> 00:04:20.360
this, this, this, this
is this dude, It's like it's kind

58
00:04:20.399 --> 00:04:24.800
of scary. Yeah, so and
once the boss is using it, you

59
00:04:24.839 --> 00:04:28.560
know it's going to stay right.
So yeah, of course, of course

60
00:04:28.959 --> 00:04:31.959
I was just looking at the math
and for using I'm using GPT three plus

61
00:04:32.000 --> 00:04:36.079
through open a AI a P I
cost me about a dollar a month.

62
00:04:36.360 --> 00:04:39.959
It's not bad, pretty easy.
I mean, because you're not using it

63
00:04:40.000 --> 00:04:42.160
all the time, you're just no, you're using it only when you need

64
00:04:42.199 --> 00:04:46.360
to interact, and it just doesn't
cost that much, you know, realistically.

65
00:04:46.439 --> 00:04:49.160
Yeah, I got used to chat
GPT on my phone. I could

66
00:04:49.199 --> 00:04:53.399
just pull up with a voice interface. I gotta ask it anything, and

67
00:04:53.439 --> 00:04:59.319
it, you know, has this
great understanding if you will, and it

68
00:04:59.319 --> 00:05:02.079
does great re sponsors. But then
I get used to that, and I

69
00:05:02.160 --> 00:05:06.759
say to the one who starts with
a something that's a little more complex,

70
00:05:08.000 --> 00:05:12.879
and it just goes I'm sorry,
yeah, oh yes, right, I'm

71
00:05:12.959 --> 00:05:18.199
talking to farr chat device. So
so these things are going away, you

72
00:05:18.279 --> 00:05:20.680
say, I mean, I kind
of knew they would, but I thought

73
00:05:20.680 --> 00:05:25.480
I would have thought Amazon would have, you know, said now with GPT

74
00:05:25.800 --> 00:05:28.600
or now with open Ai. Yeah, you wonder if they will. Of

75
00:05:28.680 --> 00:05:30.160
course, then they have to go
to a vendor that you know, supports

76
00:05:30.160 --> 00:05:32.839
someone else. Like now you get
to the reality. Let's face it,

77
00:05:32.879 --> 00:05:36.319
that product that Amazon made and we're
not saying it's name, so we don't

78
00:05:36.319 --> 00:05:40.439
make people unhappy. Right. We
got in trouble for that once, We've

79
00:05:40.439 --> 00:05:44.480
gotten in trouble for that before.
Was originally built to sell more stuff on

80
00:05:44.519 --> 00:05:46.959
Amazon, right right, I mean
they said as much. They basically gave

81
00:05:46.959 --> 00:05:49.879
away the hardware for costs because they
presume that you would say, hey,

82
00:05:50.160 --> 00:05:54.000
you know, get me more laundry
soap, that kind of thing, which

83
00:05:54.120 --> 00:05:57.319
largely people didn't do. Didn't do
it, and back you know, a

84
00:05:57.360 --> 00:06:00.120
couple of three years ago, Amazon
basically mane of this is like, we

85
00:06:00.160 --> 00:06:02.839
spent billions on this thing, it's
not paying for itself. We're going to

86
00:06:02.879 --> 00:06:08.519
be cutting back. And the Google
devices are even weirder because Google didn't even

87
00:06:08.600 --> 00:06:12.360
have that mechanism other than it was
just more search information. It was just

88
00:06:12.399 --> 00:06:15.560
more corporate spying. Effectively, there
was no real incentive for them, and

89
00:06:15.600 --> 00:06:17.759
they said the same thing. It's
like, this is not working out for

90
00:06:17.839 --> 00:06:20.560
us. We're going to cut it
back. Just before you know, within

91
00:06:20.600 --> 00:06:26.000
a year or two, then we
have this breakthrough with open AI and language

92
00:06:26.160 --> 00:06:30.319
fundamentally transforms language interfaces anyway. Now
it's a scramble to se who's going to

93
00:06:30.319 --> 00:06:34.040
implement what. Meantime, you know, Microsoft's kind of laughing here. All

94
00:06:34.079 --> 00:06:38.240
that open a stuff runs on Azure, so it's like, oh, if

95
00:06:38.240 --> 00:06:43.600
you're going to use it, come
on down and need some EMPA. So,

96
00:06:43.720 --> 00:06:45.560
I mean, it's a crazy time
for all of us, There's no

97
00:06:45.600 --> 00:06:47.959
two ways about it. But I
am finding you know, I find I

98
00:06:48.120 --> 00:06:53.680
use get hub copilot a lot and
having it added into Aha, Now I'm

99
00:06:53.720 --> 00:06:56.720
going to look at can I make
it totally inside the house right like it's

100
00:06:56.759 --> 00:07:00.399
all especially here or we're battling outages
all the time, it's like, will

101
00:07:00.439 --> 00:07:02.879
let's function without the Internet? Like
can your smart home function without the Internet?

102
00:07:02.879 --> 00:07:05.360
And that's the goal always is to
get to that point. Well,

103
00:07:05.399 --> 00:07:11.920
at least a smart device, right, a smart a Amazon thing like that

104
00:07:12.000 --> 00:07:15.519
you can actually use, would be
really good. Anyway, check out librachat.

105
00:07:15.639 --> 00:07:18.319
There's the link there. But if
Ferry company to just speak at,

106
00:07:18.399 --> 00:07:24.319
it's getub dot com slash Danny Dash
a vila a v I la slash librachat.

107
00:07:24.319 --> 00:07:27.079
Who's talking to us? Richard Grady
comments off the show sixteen eighty nine,

108
00:07:27.120 --> 00:07:30.279
which is the last time I think
we talked about who knows with Kenzie

109
00:07:30.319 --> 00:07:35.319
Whalen, Like there's a while ago
who used to be with Uno and we

110
00:07:35.319 --> 00:07:39.560
were talking about building apps. So
that's back in May of twenty twenty,

111
00:07:39.600 --> 00:07:44.759
hence the you know show number and
this particular comment from that time. This

112
00:07:44.800 --> 00:07:46.759
is from Devin Global, who's a
longtime listener as well. Hey Devin,

113
00:07:47.160 --> 00:07:51.759
Hey, and Devinnead is very concrete
comment. He says, the promise of

114
00:07:51.759 --> 00:07:56.000
cross platform tools is great, build
once, run everywhere. Boy, we've

115
00:07:56.000 --> 00:07:58.680
been telling ourselves that live for a
while. Yeah, that's right, ohly

116
00:07:58.800 --> 00:08:03.279
Man, Like you know zamor Informs
and now dot net Maui. You get

117
00:08:03.279 --> 00:08:07.240
the timing rights back in twenty twenty, allowing smaller teams a much broader reach.

118
00:08:07.399 --> 00:08:11.360
There's one kind of expertise that seems
to get glossed over, and that's

119
00:08:11.480 --> 00:08:15.800
all of the nuances in the native
design language. Sure I can use these

120
00:08:15.879 --> 00:08:18.480
tools to make control look native across
several platforms. However, it still seems

121
00:08:18.480 --> 00:08:22.759
like you need an expert in iOS, Android and Windows UX to show where

122
00:08:22.839 --> 00:08:28.000
and how to use those controls in
a way the user expects. There's an

123
00:08:28.000 --> 00:08:31.320
incredible opportunity for these cross platform tools
to help developers quote fall into the pit

124
00:08:31.360 --> 00:08:37.240
of success by using the right thing
on each platform. Also, it'd be

125
00:08:37.320 --> 00:08:41.399
nice to see cross platform documentation.
It helps developers understand things from the perspective

126
00:08:41.399 --> 00:08:45.360
of a cross platform developer instead of
as a single platform developer, as each

127
00:08:45.639 --> 00:08:50.759
vendor seems to assume. A good
start is the documentation from the Zamoran team.

128
00:08:50.879 --> 00:08:54.519
In many cases, their docks of
iosapis is better than the ones that

129
00:08:54.559 --> 00:08:58.120
are provided by Apple because they had
to reverse engineer a lot of that documentations

130
00:08:58.720 --> 00:09:03.039
back the day too. There are
credible things on the horizon and I beg

131
00:09:03.120 --> 00:09:11.200
the tool vendors not to let JavaScript
win this one. Please please, because

132
00:09:11.480 --> 00:09:16.320
when you talk about the original cross
platform language, man like that JavaScript has

133
00:09:16.440 --> 00:09:20.440
been there a long long time.
Yeah, or so for better or worse.

134
00:09:20.240 --> 00:09:24.120
I know Nick's got some great comments
on this, so we're gonna we'll

135
00:09:24.159 --> 00:09:26.320
do his intro with Devin. Hang
in there. We're gonna have some comments

136
00:09:26.399 --> 00:09:30.399
for you on this and a copy
music Coby is on its way to you,

137
00:09:30.440 --> 00:09:31.399
and if you'd like a copy used
to Cobey, I write a comment

138
00:09:31.440 --> 00:09:35.639
on the website at dot now rocks
dot com or on the facebooks you publish

139
00:09:35.639 --> 00:09:37.480
every show there, and if you
comment there and a real the show,

140
00:09:37.519 --> 00:09:39.320
we'll leend you copy music to Goby. And you can follow us on Twitter

141
00:09:39.399 --> 00:09:43.440
or ex or whatever the hell they're
calling it today, but you can also

142
00:09:43.480 --> 00:09:46.360
follow us on mastadon I'm at Carl
Franklin at tech hub dot social, and

143
00:09:46.399 --> 00:09:50.080
I'm Rich Campbell at masadon social sent
us dute, Okay, let's bring on

144
00:09:50.159 --> 00:09:54.919
Nick Randolph. Nick currently runs built
to Rome, which focuses on building rich

145
00:09:54.960 --> 00:10:01.159
mobile applications. Nick's been identified as
a Microsoft MVP and recognition of his work

146
00:10:01.159 --> 00:10:05.600
and expertise with the Microsoft Application platforms. He's still an active contributor in the

147
00:10:05.600 --> 00:10:11.960
device application development space via his blog
at Nisnettravels dot built to Rome dot Com.

148
00:10:11.320 --> 00:10:15.360
Put a link to that on the
show page too. Nick has been

149
00:10:15.360 --> 00:10:18.559
invited to present at a variety of
events, including Techhead and I Night Australia

150
00:10:18.600 --> 00:10:24.519
and New Zealand, DDD, NDC, and local user groups. He's also

151
00:10:24.600 --> 00:10:28.320
authored multiple books on Visual Studio Windows
development and helped judge multiple world finals for

152
00:10:28.360 --> 00:10:33.600
the Imagined Cup. Nick has worked
on numerous mobile applications and has helped hundreds

153
00:10:33.600 --> 00:10:37.799
of developers build their own mobile applications. Nick has been involved with apps for

154
00:10:37.840 --> 00:10:43.799
well known brands such as Domain dot
com, dot Au, ninesman AFL,

155
00:10:43.000 --> 00:10:48.799
NRL, Quantis, JB, hi
Fi, nab Stand, and boost Juice,

156
00:10:48.320 --> 00:10:52.720
and is also working on the UNO
platform. What is your uh,

157
00:10:54.159 --> 00:10:56.919
what's your role on UNO because it's
not in your bio. Yeah, my

158
00:10:56.960 --> 00:11:01.159
bio is basically the one that I
used to build your OW and so I

159
00:11:01.200 --> 00:11:05.159
mean I am working full time for
the Owner platform and so as part of

160
00:11:05.159 --> 00:11:11.120
that, I wanted the sort of
the senior team there, and there's a

161
00:11:11.200 --> 00:11:16.200
huge amount of stuff that we're working
on to basically accelerate developing on a cross

162
00:11:16.240 --> 00:11:20.799
platform, and so I'm across quite
a lot of the day to day stuff

163
00:11:20.799 --> 00:11:22.679
there, which is really awesome to
see, very cool. So for those

164
00:11:22.720 --> 00:11:28.039
who don't know about UNO, or
don't remember it or whatever, I can

165
00:11:28.200 --> 00:11:35.039
maybe give you the elevator pitch it. It's sort of it's for it's sort

166
00:11:35.039 --> 00:11:43.039
of zamorin right and MAUI, but
instead of using the zamorin flavor of Zamal,

167
00:11:43.679 --> 00:11:50.279
you're actually building your apps to win
those Universal platform Is that right?

168
00:11:50.480 --> 00:11:54.200
Well, it used to be.
Yeah, so what used to be the

169
00:11:54.279 --> 00:11:58.519
Universal or UWP which is now sort
of evolved, or you know Microsoft's V

170
00:11:58.679 --> 00:12:01.679
two version of it, which is
when u I three and the winn app

171
00:12:01.799 --> 00:12:07.159
SDK. So yeah, So UNO
is quite a lot of things, and

172
00:12:07.320 --> 00:12:11.360
the name kind of alludes to that. So the un platform, but definitely

173
00:12:11.399 --> 00:12:16.159
you're right, at the heart of
it is a cross platform and framework UNO

174
00:12:16.159 --> 00:12:22.279
Core that is essentially taking the API
set that comes with when you I or

175
00:12:22.279 --> 00:12:28.720
win app STK and making it available
across all of the other platforms. And

176
00:12:28.759 --> 00:12:31.840
so the goal there is that you
know, wherever dot net will run the

177
00:12:31.919 --> 00:12:35.519
un platform will run. What's different
about this in MAUI is that Maui seems

178
00:12:35.519 --> 00:12:41.799
to be backing away from when UI
or just like not maybe backing away from

179
00:12:41.840 --> 00:12:46.399
it, but the focus isn't on
the Windows desktop experience with MAUI, even

180
00:12:46.399 --> 00:12:50.240
though it does work, whereas you
know that that's what you sort of start

181
00:12:50.279 --> 00:12:54.039
with on the UNER platform, is
that right? Yeah? And so again

182
00:12:54.080 --> 00:12:58.080
this comes down to the heritage of
all of these cross platform tools, is

183
00:12:58.080 --> 00:13:01.399
they all come with their own sort
of therefore own point of origin. So

184
00:13:01.720 --> 00:13:05.360
in the case of dot m MAUI, obviously that came from Zarat forms which

185
00:13:05.399 --> 00:13:09.879
came from Zarath, and so their
heritage is in the Zaron platforms, and

186
00:13:09.919 --> 00:13:16.159
so they've evolved as such an abstraction
over those and then they integrated Windows or

187
00:13:16.240 --> 00:13:20.279
UWP and with now it's now based
on when you I three. But they've

188
00:13:20.279 --> 00:13:24.440
got their own abstraction there and their
own direction that they're then taking that to

189
00:13:24.559 --> 00:13:31.000
go cross platform. And yet bringing
on board Desktop for them has been something

190
00:13:31.000 --> 00:13:35.200
that they brought into the fold,
whereas the platform team have almost come from

191
00:13:35.200 --> 00:13:39.120
the other direction. We've come from
a Windows centric API set and making that

192
00:13:39.279 --> 00:13:45.679
available cross platform, and so you
know, part of the platform approach is

193
00:13:45.720 --> 00:13:48.840
that we have extra things like the
toolkit, which allows us to take what

194
00:13:50.039 --> 00:13:54.600
is essentially a Windows framework and make
it cross platform in the sense of and

195
00:13:54.960 --> 00:13:58.720
you alluded to this in the introduction
of the reader's comments, is that,

196
00:13:58.919 --> 00:14:01.519
you know, if you're building cross
platform, when you're building for iOS or

197
00:14:01.559 --> 00:14:05.919
androids, you kind of wanted the
app to feel natively at home on there,

198
00:14:05.919 --> 00:14:09.840
so you'd expect things like a navigation
bar, or you'd expect, you

199
00:14:09.840 --> 00:14:13.279
know, the swipe interactions and things
like that. And that's where the platform

200
00:14:13.360 --> 00:14:18.519
part really comes into it. Isn't
there a philosophical point here about do you

201
00:14:18.679 --> 00:14:22.279
maybe your app look neative to the
device versus make the app consistent across all

202
00:14:22.320 --> 00:14:26.399
devices. Yeah? Absolutely, like
the Facebook apps kind of the same no

203
00:14:26.399 --> 00:14:28.399
matter whether you're using iOS or Android
or anything else. Yeah. So,

204
00:14:28.399 --> 00:14:31.919
so if we look back at the
sort of the origins of cross platform,

205
00:14:31.960 --> 00:14:37.600
particularly in the dot net space and
another technologies were similar to this, is

206
00:14:37.639 --> 00:14:41.039
that when you know, this framework
came about, there was definitely a philosophy

207
00:14:41.159 --> 00:14:45.799
of make it look at home on
the device. So for Android it would

208
00:14:45.799 --> 00:14:50.080
be material, for Windows it would
be fluent for ioscoop Patino, and yet

209
00:14:50.080 --> 00:14:56.240
that that kind of philosophy it runs
into problems because designers essentially have to design

210
00:14:56.279 --> 00:15:01.840
things three times and then you're stuck
with what looks like every other app on

211
00:15:01.879 --> 00:15:05.279
the platform and not really able to
apply your own company's brand very well to

212
00:15:05.360 --> 00:15:09.720
it or in a consistent way.
And so what we found is that the

213
00:15:09.799 --> 00:15:13.320
sort of the design philosophy has sort
of evolved and shipped, and as you

214
00:15:13.360 --> 00:15:16.639
said, what you kind of see
today is that the brand overreach, the

215
00:15:16.759 --> 00:15:22.480
overwrites everything in the sense that you
know your brand is more important than necessarily

216
00:15:22.639 --> 00:15:26.360
making you look one hundred percent like
alioais app. I haven't used, you

217
00:15:26.519 --> 00:15:31.679
know, but I have used Maui
a lot, and I find that if

218
00:15:31.720 --> 00:15:37.639
you go down the Zamal route with
Maui, you find you run in pretty

219
00:15:37.720 --> 00:15:43.080
darn quickly to things that aren't consistent
across the platforms. And something that works

220
00:15:43.279 --> 00:15:48.360
in you know, in Windows desktop
or Mac desktop and might even work an

221
00:15:48.360 --> 00:15:52.519
Android, doesn't work in iOS and
oh it's because you have to wait because

222
00:15:52.519 --> 00:15:56.480
they're working on that, right And
so I got tired of that. And

223
00:15:56.799 --> 00:16:03.039
because I've been doing Blazer since its
inception, I use Blazer as my UI

224
00:16:03.559 --> 00:16:07.360
with Maui. So it's kind of
like the hybrid approach. Yeah, because

225
00:16:07.360 --> 00:16:11.720
as Richard said when he was reading
the comment, you know, JavaScript is

226
00:16:11.720 --> 00:16:17.559
the original cross platform language, and
what is Blazer except the c sharpness of

227
00:16:17.720 --> 00:16:22.679
JavaScript and with all the dom which
is the real cross platform thing. Right,

228
00:16:22.120 --> 00:16:27.960
the browser people have figured out how
to make their platform cross platform and

229
00:16:29.080 --> 00:16:36.639
consistent. And so I find there's
more consistency with Blazer in Maui Native for

230
00:16:36.799 --> 00:16:41.720
mobile apps, right, hybrid apps. Then I don't run into these little

231
00:16:41.759 --> 00:16:45.080
problems that just seem to come out
of nowhere, and they can really put

232
00:16:45.080 --> 00:16:48.919
a dent in your schedule, you
know for sure. And the browser wars,

233
00:16:49.000 --> 00:16:52.039
you know, it's taken them decades
to get to get it to a

234
00:16:52.080 --> 00:16:56.679
point where there are less inconsistencies between
browsers, between platforms, et cetera.

235
00:16:56.879 --> 00:17:03.799
Right, Yeah, emphasis on less, yes, exactly, Yeah, many

236
00:17:03.919 --> 00:17:07.599
less though there are. And and
you know, from a Blazer perspective,

237
00:17:07.599 --> 00:17:11.480
a lot of that those inconsistencies I
had to buy the by the technology,

238
00:17:11.240 --> 00:17:17.680
and so the integration and the hybrid
approach there is a valid approach. Now,

239
00:17:17.920 --> 00:17:19.559
do you get the same level of
performance, do you get the same

240
00:17:19.640 --> 00:17:25.319
level of device integration. You know, those are all questions that come to

241
00:17:25.359 --> 00:17:27.799
it. Well, I get the
same level of device integration, but in

242
00:17:29.000 --> 00:17:33.839
performance, all I care about is
if it's gonna be good enough, right,

243
00:17:33.920 --> 00:17:37.799
Yeah, if the user doesn't care, you know, and yeah,

244
00:17:37.839 --> 00:17:41.240
yeah, you're going to be using
more memory, so you know, lower

245
00:17:41.279 --> 00:17:45.720
memory, lower power devices may have
an issue. But anyway, I didn't

246
00:17:45.720 --> 00:17:49.200
bring that up to diss you know, it's just that I don't know about

247
00:17:49.240 --> 00:17:55.480
it. So is there a sure
and is there a hybrid mode for so

248
00:17:55.480 --> 00:17:59.839
so we can support doing web content. So there is an approach to that.

249
00:18:00.079 --> 00:18:03.799
And one of the things that we're
definitely considering and you know, working

250
00:18:03.799 --> 00:18:07.920
with our customers on, is prioritization
around that hybrid level of support that for

251
00:18:08.000 --> 00:18:12.079
not only Blazer, but other you
know, web components, whether it building

252
00:18:12.160 --> 00:18:17.839
Angular or React, and they will
make sense to integrate into the app platform.

253
00:18:17.880 --> 00:18:21.440
And from our perspective, we would
definitely like to see a more you

254
00:18:21.480 --> 00:18:26.200
know, an approach that goes beyond
just including Blazer. But just to just

255
00:18:26.240 --> 00:18:30.720
coming back to the the you know, the the inconsistencies I should say,

256
00:18:30.759 --> 00:18:37.200
between different technology and different platforms.
One of the philosophies behind the platform is

257
00:18:37.599 --> 00:18:41.599
PicTel perfect everywhere. And so the
idea is that when you build your app

258
00:18:41.599 --> 00:18:44.559
for one platform or you you know, whether you're being you know, working

259
00:18:44.559 --> 00:18:49.519
in the iOS simulator or the Android
emulator or on native Windows, once you

260
00:18:49.640 --> 00:18:53.319
build it, you should have the
same render experience on all of the platforms.

261
00:18:55.160 --> 00:18:57.799
And so you know that, and
that includes the web and Linux and

262
00:18:57.839 --> 00:19:02.839
stuff. You know that they're is
a wealth of different platforms that are available

263
00:19:02.880 --> 00:19:04.960
using the UNER platform, and the
goal is to make sure that they will

264
00:19:04.960 --> 00:19:11.960
render pixel perfect. And that's not
notwithstanding the fact that we are still using

265
00:19:11.000 --> 00:19:15.039
the underlying technology to render. So
what I mean by that is, you

266
00:19:15.079 --> 00:19:21.079
know, on on iOS we're using
you know, the native widgets on iOS.

267
00:19:21.319 --> 00:19:25.440
On Android, the same on the
Web we're using phegmal rendering yep,

268
00:19:25.519 --> 00:19:30.960
exactly, And so you do get
the native capabilities around you know, interaction

269
00:19:30.359 --> 00:19:33.960
around accessibility, so you know,
doing things like text to voice. Those

270
00:19:34.000 --> 00:19:37.839
are important from the accessibility perspective,
and you get all of those because we're

271
00:19:37.920 --> 00:19:42.119
using the device components, even though
we've made sure that we're getting a pixel

272
00:19:42.119 --> 00:19:48.319
perfect rendering between the different platforms.
Yeah, and the other side of pixel

273
00:19:48.359 --> 00:19:53.640
perfect rendering is perfect behavior application.
I mean that's maybe even more important when

274
00:19:53.680 --> 00:20:00.359
I expand you know, a multiple
hierarchy tree or less through whatever, is

275
00:20:00.400 --> 00:20:04.599
it going to behave the same way
on iOS as it does and Android.

276
00:20:04.920 --> 00:20:11.160
This is just one thing I'm thinking
about from you know, lists of lists

277
00:20:11.200 --> 00:20:15.640
within lists and next things have been
a real problem in Maui's AMML last year.

278
00:20:15.759 --> 00:20:19.400
Yeah, and you know, performance
is one of those things that we

279
00:20:19.519 --> 00:20:23.599
keep on coming back to and try
to continue to improve and work on because

280
00:20:23.920 --> 00:20:29.160
you know that because you've got that
obstruction layer, you know, what works

281
00:20:29.160 --> 00:20:32.960
on one platform that doesn't necessarily work
the same one other platforms. So there

282
00:20:33.400 --> 00:20:37.599
is a you know, a continual
effort to make sure that we're performing the

283
00:20:37.640 --> 00:20:41.079
best we can or all platforms.
And so yeah, I think, kind

284
00:20:41.079 --> 00:20:45.680
of calling back to Devon's comment on
all of this, I think there's a

285
00:20:45.720 --> 00:20:52.160
broader idea of are you building this
for internal use versus showing it to the

286
00:20:52.200 --> 00:20:55.640
public. I don't know what your
customer base looks like, nick Like,

287
00:20:55.839 --> 00:20:59.519
because I do think there's a very
different attitude to hey, we need to

288
00:20:59.519 --> 00:21:03.519
make this work for the company on
their mobile devices versus we want the public

289
00:21:03.559 --> 00:21:07.880
to use them. Yeah. Look, absolutely, And what we saw very

290
00:21:07.359 --> 00:21:11.359
very early days of sort of mobile
apps is that the companies would invest no

291
00:21:11.519 --> 00:21:17.960
cycles into anything design related and what
they found is the attrition or the usage

292
00:21:17.960 --> 00:21:21.440
of those of as apps are very
low. So these days, with something

293
00:21:21.480 --> 00:21:23.799
like the Inner Platform, you could
still rapidly build out an application. And

294
00:21:23.839 --> 00:21:27.559
we'll talk a little bit more about
the various Upper platform components that help with

295
00:21:27.640 --> 00:21:33.400
that process. But you can very
rapidly build out an application that looks really

296
00:21:33.400 --> 00:21:37.640
good, it's pixel perfect on every
device, and yet is rolled out really

297
00:21:37.720 --> 00:21:41.880
quickly for the enterprise. Now that's
not to say that you couldn't build a

298
00:21:41.920 --> 00:21:47.599
facebookly world style application or quality level
you know, including animations and things like

299
00:21:47.640 --> 00:21:49.920
that with the Inner Platform. But
what we do see is that a lot

300
00:21:49.920 --> 00:21:53.880
of enterprises that are coming to the
Inner Platform because of that rapid ability to

301
00:21:53.960 --> 00:21:59.079
rapidly roll out applications. And is
it for the internal use apps or are

302
00:21:59.119 --> 00:22:03.599
they thinking about the public facing apps. It can be for both, definitely,

303
00:22:03.599 --> 00:22:06.799
for sure, I'm with you,
It's just I would think that requirements

304
00:22:06.799 --> 00:22:10.599
are different. Look they are,
and for you know, what we refer

305
00:22:10.680 --> 00:22:15.319
to as typically consumer facing apps,
a lot of those will have fairly heavy

306
00:22:15.400 --> 00:22:18.960
graphic kind of requirements on them,
so you know, they'll have very intricate

307
00:22:19.000 --> 00:22:23.480
transitions. You know, some of
some of the apps like Facebook and Twitter

308
00:22:23.480 --> 00:22:27.279
are actually credibly simple from a transitions
perspective. But then you can look at

309
00:22:27.319 --> 00:22:33.920
some of the more creative shopping based
applications and they've got some very sophisticated animations

310
00:22:33.000 --> 00:22:37.960
and things like that, And those
ones are ones where we will prioritize,

311
00:22:37.039 --> 00:22:41.400
you know, the different animations and
different flows as they come in from our

312
00:22:41.440 --> 00:22:47.400
customer requirements. But definitely I'm in
the you know, for people who or

313
00:22:47.440 --> 00:22:51.480
for companies that want to build out
an application, even if it's consumer facing,

314
00:22:51.720 --> 00:22:53.359
the inner platform is a great choice
and a great starting point for them,

315
00:22:53.519 --> 00:22:59.960
right, I mean, and you're
mostly describing the esthetic elements that consume

316
00:23:00.240 --> 00:23:02.799
are going to want a really good
looking up but it's worth putting time in

317
00:23:02.799 --> 00:23:07.759
it where your employees can live with
a mediocre interface as long as it's functional.

318
00:23:08.640 --> 00:23:11.559
Actually, my Firm Media thought was, well, we know that these

319
00:23:11.720 --> 00:23:15.680
cross platform frameworks have an overhead,
their apps tend to be larger and so

320
00:23:15.759 --> 00:23:18.920
forth, but I wonder if the
consumer cares at all. Yeah, like

321
00:23:19.000 --> 00:23:25.039
who looks at memory usage in an
app except a geek. I think only

322
00:23:25.079 --> 00:23:27.599
three or four years ago, you
know, it's size of app and download

323
00:23:27.599 --> 00:23:32.839
speeds and stuff like that was super
critical. I think with modern devices particularly

324
00:23:32.880 --> 00:23:37.240
and like the you know, the
developed world, we don't tend to focus

325
00:23:37.319 --> 00:23:41.920
on those as much. Definitely,
if you're targeting you know, areas where

326
00:23:41.960 --> 00:23:45.759
there's low coverage and devices will be
typically you know, a generational too older,

327
00:23:45.960 --> 00:23:49.000
then that can still be a priority. And yeah, there's definitely one

328
00:23:49.039 --> 00:23:53.079
area where you know native will win
out. So if you build the pure

329
00:23:53.160 --> 00:23:56.839
native tools, you'll always be able
to get a smaller run time, of

330
00:23:56.839 --> 00:23:59.799
smaller footprint, et cetera. Yeah, I would argue when you get down

331
00:23:59.799 --> 00:24:03.960
to old bandwidth and so forth,
you switch to web like they're not going

332
00:24:03.960 --> 00:24:07.799
to run the client anyway. Possibly, although you know, when you're talking

333
00:24:07.839 --> 00:24:11.839
about low bandwidth, you know,
if you're going to rural areas, web's

334
00:24:11.920 --> 00:24:15.079
not an option because you don't have
any local caching and you don't have any

335
00:24:15.440 --> 00:24:19.519
you know, off lines, right
and well PWA supposedly, but yeah you

336
00:24:19.559 --> 00:24:25.519
can. Yeah, it's just none
of it's good. All of it's bad.

337
00:24:25.720 --> 00:24:27.839
I was going to say Peter w
A. But the investment that you've

338
00:24:27.880 --> 00:24:30.519
been getting it to work on,
Peter wa, you could have built using

339
00:24:30.519 --> 00:24:36.400
the platform and have a full synchronization
solution. You just download my code from

340
00:24:36.400 --> 00:24:41.359
blazer train. Fair. But I
mean, but to your point that when

341
00:24:41.400 --> 00:24:45.799
it comes to disconnected scenarios, these
frameworks help a lot, and you know

342
00:24:47.039 --> 00:24:49.960
specifically, Yeah, and one of
the really interesting things about that is that

343
00:24:51.319 --> 00:24:55.680
you know, there are other technologies
out there, so Flutter and you know,

344
00:24:55.880 --> 00:24:59.480
cross platform frameworks that are out there. And one of the nice things

345
00:24:59.480 --> 00:25:03.079
that we've benefit it from being in
the Microsoft ecosystem is all of the libraries

346
00:25:03.359 --> 00:25:07.400
and technology and all of the open
source that goes on in terms of these

347
00:25:07.440 --> 00:25:11.319
things like synchronization frameworks, and you
know, people have got there's so much

348
00:25:11.359 --> 00:25:17.799
invested by Microsoft and third parties into
making such a broad ecosystem that we will

349
00:25:17.839 --> 00:25:21.279
benefit from. And so you know, if something's that's built for don Ed

350
00:25:21.319 --> 00:25:25.920
eight or seven, you can bring
into your UNO platform application just buyer and

351
00:25:26.000 --> 00:25:30.440
you get reference and it's just incredible
amount of stuff that just works. So

352
00:25:30.519 --> 00:25:33.559
yeah, it's an old estradation line. It's like it was easier to make

353
00:25:33.599 --> 00:25:37.680
connectivity everywhere than it was to make
a good disconnected line that was That was

354
00:25:37.880 --> 00:25:41.960
true twenty years ago and it's true
today. Yeah, you know, it's

355
00:25:41.000 --> 00:25:45.319
like, yeah, we just meet
their you know, starlink more Internet everywhere.

356
00:25:45.920 --> 00:25:49.000
I caught it with one of the
fellow MVPs probably a couple of weeks

357
00:25:49.039 --> 00:25:52.039
ago now, and we were reminiscing
about the old Pocket PC e days.

358
00:25:52.119 --> 00:25:56.680
And I swear that we are still
building this still tackling the same fundamental problems

359
00:25:56.799 --> 00:26:00.759
in terms of app development today that
we work fifteen sixteen years ago. You

360
00:26:00.799 --> 00:26:03.359
know, it's just incredible. I
mean, we have a better user experience

361
00:26:03.400 --> 00:26:07.640
and it's easier to use that al
to build an incredible you know, user

362
00:26:07.680 --> 00:26:12.079
interface, But fundamentally we're still solving
the same problems. Well, and it's

363
00:26:12.079 --> 00:26:15.599
still the same issue, which is
the customer couldn't care less about Crafts platform.

364
00:26:15.640 --> 00:26:18.279
It's only us that cares about The
customer just wants to work on their

365
00:26:18.319 --> 00:26:25.640
device. Absolutely yes. And this
is where the investment into technology such as

366
00:26:25.720 --> 00:26:30.759
web assembly is going to be really
interesting because and web assimbly not just in

367
00:26:30.799 --> 00:26:33.720
the browser, but also if you
think about the ability to run a web

368
00:26:33.720 --> 00:26:40.160
assembly app in a native in essentially
a sandbox on any device. That's kind

369
00:26:40.160 --> 00:26:42.079
of like an interesting story because now
all of a sudden, you back to

370
00:26:42.079 --> 00:26:45.640
your point about having it web technology
that now runs everywhere. If you can

371
00:26:45.680 --> 00:26:51.440
make it work in web assembly or
any language you could, yeah, exactly,

372
00:26:51.480 --> 00:26:53.240
you can now run it on any
piece of technology that's able to run

373
00:26:53.480 --> 00:26:57.559
you know, a sandbox web assembly, right, it's the universal well then

374
00:26:57.720 --> 00:27:03.720
the Nescent Universe, our Soul runtime
operating system. Yeah, yeah, will

375
00:27:03.160 --> 00:27:07.160
you know where it gets weird?
And I've had conversations with Sanderson on this.

376
00:27:07.359 --> 00:27:11.680
You know, over a whiskey or
two is at the edge, like

377
00:27:11.799 --> 00:27:15.759
on a CDN, I could be
running a w A container. So you

378
00:27:15.759 --> 00:27:18.519
know, headla, it's not the
client, it's not the server, it's

379
00:27:18.599 --> 00:27:22.680
in between. Yeah, and you
know he's already thought of all these things.

380
00:27:22.839 --> 00:27:25.400
Of course he has, and he
thought about it years ago, years

381
00:27:25.440 --> 00:27:27.599
ago, yeah, ten years ago. Like I'm pretty sure he's actually an

382
00:27:27.599 --> 00:27:33.799
alien and he's just come down to
help us, you know, but we

383
00:27:33.799 --> 00:27:37.599
should probably take a break. Yeah, let's do that. We'll be right

384
00:27:37.599 --> 00:27:45.240
back after these important messages and we're
back. It's dot net rocks on Carl

385
00:27:45.240 --> 00:27:49.039
Franklin. That's Richard Campbell, Hey, and we're talking to Nick Randolph about

386
00:27:49.039 --> 00:27:52.759
the UNO platform, the latest,
the greatest, the newest, which I

387
00:27:52.759 --> 00:27:56.880
don't think we've talked about all that
much yet. Actually, no, no,

388
00:27:56.680 --> 00:28:00.200
no, we've sort of been in
philosophy land and over here. So

389
00:28:00.279 --> 00:28:07.240
let's talk about We talked about the
philosophy around the core, but there's the

390
00:28:07.279 --> 00:28:10.759
platform, and you know, one
of the motivations behind the name is that,

391
00:28:11.200 --> 00:28:14.279
you know, it's all about building
you know, just not just the

392
00:28:14.319 --> 00:28:17.960
core, but all of the bits
that are developer needs, from design all

393
00:28:18.000 --> 00:28:21.279
the way through to publishing your app. And so you know, over the

394
00:28:21.319 --> 00:28:25.559
last you know, X number of
years we've been building not just the core,

395
00:28:25.640 --> 00:28:29.359
but there's things like the toolkit.
We've got a raft of extensions that

396
00:28:29.400 --> 00:28:32.640
are based on you know, what
Microsoft's done with the Microsoft Extensions, but

397
00:28:32.839 --> 00:28:37.279
tailor to building an UNO platform.
So you know, there's device specific feats

398
00:28:37.279 --> 00:28:41.359
and bits in that that we can
leverage our extensions. We've got support for

399
00:28:41.400 --> 00:28:44.400
sea shup markups, so you're not
just restricted to zamble anymore. You can

400
00:28:44.440 --> 00:28:48.960
now you know, use a very
fluent or structured c sharp markup language to

401
00:28:48.000 --> 00:28:52.680
basically create your apps that's very cool. Yeah, and again that's about breaking

402
00:28:52.680 --> 00:28:56.240
down the lane the learning that developers
have to go through to actually building apps.

403
00:28:56.319 --> 00:28:59.720
Right, you still need to understand, you know, things like what's

404
00:28:59.720 --> 00:29:03.119
a tech block and what's a button
and stuff like that. Sure you know

405
00:29:03.200 --> 00:29:07.200
you're not learning a you know,
a language to which was really designed for

406
00:29:07.519 --> 00:29:10.759
a tool. Right at the end
of the day, nobody likes writing zamle

407
00:29:11.200 --> 00:29:15.920
or XML. I mean, those
who are always tool orientedy technologies, even

408
00:29:15.920 --> 00:29:18.359
though some of them, like myself, just did get very fluent to be

409
00:29:18.400 --> 00:29:22.480
able to write them. But yeah, I mean, we now have incredible

410
00:29:22.480 --> 00:29:27.519
sea sharp markup, which which mirrors
the capability of z owl and yet it

411
00:29:27.519 --> 00:29:33.279
gives us this ability to write the
entire app just in C sharp and I

412
00:29:33.279 --> 00:29:34.640
mean, I certainly that's appealing to
folks. It's like, this is the

413
00:29:34.720 --> 00:29:38.400
language I know and I'm comfortable in. This is what my team knows,

414
00:29:38.440 --> 00:29:45.200
like as as little JavaScript as possible, please exactly, And we look,

415
00:29:45.200 --> 00:29:48.359
we get that feedback consistently and hence
the investment over the last twenty four months

416
00:29:48.799 --> 00:29:53.400
around bringing offerings like c sharp mark
up to the table. The other the

417
00:29:53.519 --> 00:29:57.079
really one development that we've been spending
a lot of time on is there is

418
00:29:57.119 --> 00:30:03.400
that gap between where designers finish and
where developers pick up. And so we've

419
00:30:03.440 --> 00:30:07.480
got a component that actually lives within
Figma and allows you to essentially export not

420
00:30:07.599 --> 00:30:11.039
just down but also cea sharp markups. So if you want to live in

421
00:30:11.039 --> 00:30:15.200
the sea sharp world, you can
just explore your design into Seashell markup,

422
00:30:15.480 --> 00:30:18.400
drop it into your app, and
off you go. And so that's we

423
00:30:18.480 --> 00:30:22.400
see that as quite an important tool
in breaking down that barrier between you know,

424
00:30:23.240 --> 00:30:29.000
the cognitive loss that gets that happened
between designers and where they were thinking

425
00:30:29.039 --> 00:30:32.559
about how things should look and stuff
like that, and the way you developers

426
00:30:32.599 --> 00:30:37.960
tend to put things together, which
we've won't be there right well, and

427
00:30:38.599 --> 00:30:41.640
I appreciate you bringing up Figma because
a couple of years ago it was a

428
00:30:41.759 --> 00:30:47.640
beloved tools like this is the way, and then Adobe showed up and we

429
00:30:47.759 --> 00:30:49.559
all kind of held our brows.
It's like, well, that's where good

430
00:30:49.599 --> 00:30:55.480
software goes to die. And now
they're not buying it, Like I feel

431
00:30:55.480 --> 00:30:57.599
like we're going to have a Figma
renaissance. Because the deal failed, they

432
00:30:57.599 --> 00:31:02.680
had to pay they had to pay
a billion bucks as a saddle because they

433
00:31:02.680 --> 00:31:04.240
couldn't buy it. So, Okay, I don't know what's going to happen

434
00:31:04.279 --> 00:31:07.079
to Figma now, but if I
was a designer, there's there's a lot

435
00:31:07.119 --> 00:31:11.240
of stuff. I'm partying like,
that's such great news. Yeah, there's

436
00:31:11.240 --> 00:31:14.599
a lots of having in the people
world. They've got, you know,

437
00:31:14.720 --> 00:31:19.160
a new dev mode and then again
they've they've identified that the one of their

438
00:31:19.200 --> 00:31:23.960
markets is this, you know,
ability for designers to create this app experience,

439
00:31:25.079 --> 00:31:27.400
not just single pages and web pages
and stuff like that, the whole

440
00:31:27.400 --> 00:31:33.000
app experiences and then be able to
pull out the resources and the assets from

441
00:31:33.039 --> 00:31:37.599
that in a way that it's consumable
for developers. And you hit only the

442
00:31:37.720 --> 00:31:40.599
key point here, which is how
many times is a designer finished with a

443
00:31:40.640 --> 00:31:42.359
design? Hey, the devs and
they're looking to go, well, we're

444
00:31:42.400 --> 00:31:48.519
not making that just so detached from
the tool set I've got and I think

445
00:31:48.559 --> 00:31:53.039
Thing was aware of the software development
of life cycle. Obviously they build their

446
00:31:53.039 --> 00:31:56.640
own tool but they're aware of it
at a at a general level because they're

447
00:31:56.680 --> 00:32:00.039
not just investing in the tools within
Figma, they're all working on things like

448
00:32:00.079 --> 00:32:06.160
design systems and so essentially what that
means is that they're making it so that

449
00:32:06.200 --> 00:32:10.000
you can export parts of Figma as
assets, so whether those be you know,

450
00:32:10.039 --> 00:32:15.359
your color assets, your style assets, your font assets in a way

451
00:32:15.440 --> 00:32:17.920
that can be consumed into things like
your cee iPods, right right, So

452
00:32:19.319 --> 00:32:22.480
you know that they're aware and they're
starting to think along the same lines as

453
00:32:22.480 --> 00:32:27.599
developers have beat for years, and
so UN is trying to leverage that and

454
00:32:27.640 --> 00:32:31.119
recognize that we need to be part
of that pipeline. There's definitely that moment

455
00:32:31.240 --> 00:32:39.519
between the first designer paths that gets
approved and the devs successfully rendering that page.

456
00:32:39.680 --> 00:32:45.359
It's almost an interim step, like
until we convert their design language into

457
00:32:45.400 --> 00:32:49.680
our design language, you can't really
get rolling. You know that I was

458
00:32:49.720 --> 00:32:53.119
introduced to Figma just as an assign
a couple of years ago, and the

459
00:32:53.720 --> 00:32:58.079
customer wanted me to, you know, do the design and Figma and then

460
00:32:58.200 --> 00:33:04.480
copy the you know, the the
CSS into my project and that was fine.

461
00:33:04.559 --> 00:33:07.920
And I don't know if it does
this now, but back then there

462
00:33:07.039 --> 00:33:12.440
was no responsiveness and that you know, you put a you get some design

463
00:33:12.519 --> 00:33:15.720
and all that stuff and I copy
it and you know, it's static,

464
00:33:16.240 --> 00:33:21.240
it doesn't move with the page.
Which seemed to me like really stupid.

465
00:33:21.680 --> 00:33:24.160
I don't know if that feature is
there now, but you know, it's

466
00:33:24.160 --> 00:33:28.640
the little details like that to drive
you nuts. Yeah, so I think

467
00:33:28.720 --> 00:33:31.279
Thigma has definitely come a long way
on that, and definitely a lot of

468
00:33:31.279 --> 00:33:37.000
their components and I'm definitely no wizard
here, but definitely their components now understand

469
00:33:37.079 --> 00:33:40.720
a little bit of responsive side.
It's not to the extent of knowing between

470
00:33:40.839 --> 00:33:45.880
like portrait and landscape, but they
know how things like should expand and things

471
00:33:45.920 --> 00:33:47.240
like that. So you know,
yeah, that's good. It was a

472
00:33:47.240 --> 00:33:52.920
couple of years ago, and I'm
certainly no expert in CSS. Well.

473
00:33:52.000 --> 00:33:55.920
Yeah, and responsive design is hard
at the best of times, much less

474
00:33:57.240 --> 00:34:01.640
cross platform responsive design, absolutely,
yeah, and you know that that is

475
00:34:01.680 --> 00:34:06.559
one of the common problems that surfaces
all the time, and will continue to

476
00:34:06.640 --> 00:34:10.480
invest in better controls and better widgets
to help developers deal with that. And

477
00:34:10.679 --> 00:34:15.679
you know, we see various break
points, particularly on desktop or web,

478
00:34:15.960 --> 00:34:19.280
where you go from a sort of
a more portrain oriented, you know,

479
00:34:19.519 --> 00:34:21.880
layout where you might have a pit
in to the left and you want to

480
00:34:21.960 --> 00:34:24.760
kind of looking like a list,
and then when you navigate it should show

481
00:34:24.800 --> 00:34:30.440
you the details almost on a new
page versus a more landscape or desktop experience

482
00:34:30.440 --> 00:34:35.559
where you typically have them side by
side, and you know, they should

483
00:34:35.599 --> 00:34:37.239
all work within an app and it
should be consistent, and then things like

484
00:34:37.280 --> 00:34:40.000
deep linking should work so that you
could navigate to it on the web.

485
00:34:40.639 --> 00:34:45.559
So you know, it poses very
interesting challenges and you know, those are

486
00:34:45.599 --> 00:34:50.679
the types of things where you know, our investment into extensions allows for things

487
00:34:50.719 --> 00:34:54.159
like deep linking and for resolvable addresses
and stuff like that comes into the play

488
00:34:54.440 --> 00:34:58.639
in toolkit. We have things like
responsive views and stuff like that that will

489
00:34:58.639 --> 00:35:02.079
help one, you know, deal
with having different visual states essentially for that

490
00:35:02.159 --> 00:35:06.760
sort of portrayed look and the landscape
look. And this gets back to that

491
00:35:06.840 --> 00:35:08.719
mapping stage. Just like now I
pick up the Uno toolkit, I've got

492
00:35:08.719 --> 00:35:13.239
the output from Figma, and I'm
trying to figure out how to map it

493
00:35:13.320 --> 00:35:15.440
under the toolkit to say, well, this is what they wanted in Figma.

494
00:35:15.480 --> 00:35:20.079
When it scales, how do we
make sure that Uno does that for

495
00:35:20.119 --> 00:35:22.320
it? Yeah, and that's where
the Figma plugin comes in. Okay,

496
00:35:22.760 --> 00:35:28.679
And so you know that plugin that
sits within Figma. One of the really

497
00:35:28.719 --> 00:35:31.320
cool things about it is that there's
actually a rendering that actually happens within the

498
00:35:31.360 --> 00:35:36.480
plug in and that's actually running the
web or then't version of UNO, so

499
00:35:36.519 --> 00:35:40.079
it actually shows you what it's going
to look like with your like basically takes

500
00:35:40.079 --> 00:35:45.559
your design, converts it to Zammle
behind the scenes, runs it so that

501
00:35:45.599 --> 00:35:47.119
it actually shows you what it's going
to look like and how it's going to

502
00:35:47.199 --> 00:35:51.840
behave when you click in the textbox
and stuff like that. So it's pretty

503
00:35:51.840 --> 00:35:53.599
incredible that the plugin is capable of. And then of course you can then

504
00:35:53.920 --> 00:35:59.239
take that and actually drop it into
your running app, like you go to

505
00:35:59.280 --> 00:36:01.280
the Zamble file, drop it in
whilst your apps running, and really will

506
00:36:01.280 --> 00:36:06.199
actually show it and your running app. Nice. So it's all the wonders

507
00:36:06.519 --> 00:36:09.480
of the Microsoft ecosystem. Hot real
load of somebody that came out of Microsoft.

508
00:36:10.079 --> 00:36:14.199
That the UNER platform is basically built
part of makes world. Yeah,

509
00:36:14.280 --> 00:36:16.440
and live debugging too, right,
like is all part of that effect.

510
00:36:16.960 --> 00:36:22.119
So I could be tweaking this.
I mean, I'm hoping the plug is

511
00:36:22.159 --> 00:36:25.239
perfect, but I imagine I have
to do some stuff and then look across

512
00:36:25.639 --> 00:36:30.199
the different platform renders too, like
fire up the woll the stimulators. Yeah,

513
00:36:30.239 --> 00:36:34.960
correct, and you know there,
We don't claim that there's never any

514
00:36:36.199 --> 00:36:38.599
discrepancies between different platforms, So there's
always a need to run it up on

515
00:36:38.639 --> 00:36:42.920
each platform, the planet ship being
verifying that it's going to that it is

516
00:36:42.960 --> 00:36:46.639
looking and behaving exactly how you want
it, because yure scaling may work differently

517
00:36:46.679 --> 00:36:51.320
on different with that one the break
points between say portraited and landscape may not

518
00:36:51.400 --> 00:36:54.440
be the same, or you may
want to tweak it based on feedback from

519
00:36:54.440 --> 00:37:01.440
different platforms. So definitely consistencies there. One of the interesting things that we

520
00:37:01.480 --> 00:37:07.039
added to the Wizard and so I'll
talk about that in a second, but

521
00:37:07.199 --> 00:37:12.119
we added the ability for it to
generate your CI pipeline. And so one

522
00:37:12.119 --> 00:37:15.280
of the things we consistency see from
developers them struggling at the other end of

523
00:37:15.360 --> 00:37:19.800
the build process is that, Hey, I've got my app that I've spent

524
00:37:19.880 --> 00:37:22.760
time building. How do I ship
it? How do I make sure that

525
00:37:23.000 --> 00:37:25.119
you know when I'm making changes to
it, I don't break it? How

526
00:37:25.159 --> 00:37:30.599
do I run tests and unit uy
tests and things like that. So out

527
00:37:30.639 --> 00:37:32.159
of the Blox, we give you
the ability to have a you know,

528
00:37:32.280 --> 00:37:36.800
a CI pipeline that's set up to
at least build your application, so you're

529
00:37:36.840 --> 00:37:40.920
already in a winning state there the
wizard itself. One of the things we

530
00:37:42.000 --> 00:37:45.039
had trouble with with the whole platform
is that we have all of these different

531
00:37:45.039 --> 00:37:49.280
bits and pieces. Unless you've spent
time reading through the documentation, you wouldn't

532
00:37:49.280 --> 00:37:52.239
know existed. You know, there
was a very good template that I'll add

533
00:37:52.280 --> 00:37:54.519
you to get started with an Uto
app, but it kind of left everything

534
00:37:54.519 --> 00:37:58.719
else to you. And so one
of the things we invested in, you

535
00:37:58.760 --> 00:38:01.400
know, in the last twelve months
that is a wizard that brings in a

536
00:38:01.440 --> 00:38:06.360
good proportion of the capability of the
whole platform. And so you know,

537
00:38:06.400 --> 00:38:09.119
there's ten or eleven screens that you
can go through and customize everything from.

538
00:38:09.320 --> 00:38:14.079
You know what target platforms you want
to use all the way through to do

539
00:38:14.159 --> 00:38:16.480
I want authentication and if so,
do I want to write it myself with

540
00:38:16.559 --> 00:38:22.000
custom worth or do I want to
use m cell and so, And the

541
00:38:22.039 --> 00:38:23.760
CI pipelines are there as well,
so you can pick between it asure and

542
00:38:23.800 --> 00:38:29.400
get other actions as your pipeline of
choice. I'm sure there's others that people

543
00:38:29.400 --> 00:38:32.079
want those then will consider adding those
as well. But the idea is that

544
00:38:32.159 --> 00:38:37.360
when you file a new project,
you get a good percentage of the way

545
00:38:37.440 --> 00:38:40.679
you want with all of the you
know, most of the almost best practice

546
00:38:40.760 --> 00:38:45.639
or guidance that we can do to
get you into that winning state. So

547
00:38:45.719 --> 00:38:49.320
all you do is push it up
to your repository and at least you'll have

548
00:38:49.559 --> 00:38:53.800
a positive experience with a build that
you know works. Because people's integration pipelines

549
00:38:53.800 --> 00:38:58.159
are pretty personal too, right,
so I guess it's very challenge to have

550
00:38:58.280 --> 00:39:00.760
if you're going to generate part of
that pipeline, is it match with the

551
00:39:00.800 --> 00:39:04.639
way we're doing things? Yeah?
Sure, And look right now, what

552
00:39:05.000 --> 00:39:07.079
the Wizard generates is very much a
starting point, so we make sure that

553
00:39:07.119 --> 00:39:12.840
you're set up to do a build
of the whole solution. We are working

554
00:39:12.840 --> 00:39:15.519
on extensions there that will help you
run the at least the tests and the

555
00:39:15.639 --> 00:39:21.119
UI tests because those are actually quite
difficult to particularly the UI test to get

556
00:39:21.199 --> 00:39:28.280
running in a CI pipeline. And
then the additional parts that well, you

557
00:39:28.280 --> 00:39:30.679
know, considering down the line,
is that the support for things like app

558
00:39:30.719 --> 00:39:35.679
Center and actually pushing to the store, because those are again where where a

559
00:39:35.760 --> 00:39:38.000
lot of developers really struggle. Sure, yeah, so just giving them a

560
00:39:38.039 --> 00:39:40.920
template to go get get downe the
right path is great. I mean I

561
00:39:42.280 --> 00:39:46.639
appreciate that you're doing this devop stuff
for your platform so that we have a

562
00:39:46.679 --> 00:39:50.480
good experience with your platform. But
if you can make us better elsewhere,

563
00:39:50.599 --> 00:39:57.320
Nick, I'm all over that because
Australia. The nice thing and you should

564
00:39:57.360 --> 00:40:01.519
work mostly is that because we're all
the dot ecosystem, A lot of that

565
00:40:01.559 --> 00:40:07.000
stuff so dot net built. You
know, you can point that at an

566
00:40:07.360 --> 00:40:10.880
app, but you could also point
it at an other technology after it should

567
00:40:10.920 --> 00:40:15.199
build, and so a lot of
those stages like pointing to the store or

568
00:40:15.239 --> 00:40:19.599
pointing to app Center and things like
that, those are work for other dot

569
00:40:19.679 --> 00:40:22.639
net based applications as well. It's
excellent. We haven't talked much about app

570
00:40:22.679 --> 00:40:24.920
Center because it's just one of those
things you should use. I mean,

571
00:40:24.960 --> 00:40:29.239
this is like the remnants of the
old Hockey app plus a bunch of other

572
00:40:29.360 --> 00:40:34.199
Azure stuff. Yeah, and it's
one of those things that Microsoft acquiet and

573
00:40:34.320 --> 00:40:39.440
brought together and actually started elevating.
And I've always viewed it as I had

574
00:40:39.480 --> 00:40:45.920
some really winning features. So the
simplification of the bill process and encouraging developers

575
00:40:45.960 --> 00:40:50.760
to actually have that kind of approach
to the build and test the ability to

576
00:40:50.840 --> 00:40:53.760
run UI tests and device tests and
stuff like that was really cool, and

577
00:40:54.280 --> 00:40:59.559
the deployment side of things for testing
was one of the killer features of app

578
00:40:59.599 --> 00:41:05.599
Center. And so yeah, definitely, we're highly encouraged developers to push the

579
00:41:05.639 --> 00:41:08.719
app Center to provide that distribution.
But it's not to say that you can't

580
00:41:09.159 --> 00:41:12.800
do it without app Center. So
you can push to you know, the

581
00:41:13.119 --> 00:41:17.800
you know, the Android Beta store
and the iOS using the essentially test flight

582
00:41:19.320 --> 00:41:25.119
to actually push out the d Bible
pre built versions. But app Center definitely

583
00:41:25.199 --> 00:41:29.360
made those problems easier to deal with. Well, I mean you mean testl

584
00:41:29.400 --> 00:41:32.719
like for ioas are you meaning testlate
for iOS? Test flight? Yeah?

585
00:41:32.960 --> 00:41:37.079
Yeah, what's the Android equivalent?
I can't remember. Well, they have

586
00:41:37.159 --> 00:41:40.239
a beta version of their store,
so you basically submit to the store and

587
00:41:40.320 --> 00:41:44.159
then you market it as beta and
it allows you to do that kind of

588
00:41:44.239 --> 00:41:47.559
same process. Oh your Android does
Yeah, Okay, so you're talking about

589
00:41:47.719 --> 00:41:52.440
test flight, which is Apple's way
to do beta deploys. Yeah, and

590
00:41:52.639 --> 00:41:55.719
so you know, each of the
stores, so Apple will have a way

591
00:41:55.760 --> 00:42:02.119
of doing essentially beta deploys. The
Android store has away, and the Microsoft

592
00:42:02.159 --> 00:42:07.119
Store actually has a mechanism for doing
that as well, so flighting essentially pre

593
00:42:07.360 --> 00:42:09.800
released versions of their apps, So
all all of the platforms have that,

594
00:42:09.880 --> 00:42:13.800
and obviously in the web you can
point to a staging environment and you know

595
00:42:13.880 --> 00:42:20.119
lock it down, et cetera.
So it's definitely a good mechanism to follow

596
00:42:20.159 --> 00:42:22.960
through with you apps as they go
into that sort of pre release of testing

597
00:42:23.039 --> 00:42:29.239
phase is to make them available for
a select group of audience. And you

598
00:42:29.320 --> 00:42:31.760
know, internally in we actually make
use of those processes to make sure that

599
00:42:31.880 --> 00:42:38.519
we have you know, canary builds
available for our internal testing. And just

600
00:42:38.719 --> 00:42:43.280
touching on that, one of the
things that we do try to encourage for

601
00:42:43.480 --> 00:42:46.000
all of our customers is so logo
this thing that we talk about it is

602
00:42:46.039 --> 00:42:51.239
being canary builds, and what we
mean by that is basically taking your existing

603
00:42:51.320 --> 00:42:55.280
app that you're currently working on and
testing forcibly, updating it to all of

604
00:42:55.400 --> 00:43:00.239
the latest versions of the of all
your packages, because this are something that

605
00:43:00.320 --> 00:43:06.880
developers typically don't do frequently enough,
and then running it through your CI pipeline

606
00:43:06.880 --> 00:43:08.800
to make sure it builds, it
runs all your tests, and it hasn't

607
00:43:08.840 --> 00:43:14.679
broken anything. The advantage there is
that as soon as one of your dependencies

608
00:43:14.920 --> 00:43:19.360
upgrades to a new version, you're
going to be aware that it's now breaking

609
00:43:19.480 --> 00:43:22.760
something and that you will not necessarily
have to fix it right now, but

610
00:43:22.840 --> 00:43:25.159
you'll know that you need to address
it in the upcoming versions. Because what

611
00:43:25.280 --> 00:43:30.880
we typically see time and time again, and this is true for Core itself,

612
00:43:30.280 --> 00:43:35.519
is that developers don't upgraad because something
has broken, and then they end

613
00:43:35.639 --> 00:43:38.239
up three versions behind, and now
you're really in trouble. Yeah, and

614
00:43:38.480 --> 00:43:43.760
you know we've stopped shipping updates to
that version, so you know you really

615
00:43:43.840 --> 00:43:46.480
need to update. And now it's
a really painful process. And so by

616
00:43:46.599 --> 00:43:51.360
encouraging developers to have canary builders that
they might run once a day or once

617
00:43:51.400 --> 00:43:57.760
a week to see what packages have
changed, it gives them early warning as

618
00:43:57.800 --> 00:44:00.960
to when things will be when they
need to modify their code. Yeah,

619
00:44:00.960 --> 00:44:04.519
you only have to miss a couple
of sprints, you know, well you

620
00:44:04.639 --> 00:44:07.719
try, Well, we'll fix that
later. Let's go finish these other features,

621
00:44:07.320 --> 00:44:09.880
and then it misses around or two, and now it's a year.

622
00:44:10.159 --> 00:44:13.840
I mean, I think we're incredibly
lucky that, you know, the upgrade

623
00:44:13.880 --> 00:44:17.480
cycle from you know, NET sixth
and at seventh and at eight hasn't typically

624
00:44:17.599 --> 00:44:22.000
required significant rework. In fact,
the only work that you typically see is

625
00:44:22.039 --> 00:44:28.880
things like the analyzers improve and they're
now throw more warnings because the code analysis

626
00:44:29.000 --> 00:44:30.079
is better, and they can say, okay, well you're going to get

627
00:44:30.079 --> 00:44:35.199
performance gained if you do this over
this, And so typically what you're going

628
00:44:35.280 --> 00:44:37.519
to have to do is go through
and address those and a lot of our

629
00:44:37.559 --> 00:44:40.679
projects we typically have them, you
know, warning setters error, so that

630
00:44:40.800 --> 00:44:45.159
we're forced to go and fix them. Yeah, and that's great right up

631
00:44:45.199 --> 00:44:47.880
until you do get one of the
updates and now there's a thousand fricking warnings.

632
00:44:49.199 --> 00:44:52.480
Yeah, but you know, warnings
could just be warnings. Yeah.

633
00:44:52.400 --> 00:44:57.079
Luckily a lot of those ones that
generate a thousand warnings are very consistent,

634
00:44:57.519 --> 00:45:00.440
Yeah, like their search and replaceable. Yeah, and quite often we'll point

635
00:45:00.519 --> 00:45:02.880
to you an era of your code
where you may be able to do a

636
00:45:02.960 --> 00:45:07.159
global refactor beyond what they're talking so
you know, you might have missed the

637
00:45:07.239 --> 00:45:12.159
fact that you're reusing the same bit
of code three times or something. So

638
00:45:12.360 --> 00:45:16.440
yeah, yeah, I mean,
I'm with you, it's just I also

639
00:45:16.559 --> 00:45:21.039
needed to ship features, right,
Like, there's just this that's the constant

640
00:45:21.159 --> 00:45:24.000
battle between he there's a better way
to do this versus Yeah, but they

641
00:45:24.079 --> 00:45:29.119
really need this thing out this month. Yeah, And look that's why canaris

642
00:45:29.119 --> 00:45:31.519
are great because they give you that
really early warning you can start to factor

643
00:45:31.960 --> 00:45:36.519
any rework and get them on the
board. Yeah, exactly, And so

644
00:45:36.639 --> 00:45:39.199
it doesn't become this, Hey we've
got to dedicate three sprints to just catching

645
00:45:39.280 --> 00:45:44.920
up. Yeah, I'd rather than
get behind on it. What is the

646
00:45:45.119 --> 00:45:49.320
testing approach for you know, you
hinted at it in the papeline. Yeah,

647
00:45:49.400 --> 00:45:52.559
So so we do a couple of
different testing and some of these come

648
00:45:52.639 --> 00:45:58.440
from our guidance around what we do
internally, so where possible. For a

649
00:45:58.480 --> 00:46:00.440
lot of your business logic, unit
tests are still the way to go.

650
00:46:00.760 --> 00:46:04.719
So you know, if you have
services that make calls and you have view

651
00:46:04.800 --> 00:46:07.039
models and stuff like that, we
can you still want to be running unit

652
00:46:07.119 --> 00:46:13.599
test to verify you know, the
logic of your application is sound. But

653
00:46:14.079 --> 00:46:16.559
you know where most of the testing
and mobile apps goes is in the UI

654
00:46:16.679 --> 00:46:20.760
side of things and making sure that
the flow works and so that for that

655
00:46:20.960 --> 00:46:23.719
we have we do have UI tests. So essentially this is running the app,

656
00:46:24.800 --> 00:46:29.719
stepping through various parts of the app
and verifying conditions so it may be

657
00:46:30.239 --> 00:46:34.360
verifying that snapshop one page the next
hasn't changed, but one iteration of the

658
00:46:34.360 --> 00:46:37.239
built and one next that hasn't changed. Are you using verify same in craps

659
00:46:37.280 --> 00:46:42.920
tool. We don't use it internally. I would recommend using it. It's

660
00:46:43.000 --> 00:46:46.599
an absolutely awesome tool. And so
you know again, you know, doing

661
00:46:46.639 --> 00:46:51.360
comparison for screenshots and stuff like that
is absolutely fantastic. I know, we

662
00:46:51.800 --> 00:46:52.920
we had the good forces you to
talk to same crap and you were an

663
00:46:52.960 --> 00:46:55.760
instant believer, Carl as I recall, like you've used it ever since.

664
00:46:57.000 --> 00:47:00.719
Oh yeah, yeah, yeah,
very cool stuff. Yeah that sign crops

665
00:47:00.800 --> 00:47:04.920
out and developed some amazing tools over
the time and verifies one of them.

666
00:47:05.360 --> 00:47:10.760
He's one of you. Yeah.
Well, and that's I mean, and

667
00:47:10.840 --> 00:47:15.840
I brought that whole line of thinking
up, Nick, because testing uys is

668
00:47:15.960 --> 00:47:19.239
hard. It's just you know,
I love a unit test. That's because

669
00:47:19.280 --> 00:47:22.320
I have a clear input and output
it if they don't match, say something

670
00:47:22.719 --> 00:47:27.880
especially native uy, right, because
you're generally comparing pixels sometimes, aren't you.

671
00:47:28.079 --> 00:47:30.239
Yeah. Well, if you've ever
taken it, stopped in and taken

672
00:47:30.280 --> 00:47:35.239
a look at the platform pipeline,
it takes about four hours to run because

673
00:47:35.440 --> 00:47:37.599
you know, we're running UY tests
and that's doing a lot of stuff in

674
00:47:37.679 --> 00:47:42.480
parallel, like we run UY test
on the Highways Android where you know the

675
00:47:43.000 --> 00:47:45.760
works for the court framework and that, and that gives us a lot of

676
00:47:45.840 --> 00:47:50.920
confidence where we ship new versions.
Yeah, that the core is very well

677
00:47:51.000 --> 00:47:53.360
tested. That's great. It's good
to know well and and it speaks to

678
00:47:53.400 --> 00:47:57.000
you. You know, I'm realizing, like we've been talking about UNO for

679
00:47:57.280 --> 00:48:00.079
five six years now, Like there's
a reason you guys are still out there.

680
00:48:00.119 --> 00:48:04.039
You've been you've transformed a couple of
times. You know, once upon

681
00:48:04.079 --> 00:48:08.039
a time you were the WUP guys, but that's all changed and you had

682
00:48:08.039 --> 00:48:13.079
that w A hook the early days
before it was cool, that's right.

683
00:48:13.480 --> 00:48:16.280
Yeah. So the u WP things
interesting because even today, if you're going

684
00:48:16.320 --> 00:48:19.760
to build an u WP app and
you want to take a cross platform you

685
00:48:19.840 --> 00:48:22.760
can still use the tool set to
do that. We still fully support you

686
00:48:22.920 --> 00:48:24.960
WP. And you might think,
well, why would you do that if

687
00:48:24.960 --> 00:48:29.760
you're supporting you know when you I
The reason being is that there are still

688
00:48:29.800 --> 00:48:34.119
some platforms, name the Xbox where
you have to build WP and so you

689
00:48:34.199 --> 00:48:37.639
know those scenarios are still out there. We still have customers who and people

690
00:48:37.679 --> 00:48:42.519
out there with UWP apps that want
to take the cross platform or want to

691
00:48:42.599 --> 00:48:45.159
take parts of their app cross platform. Sure, and it may have some

692
00:48:45.440 --> 00:48:50.440
and they're looking at or I rewrite, right, It's like given that choice,

693
00:48:50.480 --> 00:48:52.480
it's like we committed UWP back in
the day. We've got this stuff,

694
00:48:52.559 --> 00:48:57.440
we have these we're concerned about what
Microsoft's do with YOUWP or not doing,

695
00:48:57.480 --> 00:49:00.960
as the case may be. Uh
and and want to go to the

696
00:49:00.000 --> 00:49:02.320
cross plat port and you guys can
pick a lot of that up. Yeah,

697
00:49:02.519 --> 00:49:06.039
just to be clear, when you're
talking about Xbox apps, you're really

698
00:49:06.079 --> 00:49:09.119
talking about like, you know,
forms apps if you will, on Xbox,

699
00:49:09.199 --> 00:49:14.360
not games, not graphics correct.
Yeah. Yeah, And you know

700
00:49:14.440 --> 00:49:17.320
there was a time when Microsoft wanted
Xbox to be center of the living room

701
00:49:17.800 --> 00:49:22.039
and so you know they did do
a very big push for you know,

702
00:49:22.119 --> 00:49:25.039
app developers to come on board,
and UWP was that platform. I mean,

703
00:49:25.079 --> 00:49:30.960
there there was a great vision about
UWP being you know, this capability

704
00:49:30.000 --> 00:49:35.159
of running everywhere, and some of
that still exists today. There's some hints

705
00:49:35.199 --> 00:49:37.840
that they're going to make another stab
at it too, you know, like

706
00:49:37.159 --> 00:49:46.239
XN a version the just just a
sense that the team is reorganizing, like

707
00:49:46.320 --> 00:49:51.119
there's there seems to be something going
on there that we're living on. You

708
00:49:51.199 --> 00:49:52.679
know. I spent some time over
on the Windows Weekly side too, and

709
00:49:53.480 --> 00:49:57.880
this has been a recurring threat.
It's like there's something going on over you.

710
00:49:58.000 --> 00:50:00.800
I wonder if that'll trickle over to
hollow Lands. Yeah. So the

711
00:50:00.880 --> 00:50:04.159
interesting thing is if you we've been
watching the whin UI, the winn app

712
00:50:04.239 --> 00:50:07.400
SDK team over the last couple of
years, it feels like they really haven't

713
00:50:07.440 --> 00:50:12.199
been moving very fast. No,
but they're doing a lot of investment,

714
00:50:12.239 --> 00:50:15.079
which is actually one of the very
first times we've seen this with one of

715
00:50:15.119 --> 00:50:21.440
their UI frameworks internally to use it
for first party apps, so things like

716
00:50:21.519 --> 00:50:24.199
file Explorer, you know, probably
one of the most used apps on Windows

717
00:50:24.440 --> 00:50:28.880
right. New version of that's being
done in winn app is DK. Yeah,

718
00:50:29.280 --> 00:50:31.039
and that's smart, right, Like
we like it when Microsoft eats the

719
00:50:31.119 --> 00:50:36.880
dog food a you know, it'll
never go away, Yeah, exactly,

720
00:50:36.960 --> 00:50:43.639
and b it they beat their own
teams up, Like WPF was pretty much

721
00:50:43.760 --> 00:50:46.599
unusable until the studio team used it, yeah, back in twenty ten.

722
00:50:46.800 --> 00:50:52.920
Like the difference between WP two and
WP four because numbers are hard. Was

723
00:50:53.599 --> 00:50:57.960
the studio team, and it implemented
inside of studio. It had problems,

724
00:50:58.000 --> 00:51:01.320
but they'd also kick the snart.
Yeah yeah, I remember those days,

725
00:51:01.400 --> 00:51:07.719
how fondly. Just interesting on that. One of the other sort of areas

726
00:51:07.760 --> 00:51:10.760
where we see customers coming to the
platform are from you know, companies that

727
00:51:10.840 --> 00:51:15.639
have invested in WPF and so one
of the really neat things that you can

728
00:51:15.719 --> 00:51:21.480
do with there is to start building
new components with the UNO on your existing

729
00:51:22.639 --> 00:51:25.480
WPF app. So we have the
ability to integrate with an existing app,

730
00:51:27.039 --> 00:51:30.360
run the UNO parts, and that
gives you the ability to take parts of

731
00:51:30.440 --> 00:51:34.679
your app cross platform. And you
know, obviously probably wouldn't be necessarily too

732
00:51:34.760 --> 00:51:37.239
much on the desktop, but makes
a lot of sense for iOS and androids

733
00:51:37.239 --> 00:51:40.320
to take part of your app cross
platform. So for example, maybe a

734
00:51:40.400 --> 00:51:45.079
new data capture part. You can
really use all of your business logic that

735
00:51:45.119 --> 00:51:46.920
you already have, all of your
service calls, all of that stuff,

736
00:51:47.400 --> 00:51:52.719
build the parts that you need for
your mobile data capture part in UNO,

737
00:51:52.519 --> 00:51:55.159
and all of a sudden you haven't
had to rebuild your app, just so

738
00:51:55.280 --> 00:51:59.400
you can take a cross platform.
Right, So you've got a WPF app

739
00:51:59.440 --> 00:52:01.159
and at one point you were kind
of looking at Zamma informs and like,

740
00:52:01.320 --> 00:52:05.440
is this gonna work for me?
Then now it's become Maui, and you're

741
00:52:05.440 --> 00:52:08.119
still wonder if it's going to work
for you. And we're not even gonna

742
00:52:08.119 --> 00:52:13.079
say so. We're like, oh
down ha, yes, we all we

743
00:52:13.159 --> 00:52:16.039
all love that. But they I
mean, but what I hear you describing

744
00:52:16.119 --> 00:52:19.920
is essentially saying, hey, I
can add into this a couple of Uno

745
00:52:20.000 --> 00:52:23.000
components and we have this piece of
this larger w p F app that now

746
00:52:23.079 --> 00:52:30.440
runs on iOS and Android. Yeah. Absolutely, what is the mac os

747
00:52:30.920 --> 00:52:35.119
story for Uno? So the mac
Os is mac Catalyst, so basically the

748
00:52:35.320 --> 00:52:39.360
the the the mac Light kind of
work version. It's kind of like that

749
00:52:39.639 --> 00:52:44.760
that sort of the technology that came
from iOS land went through iPad and came

750
00:52:44.840 --> 00:52:47.840
over on Catalyst. But you know, for for the vast majority of apps,

751
00:52:47.880 --> 00:52:51.880
that is a great technology to use. Do we have access to native

752
00:52:52.679 --> 00:52:57.760
platform tools there it is more of
a sandbox device than what you get with

753
00:52:57.840 --> 00:53:00.880
the mac os app. So same
as MAUI, basically correct, and and

754
00:53:00.960 --> 00:53:06.440
a lot of this is driven by
the fact that the Microsoft support for mac

755
00:53:06.480 --> 00:53:12.199
Os as a you know, as
a as an alternative to mac Catalyst has

756
00:53:12.280 --> 00:53:15.280
not had the same amount of attention
that the mac caitalyists got courtesy of their

757
00:53:15.320 --> 00:53:20.320
being driven by the Maui team.
So yeah, so you know that that's

758
00:53:20.440 --> 00:53:23.079
kind of where we are in that
sort of Microsoft ecosystem running on mac scenario.

759
00:53:24.840 --> 00:53:29.920
Yeah. I don't think there's a
whole lot of Mac os desktop development

760
00:53:30.000 --> 00:53:34.360
going on except for like your you
know, your adobees and your music and

761
00:53:34.599 --> 00:53:37.320
video editing and all that stuff,
and that's all pretty neative. It's not

762
00:53:37.679 --> 00:53:43.199
very needative and very close to the
metal. Yeah, but but there's there's

763
00:53:43.239 --> 00:53:45.239
definitely an opportunity there, particularly,
I mean if you if you do have

764
00:53:45.320 --> 00:53:50.840
a lot of customers in the iOS
space Catalysts and being able to have that

765
00:53:50.960 --> 00:53:54.280
same level of information available on the
on the Mac Sense and the and the

766
00:53:54.400 --> 00:53:59.079
ability to that you basically get it
for free with like in the sense of

767
00:53:59.239 --> 00:54:04.159
you know you're building for all these
other platforms. You know you've got desktop

768
00:54:04.159 --> 00:54:07.280
support through Windows, it's going to
look very similar on Mac os through Catalyst.

769
00:54:07.400 --> 00:54:09.760
Yeah, Yeah, exactly, awesome, very cool. So neck,

770
00:54:09.840 --> 00:54:14.440
what's next for you? What's in
your inbox? So the big news is

771
00:54:14.519 --> 00:54:20.079
that we'll continue to invest in that, in that sort of ecosystem, so

772
00:54:20.320 --> 00:54:24.960
life like beginning to end of the
developer life cycles, so continue to invest

773
00:54:25.000 --> 00:54:30.599
in the Wizard. We're likely to
see some some updates to improve productivity in

774
00:54:30.679 --> 00:54:34.760
terms of developers and the areas that
developers really struggle with in terms of building

775
00:54:34.840 --> 00:54:37.840
and deploying apps, and that cycle
will continue to go this year. And

776
00:54:37.960 --> 00:54:42.880
that that is hansol of what the
platform is about, you know, And

777
00:54:43.039 --> 00:54:45.400
that's not to say that we're continue
to not continue to invest in the core.

778
00:54:46.000 --> 00:54:49.800
There is part of the team that's
devoted to that, so you know,

779
00:54:49.920 --> 00:54:52.599
performance is still front of mind.
There's still a lot of updates that

780
00:54:52.679 --> 00:54:59.280
are to come across for various platform
pieces. There there's there's there are new

781
00:54:59.360 --> 00:55:05.320
controls that are on the horizon for
things like toolkit and extensions. But definitely

782
00:55:05.400 --> 00:55:09.719
that life cycle that's beginning design ending
with an app that's produced out of our

783
00:55:09.760 --> 00:55:15.800
platpline into the stores. Trying to
improve the productivity for end to end for

784
00:55:15.880 --> 00:55:19.920
developers is where the team's going for
this. And I love your green Field

785
00:55:19.960 --> 00:55:22.840
story, but I'm starting to love
your brown Field story. I got an

786
00:55:22.840 --> 00:55:25.079
app and I can add you know, in part way through like thank you,

787
00:55:25.239 --> 00:55:28.719
because that's real life. And look, we recognize that as well.

788
00:55:29.679 --> 00:55:34.079
And look, the reality is that
just one little extra bit here is the

789
00:55:34.199 --> 00:55:38.480
reality is that you know, not
every control manufacturer or vendor is actually building

790
00:55:38.559 --> 00:55:43.960
controls for the Bunau platform. And
so what we can do with the Maui

791
00:55:44.000 --> 00:55:47.360
embedding that we've got is the ability
to take controls from sinfusion from Tellery and

792
00:55:47.519 --> 00:55:52.320
bring them on to an application.
Now, obviously those will only be supported

793
00:55:52.360 --> 00:55:55.119
on the platforms that they support.
For Mali, so they choose to support

794
00:55:55.880 --> 00:56:00.239
all of the Marie platforms. I
always adroid Catalyst windows. Then you'll get

795
00:56:00.320 --> 00:56:05.280
those on, you know, by
embedding those within the inner platform. So

796
00:56:05.440 --> 00:56:08.360
yeah, we totally recognize that that
brownfield story where things aren't as neat and

797
00:56:08.480 --> 00:56:13.800
tidy as we'd expect them to be. It's totally every piece of software I've

798
00:56:13.840 --> 00:56:17.119
ever built. That's fine. Yeah, yeah, And just to be perfect

799
00:56:17.159 --> 00:56:22.039
clear, there's an open source project
with paid supportive ill that is exactly right,

800
00:56:22.199 --> 00:56:25.239
yep. So it's one hundred percent
open source and there is this paid

801
00:56:25.400 --> 00:56:30.559
enterprise support available. That's how you
guys stay alive. Absolutely, it pays

802
00:56:30.599 --> 00:56:31.960
the bills. Now I want people
to know, right, it's like,

803
00:56:32.039 --> 00:56:36.119
hey, you can take this other's
been I like your free support, it's

804
00:56:36.159 --> 00:56:38.199
good, but if you're going to
commit your business to this, buy some

805
00:56:38.320 --> 00:56:42.960
support so that you get priority and
so you keep a platform you care about

806
00:56:43.000 --> 00:56:45.800
a live Yeah. And look if
you if you monitor the GitHub repolagers and

807
00:56:45.800 --> 00:56:51.320
there's a few of them, you'll
see that virtually all of them have an

808
00:56:51.480 --> 00:56:54.679
active contributor from the inner platform team. Yes. I also like that you

809
00:56:54.920 --> 00:57:00.239
drive your paid support through issues in
GitHub too, so that everybody and if

810
00:57:00.239 --> 00:57:02.480
it's from it, Yeah, absolutely
exactly, it's really I mean, you

811
00:57:02.559 --> 00:57:07.400
know, there's a subtext of their
algoing conversation for us to dynam Rocks about

812
00:57:07.559 --> 00:57:10.320
how we make sustainable open source,
and you guys are on my list of

813
00:57:10.400 --> 00:57:14.760
people doing it right, like showing
a model that works. Yeah. Look,

814
00:57:14.880 --> 00:57:20.960
it's just sustainable open source is a
challenge and there's no one model that's

815
00:57:20.960 --> 00:57:23.760
going to fit everyone. I think
that there was there was a view that

816
00:57:23.880 --> 00:57:28.599
things like you know, sponsorship and
things like that might be an answer,

817
00:57:29.199 --> 00:57:31.199
but I think that people are walking
away from that because you know, the

818
00:57:31.320 --> 00:57:37.559
reality is that the people who who
should be paying, which typically the companies

819
00:57:37.880 --> 00:57:40.880
are not the ones who are typically
fronting the money and offers. There's developers

820
00:57:40.920 --> 00:57:45.519
who recognize the hard work that you
know, so many contributors put in that

821
00:57:45.639 --> 00:57:50.119
are contributing you know, a dollar
here or ten dollars there, you know,

822
00:57:51.440 --> 00:57:54.639
in supporting. Yeah, that's that
cancer staining company now, and I

823
00:57:54.760 --> 00:57:58.039
want to fix that first part that
I could. I agree with you is

824
00:57:58.079 --> 00:58:01.519
not happening. But I also preciate
that there are business models out there that

825
00:58:01.599 --> 00:58:05.199
work, that have their challenges.
I just mean, you know, I

826
00:58:05.280 --> 00:58:07.880
wish we could be better, but
we'll all try and do the right thing.

827
00:58:07.320 --> 00:58:10.880
The schew Nick, it's been a
pleasure talking to you and keeping us

828
00:58:12.079 --> 00:58:15.199
up to date on UNO and what
you've been doing. Thanks, thanks,

829
00:58:15.400 --> 00:58:16.920
thanks for having me on. It's
been fantastic. Bet. All right,

830
00:58:17.000 --> 00:58:40.760
we'll talk to you next time.
I'm dot net rox. Dot net Rocks

831
00:58:40.880 --> 00:58:45.440
is brought to you by Franklin's Net
and produced by Pop Studios, a full

832
00:58:45.519 --> 00:58:51.840
service audio, video and post production
facility located physically in New London, Connecticut,

833
00:58:52.159 --> 00:58:57.519
and of course in the cloud online
at pwop dot com. Visit our

834
00:58:57.559 --> 00:59:00.400
website at d O T N E
t R o c ks dot com for

835
00:59:00.639 --> 00:59:06.440
RSS feeds, downloads, mobile apps, comments, and access to the full

836
00:59:06.599 --> 00:59:10.039
archives going back to show number one, recorded in September two thousand and two.

837
00:59:10.719 --> 00:59:14.760
And make sure you check out our
sponsors. They keep us in business.

838
00:59:15.280 --> 00:59:19.920
Now go write some code, See
you next time you got JAD middle vans

