1
00:00:06,679 --> 00:00:09,880
Speaker 1: Hey everybody, and welcome back to another episode of Adventures

2
00:00:09,919 --> 00:00:13,359
in Angular. This week, I'm your host Charles max Wood,

3
00:00:13,359 --> 00:00:15,039
and I'm here with Richard C.

4
00:00:15,240 --> 00:00:18,160
Speaker 2: Torley. Richard, do you want to just say hello and

5
00:00:18,199 --> 00:00:19,359
remind everybody who you are.

6
00:00:20,960 --> 00:00:25,000
Speaker 3: Yes, thank you very much for having me again. Yeah.

7
00:00:25,079 --> 00:00:28,920
So this is part two of our earlier episode that

8
00:00:29,039 --> 00:00:32,079
we did a couple of weeks ago. My name is Richard.

9
00:00:32,280 --> 00:00:35,880
I am a South African living in Berlin, Germany. Yes

10
00:00:36,799 --> 00:00:40,479
i am. I'm part of a team working on a

11
00:00:40,560 --> 00:00:45,960
ECM software we call an IOL. I like to tinkle

12
00:00:46,000 --> 00:00:49,960
a logically a log with Angular projects. I love Angola.

13
00:00:50,039 --> 00:00:52,200
I've been working on it for a couple of years now.

14
00:00:53,640 --> 00:00:57,439
And yeah, I've also recently started writing about after I

15
00:00:57,479 --> 00:01:00,719
discover along the way, and today would like shre some

16
00:01:00,799 --> 00:01:02,399
of that with you guys.

17
00:01:02,759 --> 00:01:04,879
Speaker 1: Yeah, and what we're talking about is you wrote an

18
00:01:04,920 --> 00:01:08,400
article about how to write multiplatform apps in a single codebase,

19
00:01:08,439 --> 00:01:10,519
which to me feels like a unicorn. And I told

20
00:01:10,519 --> 00:01:14,079
you this before the episode, right, I mean, I remember

21
00:01:14,400 --> 00:01:18,200
back when they first came out with Node right, and

22
00:01:18,200 --> 00:01:19,000
then people were.

23
00:01:18,840 --> 00:01:21,920
Speaker 2: Like, you can write one codebase and it'll work on

24
00:01:21,959 --> 00:01:23,640
the front end and the back end, and that turned

25
00:01:23,680 --> 00:01:25,079
out to be so not true.

26
00:01:25,680 --> 00:01:28,159
Speaker 1: And then and then people were trying to make that

27
00:01:28,200 --> 00:01:30,239
happen with media, and that also turned out to be

28
00:01:30,319 --> 00:01:30,719
not true.

29
00:01:30,799 --> 00:01:32,400
Speaker 2: Right, and then and then.

30
00:01:32,319 --> 00:01:34,760
Speaker 1: People were like, oh, now we have electrons, so now

31
00:01:34,760 --> 00:01:38,079
we can write desktop apps and web apps that are

32
00:01:38,120 --> 00:01:40,280
exactly the same. And that turned out to be kind

33
00:01:40,280 --> 00:01:42,159
of true, right, some of them can share, but not

34
00:01:42,200 --> 00:01:44,480
all of it. But they were talking like, Oh, all

35
00:01:44,519 --> 00:01:46,840
you have to do is kind of plug it electron

36
00:01:46,920 --> 00:01:50,560
in and wow. And so yeah, I'm kind of curious

37
00:01:50,599 --> 00:01:53,280
because it looks like it really works and just from

38
00:01:53,280 --> 00:01:56,159
what I read on the article, So yeah, but before

39
00:01:56,200 --> 00:01:58,000
we get into that, I'm kind of curious, like, what's

40
00:01:58,000 --> 00:01:58,920
the story behind this?

41
00:01:59,120 --> 00:02:01,519
Speaker 2: What know? Like, how did you get to writing this

42
00:02:01,640 --> 00:02:02,599
article in particular?

43
00:02:04,519 --> 00:02:07,680
Speaker 3: Well, first of all, I think I've mentioned this in

44
00:02:07,680 --> 00:02:11,439
the past that always just spend your time and some

45
00:02:11,520 --> 00:02:13,800
of the things that you enjoyed doing the most right,

46
00:02:14,319 --> 00:02:16,599
And when it comes to writing an article, I think

47
00:02:17,120 --> 00:02:20,800
one of the things or topics that you can write

48
00:02:20,840 --> 00:02:24,840
about basically things that you work with on a daily basis.

49
00:02:25,280 --> 00:02:29,879
So coincidentally, this topic that we're discussing today is something

50
00:02:29,919 --> 00:02:32,840
that I do on my day to day job, which

51
00:02:32,879 --> 00:02:37,680
is writing software for cross platforms. So we're talking about

52
00:02:37,960 --> 00:02:42,159
a web app. We've got iOS, we've got Android and

53
00:02:42,240 --> 00:02:44,759
as well as desk stop. But yeah, I think the

54
00:02:44,840 --> 00:02:47,840
idea was speculating in my mind for a while now

55
00:02:48,759 --> 00:02:52,039
and then eventually I just had to jump in and

56
00:02:52,120 --> 00:02:54,840
just do it. And the very interesting stuff that I

57
00:02:54,879 --> 00:02:59,439
discovered about myself during this process was that, you know,

58
00:02:59,520 --> 00:03:02,319
I basically after I wrote the article, I looked at

59
00:03:02,360 --> 00:03:04,560
it and I was like wow, and seeing the feedback

60
00:03:05,360 --> 00:03:08,840
and analytics from the people that are reading it, you know,

61
00:03:08,960 --> 00:03:12,039
I affirmed one thing that you know, I treasure or

62
00:03:12,080 --> 00:03:15,960
I appreciate simplicity, which can be very hard to achieve,

63
00:03:16,400 --> 00:03:20,960
especially in the field of software development, but very important

64
00:03:21,000 --> 00:03:26,360
to strive for right as makes maintaining software much easier

65
00:03:26,360 --> 00:03:28,719
in the long run. But yeah, I think one of

66
00:03:28,759 --> 00:03:31,719
the favorite things that I really enjoyed in this process

67
00:03:31,719 --> 00:03:37,439
of writing was the brainstorm brainstorming phase. And you can

68
00:03:37,479 --> 00:03:40,199
think about, I don't know, if you've written some thesis

69
00:03:40,319 --> 00:03:43,120
or things like that at at university. It can be

70
00:03:43,199 --> 00:03:46,639
hard and discouraging at first, but once you latch onto

71
00:03:46,680 --> 00:03:50,039
something which is exciting, it can be routing, it can

72
00:03:50,080 --> 00:03:54,520
be eroding experience. So yeah, I think one thing maybe

73
00:03:54,520 --> 00:03:57,000
I can mention for people that are thinking about jumping

74
00:03:57,039 --> 00:04:00,879
in just find the great well put it this way, Like,

75
00:04:01,240 --> 00:04:04,159
the thing that I find exciting when I read articles

76
00:04:04,319 --> 00:04:09,039
is that most intriguing articles have a common theme. For instance,

77
00:04:09,159 --> 00:04:13,400
they are usually an easy read. Regardless of the length

78
00:04:13,439 --> 00:04:16,560
of the article, you just don't want to stop reading it, right,

79
00:04:17,639 --> 00:04:22,040
And some things that go into creating such quality content

80
00:04:22,319 --> 00:04:27,079
is the structure of your article as well as focus.

81
00:04:27,199 --> 00:04:31,399
Write about something that is focused on either a specific

82
00:04:31,439 --> 00:04:34,439
technology that you're interested in, or at least something that

83
00:04:34,519 --> 00:04:37,160
is solving a problem that most people are interested in.

84
00:04:37,480 --> 00:04:40,439
And in this case, Chuck, you've a bit skeptical about

85
00:04:40,439 --> 00:04:44,639
this cross platform stuff, but yeah, we hopefully we can

86
00:04:44,720 --> 00:04:47,360
dispel some of your myths that you might have had

87
00:04:47,680 --> 00:04:50,279
in the past. And I've also included a link to

88
00:04:50,519 --> 00:04:52,920
show Notes in the show notes a great article that

89
00:04:52,920 --> 00:04:56,160
I came across before writing my article, and it was

90
00:04:56,279 --> 00:04:59,120
a good motivator. It also has some great tips on

91
00:04:59,160 --> 00:05:01,560
how to get started and what to consider before you

92
00:05:01,600 --> 00:05:02,120
get thoughted.

93
00:05:02,399 --> 00:05:04,079
Speaker 1: I thought I hit the on mute and I didn't,

94
00:05:04,519 --> 00:05:08,680
so yeah, I sound smarter on mute. So anyway, Yeah,

95
00:05:08,720 --> 00:05:11,160
I mean it makes a ton of sense what you're

96
00:05:11,199 --> 00:05:14,160
talking about here, especially just in the sense of, you know,

97
00:05:14,240 --> 00:05:17,839
keeping it simple, keeping it focused, keeping these articles together

98
00:05:18,519 --> 00:05:20,399
in a way that makes it easy for people to

99
00:05:20,439 --> 00:05:23,600
figure out and flow. But yeah, like you said, I'm

100
00:05:23,639 --> 00:05:27,279
really curious to see how this platform thing works, and

101
00:05:27,600 --> 00:05:30,399
dive in a little bit on, Yeah, just how much

102
00:05:30,399 --> 00:05:33,439
code sharing there is, because as I've said before, I've

103
00:05:33,519 --> 00:05:37,680
tried writing apps that share code across stuff, and I

104
00:05:37,800 --> 00:05:40,240
just haven't had the experience where I was able to

105
00:05:40,279 --> 00:05:44,000
share a ton of my code, right, And so sometimes

106
00:05:44,040 --> 00:05:46,240
it was worth it, right because I didn't have to

107
00:05:46,240 --> 00:05:49,879
rewrite certain level layers of stuff, and sometimes it was

108
00:05:49,959 --> 00:05:51,439
just you know, this would have been way easier just

109
00:05:51,519 --> 00:05:54,199
to write from scratch. So I'm a little curious though,

110
00:05:54,199 --> 00:05:56,560
before we dive in though, when you say cross platform,

111
00:05:57,360 --> 00:05:59,759
what you mean is is that it works on the desktop,

112
00:05:59,800 --> 00:06:01,600
MO and web.

113
00:06:01,839 --> 00:06:05,160
Speaker 3: Right, That's pretty much it. Yes, I mean, if you

114
00:06:05,399 --> 00:06:10,839
look at like the scholarly definition of it in computing specifically,

115
00:06:11,399 --> 00:06:15,839
cross platform software means computer software that is implemented on

116
00:06:15,959 --> 00:06:20,240
multiple computing platforms, right, which means it must be able

117
00:06:20,279 --> 00:06:24,000
to function on more than one computer architecture or operating

118
00:06:24,040 --> 00:06:27,920
system for example. However, in web in web deev, this

119
00:06:28,040 --> 00:06:32,040
typically means that you develop a web app which is

120
00:06:32,079 --> 00:06:37,199
then somehow translated into source code which is able to

121
00:06:37,279 --> 00:06:41,519
run on many platforms, and in most cases that means

122
00:06:41,720 --> 00:06:46,399
native devices as you mentioned, could be Windows, Mac Os, Linux,

123
00:06:46,879 --> 00:06:50,639
as well as mobile platforms, the most common one obviously

124
00:06:50,639 --> 00:06:55,240
being iOS and an Android. So basically, cross platform software

125
00:06:55,279 --> 00:06:59,399
development is the practice of actively writing software that will

126
00:06:59,399 --> 00:07:03,720
work on more than one platform. However, developing such a

127
00:07:04,120 --> 00:07:09,920
such applications can be time consuming because of different operating systems,

128
00:07:10,199 --> 00:07:14,199
because different operating systems have different APIs right for example,

129
00:07:14,240 --> 00:07:18,879
Linux uses a different API for application software than Windows does,

130
00:07:18,959 --> 00:07:22,199
for example. But of course there are many cross platform

131
00:07:22,399 --> 00:07:27,680
programming toolkits and environments which help facilitate the process. I

132
00:07:27,720 --> 00:07:30,360
can think of one top of my head, React Native,

133
00:07:30,399 --> 00:07:33,920
for example. I was checking out their GitHub pages that

134
00:07:34,120 --> 00:07:38,360
the other day, and there's a list of platforms that

135
00:07:38,560 --> 00:07:45,519
they claim to support. They include things like TVs, Android, TV, wearables,

136
00:07:45,839 --> 00:07:51,079
ties and so forth. So there's definitely some liaps and bounds.

137
00:07:51,079 --> 00:07:54,720
Like this, technology has improved and continues to improve. But

138
00:07:54,759 --> 00:07:57,480
for today's topic and for my own personal experience, I

139
00:07:57,480 --> 00:07:59,399
think we're going to zone in a little bit on

140
00:07:59,560 --> 00:08:04,160
electron JS. Yeah, but then there's also other toolkits that

141
00:08:04,199 --> 00:08:09,160
you can use that basically focus on specific platform for example,

142
00:08:09,319 --> 00:08:13,199
gaming platforms and so forth. But yeah, all of this

143
00:08:13,399 --> 00:08:16,439
sounds very very good, but of course it doesn't come

144
00:08:16,839 --> 00:08:19,959
It does come with its own challenges. For example, testing

145
00:08:20,399 --> 00:08:25,959
cross platform applications may be considerably more complicated and tedious.

146
00:08:26,319 --> 00:08:29,399
As well as that, you have to deal with UI conventions,

147
00:08:29,480 --> 00:08:32,759
right you think of you io is this pinch and

148
00:08:32,840 --> 00:08:36,159
gestures and all these other things that you need to consider,

149
00:08:36,519 --> 00:08:40,480
But there's good tooling out there that allows you to

150
00:08:40,480 --> 00:08:41,720
to handle that complexity.

151
00:08:42,200 --> 00:08:43,000
Speaker 2: Yeah, that makes sense.

152
00:08:43,000 --> 00:08:45,440
Speaker 1: I have to say that as far as the cross

153
00:08:45,480 --> 00:08:48,240
platform stuff goes, the system that I am most familiar

154
00:08:48,320 --> 00:08:50,720
with is React Native. I've written a couple of apps

155
00:08:50,720 --> 00:08:54,360
with it. I really like it. Some of the React

156
00:08:55,039 --> 00:09:00,159
conventions are a little bit strange to me, but I

157
00:09:00,200 --> 00:09:02,879
mean it works, and there are a lot of toolkits

158
00:09:02,879 --> 00:09:06,080
that will get you started. So anyway, Yeah, as far

159
00:09:06,120 --> 00:09:08,679
as any of that goes that, you know, that makes sense.

160
00:09:09,000 --> 00:09:11,039
But and I think that's part of where I'm kind

161
00:09:11,039 --> 00:09:13,720
of coming at this and going, yeah, it's not as

162
00:09:13,759 --> 00:09:14,639
seamless as.

163
00:09:14,519 --> 00:09:15,519
Speaker 2: People make it sound.

164
00:09:15,600 --> 00:09:19,679
Speaker 1: Because if if you've written a React web app and

165
00:09:19,720 --> 00:09:22,440
then you've tried to translate it into a React native app,

166
00:09:26,720 --> 00:09:30,679
I mean you're gonna have the especially the UI layer,

167
00:09:30,759 --> 00:09:34,639
which is what React is good at, it just doesn't

168
00:09:34,639 --> 00:09:38,720
translate well from the web to my phone, right, it's

169
00:09:38,759 --> 00:09:42,679
the underlying logic and stuff like that. And even then

170
00:09:42,879 --> 00:09:45,759
how you go and access stuff off the web isn't

171
00:09:45,799 --> 00:09:49,080
one hundred percent the same. It's rather similar, but it's

172
00:09:49,080 --> 00:09:51,000
not completely the same. I mean, you can go use

173
00:09:51,039 --> 00:09:53,919
Apollo on both, right, and that looks the same. But

174
00:09:53,960 --> 00:09:56,279
if you're just hitting RESTful routes and stuff, that's not

175
00:09:56,440 --> 00:09:59,639
always one hundred percent seamless in the same way either.

176
00:10:00,080 --> 00:10:01,960
And so yeah, that that's kind of where I'm coming

177
00:10:02,440 --> 00:10:05,600
from with this. Before before we dive into how to

178
00:10:05,639 --> 00:10:07,799
do this, I want to just ask one more why question,

179
00:10:08,399 --> 00:10:12,200
and that is, or I guess, not necessarily a why,

180
00:10:12,240 --> 00:10:15,279
but a when, because some developers are gonna, you know,

181
00:10:15,320 --> 00:10:16,759
they're going to want this, right, They're going to want

182
00:10:16,799 --> 00:10:19,480
an app that kind of runs everywhere. And some apps

183
00:10:19,559 --> 00:10:22,480
are fine just working on the web, right, And so

184
00:10:22,559 --> 00:10:25,399
what I'm wondering is is, at what point do you

185
00:10:25,519 --> 00:10:28,440
feel like developers need to start looking at this and going, oh,

186
00:10:28,480 --> 00:10:30,120
I need to care about this, I need to worry

187
00:10:30,159 --> 00:10:32,399
about this. I need to go and actually make my

188
00:10:32,480 --> 00:10:33,600
app cross platform.

189
00:10:34,159 --> 00:10:37,720
Speaker 3: Yeah, yeah, absolutely, that's a that's a very good question.

190
00:10:37,799 --> 00:10:41,039
I mean, it's like for me, it's like whenever I

191
00:10:41,440 --> 00:10:44,120
come across new tech and and you and I know

192
00:10:44,240 --> 00:10:47,720
that in our space, like that seems feels like it's

193
00:10:47,759 --> 00:10:51,240
happening almost on a weekly basis, right, So why why

194
00:10:51,279 --> 00:10:54,440
should I care? Why should developers care about this? Well,

195
00:10:54,480 --> 00:10:58,200
in the case of cross platform for me personally, it's

196
00:10:58,519 --> 00:11:01,799
it's it's two things. It's time and it's money. Effort.

197
00:11:01,879 --> 00:11:04,799
You can throw in effort there as well. So the

198
00:11:04,799 --> 00:11:07,840
first thing that comes to mind is like code reusability.

199
00:11:08,000 --> 00:11:12,559
By writing just one code, develop devs can easily target

200
00:11:12,639 --> 00:11:16,120
multiple platforms. That's in itself just saves you a lot

201
00:11:16,159 --> 00:11:19,559
of time and effort. But in terms of how quick

202
00:11:19,679 --> 00:11:22,720
you you turn out these apps. So so you can imagine

203
00:11:22,720 --> 00:11:26,480
a team maybe I don't know, three or five developers

204
00:11:26,519 --> 00:11:30,720
supporting all these platforms. Of course, if you are diving

205
00:11:30,879 --> 00:11:35,440
specifically or in a specific technology. It will take time

206
00:11:35,440 --> 00:11:39,080
and it will take skills and effort. So for me,

207
00:11:39,240 --> 00:11:42,360
it's you know, the pace or the the pace of

208
00:11:42,480 --> 00:11:45,519
how quick you can develop. That also is something that

209
00:11:45,600 --> 00:11:48,000
I consider. And then the third the third thing is

210
00:11:48,919 --> 00:11:51,320
how well do you know your market? Where is your

211
00:11:51,320 --> 00:11:54,039
target market? And where are those people? Most people these

212
00:11:54,120 --> 00:11:55,919
days is you know, you know they've got a hand

213
00:11:56,000 --> 00:11:59,200
a cell phone, they're using their mobiles. They you know

214
00:12:00,039 --> 00:12:02,679
less if they're sitting at the office in front of

215
00:12:02,759 --> 00:12:05,679
a desktop or the laptop, then you know they're accessing

216
00:12:05,759 --> 00:12:10,679
most of apps via the mobile devices. So there's definitely

217
00:12:10,720 --> 00:12:14,320
that advantage of greater market reach. And again what I've

218
00:12:14,360 --> 00:12:18,159
mentioned does cost effective. It costs you liss to develop

219
00:12:18,200 --> 00:12:21,200
for all platforms using the same five guys or girls

220
00:12:22,080 --> 00:12:24,720
on that one code base. So yeah, these are the

221
00:12:24,759 --> 00:12:27,440
benefits that I've personally seen on the field as well

222
00:12:27,480 --> 00:12:29,480
as at my place of work.

223
00:12:29,919 --> 00:12:31,080
Speaker 2: Yeah, that makes sense to me.

224
00:12:31,159 --> 00:12:33,080
Speaker 1: I mean, and I like that you brought up the

225
00:12:33,080 --> 00:12:35,600
market because a lot of times as developers, you know,

226
00:12:35,639 --> 00:12:39,480
we're we we kind of ignore that piece of life, right,

227
00:12:39,559 --> 00:12:44,360
so we we kind of go, oh, well, when we

228
00:12:44,399 --> 00:12:49,240
want to provide this extra functionality for our users or

229
00:12:49,240 --> 00:12:52,159
something like that, right, instead of actually, yeah, talking to

230
00:12:52,240 --> 00:12:55,840
our business people and saying, okay, have you evaluated the

231
00:12:55,879 --> 00:12:58,879
market for whether or not people even want this on

232
00:12:58,919 --> 00:13:02,679
the desktop or on the mobile phone. I think the

233
00:13:02,720 --> 00:13:05,320
mobile phone's kind of a slam dunk in most cases,

234
00:13:05,360 --> 00:13:08,120
just because, Yeah, if you look at your web traffic,

235
00:13:09,120 --> 00:13:11,519
sixty percent or more is going to be coming from

236
00:13:11,679 --> 00:13:16,120
phones anyway. So having an app and having some kind

237
00:13:16,159 --> 00:13:20,600
of cause, let's face it, offline web functionality, it works,

238
00:13:21,480 --> 00:13:24,799
but most people don't expect it to work, and so

239
00:13:24,840 --> 00:13:26,799
they're if they're offline, they're not going to use their

240
00:13:26,799 --> 00:13:30,200
browser to hit your app. Absolutely, but if you have

241
00:13:30,240 --> 00:13:34,799
a mobile mobile app and it can cash some of

242
00:13:34,840 --> 00:13:37,120
the stuff and then make requests when it gets back

243
00:13:37,159 --> 00:13:39,480
on the internet, you know you're going to be way

244
00:13:39,480 --> 00:13:43,480
better off. And so yeah, I can definitely see that absolutely.

245
00:13:44,120 --> 00:13:45,759
So what do you need to do this then? I

246
00:13:45,799 --> 00:13:48,879
mean you mentioned Electron does Electron as far as I know,

247
00:13:48,960 --> 00:13:51,639
just as desktop apps, So you're pulling something else in

248
00:13:51,679 --> 00:13:52,639
for mobile or.

249
00:13:53,080 --> 00:13:56,679
Speaker 3: Yeah, are looking at it. Yeah, that's pretty much exactly.

250
00:13:56,919 --> 00:14:00,480
You've hit the nail on the head. So yes, Electron

251
00:14:00,639 --> 00:14:03,240
as it is today. What it gives you when you

252
00:14:03,360 --> 00:14:08,840
included into your project is exactly that support for your desktops.

253
00:14:09,159 --> 00:14:13,840
So we're talking mac os, Windows and Linux, and you'll

254
00:14:13,879 --> 00:14:16,799
be surprised it's easier than you think. In fact, this

255
00:14:16,879 --> 00:14:20,679
reminds me of electron jaslogan. It says if you can

256
00:14:20,720 --> 00:14:24,480
build a website, you can build a desktop app. Sometimes

257
00:14:24,480 --> 00:14:29,159
that might sound a little bit far fetched, sounds very marketee,

258
00:14:29,879 --> 00:14:32,480
you know, it's good that kind of vibe. But yeah,

259
00:14:32,559 --> 00:14:35,240
I think the best way is to basically just get

260
00:14:35,320 --> 00:14:39,519
your toes with and just really dive into it. But

261
00:14:39,879 --> 00:14:42,759
for those who some of the listeners that maybe not

262
00:14:42,799 --> 00:14:46,240
away of or have played around with this technology, electron

263
00:14:46,360 --> 00:14:49,720
is basically it's a framework that allows you the developer

264
00:14:50,399 --> 00:14:55,039
to create desktop application using the same tech that you

265
00:14:55,120 --> 00:14:58,240
already use for building web apps. So that is JavaScript,

266
00:14:58,519 --> 00:15:04,799
HTML and CSS right these applications. Basically, once you've built

267
00:15:04,840 --> 00:15:07,759
your app using the tech that I've just mentioned this

268
00:15:08,559 --> 00:15:12,679
it allows you to package and run directly on desktop

269
00:15:12,720 --> 00:15:15,039
on this platform sat I've mentioned mac o is, Windows

270
00:15:15,039 --> 00:15:19,120
and Linux. But it's one thing you I think listeners

271
00:15:19,120 --> 00:15:21,679
need to keep in minds so that typically you create

272
00:15:21,679 --> 00:15:25,759
a desktop app for a specific operating system right right,

273
00:15:26,320 --> 00:15:30,679
using that that always is specific native application framework, whatever

274
00:15:30,720 --> 00:15:34,000
it may be. But however, the Electron makes it possible

275
00:15:34,039 --> 00:15:38,639
to write your application once using the web technologies that

276
00:15:38,720 --> 00:15:41,639
you already know. So for me, it's no it really

277
00:15:41,799 --> 00:15:45,080
is no brainer, and it was pretty easy to really

278
00:15:45,159 --> 00:15:49,120
jump in and get started with it. Just to right

279
00:15:49,120 --> 00:15:51,799
now it just sounds still more on the appstract, but

280
00:15:51,960 --> 00:15:53,759
just to give you an example of some of the

281
00:15:54,440 --> 00:15:58,240
apps that we're built using this tech trans as so,

282
00:15:58,440 --> 00:16:04,679
I'm sure a bunch of developer have used vs code, Microsoft, Facebook, Messenger, Slack,

283
00:16:05,320 --> 00:16:10,080
MS team Switch. All those apps were built using this technology.

284
00:16:10,159 --> 00:16:14,080
So if you're looking for enough proof to see how

285
00:16:14,080 --> 00:16:17,799
complex can you build application using this tech, so you

286
00:16:17,840 --> 00:16:22,799
can really go crazy at it, you know what I mean? Yeah, So, so, yeah,

287
00:16:22,840 --> 00:16:26,519
you mentioned one interesting thing that so yes, Electron gives

288
00:16:26,600 --> 00:16:30,000
you the desktop support, but what about mobile for that?

289
00:16:30,080 --> 00:16:32,360
Speaker 1: Hang on, I got I got questions, I got questions.

290
00:16:32,600 --> 00:16:36,559
Don't go ahead yet, all right, So one thing is

291
00:16:36,559 --> 00:16:40,000
is that, I mean, how much glue code is there

292
00:16:40,600 --> 00:16:43,799
for desktop right, because I mean I can't imagine you

293
00:16:43,879 --> 00:16:47,399
just say NPM install Electron and you're done, right. I'm

294
00:16:47,440 --> 00:16:49,480
guessing there's a little more set up than that, but

295
00:16:49,519 --> 00:16:52,960
it sounds like it's pretty minimal. But yeah, I mean,

296
00:16:53,000 --> 00:16:54,799
how much are we looking at there.

297
00:16:54,840 --> 00:16:59,480
Speaker 3: In terms of LOCs line of code? H I it's

298
00:16:59,600 --> 00:17:03,320
not that much, to be honest. That to get you started.

299
00:17:03,639 --> 00:17:08,640
You the biggest or the main driver for getting kicking

300
00:17:08,680 --> 00:17:12,279
off this whole process is a It's called the main

301
00:17:12,400 --> 00:17:16,319
main script, so you can think of it as an

302
00:17:16,400 --> 00:17:20,839
Electron application is basically a no JS app right at

303
00:17:20,880 --> 00:17:25,359
its core. So so building an app with Electron is

304
00:17:25,359 --> 00:17:28,920
like building a no JAS application with a web interface

305
00:17:29,599 --> 00:17:33,440
or just building web pages which seamlessly integrate with no JAS,

306
00:17:33,480 --> 00:17:36,079
so depending on how you look at it. But just

307
00:17:36,079 --> 00:17:37,759
to get into the meat of it at a higher

308
00:17:37,839 --> 00:17:40,720
level there, I won't go too much introdital how it

309
00:17:40,759 --> 00:17:43,160
works under the hood, but the key thing to keep

310
00:17:43,160 --> 00:17:47,240
in mind is that Electron works on three key pillars.

311
00:17:47,720 --> 00:17:51,559
The first one is a chromium for displaying web content

312
00:17:51,920 --> 00:17:53,599
right so at the end of the day, you basically

313
00:17:53,720 --> 00:17:56,160
it's just a browser. It's just a browser just wrapped

314
00:17:56,160 --> 00:18:01,559
around a fency desktop. The second one is no Jazz,

315
00:18:01,680 --> 00:18:04,559
the actual library. This allows you to work with the

316
00:18:04,640 --> 00:18:09,279
local file system and the operating system for your target platforms.

317
00:18:09,400 --> 00:18:14,160
And then also it's for more sophisticated software applications and

318
00:18:14,240 --> 00:18:18,680
you can also tap into their customer APIs that's for

319
00:18:18,720 --> 00:18:23,400
working with as neat to functions. So yeah, it's that straightforward.

320
00:18:23,440 --> 00:18:26,960
I wouldn't say it's simple because it also depends on

321
00:18:27,200 --> 00:18:28,559
exactly what your end goal is.

322
00:18:29,400 --> 00:18:32,559
Speaker 2: Right now, that makes sense, I mean I can imagine that.

323
00:18:33,240 --> 00:18:36,279
Speaker 1: Yeah, you can get into some stuff that's fairly OS specific,

324
00:18:36,359 --> 00:18:39,680
right you know, the Windows does this and Linux does

325
00:18:39,680 --> 00:18:42,200
it different or doesn't do it at all, or vice versa.

326
00:18:43,079 --> 00:18:45,480
I guess the thing that I'm kind of imagining though

327
00:18:45,519 --> 00:18:47,359
at the same time, though, is if you're going to

328
00:18:47,359 --> 00:18:51,240
build an application that has the same experience on mobile, desktop,

329
00:18:51,319 --> 00:18:54,319
and Web, you're probably going to be coding to the

330
00:18:54,359 --> 00:18:57,359
most common denominator on all those lowest common denominator and

331
00:18:57,400 --> 00:18:59,920
all those things, which is going to be the Web actually,

332
00:19:00,359 --> 00:19:02,960
as far as just capability reaching into your machine and

333
00:19:02,960 --> 00:19:04,799
things like that, and so you're not going to need

334
00:19:04,839 --> 00:19:07,200
a lot of that functionality if it's just a straight

335
00:19:07,279 --> 00:19:09,440
up hey, this is the same app on all.

336
00:19:09,319 --> 00:19:15,039
Speaker 3: Three Yeah, No, absolutely, that is definitely it's a good point.

337
00:19:15,079 --> 00:19:18,279
It's something that you'll need to consider. But what I

338
00:19:18,359 --> 00:19:24,319
love about this cross platform support, especially with Node excuse me,

339
00:19:24,359 --> 00:19:28,640
with Electron, it does have some very good documentation, very

340
00:19:28,720 --> 00:19:32,480
detailed documentation, so if you ever feel kind of lost,

341
00:19:32,640 --> 00:19:36,079
they pull you right back out very quickly. But I mean,

342
00:19:36,240 --> 00:19:38,240
so if you want to real so how do I

343
00:19:38,279 --> 00:19:41,839
get this desktop platform support, Like, how do I get started?

344
00:19:42,440 --> 00:19:42,519
Speaker 2: So?

345
00:19:42,640 --> 00:19:46,839
Speaker 3: As I mentioned that Electron app is essentially an OJS app,

346
00:19:47,240 --> 00:19:50,319
so naturally the first step is to install Node. This

347
00:19:50,640 --> 00:19:54,359
consumes obviously that you already have a web app project

348
00:19:54,640 --> 00:19:57,240
already set up, so you're just pulling in a library

349
00:19:57,279 --> 00:20:02,359
into your existing web app. Ex step is like within

350
00:20:02,519 --> 00:20:07,000
other node jas app, Electron app uses a or uses

351
00:20:07,039 --> 00:20:11,119
the peggete jacent file as its main entry point. So

352
00:20:11,160 --> 00:20:13,480
you would need to add a script which points to

353
00:20:13,799 --> 00:20:17,319
that main JS file that I mentioned, which is basically

354
00:20:17,519 --> 00:20:21,079
like your your entry point. You're the thing that kickstarts

355
00:20:21,400 --> 00:20:25,640
everything else. This main script, let's call it main jazz,

356
00:20:26,079 --> 00:20:30,559
basifies the entropoint of your Electron application that will run

357
00:20:30,680 --> 00:20:35,519
in the what they call main process. So yes, Electron

358
00:20:35,599 --> 00:20:40,000
introduces a few new concepts as well as terminology which

359
00:20:40,039 --> 00:20:43,359
is not so common in web there that may may

360
00:20:43,400 --> 00:20:45,319
not be a good thing, but you know, it's something

361
00:20:45,359 --> 00:20:49,519
that you at least need to be to be aware of. Yeah,

362
00:20:49,880 --> 00:20:53,480
but maybe if you're I can just maybe mention the

363
00:20:53,519 --> 00:20:56,480
two main terminologies that you should always keep in mind,

364
00:20:56,599 --> 00:21:00,440
like whenever you're developing an electron app. These are the

365
00:21:00,440 --> 00:21:04,000
main things that you'll be thinking about almost throughout the

366
00:21:04,640 --> 00:21:08,119
death process. The first one is called I've already mentioned

367
00:21:08,160 --> 00:21:13,000
it is the main process which is responsible for creating

368
00:21:13,559 --> 00:21:15,920
web pages, and if it does this by creating what

369
00:21:15,960 --> 00:21:21,079
we call browser window instances. So each browser window instance

370
00:21:21,759 --> 00:21:25,319
is basically running a web page, like a simple web page,

371
00:21:25,680 --> 00:21:28,640
in its renderer process, which I'm going to tell you

372
00:21:28,680 --> 00:21:32,079
exactly what it is just now. But the key thing

373
00:21:32,160 --> 00:21:34,640
is that there's two processes. One is main, the other

374
00:21:34,640 --> 00:21:38,519
one is called renderer the render processes. The render process,

375
00:21:38,559 --> 00:21:42,599
on the other hand, it manages all the corresponding web pages.

376
00:21:42,839 --> 00:21:46,000
So for example, if let's say one so a crash

377
00:21:46,039 --> 00:21:49,799
in one render process does not affect other processes because

378
00:21:50,240 --> 00:21:52,279
they are you can think of them as their own

379
00:21:52,400 --> 00:21:57,680
little islands. So yeah, and then there's the one other

380
00:21:57,839 --> 00:22:01,279
key aspect to it, which is I guess you deal

381
00:22:01,319 --> 00:22:05,880
with this with any other application, which is the communication, right,

382
00:22:05,960 --> 00:22:09,559
the communication side of things. Electron does that using what

383
00:22:09,599 --> 00:22:15,200
they call IPC stands for inter process communication. The two

384
00:22:15,799 --> 00:22:19,960
main things in that space is well, the first one

385
00:22:20,000 --> 00:22:22,720
is called IPC main for the main process of course,

386
00:22:23,240 --> 00:22:26,960
and IPC render for the render process. But I guess

387
00:22:27,000 --> 00:22:28,640
we have a lot to cover today, so I won't

388
00:22:28,640 --> 00:22:31,960
go into yeah, Kales, but just know that there's a

389
00:22:32,039 --> 00:22:35,599
mechanism that allows you to communicate between these processes that

390
00:22:35,599 --> 00:22:36,279
we've talked.

391
00:22:36,039 --> 00:22:39,720
Speaker 1: About, right, Yeah, Yeah, I think we've kind of gone

392
00:22:39,720 --> 00:22:42,160
as deep as we want to just for this, because yeah,

393
00:22:42,240 --> 00:22:45,839
ultimately this is about just getting your cross platform app

394
00:22:45,920 --> 00:22:48,960
together in one repo, and we can probably just go

395
00:22:49,039 --> 00:22:51,359
deep on another episode and talk about Electron.

396
00:22:51,400 --> 00:22:51,640
Speaker 3: There.

397
00:22:52,160 --> 00:22:54,799
Speaker 1: One other thing that I'm curious about then, is as

398
00:22:54,799 --> 00:22:56,559
we get into this and we have let's say we

399
00:22:56,599 --> 00:22:59,720
have Electron all set up and it's working as expected,

400
00:23:00,960 --> 00:23:03,640
not a tremendous extra amount of code that we have

401
00:23:03,720 --> 00:23:05,880
to maintain in order to make it work, how do

402
00:23:05,960 --> 00:23:07,359
we start adding mobile into this?

403
00:23:07,960 --> 00:23:12,440
Speaker 3: Yeah, so that's so, yeah, that's a very good question. Naturally,

404
00:23:13,160 --> 00:23:16,160
as we've mentioned that this, we've got that desktop support,

405
00:23:16,599 --> 00:23:20,400
we've got the we've got the web app, right whatever

406
00:23:20,400 --> 00:23:23,319
the technology of used. So now we're thinking i IS

407
00:23:23,759 --> 00:23:30,519
and Android for integrating mobile platform support into your your workspace.

408
00:23:30,960 --> 00:23:33,680
There are a couple of options out there as mentioned earlier,

409
00:23:33,920 --> 00:23:37,480
the React Native and many others, but for today, I'm

410
00:23:37,480 --> 00:23:40,000
going to focus on one specific one which is called

411
00:23:40,640 --> 00:23:49,279
Capacitor Ionic from the Ionic boys and girls. Yeah, which

412
00:23:49,319 --> 00:23:52,359
is an interesting project out of the Ionic team. I

413
00:23:52,359 --> 00:23:56,799
personally enjoyed it's it's still enjoyed its simplicity and definitely,

414
00:23:57,160 --> 00:23:58,640
you know, I think it's got some of the best

415
00:23:58,680 --> 00:24:03,799
documentation out there. So what is this? What is capacity?

416
00:24:03,960 --> 00:24:07,440
First of all, it is open source. So what it

417
00:24:07,480 --> 00:24:11,839
does is it provides a native run time and an

418
00:24:11,920 --> 00:24:16,599
API layer for for web applications. Right, So that's that's

419
00:24:16,599 --> 00:24:21,880
also a loaded statement, but essentially it exposes the native

420
00:24:22,599 --> 00:24:25,400
layer through an API in order for you to write

421
00:24:25,440 --> 00:24:31,440
code ones to interact with the native mobile native platform.

422
00:24:31,799 --> 00:24:35,039
This helps you create this cross platform io is Android

423
00:24:35,119 --> 00:24:38,079
as well as p w as or progressive web apps,

424
00:24:38,480 --> 00:24:42,200
and you can use any modern framework, whether it be view, React,

425
00:24:42,599 --> 00:24:46,839
Angular or just plain old JavaScript. So so that is

426
00:24:46,880 --> 00:24:51,319
what Capacitor is a high level to get started with it.

427
00:24:51,359 --> 00:24:53,640
There's two ways to start.

428
00:24:53,680 --> 00:24:55,440
Speaker 2: I'm just going to chime in here for a second

429
00:24:55,519 --> 00:24:57,759
jump in jump in. Yeah, well, I know.

430
00:24:57,839 --> 00:25:00,440
Speaker 1: I just want to clarify a couple of things. Some

431
00:25:00,440 --> 00:25:03,880
folks might be familiar with Ionic having a originally been

432
00:25:04,880 --> 00:25:08,960
built on Cordova, which is a patchy project which came

433
00:25:09,000 --> 00:25:13,279
out of I can't remember. I think Adobe had owned

434
00:25:13,279 --> 00:25:14,880
it at one point and then they turned it over to

435
00:25:14,880 --> 00:25:18,240
a patchy foundation. Yeah, it was originally phone Gap. But

436
00:25:18,960 --> 00:25:23,039
what happened is is the folks at Ionic kept running

437
00:25:23,079 --> 00:25:23,920
into just some.

438
00:25:23,880 --> 00:25:26,680
Speaker 2: Funky things with Cordova, you know, just in the way

439
00:25:26,680 --> 00:25:29,759
that it worked. It didn't seems as natural to them,

440
00:25:30,200 --> 00:25:33,400
and so they created their answer to that, which is Capacitor,

441
00:25:33,440 --> 00:25:36,519
which does more or less the same thing, except it

442
00:25:36,559 --> 00:25:40,000
provides a cleaner API and doesn't have some of the

443
00:25:40,079 --> 00:25:44,319
cruft of basically what amounts to a much older project

444
00:25:44,400 --> 00:25:47,880
in Phone Gap. So anyway, so that's what you're dealing with.

445
00:25:47,920 --> 00:25:49,960
So if you're thinking, oh, well, what about Cordova, what

446
00:25:50,000 --> 00:25:53,039
about this? What about that? That's essentially how that came about.

447
00:25:53,079 --> 00:25:56,359
And anyway, it's a really interesting story. We should get

448
00:25:56,359 --> 00:25:58,920
somebody on the show to talk about it, and I

449
00:25:58,960 --> 00:26:00,920
know we've covered it on job script Jabber, I think.

450
00:26:00,960 --> 00:26:03,839
But anyway, yeah, so that's that's pretty much that.

451
00:26:03,920 --> 00:26:06,920
Speaker 1: But yeah it yeah, and they write the bridge code

452
00:26:06,960 --> 00:26:10,000
from the native stuff, the native libraries on iOS and

453
00:26:10,000 --> 00:26:11,440
Android over the JavaScript.

454
00:26:11,920 --> 00:26:13,319
Speaker 2: You don't have to go do it yourself.

455
00:26:14,079 --> 00:26:20,720
Speaker 3: Absolutely exactly. So in spirit, capacitor and Coudova are very similar, right, Yes,

456
00:26:21,160 --> 00:26:26,079
they both manage a WebView and provide some structured way

457
00:26:26,599 --> 00:26:30,599
of exposing this native functionality to web code. Right. However,

458
00:26:31,119 --> 00:26:36,160
capacitor has a few key differences in its app development workflow.

459
00:26:36,839 --> 00:26:40,880
Where in Couldova you use that conflict dot XML file

460
00:26:41,519 --> 00:26:45,359
or some similar configuration to manage all your plug ins,

461
00:26:46,039 --> 00:26:51,319
Capacitor you actually check in your excode and Android Studio

462
00:26:51,440 --> 00:26:55,240
projects into source control as well as you also use

463
00:26:55,319 --> 00:26:59,440
those specific platforms IDs when necessary of course, to do

464
00:26:59,519 --> 00:27:05,519
some platform specific configure, running testing and that sort of thing. Yeah,

465
00:27:05,559 --> 00:27:09,599
So configuration basically changes as changes are made by editing

466
00:27:10,200 --> 00:27:16,279
the appropriate platform specific configuration files directly. So for example,

467
00:27:16,359 --> 00:27:19,920
in Android, you'll be working with that Android manifest XML

468
00:27:20,000 --> 00:27:22,440
I think it's called where else in exquode it will

469
00:27:22,519 --> 00:27:26,279
be the info dot p Liss. So, yeah, that's it's

470
00:27:26,359 --> 00:27:29,039
a good point that you made that they are very similar,

471
00:27:29,079 --> 00:27:33,559
but Capacitor basically just simplifies it the whole process.

472
00:27:33,640 --> 00:27:37,400
Speaker 1: Yeah yeah, So what does it take to get Capacitor

473
00:27:37,480 --> 00:27:37,960
in there?

474
00:27:38,480 --> 00:27:42,359
Speaker 3: Yeah, so there's two ways. There's a recommended way and

475
00:27:42,400 --> 00:27:47,319
then not so recommended way.

476
00:27:48,440 --> 00:27:51,640
Speaker 1: So you know, that reminds me of how do I

477
00:27:51,680 --> 00:27:54,519
put it? It was back to the future, right where

478
00:27:54,519 --> 00:27:56,319
they're like, we can either take you in the hard

479
00:27:56,359 --> 00:27:58,119
way or the easy way, and then they whack them

480
00:27:58,160 --> 00:28:00,279
over the head the easy way.

481
00:28:00,799 --> 00:28:05,119
Speaker 3: Yeah, exactly, So it's kind of it's a scenario, right.

482
00:28:05,519 --> 00:28:08,119
But so I'll start with a recommended way, which is

483
00:28:08,400 --> 00:28:12,880
you can either add Capacitor to an existing project or

484
00:28:13,400 --> 00:28:16,599
they're not so recommended way, which is studying just you know,

485
00:28:16,799 --> 00:28:21,240
with a clean, fresh project. But Capacitor was designed primarily

486
00:28:21,720 --> 00:28:25,480
to be dropped into an existing front end project. But yeah,

487
00:28:25,519 --> 00:28:29,400
it also comes with a simple studying project structure if

488
00:28:29,440 --> 00:28:33,160
you'd like to start a fresh So my personal recommendation

489
00:28:33,359 --> 00:28:36,359
is exactly is how they recommend it, just having an

490
00:28:36,359 --> 00:28:39,599
existing app and just drop it in there. And I'm

491
00:28:39,599 --> 00:28:41,559
going to just take like one or two minutes to

492
00:28:41,680 --> 00:28:45,440
explain how how straight for what it is to edit

493
00:28:45,480 --> 00:28:48,960
to an existing project. So essentially you drop in a

494
00:28:49,000 --> 00:28:55,240
capacitor into an existing project by running an NPM install package.

495
00:28:55,440 --> 00:28:59,519
Right it's called So there's two parts. There's capacitors Cli

496
00:29:00,079 --> 00:29:02,680
so it does like Angular cel ideas you know that

497
00:29:02,839 --> 00:29:05,359
sort of things, writing scripts and so forth. And then

498
00:29:05,359 --> 00:29:09,799
there's a core module which is you know, aptly named

499
00:29:10,079 --> 00:29:14,039
capacitor Core and just by just dropping in, so after

500
00:29:14,039 --> 00:29:17,240
you've done the NPM install, you just simply run NPX

501
00:29:17,400 --> 00:29:21,000
kept in it that will initialize in an initialized capacitor

502
00:29:21,079 --> 00:29:24,640
and then you'll install the native platforms you want to target.

503
00:29:24,960 --> 00:29:27,400
And so in this case we're talking about iOS, So

504
00:29:28,160 --> 00:29:33,319
simple script like NPX cap ad iOS for iOS and

505
00:29:33,359 --> 00:29:37,200
then replace iOS with Android for Android and that's pretty

506
00:29:37,279 --> 00:29:43,319
much it. You will have projects as I mentioned for

507
00:29:43,319 --> 00:29:46,920
for Android, it will be Android specific code and bio

508
00:29:47,079 --> 00:29:49,960
is the same thing. But the power of it is

509
00:29:49,960 --> 00:29:53,759
that it gives you access to core native APIs, so

510
00:29:53,960 --> 00:29:56,680
you know, you can immediately start working with the camera,

511
00:29:57,039 --> 00:30:01,799
file system, haptics, geolocation or vcation, whatever that you want

512
00:30:01,839 --> 00:30:04,279
to that you want to focus on. And you can

513
00:30:04,319 --> 00:30:07,720
also extend with your own APIs if you want, but

514
00:30:07,839 --> 00:30:12,000
that's essentially the the first step that you need to

515
00:30:12,720 --> 00:30:14,559
get this whole process started.

516
00:30:14,880 --> 00:30:18,759
Speaker 1: Awesome. So one other question that I have because Ionic

517
00:30:18,799 --> 00:30:20,880
has been around in the Angular community for a really

518
00:30:20,920 --> 00:30:25,319
long time and Capacitor is the technology that they created

519
00:30:25,319 --> 00:30:28,079
and then moved over to. Right, So what I'm wondering

520
00:30:28,200 --> 00:30:31,279
is is why not go with Ionic? Like what's the difference?

521
00:30:32,799 --> 00:30:37,319
Speaker 3: Well, so, the so the Ionic team or Ionic specifically

522
00:30:37,799 --> 00:30:41,200
still uses the and from what I've read that they

523
00:30:41,440 --> 00:30:46,960
will continue to use and support cutover. However, the I

524
00:30:47,000 --> 00:30:50,319
think that the idea is now to to move more

525
00:30:50,359 --> 00:30:54,279
towards capacitor for obvious reasons they are I mean the

526
00:30:54,279 --> 00:30:58,319
Ionic team, they would by moving towards capacitor basically it

527
00:30:58,359 --> 00:31:02,279
allows them to control and multiple stacks. So this Capacitor,

528
00:31:02,319 --> 00:31:04,359
which is you know, part of their project. There is

529
00:31:04,440 --> 00:31:09,119
Ionic which is basically the UI how do you call it?

530
00:31:09,240 --> 00:31:13,400
UI library for building web apps, and then there's stencil jas.

531
00:31:13,680 --> 00:31:18,839
So by moving towards capacitor, this allows them to have

532
00:31:18,960 --> 00:31:23,880
control over this stack. So for example, if something were

533
00:31:24,319 --> 00:31:27,799
to let's say I introduces or has a breaking change.

534
00:31:27,799 --> 00:31:30,519
For example, the guy the Ionic team is able to

535
00:31:30,599 --> 00:31:35,359
jump in and make quick changes into capacitors API to

536
00:31:35,480 --> 00:31:40,440
quickly support whatever breaking change was, so and with kept

537
00:31:40,519 --> 00:31:43,440
with Cudova. On the other hand, it's it's an old project.

538
00:31:43,519 --> 00:31:46,799
I think it was early two thousands if I'm not mistaken.

539
00:31:47,079 --> 00:31:49,240
Just yeah, run about two thousand and eight or something

540
00:31:49,279 --> 00:31:54,039
like that. They I think there's been some slow sort

541
00:31:54,039 --> 00:31:57,119
of process in adopt in adulting or keeping up with

542
00:31:57,440 --> 00:32:02,440
the native mobile native specific platforms. So I think the

543
00:32:02,480 --> 00:32:05,599
whole idea is basically just to get closer to the

544
00:32:05,640 --> 00:32:09,039
stack so that they're able to control that entire stack.

545
00:32:09,440 --> 00:32:11,880
But in terms of differences, Chuck, as you ask, is

546
00:32:12,559 --> 00:32:18,799
that capacitor does actually support most of Cordova's plug in ecosystem,

547
00:32:19,440 --> 00:32:23,200
so it's not like you're really moving out. And also,

548
00:32:23,240 --> 00:32:26,640
as I've mentioned, you have the opportunity to extend by

549
00:32:27,079 --> 00:32:29,759
adding your own plug in. Capacitor has a very good

550
00:32:30,039 --> 00:32:32,400
API for allowing you to do exactly that.

551
00:32:32,799 --> 00:32:36,839
Speaker 1: Cool I'm gonna go brush up on my swift now nice.

552
00:32:38,039 --> 00:32:41,440
So you just follow the instructions for pulling Capacitor into

553
00:32:41,480 --> 00:32:44,240
an existing web app and you're after the races. One

554
00:32:44,240 --> 00:32:46,599
of the thing that I've been considering is a lot

555
00:32:46,640 --> 00:32:49,920
of the apps that I have, they how do I

556
00:32:49,960 --> 00:32:50,279
put it?

557
00:32:50,839 --> 00:32:51,000
Speaker 3: So?

558
00:32:51,000 --> 00:32:53,799
Speaker 1: They rely on a back end, right, And in fact,

559
00:32:53,839 --> 00:32:56,319
in a lot of the cases that I'm working in right,

560
00:32:56,799 --> 00:32:59,160
a lot of the static assets are served up right

561
00:32:59,240 --> 00:33:00,000
by that back end.

562
00:33:00,160 --> 00:33:02,759
Speaker 2: Right. You know, I've been.

563
00:33:02,599 --> 00:33:07,000
Speaker 1: A Ruby on Rails developer for sixteen years now and

564
00:33:07,160 --> 00:33:09,039
I like using that as my back end.

565
00:33:09,119 --> 00:33:09,279
Speaker 2: Right.

566
00:33:09,440 --> 00:33:13,680
Speaker 1: So if I have like a Rails back end Angular

567
00:33:13,720 --> 00:33:16,799
front end app, how does that affect something like this

568
00:33:17,599 --> 00:33:21,640
for both the desktop and the mobile. I mean, can

569
00:33:21,680 --> 00:33:24,640
I could just lift the front end and just go

570
00:33:24,759 --> 00:33:26,160
that way?

571
00:33:25,960 --> 00:33:30,680
Speaker 3: So you moving towards the architecture. Is that something that

572
00:33:30,759 --> 00:33:32,839
you you're thinking about, right?

573
00:33:33,839 --> 00:33:36,000
Speaker 1: Right, Let's say that I just have an Angular I

574
00:33:36,039 --> 00:33:38,880
have it's all angle on the front end. I don't

575
00:33:38,920 --> 00:33:43,119
want to get into like server side rendered Ruby stuff.

576
00:33:43,920 --> 00:33:46,079
I think that's well beyond the scope of this. But

577
00:33:46,160 --> 00:33:48,279
let's say that I have single page app on the

578
00:33:48,279 --> 00:33:50,680
front end that's all written in Angular, but I have

579
00:33:50,839 --> 00:33:56,240
a Rails API back end. My Angular code probably just

580
00:33:56,319 --> 00:33:58,599
calls into my back end and may just use like

581
00:33:58,960 --> 00:34:02,519
unqualified you are our paths instead of like a fall

582
00:34:02,599 --> 00:34:07,119
with the protocol in the domain and the path. So

583
00:34:07,440 --> 00:34:08,880
if if I have something like that, am I going

584
00:34:08,960 --> 00:34:10,719
to have to go clean that up and say, hey,

585
00:34:10,719 --> 00:34:12,920
you're actually going to go talk to my app dot

586
00:34:12,960 --> 00:34:15,320
com slash whatever instead of just slash whatever.

587
00:34:16,280 --> 00:34:21,880
Speaker 3: Well not necessarily, I think Yeah. Without knowing exactly the

588
00:34:21,960 --> 00:34:26,599
architecture and you know, the the interface, the API, it'll

589
00:34:26,639 --> 00:34:31,159
be very hard to say concretely. But you touched on

590
00:34:31,519 --> 00:34:33,840
the that you give an example that you have, and

591
00:34:34,360 --> 00:34:37,559
your Angler is basically your your framework of choice in

592
00:34:37,760 --> 00:34:42,360
this instance. So in terms of cross platform app Angular

593
00:34:43,199 --> 00:34:47,000
is basically the glue that's what binds it okay together. Right.

594
00:34:47,599 --> 00:34:51,960
So angler not only so Angular not only provide tooling

595
00:34:52,159 --> 00:34:55,159
which allows you to quickly build features like what you've

596
00:34:55,159 --> 00:34:58,000
mentioned just now, but it also provides, in my opinion,

597
00:34:58,239 --> 00:35:02,599
some of the great, great best practices for organizing your code. Right.

598
00:35:02,960 --> 00:35:06,239
So to give a concrete example, this could be perhaps

599
00:35:06,320 --> 00:35:09,960
a I don't know a selfie app or TikTok or whatever.

600
00:35:10,559 --> 00:35:13,119
Actually I've never used TikTok, but you know I've seen

601
00:35:13,199 --> 00:35:16,039
videos created with it. So let's say it's a video

602
00:35:16,039 --> 00:35:16,719
sharing app.

603
00:35:16,800 --> 00:35:20,320
Speaker 1: Right, Let's pass ourselves as school off a schooler than

604
00:35:20,360 --> 00:35:20,639
we are.

605
00:35:20,840 --> 00:35:25,840
Speaker 2: We use tiktac all the time, bro, exactly.

606
00:35:26,840 --> 00:35:29,440
Speaker 3: Yeah. So let's say you want this app to run

607
00:35:29,519 --> 00:35:33,039
on the web mobile devices, well at least the most

608
00:35:33,039 --> 00:35:36,000
prominent ones, which is and read and eyeways, right, and

609
00:35:36,039 --> 00:35:38,159
you also want this app to be installable in a

610
00:35:38,199 --> 00:35:44,039
desktop application. So in the context of Angular, you first

611
00:35:44,119 --> 00:35:47,960
you create an Angular app the standard way with engine

612
00:35:48,000 --> 00:35:51,159
you and your app name or if you plan to

613
00:35:51,280 --> 00:35:55,840
have multiple applications Angular applications, so you're thinking, I'm taking

614
00:35:56,079 --> 00:36:00,840
mono repo kind of style architecture. You can use ang

615
00:36:02,039 --> 00:36:05,159
NW or the app name, but passing the flag create

616
00:36:05,199 --> 00:36:08,960
application falls That allows you. That allows you a web

617
00:36:09,320 --> 00:36:13,719
space name to be different from the initial app name, right,

618
00:36:14,119 --> 00:36:18,760
and it ensures that that all applications, subsequent applications or

619
00:36:19,159 --> 00:36:22,519
libraries that you would add to that web space and

620
00:36:22,559 --> 00:36:26,920
they all reside in the project subfold. Then add your

621
00:36:26,920 --> 00:36:31,519
Angular applic applications using the ANGI generated app or application,

622
00:36:31,639 --> 00:36:33,400
and then you pass in the app name based on

623
00:36:33,440 --> 00:36:36,840
your project requirements. Of course, you select whichever option works

624
00:36:36,840 --> 00:36:39,400
for you, but by default this gives you out of

625
00:36:39,440 --> 00:36:43,679
the box support for the browser, because Angular is primarily

626
00:36:44,119 --> 00:36:47,639
a web framework with extra powers. Of course, then you

627
00:36:47,719 --> 00:36:52,239
develop your app using web technologies that you know and love,

628
00:36:52,679 --> 00:36:55,079
but in the end you have a web app as

629
00:36:55,119 --> 00:36:58,199
an a site. The charcter got to mention this, I'm

630
00:36:58,239 --> 00:37:00,719
not sure if you've heard of this website called what

631
00:37:01,000 --> 00:37:02,480
web Can Do dot today.

632
00:37:03,480 --> 00:37:06,079
Speaker 2: I haven't heard of that one. Can I use a

633
00:37:06,079 --> 00:37:06,880
whole bunch.

634
00:37:06,639 --> 00:37:10,159
Speaker 3: But okay, I'll include it in the show notes. But

635
00:37:10,199 --> 00:37:13,000
basically it shows you what kind of features the web

636
00:37:13,039 --> 00:37:17,239
currently supports. So, for example, there's an image capture API

637
00:37:17,920 --> 00:37:21,960
which allows you to control or allows you web application

638
00:37:22,039 --> 00:37:25,920
to control the advanced settings of your devices camera to

639
00:37:26,159 --> 00:37:31,480
think of zoom, wide balance, ISO, focused points, whatever, to

640
00:37:31,559 --> 00:37:34,679
take photos based on those settings. And there's also another

641
00:37:34,719 --> 00:37:38,239
one that I like, which is called Media Recorder API.

642
00:37:38,639 --> 00:37:42,599
This one allows you to record audio and video stream media.

643
00:37:42,880 --> 00:37:46,960
Speaker 2: Played with that one, yeah really, yeah, I'm an audio nerd.

644
00:37:47,000 --> 00:37:47,960
I was like, oh, I could do.

645
00:37:47,960 --> 00:37:53,119
Speaker 3: This on the web page. Nice exactly. So, like, the

646
00:37:53,159 --> 00:37:57,559
web continues to advance, but there's not yet quite match

647
00:37:57,639 --> 00:38:01,480
up to the native devices, and so that's where you

648
00:38:01,480 --> 00:38:05,960
would use electron capacitor to ad support for those native platforms.

649
00:38:06,320 --> 00:38:10,519
Speaker 1: So I guess we're kind of getting toward the end

650
00:38:10,559 --> 00:38:11,840
of our time here.

651
00:38:12,599 --> 00:38:14,119
Speaker 2: And the thing.

652
00:38:13,960 --> 00:38:16,519
Speaker 1: That I'm wondering now is and I'm going to kind

653
00:38:16,519 --> 00:38:18,480
of harken this back to something else that I talk

654
00:38:18,519 --> 00:38:22,760
about a lot is testing. So testing is much easier

655
00:38:22,800 --> 00:38:26,400
to get into your app and be doing it right

656
00:38:26,480 --> 00:38:29,000
if you start from the beginning, right, you start testing

657
00:38:29,000 --> 00:38:31,320
when you start your app, right, And I'm wondering if

658
00:38:31,360 --> 00:38:34,119
that's the same case with this right the same with

659
00:38:34,159 --> 00:38:37,480
like internationalization, there are a bunch of things, you know, accessibility,

660
00:38:38,000 --> 00:38:40,920
all those things are easier to get in initially and

661
00:38:41,000 --> 00:38:43,840
then just keep up on as opposed to maintaining or

662
00:38:44,000 --> 00:38:46,280
trying to go in after the fact and go, we've

663
00:38:46,280 --> 00:38:48,079
got to make this all accessible or we got to

664
00:38:48,119 --> 00:38:51,480
make this all responses? Is that the same here where

665
00:38:51,559 --> 00:38:55,719
it's easier if you pull all the architectures in at once,

666
00:38:56,760 --> 00:39:00,400
or you know, if you're a ways down the road,

667
00:39:00,679 --> 00:39:03,039
is not? Is it not so painful just to kind

668
00:39:03,039 --> 00:39:04,760
of go, Okay, now we're going to make this desktop

669
00:39:04,800 --> 00:39:07,039
app and it's a day or two and then you're.

670
00:39:06,880 --> 00:39:09,360
Speaker 2: Like, oh, I'm done.

671
00:39:10,000 --> 00:39:12,119
Speaker 3: Yeah, that's a good question. But I think for me,

672
00:39:12,320 --> 00:39:17,800
I think you know, with any tech approach, with caution, right, yeah,

673
00:39:17,840 --> 00:39:22,559
so you know, take baby steps. So, for instance, suppose,

674
00:39:22,639 --> 00:39:26,320
like in your example, you have this large, medium to

675
00:39:26,400 --> 00:39:30,519
large application which is primarily web based, or maybe you

676
00:39:30,599 --> 00:39:33,119
already have a desktop and you want to pull in

677
00:39:33,199 --> 00:39:36,440
now using the same code base to support for mobile.

678
00:39:36,880 --> 00:39:39,199
So for me, I mean the first approach would be

679
00:39:39,800 --> 00:39:43,719
to first try and pull in maybe one platform, so

680
00:39:43,880 --> 00:39:47,079
maybe for the next I don't know, a couple of sprints.

681
00:39:47,159 --> 00:39:50,760
You know you would do Android and focus on that.

682
00:39:51,280 --> 00:39:53,760
So get the guys up and running or ramp up

683
00:39:54,159 --> 00:39:58,480
to prepare for getting the the Android support into your

684
00:39:58,519 --> 00:40:04,119
existing platform. Testing. Yeah, Chuck Coman, it can be hard,

685
00:40:04,280 --> 00:40:08,079
but I think, as you mentioned, if you start testing

686
00:40:08,119 --> 00:40:12,039
early on. So I'm talking about these early baby steps.

687
00:40:12,360 --> 00:40:16,000
So the first thing that you introduce to the code base,

688
00:40:16,519 --> 00:40:19,480
make sure that that is covered in terms of testing.

689
00:40:19,639 --> 00:40:22,559
And by testing, I mean you can use whatever is

690
00:40:22,599 --> 00:40:27,440
applicable for that specific platform. Cypress obviously end to end

691
00:40:27,599 --> 00:40:32,360
testing as well as unit tests of course, but definitely

692
00:40:32,400 --> 00:40:37,000
jump in and get that testing early on, so that

693
00:40:37,079 --> 00:40:41,280
you know, as the application grows bigger and bigger and

694
00:40:41,280 --> 00:40:44,679
you add more features, camera support, aptics and all those

695
00:40:44,719 --> 00:40:48,400
other funky features we love, then you know that at

696
00:40:48,480 --> 00:40:50,480
least your base is well covered.

697
00:40:50,760 --> 00:40:54,440
Speaker 1: Yeah, So any advice for people who were kind of

698
00:40:54,440 --> 00:40:57,639
starting this out on their own and starting a new.

699
00:40:57,519 --> 00:41:01,840
Speaker 3: App, Yeah, I would say, do your research, plan out

700
00:41:01,920 --> 00:41:05,199
your project. Use. I like to say that, like, use

701
00:41:05,199 --> 00:41:07,639
the right tool for the right job. Just because you've

702
00:41:07,639 --> 00:41:09,760
got a hammer, this I mean that you must, you know,

703
00:41:09,920 --> 00:41:12,840
nail every hit, every nail on the you know, on

704
00:41:12,880 --> 00:41:15,559
the world. Right, Just do your research and find out

705
00:41:15,639 --> 00:41:20,039
what is the best tool for your specific situation. Then

706
00:41:20,119 --> 00:41:22,559
you you're free to develop the next shiny app for

707
00:41:22,599 --> 00:41:24,559
all the platforms for Max Memories.

708
00:41:24,960 --> 00:41:28,920
Speaker 1: Yeah, it's funny because people I've heard this advice from

709
00:41:28,920 --> 00:41:30,320
people before on different things.

710
00:41:30,679 --> 00:41:32,559
Speaker 2: It's like, hey, you know, go do your research and

711
00:41:32,599 --> 00:41:35,239
then make a plan. And then what happens is somebody's

712
00:41:35,280 --> 00:41:36,960
gonna go, well, that's not agile.

713
00:41:37,639 --> 00:41:40,079
Speaker 1: And I'm just gonna tell you if that was your reaction,

714
00:41:41,239 --> 00:41:42,320
don't be dumb.

715
00:41:42,639 --> 00:41:44,559
Speaker 2: Okay, I should be nice on this show.

716
00:41:44,960 --> 00:41:48,639
Speaker 1: But what agile is is we gather what information we

717
00:41:48,679 --> 00:41:51,559
can without it taking forever. Obviously you know this isn't

718
00:41:51,599 --> 00:41:54,920
a delaying tactic, but go do your homework, go figure

719
00:41:54,920 --> 00:41:57,239
out what you think it's gonna take, and kind of

720
00:41:57,280 --> 00:42:00,519
have a plan in mind, angele is is, Oh, we've

721
00:42:00,559 --> 00:42:02,679
been doing this for two weeks. This part of the

722
00:42:02,719 --> 00:42:06,440
plan is garbage. It doesn't we were misinformed. We we

723
00:42:06,480 --> 00:42:08,519
know more now than we did then, so you adapt

724
00:42:08,519 --> 00:42:12,559
the plan. Okay, So I think this is really actually

725
00:42:12,599 --> 00:42:15,079
a wise move. If you're not familiar with this kind

726
00:42:15,119 --> 00:42:17,840
of an approach, Yeah, go do a little homework, spend

727
00:42:17,880 --> 00:42:20,000
a day or so, kind of get your head around

728
00:42:20,039 --> 00:42:22,280
what it's going to take, figure out how you want

729
00:42:22,320 --> 00:42:24,960
to start approaching it. And then yeah, when you get

730
00:42:25,039 --> 00:42:27,960
in and you go, oh okay, I struggled with this.

731
00:42:28,119 --> 00:42:29,880
I went and looked it up. It turns out that

732
00:42:29,960 --> 00:42:32,000
there's a new approach that works better than that.

733
00:42:32,920 --> 00:42:36,119
Speaker 3: Absolutely absolutely. I couldn't have said a bit of myself.

734
00:42:36,199 --> 00:42:39,519
Speaker 1: Yeah, so what about the folks that have, like we said,

735
00:42:39,519 --> 00:42:43,039
a well established app there, it's out there, it's making money,

736
00:42:43,280 --> 00:42:46,039
and they realize, you know what, some of our folks

737
00:42:46,159 --> 00:42:47,480
want a desktop app?

738
00:42:47,760 --> 00:42:49,519
Speaker 2: Right, what do you do then?

739
00:42:49,880 --> 00:42:53,840
Speaker 3: Yeah? So in that case I would like for me obviously,

740
00:42:53,880 --> 00:42:56,159
I can only you know, give advice on based on

741
00:42:56,320 --> 00:42:58,039
something that I've worked on personality.

742
00:42:58,119 --> 00:42:59,719
Speaker 1: So right, there are a lot of people who don't

743
00:42:59,719 --> 00:43:01,480
know about is that I get it.

744
00:43:01,480 --> 00:43:03,280
Speaker 2: It's called legacy code, folks.

745
00:43:03,760 --> 00:43:06,440
Speaker 3: Yeah, oh, legacy code. That that is real. That is

746
00:43:06,480 --> 00:43:11,239
so real, real. Yeah, absolutely, it's you are going to

747
00:43:11,719 --> 00:43:14,800
especially if you're working on a large code base, there

748
00:43:14,840 --> 00:43:19,239
will definitely be challenges. But again I would say just

749
00:43:20,000 --> 00:43:22,679
do it, spike it out right to just give it

750
00:43:22,719 --> 00:43:24,599
a try and give it maybe two weeks and say

751
00:43:25,599 --> 00:43:28,039
we're just going to go for it. Just drop in electron,

752
00:43:28,639 --> 00:43:32,440
do simple basic functionality first. You don't have to support

753
00:43:32,599 --> 00:43:36,639
all the features immediately all at once, right, start off

754
00:43:36,679 --> 00:43:39,719
with a couple of features and see how that works out.

755
00:43:39,840 --> 00:43:44,280
But also keep an eye on the architecture. So if

756
00:43:44,360 --> 00:43:46,800
you're using if you're one of the lucky ones using

757
00:43:47,000 --> 00:43:51,360
Angular framework, as I mentioned, it's got great documentation on

758
00:43:51,519 --> 00:43:54,960
the best practices on how to structure your code in

759
00:43:55,000 --> 00:43:58,159
a smart way to help you grow with the app,

760
00:43:58,440 --> 00:44:01,639
to help you maintain app in the long run.

761
00:44:01,960 --> 00:44:05,800
Speaker 2: Yep. Absolutely, What do Angular upgrades look like on this?

762
00:44:06,079 --> 00:44:09,400
Speaker 1: I mean, of course, I'm thinking of like upgrades from

763
00:44:09,440 --> 00:44:12,440
like three to four to five that were a little

764
00:44:12,480 --> 00:44:18,840
scarier than say eight to nine to ten to eleven, right, right, yes,

765
00:44:19,119 --> 00:44:22,679
but yeah, imagining that, Yeah, somebody's on like Angular eight

766
00:44:22,880 --> 00:44:24,679
and they're looking at okay, we want to get up

767
00:44:24,719 --> 00:44:27,840
to Angular twelve's coming out soon. What are we looking

768
00:44:27,840 --> 00:44:30,559
at there? Like, what are there any gotchas or is

769
00:44:30,599 --> 00:44:33,519
it just hey, you know, it generally just works.

770
00:44:33,880 --> 00:44:37,599
Speaker 3: It's it generally just works. But that's the short answer.

771
00:44:37,599 --> 00:44:40,280
The long answer is that, I mean, if you look

772
00:44:40,320 --> 00:44:43,880
at the history of the Angular upgrades, it's I can't

773
00:44:43,920 --> 00:44:46,199
think of one where there was like a serious or

774
00:44:46,199 --> 00:44:51,280
maybe Angler six or whether there was serious like changes,

775
00:44:51,360 --> 00:44:55,159
like breaking changes. So from that perspective, I would say

776
00:44:55,199 --> 00:44:59,400
it's fairly safe. But then again it depends on the complexity.

777
00:44:59,440 --> 00:45:01,920
It depends on that legacy code that you're talking about.

778
00:45:02,320 --> 00:45:07,000
For example, where we're working on a hybrid application. So

779
00:45:07,440 --> 00:45:10,880
not only are we worried about upgrading to the next

780
00:45:10,960 --> 00:45:13,400
Angular version, but then we also need to make sure

781
00:45:13,519 --> 00:45:18,000
that englier jes code is still functioning, still running efficiently.

782
00:45:18,480 --> 00:45:20,639
We still need to take care of the Angular X

783
00:45:20,880 --> 00:45:24,039
side of things, which what we call it. We have

784
00:45:24,119 --> 00:45:26,920
to take care of old plugins from the Cordova world.

785
00:45:27,400 --> 00:45:30,079
We have to take care of desktop and its integration

786
00:45:30,320 --> 00:45:36,159
to the Microsoft Windows world. There's a lot, right, but

787
00:45:36,639 --> 00:45:40,800
it's something that you it gets better with time. But

788
00:45:41,039 --> 00:45:44,480
again my advice is just start small and then slowly

789
00:45:44,519 --> 00:45:45,280
build up to it.

790
00:45:45,639 --> 00:45:46,480
Speaker 2: Yeah, makes sense.

791
00:45:46,920 --> 00:45:49,320
Speaker 1: So I guess the last question is is and we

792
00:45:49,320 --> 00:45:52,920
should probably ask this first, but besides Tetris, what have

793
00:45:53,000 --> 00:45:57,840
you built with this? Very very very and I said

794
00:45:57,880 --> 00:45:59,880
Tetris because if you go read the article that's what

795
00:46:00,079 --> 00:46:02,320
watch it theories like, hey, here's a Tetras app and

796
00:46:02,360 --> 00:46:05,559
we're going to make it run everywhere because I don't

797
00:46:05,599 --> 00:46:07,440
waste enough time playing games.

798
00:46:07,559 --> 00:46:12,840
Speaker 3: Right, exactly, God chack, that's a very good question. So

799
00:46:13,079 --> 00:46:15,360
as if you remember what I mentioned right at the

800
00:46:15,360 --> 00:46:19,559
beginning is that this is technology that I work with

801
00:46:19,639 --> 00:46:23,000
on a daily basis. It's not the entire stack. So

802
00:46:23,599 --> 00:46:26,639
instead of capacity we use it, we're still using cutover.

803
00:46:27,480 --> 00:46:30,960
But in terms of what you can do with exactly

804
00:46:30,960 --> 00:46:36,039
what we've discussed today is anything and everything, right, because

805
00:46:36,440 --> 00:46:40,440
the support is there, the technology is getting better and better.

806
00:46:40,960 --> 00:46:45,559
So on a practical level, I mean, we've our application

807
00:46:45,760 --> 00:46:48,719
that I've mentioned earlier on it's called Anio. You can

808
00:46:48,760 --> 00:46:52,440
download it from the app stores. It's extremely rich, a

809
00:46:52,559 --> 00:46:58,400
feature reach feature reach. It's been I think, I don't know,

810
00:46:58,440 --> 00:47:01,039
it could be about four years almost five years in

811
00:47:01,119 --> 00:47:05,199
development so far, and we'll have all this complexity as

812
00:47:05,239 --> 00:47:07,519
well that we deal with on a data basis, so

813
00:47:08,480 --> 00:47:10,239
you know, take it from me, child, it's a safe

814
00:47:10,280 --> 00:47:13,280
bet if we can manage it, you know, with all

815
00:47:13,320 --> 00:47:16,960
this complexity. I think if you are looking at a

816
00:47:17,039 --> 00:47:23,360
medium or smaller, smaller app and use, it's fairly newish

817
00:47:23,440 --> 00:47:25,320
in terms of you don't have to support like a

818
00:47:25,400 --> 00:47:29,440
lot of legacy code. There's literally this guy is a limit.

819
00:47:29,760 --> 00:47:32,400
I think the technology is ripe for you to do

820
00:47:33,199 --> 00:47:35,679
in basically any any kind of app. I mean, look

821
00:47:35,719 --> 00:47:40,360
at vs code. That is an extremely featured application and

822
00:47:40,480 --> 00:47:42,840
it uses the very same technologies we've discussed.

823
00:47:43,159 --> 00:47:43,639
Speaker 2: Awesome.

824
00:47:43,800 --> 00:47:45,480
Speaker 1: All right, Well, before we get to picks, do you

825
00:47:45,519 --> 00:47:47,199
want to remind people where they can get in touch

826
00:47:47,239 --> 00:47:50,639
with you? I'm assuming yeah, Facebook or sorry not Facebook.

827
00:47:50,760 --> 00:47:52,400
I don't even know why I said Facebook because I

828
00:47:52,400 --> 00:47:55,559
don't like Facebook. But Twitter and GitHub and places like that.

829
00:47:56,519 --> 00:48:00,400
Speaker 3: Yeah, absolutely, I think the easiest one is Twitter at

830
00:48:00,559 --> 00:48:04,920
slick rick s l i q r c oh nice.

831
00:48:05,039 --> 00:48:05,760
Speaker 2: I like that one.

832
00:48:07,239 --> 00:48:10,440
Speaker 1: Sometimes it's like it's my name, I mean that's basically

833
00:48:10,519 --> 00:48:11,079
what mine is.

834
00:48:11,119 --> 00:48:13,400
Speaker 2: So yeah, all right, well let's go ahead and do

835
00:48:13,440 --> 00:48:16,280
some picks. Let's shout out about some stuff. I'm going

836
00:48:16,360 --> 00:48:17,320
to start us off here.

837
00:48:17,880 --> 00:48:21,400
Speaker 1: So I think on the last episode that we did

838
00:48:21,599 --> 00:48:23,920
unless it got canceled because we had a couple.

839
00:48:23,679 --> 00:48:24,360
Speaker 2: That have done that.

840
00:48:24,920 --> 00:48:29,239
Speaker 1: So I went to this retreat in oh No, last

841
00:48:29,280 --> 00:48:31,559
week I was still coming back. So yeah, this is

842
00:48:31,599 --> 00:48:33,400
my first week back. So now I can pick all

843
00:48:33,400 --> 00:48:36,360
the good stuff. All right, here goes. So I went

844
00:48:36,400 --> 00:48:38,360
to this retreat. It was it was kind of a

845
00:48:38,480 --> 00:48:41,119
mix between like a conference and a retreat. But there's

846
00:48:41,159 --> 00:48:43,440
a men's group that I'm a part of that's got

847
00:48:43,480 --> 00:48:45,159
guys all over the world, most of them are in

848
00:48:45,199 --> 00:48:49,280
the US and anyway, there's a there's a bunch of

849
00:48:49,280 --> 00:48:50,960
guys that I talk to every week that are part

850
00:48:50,960 --> 00:48:53,480
of this group. And so yeah, so we had a

851
00:48:53,519 --> 00:48:57,360
big get together in Nashville, Tennessee. Nashville is a great town.

852
00:48:57,400 --> 00:48:58,119
Speaker 2: I really like it.

853
00:48:58,599 --> 00:49:01,559
Speaker 1: But yeah, we got there and we just kind of

854
00:49:01,599 --> 00:49:05,000
went really really deep on stuff, right. So we had

855
00:49:05,039 --> 00:49:08,159
conversations about what we thought everybody was good at. We

856
00:49:08,280 --> 00:49:12,000
had conversations about stuff that we feel like each of

857
00:49:12,079 --> 00:49:15,280
us need to improve on. We just dove in on

858
00:49:15,599 --> 00:49:19,360
like family stuff and personal stuff and business stuff and

859
00:49:19,639 --> 00:49:22,079
oh man was so so good.

860
00:49:22,039 --> 00:49:23,639
Speaker 2: And there were a couple of things that really came

861
00:49:23,679 --> 00:49:26,679
out of it. One of them is we did.

862
00:49:27,320 --> 00:49:30,960
Speaker 1: There was a lot of conversation about relationships and how

863
00:49:31,039 --> 00:49:35,679
relationships matter, and that was just one big takeaway and

864
00:49:35,719 --> 00:49:37,360
so I'm going to kind of shout out about that,

865
00:49:37,559 --> 00:49:38,440
just relationships.

866
00:49:38,480 --> 00:49:41,840
Speaker 2: Right when I got back, I actually called up a few.

867
00:49:41,719 --> 00:49:43,559
Speaker 1: People that I hadn't talked to in about a year,

868
00:49:44,599 --> 00:49:48,599
and you know, just hey, how's it going, how's life?

869
00:49:48,599 --> 00:49:51,320
How are things? What can I do to help you out? Hey,

870
00:49:51,360 --> 00:49:54,079
give me a call. Well, Like, one of the people

871
00:49:54,119 --> 00:49:57,480
I called was one of the guys that organizes NGI

872
00:49:57,519 --> 00:49:59,360
coomf right, and I'm just like, I'm like, look, if

873
00:49:59,400 --> 00:50:03,039
you get in a inch right making Energie cof go off,

874
00:50:03,079 --> 00:50:05,280
call me up right because they're local guys, right, So

875
00:50:06,039 --> 00:50:08,480
it's like, you need a cord, you need you know, anything,

876
00:50:08,519 --> 00:50:10,760
you know, just call me and I'll just bring it over, right,

877
00:50:11,840 --> 00:50:14,960
you know kind of thing, right, But it's just great

878
00:50:15,000 --> 00:50:17,199
to connect and just be like, hey, how's you know,

879
00:50:17,239 --> 00:50:20,199
how's your family, how's your you know, how's your business,

880
00:50:20,199 --> 00:50:21,000
how's your life?

881
00:50:21,000 --> 00:50:23,840
Speaker 2: How's And Yeah, I feel like I've been able to

882
00:50:23,840 --> 00:50:24,480
offer some.

883
00:50:24,320 --> 00:50:27,400
Speaker 1: Support for the folks that are out there and part

884
00:50:27,440 --> 00:50:30,519
of the community, and so I really kind of took

885
00:50:30,559 --> 00:50:33,559
away from that, and I'm actually setting up this is

886
00:50:33,599 --> 00:50:36,039
the other big takeaway, So these are more actionable things.

887
00:50:36,719 --> 00:50:38,239
But one of the one of the things I took

888
00:50:38,280 --> 00:50:42,039
away is I've been moving all of my processes and

889
00:50:42,039 --> 00:50:45,519
stuff for the podcasts and for other things into Monday

890
00:50:45,559 --> 00:50:46,159
dot Com.

891
00:50:46,480 --> 00:50:47,960
Speaker 2: So I'm gonna pick Monday dot Com.

892
00:50:48,000 --> 00:50:50,440
Speaker 1: I think I picked click Up dot com a while back,

893
00:50:51,000 --> 00:50:56,480
but Monday Monday dot com. It they're they're They're kind

894
00:50:56,480 --> 00:50:59,719
of the same thing, actually, but I'm finding that Monday

895
00:50:59,719 --> 00:51:01,320
dot has a few more.

896
00:51:01,159 --> 00:51:02,840
Speaker 2: Automation features that I really want.

897
00:51:03,880 --> 00:51:08,199
Speaker 1: The main clincher for me, though, was that I met

898
00:51:08,360 --> 00:51:11,960
there was a seventeen year old young man there who

899
00:51:12,039 --> 00:51:14,000
had done this for a friend of mine, but he

900
00:51:14,039 --> 00:51:16,079
had gone in and so this other friend of mine

901
00:51:16,159 --> 00:51:18,880
he runs like a copywriting business, and so they write

902
00:51:18,920 --> 00:51:22,840
emails and blog posts and stuff for other companies, right,

903
00:51:22,880 --> 00:51:25,400
they just ghostwrite them, so nobody knows it's them, right

904
00:51:25,800 --> 00:51:28,480
except for the business owner and anyone the business owner tells,

905
00:51:30,159 --> 00:51:33,000
but he set up the whole process for them, and

906
00:51:33,079 --> 00:51:35,559
so you know, I'm paying him a few hundred dollars

907
00:51:35,559 --> 00:51:37,079
and he's setting the same thing up for me for

908
00:51:37,159 --> 00:51:40,960
the podcast processes, and so at the end of the day,

909
00:51:41,079 --> 00:51:43,639
it's going to be hey, you know, do this, now,

910
00:51:43,760 --> 00:51:46,119
do this, now, do this, and it's going to automatically

911
00:51:46,119 --> 00:51:50,880
inform people that they need to get it done. So yeah,

912
00:51:50,920 --> 00:51:54,639
and it integrates with Zappier as well, so if somebody

913
00:51:54,679 --> 00:51:57,840
schedules a new episode, then it will put it into

914
00:51:57,880 --> 00:52:00,800
Monday and set everything up so the process can get run.

915
00:52:01,320 --> 00:52:05,440
And so I'm super super happy with that. And so

916
00:52:05,559 --> 00:52:09,079
Monday dot Com is one. The other one and this

917
00:52:09,280 --> 00:52:11,440
is more out of so I've been doing the dev

918
00:52:11,440 --> 00:52:14,599
Influencers Accelerator and I've got a couple of people now

919
00:52:14,599 --> 00:52:17,519
who are releasing podcasts on a regular basis. One of

920
00:52:17,559 --> 00:52:19,920
them's on Flutter, the other one's on Quasar, which is

921
00:52:20,000 --> 00:52:24,440
built on VIEWJS. But they're like, okay, now what I'm like, well,

922
00:52:24,440 --> 00:52:26,679
now you got to grow your show, right, And so

923
00:52:27,119 --> 00:52:28,719
one of the best ways to grow your show is

924
00:52:28,719 --> 00:52:32,400
actually to get on other podcasts, right because you don't

925
00:52:32,440 --> 00:52:35,519
have to explain to people on who listen to other podcasts.

926
00:52:35,599 --> 00:52:37,559
Here's how you get a podcast, right, you just tell

927
00:52:37,599 --> 00:52:42,119
them where to get yours, right, and so you know,

928
00:52:42,159 --> 00:52:44,159
you just make sure that the content's good so that

929
00:52:44,239 --> 00:52:45,960
they'll go check it out, and then you make sure

930
00:52:45,960 --> 00:52:48,119
that the content on yours is good so they keep coming.

931
00:52:48,719 --> 00:52:51,360
So the tools that I use for that, I'm just

932
00:52:51,400 --> 00:52:54,320
going to put those out there. One of them is LinkedIn,

933
00:52:54,920 --> 00:52:59,159
and I pay for the LinkedIn. I can't remember what

934
00:52:59,239 --> 00:53:01,599
it is, but it's just the pro level stuff so

935
00:53:01,639 --> 00:53:03,519
I get a certain number of emails, so I can

936
00:53:03,559 --> 00:53:06,280
send email or messages to people that aren't in my

937
00:53:06,360 --> 00:53:10,480
network or who aren't my first level connections. But LinkedIn

938
00:53:10,559 --> 00:53:14,159
is terrific for finding people who work for particular companies.

939
00:53:14,159 --> 00:53:18,280
It's also really good for finding people who like If

940
00:53:18,280 --> 00:53:20,760
somebody has a podcast or something, it's usually pretty easy

941
00:53:20,760 --> 00:53:22,960
to identify them if you know their name, and most

942
00:53:22,960 --> 00:53:24,920
people use their name when they talk on their show,

943
00:53:25,000 --> 00:53:29,360
so it's not terribly hard. But yeah, so then once

944
00:53:29,400 --> 00:53:32,000
I have once I found them on there, the trick

945
00:53:32,119 --> 00:53:34,719
is is that if they're your first level contact in LinkedIn,

946
00:53:34,800 --> 00:53:37,480
you can pull their email off of there because it'll

947
00:53:37,519 --> 00:53:40,239
expose up to you. Right, they have figure you know them,

948
00:53:40,320 --> 00:53:42,320
so you probably have their phone number or their email

949
00:53:42,360 --> 00:53:45,119
or whatever they've exposed. But if you're not, and most

950
00:53:45,119 --> 00:53:46,679
of the people that I'm reaching out to are not,

951
00:53:47,400 --> 00:53:51,559
then I use a tool called hunter dot io, and

952
00:53:52,239 --> 00:53:55,559
if you know what company they work for, or you

953
00:53:55,599 --> 00:53:58,599
say you have the domain for their podcast, you just

954
00:53:58,679 --> 00:54:00,679
punch that in there and then you put in their name.

955
00:54:01,239 --> 00:54:04,559
And what I find is like ninety nine percent of

956
00:54:04,599 --> 00:54:06,719
the time, it gives me a good email address for

957
00:54:06,760 --> 00:54:09,960
the person I'm looking for so that I can reach

958
00:54:09,960 --> 00:54:12,559
out to them, right, and I'm not spamming them or anything.

959
00:54:12,599 --> 00:54:14,800
And there's a whole process for this, right, because you

960
00:54:14,840 --> 00:54:17,519
don't want to just say come on your show, right,

961
00:54:18,239 --> 00:54:22,360
And I kind of lay that out in the Influencers

962
00:54:22,400 --> 00:54:25,000
Accelerator because they're I'm kind of building a course at

963
00:54:25,000 --> 00:54:26,840
the same time. So when they asked me for stuff,

964
00:54:26,880 --> 00:54:29,599
I record a video that walks them through it. But

965
00:54:29,800 --> 00:54:32,239
what's interesting is, and I know I've been going on

966
00:54:32,320 --> 00:54:34,679
for a long time, but this all ties together because

967
00:54:34,800 --> 00:54:39,679
essentially then the process for the podcast interviews to get

968
00:54:39,719 --> 00:54:43,480
on the other shows is I have my virtual assistant

969
00:54:43,559 --> 00:54:45,920
to go out and find the podcast that I need

970
00:54:45,960 --> 00:54:48,440
to be on. Right, So I just said, look, anything

971
00:54:48,480 --> 00:54:50,239
related to code, I want to be on it, right,

972
00:54:50,800 --> 00:54:52,840
And so she went and looked up Alixer, and then

973
00:54:52,880 --> 00:54:54,559
she went looked up Bruby, and then she went and

974
00:54:54,559 --> 00:54:56,719
looked up JavaScript, and then she looked up Angular and

975
00:54:56,760 --> 00:54:58,760
she went, you're right. And so she just went down

976
00:54:58,800 --> 00:55:01,079
the list and she did out all the hosts for

977
00:55:01,119 --> 00:55:01,679
all the shows.

978
00:55:01,719 --> 00:55:01,880
Speaker 3: Right.

979
00:55:01,920 --> 00:55:03,400
Speaker 1: So now I have names of people I can go

980
00:55:03,440 --> 00:55:06,239
look up on LinkedIn, get their email addresses off of

981
00:55:06,320 --> 00:55:09,920
Hunter dot io. But all that process is now also

982
00:55:10,039 --> 00:55:11,679
and this is something I've been doing on my own,

983
00:55:11,920 --> 00:55:15,159
but that whole process is now automated in Monday, and

984
00:55:15,239 --> 00:55:19,800
so when we start putting the podcasts in there and

985
00:55:19,840 --> 00:55:24,400
putting the host's names in there, right then it'll say, okay,

986
00:55:24,679 --> 00:55:27,920
well you put these people in as podcast hosts. Now

987
00:55:27,960 --> 00:55:30,480
you need to go find their email address, their LinkedIn,

988
00:55:30,559 --> 00:55:33,639
their Twitter, their Facebook, et cetera, so that I can

989
00:55:33,719 --> 00:55:35,599
go and reach out to them. And then I've been

990
00:55:35,679 --> 00:55:39,480
doing the outreach myself. And the reason is is because again,

991
00:55:39,599 --> 00:55:41,199
like I said, if you just send them kind of

992
00:55:41,239 --> 00:55:43,000
the form letter, hey can I come on your show?

993
00:55:44,000 --> 00:55:48,000
That might work for some of these shows for me

994
00:55:48,159 --> 00:55:51,239
because I'm so well established in the podcast space, but

995
00:55:52,159 --> 00:55:54,840
it won't work for most people. And to be perfectly honest,

996
00:55:54,880 --> 00:55:57,320
I don't want to form letter people. So I'm actually

997
00:55:57,360 --> 00:55:59,960
personalizing it. And so if I have all this content

998
00:56:00,280 --> 00:56:03,039
information for them, that I can personalize it. Right, So

999
00:56:03,119 --> 00:56:05,360
I spend an extra two or three minutes. I go

1000
00:56:05,360 --> 00:56:07,519
look at their social media feeds, I go check out

1001
00:56:07,559 --> 00:56:09,719
what happened on their podcast. I guess I'm giving away

1002
00:56:09,760 --> 00:56:13,480
the process for getting yourself invited on a podcast, but

1003
00:56:13,519 --> 00:56:15,199
I go through the work, right, and then at the

1004
00:56:15,239 --> 00:56:16,719
end of the day, I send them an email and

1005
00:56:16,800 --> 00:56:19,400
just let them know, Hey, I saw that you're doing this.

1006
00:56:19,599 --> 00:56:22,239
Speaker 2: I really like this. You talked about this on your show.

1007
00:56:22,760 --> 00:56:26,000
Speaker 1: I think I have a relevant follow up topic, right,

1008
00:56:26,119 --> 00:56:28,960
and then I you know, and then what the other

1009
00:56:28,960 --> 00:56:30,760
thing I do is I say, Hey, I really liked

1010
00:56:30,800 --> 00:56:32,679
how you talked about this thing on your show.

1011
00:56:33,000 --> 00:56:34,119
Speaker 2: Do you want to come on mine?

1012
00:56:34,559 --> 00:56:39,440
Speaker 1: And by by kind of offering the reciprocal.

1013
00:56:38,920 --> 00:56:40,840
Speaker 2: Right, Hey do you want going to come on my show?

1014
00:56:40,840 --> 00:56:40,960
Speaker 3: Hey?

1015
00:56:41,039 --> 00:56:44,039
Speaker 1: Can I come on yours? My success rate's been pretty good,

1016
00:56:44,280 --> 00:56:49,119
so but the whole process is on Monday, the whole thing,

1017
00:56:49,679 --> 00:56:51,880
and so I just stick them in there and then

1018
00:56:51,920 --> 00:56:55,199
it's Okay, fill in the host, find the host contact, right,

1019
00:56:55,239 --> 00:56:57,440
And so it prompts my VA to do all that work.

1020
00:56:57,800 --> 00:56:59,719
Go do kind of the pre sales because it is

1021
00:56:59,719 --> 00:57:02,039
a same it's just I'm not getting money for it.

1022
00:57:02,480 --> 00:57:04,960
But do all the pre sales work, and then I

1023
00:57:05,079 --> 00:57:08,239
line up the sales call and make it happen. And

1024
00:57:08,280 --> 00:57:10,199
the thing is is they benefit from coming on my

1025
00:57:10,320 --> 00:57:13,840
show too. So anyway, if you have a process for

1026
00:57:13,960 --> 00:57:17,239
something and you want to automate, because some of the

1027
00:57:17,280 --> 00:57:22,280
automation is, hey, editor the files, the files are uploaded, right,

1028
00:57:22,320 --> 00:57:24,800
and then you know, it doesn't automate any of the

1029
00:57:24,920 --> 00:57:27,599
editing or anything like that, right. But then when he

1030
00:57:28,440 --> 00:57:32,639
when he's done editing, then he'll put the the link

1031
00:57:32,719 --> 00:57:35,920
in for the finished episode, right. And when he does that,

1032
00:57:35,920 --> 00:57:39,400
that triggers the next layer, right. And so there's manual

1033
00:57:39,440 --> 00:57:42,039
steps in there all the way along. But it lets

1034
00:57:42,119 --> 00:57:46,199
it lets my other person know, my production and publishing

1035
00:57:46,239 --> 00:57:50,880
person know. Okay, the you know, the the audio file

1036
00:57:51,039 --> 00:57:53,920
is done, and hey, I've got a summary written for

1037
00:57:53,960 --> 00:57:57,400
the show notes, so you know, boom, My next step

1038
00:57:57,480 --> 00:57:59,960
is to get this sucker scheduled for the day it's

1039
00:58:00,000 --> 00:58:00,760
supposed to go out.

1040
00:58:01,280 --> 00:58:01,880
Speaker 2: Wow, and so.

1041
00:58:02,480 --> 00:58:04,880
Speaker 1: Anyway, that's that's the way that that works, and it's

1042
00:58:04,920 --> 00:58:08,159
really really powerful and I'm really digging this on Monday.

1043
00:58:08,199 --> 00:58:10,880
Speaker 2: The other thing, though, is that when I was talking

1044
00:58:10,920 --> 00:58:12,320
through this with this kid.

1045
00:58:12,559 --> 00:58:15,360
Speaker 1: He he asked me a whole bunch of questions about

1046
00:58:15,360 --> 00:58:17,039
the process and what I want the process to be,

1047
00:58:17,639 --> 00:58:19,840
and so we actually built in some of the stuff

1048
00:58:19,880 --> 00:58:23,079
that my previous virtual assistant was doing that my current

1049
00:58:23,079 --> 00:58:25,559
one isn't, and that is like getting things scheduled for

1050
00:58:25,639 --> 00:58:29,440
social media and getting the notifications to go out to

1051
00:58:29,599 --> 00:58:33,079
our guests. So right you'd get an email that said, hey, Richard,

1052
00:58:33,159 --> 00:58:36,599
your episode's up right here, here's how you share it,

1053
00:58:36,679 --> 00:58:38,440
here's an easy way to do this, that and the other,

1054
00:58:39,079 --> 00:58:42,159
and it's just right, and so it makes the whole

1055
00:58:42,199 --> 00:58:45,599
thing just really really simple. So anyway, that's that's what

1056
00:58:45,639 --> 00:58:48,679
I'm working on and I'm really really enjoying that. So

1057
00:58:49,480 --> 00:58:51,800
definitely go check out Monday dot com. I'll put a

1058
00:58:51,800 --> 00:58:53,199
link to it in the show notes, and then I'm

1059
00:58:53,239 --> 00:58:56,000
also going to just yeah mention that I did put

1060
00:58:56,079 --> 00:59:00,280
up some episodes on relationships as bonus episodes on pretty

1061
00:59:00,360 --> 00:59:02,519
much all of the podcast feeds on dev chat, dot tv,

1062
00:59:02,960 --> 00:59:04,800
and I had like three of them on the dev

1063
00:59:04,880 --> 00:59:07,719
Influencers podcast, so you can go find those at dev

1064
00:59:07,800 --> 00:59:09,559
influencers dot com slash podcast.

1065
00:59:10,000 --> 00:59:12,199
Speaker 2: That's cool, all right, Richard, what are your picks?

1066
00:59:12,400 --> 00:59:18,480
Speaker 3: All right? Yeah? The first one, I've got a couple.

1067
00:59:18,920 --> 00:59:21,760
The first one is en Video Shield. I'm not sure

1068
00:59:21,800 --> 00:59:24,800
if you've had a chance to play around. It's a

1069
00:59:24,880 --> 00:59:29,199
it's a streaming console device, but it also you can

1070
00:59:29,199 --> 00:59:31,480
also play games when it comes with their keypad and

1071
00:59:31,519 --> 00:59:36,159
whatnot runs on. I think it's Android TV. But what

1072
00:59:36,199 --> 00:59:40,639
I love about it is myself and my kids. These guys,

1073
00:59:40,679 --> 00:59:44,159
I don't know when do they practice, but like there's

1074
00:59:44,199 --> 00:59:47,920
this one specific game that my little one just kicks

1075
00:59:47,920 --> 00:59:52,239
my behind all the time. Right, Like I'm not very

1076
00:59:52,280 --> 00:59:55,840
big on gaming, but yeah, they pretty good at it.

1077
00:59:56,320 --> 00:59:59,760
So n Video Shields, but also for the streaming capabilities

1078
00:59:59,800 --> 01:00:02,800
of the device itself, I think it's you know, it's

1079
01:00:02,920 --> 01:00:04,960
it's what I don't know, six years old now, but

1080
01:00:05,039 --> 01:00:07,320
I think it's still one of the best streaming devices

1081
01:00:07,360 --> 01:00:10,920
out there. So that is my first peak. The second

1082
01:00:10,960 --> 01:00:18,320
one is an article written by I called Sashko Stubailo.

1083
01:00:18,800 --> 01:00:21,559
I'm not sure if I'm pronouncing it correctly. But I

1084
01:00:21,599 --> 01:00:24,599
spoke about it earlier on and it's titled how to

1085
01:00:24,639 --> 01:00:27,320
write a great technical blog post. You can find it

1086
01:00:27,360 --> 01:00:31,480
on free code camp dot org. Yeah it's it's I

1087
01:00:31,480 --> 01:00:35,320
think it's well written, it sucks, succinct, and it basically

1088
01:00:36,039 --> 01:00:40,400
hits the point home. So check that out. The second one,

1089
01:00:40,599 --> 01:00:42,760
the third one is free code camp dot org. We

1090
01:00:42,800 --> 01:00:44,679
spoke a little bit about this the last time, Chuck,

1091
01:00:44,719 --> 01:00:47,480
if you remember, so we shout out to Quincy and

1092
01:00:47,599 --> 01:00:51,280
his team and the community at free code Camp. And

1093
01:00:51,400 --> 01:00:55,519
also the last, last but not least, is in depth

1094
01:00:56,000 --> 01:00:59,760
dot dev as well as the community. Max I think

1095
01:01:00,320 --> 01:01:03,840
is doing a great job, you know, giving the platform

1096
01:01:03,880 --> 01:01:07,519
to a lot of aspiring writers, myself included, and so forth.

1097
01:01:07,920 --> 01:01:11,599
Very very good community they so shout out to them.

1098
01:01:11,639 --> 01:01:15,400
And last one is I mentioned it earlier on What

1099
01:01:15,519 --> 01:01:20,480
Web Can Do dot today. That's the url. Check it out. Awesome.

1100
01:01:20,840 --> 01:01:23,320
Speaker 2: All right, Well thanks for coming Richard. This was awesome,

1101
01:01:23,360 --> 01:01:26,239
and yeah there's a ton of good picks there that

1102
01:01:26,320 --> 01:01:26,880
you threw out.

1103
01:01:27,360 --> 01:01:29,239
Speaker 1: Yeah, but yeah, let's go ahead and wrap it up

1104
01:01:29,280 --> 01:01:32,519
here and until next time, folks, Max out Peace

