WEBVTT

1
00:00:01.120 --> 00:00:04.839
<v Speaker 1>How'd you like to listen to dot NetRocks with no ads? Easy?

2
00:00:05.360 --> 00:00:08.599
<v Speaker 1>Become a patron. For just five dollars a month, you

3
00:00:08.640 --> 00:00:11.359
<v Speaker 1>get access to a private RSS feed where all the

4
00:00:11.400 --> 00:00:14.599
<v Speaker 1>shows have no ads. Twenty dollars a month will get

5
00:00:14.640 --> 00:00:18.440
<v Speaker 1>you that and a special dot NetRocks patron mug. Sign

6
00:00:18.519 --> 00:00:22.160
<v Speaker 1>up now at Patreon dot dot NetRocks dot com.

7
00:00:22.199 --> 00:00:24.719
<v Speaker 2>Hey, Carl and Richard here with your twenty twenty four

8
00:00:24.879 --> 00:00:26.039
<v Speaker 2>NDC schedule.

9
00:00:26.320 --> 00:00:29.679
<v Speaker 1>We'll be at as many NDC conferences as possible this year,

10
00:00:30.000 --> 00:00:33.240
<v Speaker 1>and you should consider attending no matter what. The Copenhagen

11
00:00:33.240 --> 00:00:37.640
<v Speaker 1>Developers Festival happens August twenty sixth through the thirtieth. Tickets

12
00:00:37.719 --> 00:00:40.719
<v Speaker 1>at Cphdevfest dot com.

13
00:00:40.880 --> 00:00:44.759
<v Speaker 2>Ndcporto is happening October fourteenth through the eighteenth, Tickets at

14
00:00:44.840 --> 00:00:46.600
<v Speaker 2>Ndcporto dot com.

15
00:00:46.640 --> 00:00:59.079
<v Speaker 3>We'll see you there, we hope.

16
00:01:01.359 --> 00:01:05.519
<v Speaker 1>Hey, welcome back to dot net Rocks episode nineteen eighteen.

17
00:01:05.640 --> 00:01:07.239
<v Speaker 1>Where are we in history today? Richard?

18
00:01:07.359 --> 00:01:08.400
<v Speaker 2>And of World War One?

19
00:01:08.680 --> 00:01:12.599
<v Speaker 1>End of World War One? Wasn't that fun?

20
00:01:12.799 --> 00:01:16.879
<v Speaker 2>By beginning of the H one N one pandemic flu Yes,

21
00:01:16.959 --> 00:01:18.959
<v Speaker 2>that will kill people for the next four years and

22
00:01:19.000 --> 00:01:20.120
<v Speaker 2>it's still around today.

23
00:01:20.439 --> 00:01:20.719
<v Speaker 3>Yay.

24
00:01:22.400 --> 00:01:25.560
<v Speaker 1>I'm Carl Franklin. That's, of course Richard Campbell, and we're

25
00:01:25.560 --> 00:01:29.519
<v Speaker 1>here for episode nineteen eighteen with the guy who built node,

26
00:01:29.640 --> 00:01:31.879
<v Speaker 1>Ryan Dobb. We'll talk to him in a minute, but first,

27
00:01:32.400 --> 00:01:34.680
<v Speaker 1>it's better no framework. Awesome world of music.

28
00:01:34.719 --> 00:01:43.120
<v Speaker 2>Oh man, what do you got?

29
00:01:43.159 --> 00:01:43.239
<v Speaker 4>So?

30
00:01:43.280 --> 00:01:46.760
<v Speaker 1>I looked for trending repos on GitHub and I found

31
00:01:46.760 --> 00:01:49.480
<v Speaker 1>this amazing app. I haven't used it yet, but it

32
00:01:49.519 --> 00:01:52.560
<v Speaker 1>looks amazing. It's still in alpha. It's called Follow.

33
00:01:52.799 --> 00:01:53.239
<v Speaker 2>Oh yeah.

34
00:01:53.239 --> 00:01:57.400
<v Speaker 1>And remember RSS readers, right, those were all the rage when.

35
00:01:57.319 --> 00:01:58.519
<v Speaker 2>Blogs the good old days.

36
00:01:58.599 --> 00:02:02.719
<v Speaker 1>Yeah, think of This is an RSS reader on steroids.

37
00:02:03.599 --> 00:02:07.159
<v Speaker 1>So it's called Follow. It's all about allowing you to

38
00:02:07.159 --> 00:02:10.759
<v Speaker 1>follow your favorite websites, blogs, social media accounts, podcasts, and

39
00:02:10.840 --> 00:02:15.159
<v Speaker 1>notifications in one place. And so it also has AI

40
00:02:15.360 --> 00:02:20.319
<v Speaker 1>to assist in operations, provides AI reports to highlight key

41
00:02:20.360 --> 00:02:25.039
<v Speaker 1>information for your subscriptions. Personal AI knowledge base built from

42
00:02:25.080 --> 00:02:29.159
<v Speaker 1>your subscription uses blockchain as an incentive mechanism for active

43
00:02:29.240 --> 00:02:32.639
<v Speaker 1>users and outstanding creators. But more about that. You know,

44
00:02:33.360 --> 00:02:36.599
<v Speaker 1>check out some of these pictures right, so you can

45
00:02:36.680 --> 00:02:40.319
<v Speaker 1>follow your favorite sites like they have a picture of you,

46
00:02:40.439 --> 00:02:49.240
<v Speaker 1>following the verge of Twitter and Mastodon and all the socials.

47
00:02:49.599 --> 00:02:57.080
<v Speaker 1>What is it, NASA astronomy pictures, so videos from.

48
00:02:57.039 --> 00:03:01.479
<v Speaker 2>YouTube, anything you might subscribe to.

49
00:03:01.680 --> 00:03:03.120
<v Speaker 1>Anything you might subscribe to.

50
00:03:03.400 --> 00:03:05.039
<v Speaker 2>Yeah, that's interesting.

51
00:03:04.840 --> 00:03:07.280
<v Speaker 1>And so it's it's kind of like that. It's kind

52
00:03:07.280 --> 00:03:10.120
<v Speaker 1>of the old RSS browser on steroids.

53
00:03:10.319 --> 00:03:12.319
<v Speaker 2>Yeah. Wow, it's good to see you know. It's not

54
00:03:12.360 --> 00:03:14.000
<v Speaker 2>like we stopped needing it. It's just that when they

55
00:03:14.000 --> 00:03:16.240
<v Speaker 2>shut down Google Reader, we're all heartbroken and we haven't

56
00:03:16.240 --> 00:03:16.800
<v Speaker 2>gotten over it.

57
00:03:16.960 --> 00:03:20.560
<v Speaker 1>Right, So this is a and I love this. Remember

58
00:03:20.599 --> 00:03:21.800
<v Speaker 1>trillion You used.

59
00:03:21.599 --> 00:03:23.680
<v Speaker 2>Trillion right, yes, I used trillion back.

60
00:03:23.960 --> 00:03:24.120
<v Speaker 4>Yeah.

61
00:03:24.159 --> 00:03:26.919
<v Speaker 1>So trillion was like an instant messenger that went everywhere

62
00:03:27.319 --> 00:03:28.719
<v Speaker 1>and it was one.

63
00:03:28.719 --> 00:03:30.439
<v Speaker 2>Just try to consol it all the clients, right, I

64
00:03:30.439 --> 00:03:33.439
<v Speaker 2>mean these days I have WhatsApp open and Signal open

65
00:03:33.439 --> 00:03:36.919
<v Speaker 2>and Messenger open and exactly Telegram and like save.

66
00:03:36.759 --> 00:03:40.680
<v Speaker 1>Me yeah exactly. And there's no there's no real way

67
00:03:40.719 --> 00:03:43.759
<v Speaker 1>to do that now because everybody wants to use their

68
00:03:43.800 --> 00:03:47.360
<v Speaker 1>app so they can get your information and not their competitors.

69
00:03:48.000 --> 00:03:51.400
<v Speaker 1>So this is for Windows, mac Os, Linux and the browser.

70
00:03:52.919 --> 00:03:56.479
<v Speaker 1>There's going to be Android and iOS versions coming soon.

71
00:03:56.680 --> 00:03:56.960
<v Speaker 2>Cool.

72
00:03:57.159 --> 00:04:01.360
<v Speaker 1>So that's it. Nineteen eighteen dot popt me, that's pwop

73
00:04:01.520 --> 00:04:04.080
<v Speaker 1>dot e and that'll bring you right to there, or

74
00:04:04.159 --> 00:04:08.159
<v Speaker 1>you could just look for GitHub dot com, slash rss next,

75
00:04:08.280 --> 00:04:12.120
<v Speaker 1>slash follow. That's what I got. Richard, who's talking to.

76
00:04:12.159 --> 00:04:14.479
<v Speaker 2>Us, love it. So you know, it was digging around

77
00:04:14.479 --> 00:04:16.720
<v Speaker 2>a bit because we'd done talked about node and other

78
00:04:17.079 --> 00:04:19.920
<v Speaker 2>tech a few times, and I ran across a show

79
00:04:19.959 --> 00:04:23.079
<v Speaker 2>for a while back. This is from show twelve eighteen,

80
00:04:23.240 --> 00:04:26.519
<v Speaker 2>so seven hundred shows ago. Wow. That would be November

81
00:04:26.560 --> 00:04:28.560
<v Speaker 2>of twenty fifteen when we talked to Paul Mooney about

82
00:04:28.600 --> 00:04:32.000
<v Speaker 2>micro service design, which is hilarious considering where we are

83
00:04:32.120 --> 00:04:35.519
<v Speaker 2>right now with the conversations this past year about modular

84
00:04:35.639 --> 00:04:38.720
<v Speaker 2>monoliths and that whole mindset, and so it was really

85
00:04:38.759 --> 00:04:41.600
<v Speaker 2>a pleasure to sort of dig back into that. Go right, yeah,

86
00:04:41.839 --> 00:04:44.839
<v Speaker 2>look at all these things we used to believe. And

87
00:04:45.319 --> 00:04:48.319
<v Speaker 2>one of the comments in there is from Ryan lippback again,

88
00:04:48.439 --> 00:04:49.720
<v Speaker 2>this is from a few years ago. He said, I

89
00:04:49.759 --> 00:04:51.519
<v Speaker 2>love the show. It's a topic very near and dear

90
00:04:51.519 --> 00:04:53.360
<v Speaker 2>to my heart. Is I'm me Deep Doo, a two

91
00:04:53.360 --> 00:04:56.519
<v Speaker 2>plus year project that's completely changing the landscape of application

92
00:04:56.560 --> 00:04:59.079
<v Speaker 2>development at my company. I think one of the really

93
00:04:59.120 --> 00:05:00.920
<v Speaker 2>important concepts of Hall hit On was the idea of

94
00:05:00.920 --> 00:05:04.600
<v Speaker 2>starting with something small and low risk. We have been

95
00:05:04.680 --> 00:05:07.160
<v Speaker 2>taking a suite of applications that are all monolithic in

96
00:05:07.240 --> 00:05:10.079
<v Speaker 2>nature and doing variations of the same thing, and are

97
00:05:10.120 --> 00:05:13.040
<v Speaker 2>starting to find the commonalities between them, extracting that into

98
00:05:13.040 --> 00:05:15.360
<v Speaker 2>their own services, and then to make that available. The

99
00:05:15.399 --> 00:05:17.519
<v Speaker 2>idea of being that in time we have replicated up

100
00:05:17.519 --> 00:05:20.600
<v Speaker 2>of this functionality to start sun setting some or all

101
00:05:20.680 --> 00:05:23.360
<v Speaker 2>of the legacy platform. Oh Man, Ryan, I hope you

102
00:05:23.399 --> 00:05:26.399
<v Speaker 2>tell us how this went eight years later, because that

103
00:05:26.399 --> 00:05:30.480
<v Speaker 2>that is the true keyotesque, like jousting at the windmill.

104
00:05:31.680 --> 00:05:36.639
<v Speaker 2>I found the debate about Jason schema interesting. It is

105
00:05:36.639 --> 00:05:40.199
<v Speaker 2>something we've recently started using. The application development and environment

106
00:05:40.279 --> 00:05:43.279
<v Speaker 2>is heavily dot net based until recently, we are adapting

107
00:05:43.319 --> 00:05:48.759
<v Speaker 2>to no JS and possibly go eight years ago. Until recently,

108
00:05:48.800 --> 00:05:52.439
<v Speaker 2>we've shared our message contracts as new get packages, which

109
00:05:52.480 --> 00:05:54.319
<v Speaker 2>makes total sense if you're in the dot net world.

110
00:05:54.680 --> 00:05:57.079
<v Speaker 2>This is problematic as soon as you started venturing into

111
00:05:57.160 --> 00:05:59.839
<v Speaker 2>other languages. Jason scheme is a way to provide us

112
00:06:00.600 --> 00:06:03.839
<v Speaker 2>to offer language agnostigs message contracts that we shared across

113
00:06:03.839 --> 00:06:07.199
<v Speaker 2>the applications written in different languages. Because there's lots of

114
00:06:07.279 --> 00:06:09.959
<v Speaker 2>other complaints around Jason schema, like you can drive yourself

115
00:06:09.959 --> 00:06:12.720
<v Speaker 2>crazy with this stuff, but platform agnostic, that's not something

116
00:06:12.759 --> 00:06:15.480
<v Speaker 2>you're gonna argue with. And make no mistake, I am

117
00:06:15.519 --> 00:06:18.160
<v Speaker 2>still in regular therapy for the lasting trauma I experience

118
00:06:18.240 --> 00:06:21.560
<v Speaker 2>using with soap and wizdles. But I think Jason's schema

119
00:06:21.680 --> 00:06:23.720
<v Speaker 2>can be used to divine a contract then, and it

120
00:06:23.720 --> 00:06:27.079
<v Speaker 2>does provide value. Thanks and keep up all the great stuff.

121
00:06:27.439 --> 00:06:31.319
<v Speaker 2>And that's from runnew ws Star. Oh good, yes, yeah,

122
00:06:31.399 --> 00:06:36.199
<v Speaker 2>but I just appreciate how relevant this entire conversation is

123
00:06:36.240 --> 00:06:39.199
<v Speaker 2>eight years later, the way we're building software right now,

124
00:06:39.199 --> 00:06:41.720
<v Speaker 2>and all of the same battles, and it just reminded

125
00:06:41.720 --> 00:06:44.439
<v Speaker 2>me like it's not that everything new is old is

126
00:06:44.480 --> 00:06:46.600
<v Speaker 2>old or everything old is new again, but it's like

127
00:06:47.040 --> 00:06:49.319
<v Speaker 2>we're still just trying to make software and trying to

128
00:06:49.319 --> 00:06:51.439
<v Speaker 2>get stuff done, and we've been doing that the whole time.

129
00:06:51.759 --> 00:06:54.120
<v Speaker 2>And I went read jason schema again because I haven't

130
00:06:54.160 --> 00:06:57.000
<v Speaker 2>touched in ages, and I'm going to include the show link.

131
00:06:57.519 --> 00:07:01.079
<v Speaker 2>Just this was thoughtful and useful, and it's interesting to

132
00:07:01.079 --> 00:07:03.839
<v Speaker 2>think about the newer ways graft QL and so forth

133
00:07:03.839 --> 00:07:07.120
<v Speaker 2>that we've gone to from there. Yeah, this lots to

134
00:07:07.120 --> 00:07:09.519
<v Speaker 2>be said here, So Ryan, thank you so much for

135
00:07:09.560 --> 00:07:11.240
<v Speaker 2>your comment, and a copy of music Cobi is on

136
00:07:11.279 --> 00:07:12.519
<v Speaker 2>its way to you. And if you'd like a copy

137
00:07:12.519 --> 00:07:14.600
<v Speaker 2>of music Koby, write a comment on the website at

138
00:07:14.600 --> 00:07:17.240
<v Speaker 2>dot NetRocks dot com or on the facebooks. We publish

139
00:07:17.279 --> 00:07:18.680
<v Speaker 2>every show there and if you comment there and I

140
00:07:18.759 --> 00:07:20.959
<v Speaker 2>read on the show, we'll send you copy music go by.

141
00:07:21.120 --> 00:07:24.600
<v Speaker 1>I just noticed somebody bought the Flak collection of music

142
00:07:24.639 --> 00:07:27.920
<v Speaker 1>to code by twenty one I Go twenty one twenty

143
00:07:27.959 --> 00:07:30.800
<v Speaker 1>five minute tracks design to help you stay in focus

144
00:07:30.839 --> 00:07:32.639
<v Speaker 1>while you're writing code or do anything.

145
00:07:32.480 --> 00:07:35.720
<v Speaker 2>And and Flak being the lossless format. Yep, it's like

146
00:07:35.800 --> 00:07:38.120
<v Speaker 2>wave because you didn't want to go Aggvorbis. What's up

147
00:07:38.160 --> 00:07:38.480
<v Speaker 2>with you?

148
00:07:38.839 --> 00:07:44.360
<v Speaker 1>Well, yeah, Flak is Wave quality but half the size,

149
00:07:44.399 --> 00:07:46.519
<v Speaker 1>so it's perfect for downloading. All right.

150
00:07:46.680 --> 00:07:49.160
<v Speaker 2>I'm perfectly happy with my MP three's honestly.

151
00:07:49.480 --> 00:07:49.680
<v Speaker 3>Yeah.

152
00:07:49.720 --> 00:07:52.920
<v Speaker 1>You know that's the joke, right, is that all these

153
00:07:53.040 --> 00:07:56.920
<v Speaker 1>audio files are all about their great microphones and all

154
00:07:56.959 --> 00:08:00.519
<v Speaker 1>their processes for recording and editing and stuff. And in

155
00:08:00.560 --> 00:08:04.639
<v Speaker 1>the end, you're making music for people who are going

156
00:08:04.720 --> 00:08:07.879
<v Speaker 1>to listen on earbuds. No offense, Ryan, but you know

157
00:08:07.920 --> 00:08:10.600
<v Speaker 1>you're going to listen to MP three's on earbuds. Yeah,

158
00:08:10.639 --> 00:08:12.079
<v Speaker 1>and they really don't care.

159
00:08:12.480 --> 00:08:15.439
<v Speaker 2>You know, it doesn't matter most of the time, it

160
00:08:15.439 --> 00:08:19.079
<v Speaker 2>doesn't matter. Come on, right, I got a good sound

161
00:08:19.079 --> 00:08:20.439
<v Speaker 2>SYSTM to the car, but not that good.

162
00:08:20.519 --> 00:08:22.920
<v Speaker 1>There still are a few audio files who have their

163
00:08:22.920 --> 00:08:25.759
<v Speaker 1>speakers set up and you know, their their CD quality

164
00:08:25.759 --> 00:08:29.000
<v Speaker 1>stuff and whatever's all right, enough of that, Okay, let's

165
00:08:29.040 --> 00:08:32.519
<v Speaker 1>bring on Ryan Doll. So Ryan Doll is the creator

166
00:08:32.559 --> 00:08:36.600
<v Speaker 1>of no JS and it's modern successor Dino. That's d

167
00:08:37.080 --> 00:08:42.080
<v Speaker 1>O Is it Dino or Deno Dino? Well, first of all,

168
00:08:42.159 --> 00:08:44.559
<v Speaker 1>on behalf of all developers everywhere, I'd like to thank

169
00:08:44.679 --> 00:08:48.919
<v Speaker 1>you for inventing no JS, because you really changed the environment.

170
00:08:49.080 --> 00:08:53.080
<v Speaker 1>You changed the whole scene of back end development from

171
00:08:53.360 --> 00:08:56.240
<v Speaker 1>well especially in our case, right, we were using Internet

172
00:08:56.279 --> 00:08:59.559
<v Speaker 1>Information Server for most of this stuff. And as Richard

173
00:08:59.600 --> 00:09:01.559
<v Speaker 1>likes to say, it's a Swiss army knife with all

174
00:09:01.559 --> 00:09:04.879
<v Speaker 1>the tools out and you have to play whack a

175
00:09:04.919 --> 00:09:06.960
<v Speaker 1>mole to patch it up with the stuff that you

176
00:09:07.039 --> 00:09:10.240
<v Speaker 1>don't want. Whereas no JS comes along and says, hey,

177
00:09:10.759 --> 00:09:14.120
<v Speaker 1>this is just does one thing. It does it really well.

178
00:09:14.000 --> 00:09:16.840
<v Speaker 2>Well, be clear, it starts out doing nothing. You have

179
00:09:16.879 --> 00:09:19.600
<v Speaker 2>to tell it to be allowed to do anything. Yeah,

180
00:09:19.639 --> 00:09:21.799
<v Speaker 2>but that's good. You take out one blade at the time,

181
00:09:21.840 --> 00:09:22.960
<v Speaker 2>only the ones you need.

182
00:09:22.960 --> 00:09:26.080
<v Speaker 1>And the influence that no js had throughout the industry

183
00:09:26.320 --> 00:09:29.240
<v Speaker 1>was undeniable. So thank you from all of us to you.

184
00:09:29.519 --> 00:09:35.000
<v Speaker 4>Yeah. Thanks, I'm continually surprised that notice as big as

185
00:09:35.000 --> 00:09:41.360
<v Speaker 4>it is. It's Yeah, I'm very happy to have kind

186
00:09:41.360 --> 00:09:47.039
<v Speaker 4>of stumbled upon the right idea that that servers can

187
00:09:47.039 --> 00:09:51.559
<v Speaker 4>be programmed very similarly to client site JavaScript. You know,

188
00:09:51.679 --> 00:09:57.080
<v Speaker 4>you get a non blocking servers are structured in callbacks

189
00:09:58.080 --> 00:10:01.120
<v Speaker 4>as our kind of websites. You know, a button has

190
00:10:01.159 --> 00:10:04.919
<v Speaker 4>a click handler, a website has an on request web

191
00:10:04.960 --> 00:10:08.440
<v Speaker 4>server has an on request handler. And you know, putting

192
00:10:08.480 --> 00:10:11.559
<v Speaker 4>those those two ideas together turned out to work really well.

193
00:10:12.440 --> 00:10:15.679
<v Speaker 4>And I think in combination with the fact that JavaScript

194
00:10:15.720 --> 00:10:19.159
<v Speaker 4>is far and away the most popular language in the

195
00:10:19.159 --> 00:10:23.559
<v Speaker 4>world in some ways the default programming language. Yeah, kind

196
00:10:23.559 --> 00:10:25.919
<v Speaker 4>of us.

197
00:10:25.279 --> 00:10:28.320
<v Speaker 2>Has what was a line Handsoman used, I mean maybe

198
00:10:28.360 --> 00:10:30.240
<v Speaker 2>he was quoting someone else. It's like, it's the assembly

199
00:10:30.320 --> 00:10:31.200
<v Speaker 2>language of the Internet.

200
00:10:31.480 --> 00:10:32.720
<v Speaker 1>Yeah that was cancer man.

201
00:10:34.080 --> 00:10:38.120
<v Speaker 4>Yeah, it's it's the it's the English for programming languages,

202
00:10:38.200 --> 00:10:39.960
<v Speaker 4>right right, It's what everybody speaks.

203
00:10:40.080 --> 00:10:42.759
<v Speaker 2>Although you did seem to hit the perfect moment like

204
00:10:42.759 --> 00:10:46.200
<v Speaker 2>two thousand and two thousand and nine, where the idea

205
00:10:46.240 --> 00:10:49.600
<v Speaker 2>that JavaScript was a standalone language was still a bit novel.

206
00:10:49.720 --> 00:10:52.440
<v Speaker 2>It was a scripting language or browsers, and suddenly it's like, wait,

207
00:10:52.960 --> 00:10:54.919
<v Speaker 2>run on a server, what's that about?

208
00:10:55.279 --> 00:10:55.480
<v Speaker 4>Yeah?

209
00:10:55.600 --> 00:10:57.720
<v Speaker 2>But it was also at the time when you know

210
00:10:57.799 --> 00:11:02.440
<v Speaker 2>the V eight engine, the Gecko uh, and what the

211
00:11:02.440 --> 00:11:04.840
<v Speaker 2>heck was the Microsoft one? But they were all started

212
00:11:04.919 --> 00:11:07.039
<v Speaker 2>dueling each other for features and the run up to

213
00:11:07.159 --> 00:11:11.679
<v Speaker 2>HTML five, like the acceller, the evolution of JavaScript detonated

214
00:11:11.759 --> 00:11:12.320
<v Speaker 2>right about that.

215
00:11:12.679 --> 00:11:15.600
<v Speaker 4>Yeah, Yeah, I mean I think I was very much

216
00:11:15.679 --> 00:11:17.840
<v Speaker 4>lucky to be playing with the right stuff at the

217
00:11:17.879 --> 00:11:22.080
<v Speaker 4>right time, right. I think if it wasn't me, somebody

218
00:11:22.240 --> 00:11:24.000
<v Speaker 4>somebody else would have would have kind of put put

219
00:11:24.039 --> 00:11:24.799
<v Speaker 4>two and two together.

220
00:11:25.120 --> 00:11:27.360
<v Speaker 1>So we noticed that after three years you kind of

221
00:11:27.360 --> 00:11:29.960
<v Speaker 1>walked away from Node and started your own things. So

222
00:11:30.000 --> 00:11:31.200
<v Speaker 1>what tell us the story of that?

223
00:11:31.639 --> 00:11:36.000
<v Speaker 4>So Node, uh was you know after after a couple

224
00:11:36.000 --> 00:11:38.879
<v Speaker 4>of years, was was you know, very clearly on a

225
00:11:38.919 --> 00:11:44.799
<v Speaker 4>good trajectory. It was, uh, you know, very early for

226
00:11:45.039 --> 00:11:48.399
<v Speaker 4>I think the large audience of people, but you know,

227
00:11:48.480 --> 00:11:51.399
<v Speaker 4>for for kind of the inner circle of development, like

228
00:11:51.480 --> 00:11:53.840
<v Speaker 4>it was very clear that we were that we had

229
00:11:53.919 --> 00:11:59.039
<v Speaker 4>like you know, hit hit on the right model. I

230
00:11:59.120 --> 00:12:02.919
<v Speaker 4>had made a business arrangement with my employer joined to

231
00:12:04.200 --> 00:12:08.039
<v Speaker 4>sell Node to them whatever that means for a for

232
00:12:08.080 --> 00:12:14.360
<v Speaker 4>ant licensed project, but transfer them the trademark, you know,

233
00:12:14.440 --> 00:12:17.159
<v Speaker 4>let them run the website, you know, basically allow them

234
00:12:17.200 --> 00:12:19.759
<v Speaker 4>to be kind of the official the official sponsor of

235
00:12:20.159 --> 00:12:25.120
<v Speaker 4>the project. And yeah, given those those two things, I mean,

236
00:12:25.159 --> 00:12:28.159
<v Speaker 4>the project was was kind of well structured, there was

237
00:12:28.200 --> 00:12:31.200
<v Speaker 4>a bunch of contributors, things were moving along. I had

238
00:12:31.240 --> 00:12:35.799
<v Speaker 4>been paid. You know, I'm not the sort of I

239
00:12:35.919 --> 00:12:39.399
<v Speaker 4>like starting things. I like working on new stuff, and kind.

240
00:12:39.200 --> 00:12:41.240
<v Speaker 1>Of I kind of figured that about you.

241
00:12:41.399 --> 00:12:45.960
<v Speaker 4>Maintaining stuff indefinitely is not necessarily the most exciting thing.

242
00:12:46.120 --> 00:12:50.399
<v Speaker 4>So yeah, I handed over the rains to Isaac Schluter

243
00:12:51.200 --> 00:12:56.240
<v Speaker 4>and stepped back from the project. And these days Node

244
00:12:56.360 --> 00:13:02.039
<v Speaker 4>is managed by a nonprofit foundation and there's many contributors

245
00:13:02.080 --> 00:13:06.039
<v Speaker 4>and you know, different companies kind of pay money to

246
00:13:06.039 --> 00:13:11.000
<v Speaker 4>to have engineers working on it. So you know, despite

247
00:13:11.120 --> 00:13:14.240
<v Speaker 4>despite kind of making this business arrangement back in back

248
00:13:14.279 --> 00:13:19.360
<v Speaker 4>in the early twenty tens, uh, you know, noe is

249
00:13:18.919 --> 00:13:22.720
<v Speaker 4>is still a kind of public domain software, and well,

250
00:13:22.879 --> 00:13:24.679
<v Speaker 4>used and liked around the world.

251
00:13:24.879 --> 00:13:28.120
<v Speaker 1>And is still a critical piece of business infrastructure. I

252
00:13:28.120 --> 00:13:29.240
<v Speaker 1>mean it is critical.

253
00:13:29.639 --> 00:13:33.639
<v Speaker 4>I think every website uses node. That's that's not really

254
00:13:33.679 --> 00:13:37.320
<v Speaker 4>a stretch riverside the thing we're on right now Google

255
00:13:37.360 --> 00:13:41.120
<v Speaker 4>dot Com. Literally every website maybe note is not serving

256
00:13:41.200 --> 00:13:45.799
<v Speaker 4>Google notice certainly not serving Google dot Com. But somewhere

257
00:13:45.840 --> 00:13:49.360
<v Speaker 4>in the process of creating that CSS or that HTML,

258
00:13:49.480 --> 00:13:54.679
<v Speaker 4>the build process of doing stuff, it's inevitable that. I mean,

259
00:13:54.679 --> 00:13:58.519
<v Speaker 4>it's it's the canonical run time for JavaScript outside of

260
00:13:58.559 --> 00:14:01.480
<v Speaker 4>the browser, and so is involved in all sorts of

261
00:14:01.519 --> 00:14:02.519
<v Speaker 4>front ends tooling.

262
00:14:02.679 --> 00:14:05.159
<v Speaker 2>It's always good to go poke at the GitHub repository

263
00:14:05.240 --> 00:14:07.159
<v Speaker 2>for a project, say how healthy is this? And I

264
00:14:07.200 --> 00:14:09.360
<v Speaker 2>look down as like, oh, they pushed to build an

265
00:14:09.360 --> 00:14:11.000
<v Speaker 2>hour ago. Yeah. No, I think it's busy.

266
00:14:11.200 --> 00:14:15.519
<v Speaker 4>I think it's going on all websites. It's not a stretch.

267
00:14:15.840 --> 00:14:19.600
<v Speaker 2>Yeah, and all the time. And I mean, I don't

268
00:14:19.639 --> 00:14:21.720
<v Speaker 2>know how you feel about JavaScript these days? Is it

269
00:14:21.759 --> 00:14:24.720
<v Speaker 2>Do you feel like it's stabler? The rate of changing

270
00:14:24.720 --> 00:14:26.559
<v Speaker 2>it to me doesn't seem as extreme as it used

271
00:14:26.559 --> 00:14:26.879
<v Speaker 2>to be.

272
00:14:27.000 --> 00:14:32.240
<v Speaker 4>Like the language spec itself. You mean it's moving. I mean,

273
00:14:32.240 --> 00:14:34.519
<v Speaker 4>that is what is so exciting about the Web and

274
00:14:34.639 --> 00:14:39.000
<v Speaker 4>JavaScript is that there's just so much attention and energy

275
00:14:39.080 --> 00:14:42.120
<v Speaker 4>being poured into it. You know, the spec is pretty

276
00:14:42.159 --> 00:14:45.960
<v Speaker 4>stable these days, you know, since since ekmascript modules were

277
00:14:46.639 --> 00:14:49.960
<v Speaker 4>introduced in twenty fifteen. You know, there's not like super

278
00:14:50.039 --> 00:14:53.799
<v Speaker 4>huge radical changes, but things are changing all the time.

279
00:14:53.840 --> 00:14:56.120
<v Speaker 4>You know, the temporal API and new new kind of

280
00:14:56.240 --> 00:15:02.000
<v Speaker 4>dates manipulation API for example, is becoming state now. It

281
00:15:02.559 --> 00:15:06.480
<v Speaker 4>still continues to evolve because there is such a you know,

282
00:15:06.519 --> 00:15:10.120
<v Speaker 4>it's so deeply embedded in human infrastructure that there's just

283
00:15:10.840 --> 00:15:15.320
<v Speaker 4>many thousands and thousands of people like trying to improve

284
00:15:15.399 --> 00:15:18.960
<v Speaker 4>this this kind of pretty crappy language, like to be honest,

285
00:15:19.000 --> 00:15:23.320
<v Speaker 4>like I don't necessarily love JavaScript, It's just where we

286
00:15:23.399 --> 00:15:26.200
<v Speaker 4>all are. And I think that's why that's why I

287
00:15:26.279 --> 00:15:27.879
<v Speaker 4>find it interesting to work in.

288
00:15:27.799 --> 00:15:32.639
<v Speaker 1>That accidental success kind of like Herman's Hermits.

289
00:15:33.159 --> 00:15:37.799
<v Speaker 2>Darn it, Brendan, you should have thought further ahead. Is

290
00:15:37.840 --> 00:15:39.799
<v Speaker 2>that thirty years ago? Now? Good lord?

291
00:15:40.159 --> 00:15:42.200
<v Speaker 1>Yeah? And wasn't it written in a weekend in a

292
00:15:42.240 --> 00:15:43.639
<v Speaker 1>hotel room or something.

293
00:15:43.440 --> 00:15:47.440
<v Speaker 2>Like that when it was oak? So you hand over

294
00:15:47.440 --> 00:15:50.519
<v Speaker 2>the range of twenty twelve. We know Dino appears in

295
00:15:50.559 --> 00:15:54.559
<v Speaker 2>twenty eighteen, So what were those six years, like were

296
00:15:54.559 --> 00:15:56.200
<v Speaker 2>you wandering the desert?

297
00:16:00.039 --> 00:16:02.600
<v Speaker 4>I went to work for Google for a time. I

298
00:16:02.639 --> 00:16:06.559
<v Speaker 4>was unemployed for a time, just working on random projects,

299
00:16:06.600 --> 00:16:10.600
<v Speaker 4>you know, trying to trying to create create a new

300
00:16:10.639 --> 00:16:14.200
<v Speaker 4>app as I still still kind of want to. Uh.

301
00:16:14.960 --> 00:16:19.039
<v Speaker 4>I have a Pinterest, Pinterest clone that are you know,

302
00:16:19.159 --> 00:16:22.080
<v Speaker 4>better version of Pinterest, the social social app that I've

303
00:16:22.120 --> 00:16:22.720
<v Speaker 4>been working on.

304
00:16:23.120 --> 00:16:24.240
<v Speaker 1>Can you follow for that.

305
00:16:27.799 --> 00:16:31.519
<v Speaker 4>It's just to that someday. But yeah, just just just

306
00:16:31.600 --> 00:16:33.120
<v Speaker 4>kind of working on stuff, which is kind of my

307
00:16:33.200 --> 00:16:37.320
<v Speaker 4>preferred mode of operation. Do. Dino was one of one

308
00:16:37.320 --> 00:16:39.559
<v Speaker 4>of those mini projects that I've been working on but

309
00:16:40.440 --> 00:16:44.039
<v Speaker 4>kind of achieved a lot of attention and I'm I'm

310
00:16:44.080 --> 00:16:48.360
<v Speaker 4>still working on it now, trying trying to uh see

311
00:16:48.360 --> 00:16:48.720
<v Speaker 4>it through.

312
00:16:50.320 --> 00:16:52.840
<v Speaker 2>I remember the JAS comp where you did the ten

313
00:16:52.879 --> 00:16:56.080
<v Speaker 2>things I regret about no JS, like heck of a

314
00:16:56.120 --> 00:16:58.039
<v Speaker 2>way to introduce some new ideas.

315
00:16:58.679 --> 00:17:03.559
<v Speaker 4>Yeah, and those I think some of those principles are

316
00:17:03.679 --> 00:17:08.119
<v Speaker 4>are not around in Dino anymore. We're just releasing Dino

317
00:17:08.200 --> 00:17:12.279
<v Speaker 4>two here this month. And uh, you know, for example,

318
00:17:12.640 --> 00:17:16.799
<v Speaker 4>complaining very much about package Jason and NPM modules and

319
00:17:16.880 --> 00:17:21.000
<v Speaker 4>the original demos of Dino were very simple without any

320
00:17:21.000 --> 00:17:26.440
<v Speaker 4>support for NPM. We walked that back and had to

321
00:17:26.880 --> 00:17:30.240
<v Speaker 4>be pretty pragmatic about stuff because you just realize that

322
00:17:30.279 --> 00:17:33.920
<v Speaker 4>at some point that gravity people, Yeah, people need to

323
00:17:33.920 --> 00:17:36.799
<v Speaker 4>pull in whatever like the a WUS SDK or g

324
00:17:36.920 --> 00:17:39.319
<v Speaker 4>r PC, and there's just no way that you're going

325
00:17:39.359 --> 00:17:43.319
<v Speaker 4>to rewrite like the a WUS s DK and uh yeah,

326
00:17:43.559 --> 00:17:47.799
<v Speaker 4>having having kind of backwards compative, I think the just

327
00:17:47.799 --> 00:17:52.160
<v Speaker 4>some gravity to to the to the NPM ecosystem. But nevertheless,

328
00:17:52.480 --> 00:17:57.160
<v Speaker 4>Dino remains uh dedicated to leveling up JavaScript and I

329
00:17:57.720 --> 00:18:00.559
<v Speaker 4>for one believe that this language is not going to

330
00:18:00.599 --> 00:18:03.640
<v Speaker 4>go away next year or two years from now, or

331
00:18:03.960 --> 00:18:06.519
<v Speaker 4>you know, maybe maybe not ever, and so I think

332
00:18:06.599 --> 00:18:10.839
<v Speaker 4>there's really a case to be made for building solid

333
00:18:11.079 --> 00:18:13.559
<v Speaker 4>foundations for for this language.

334
00:18:13.880 --> 00:18:17.039
<v Speaker 1>One thing I notice is that it supports web assembly.

335
00:18:18.359 --> 00:18:20.960
<v Speaker 4>Yeah, absolutely, I mean, you know, do you know, like

336
00:18:21.200 --> 00:18:26.480
<v Speaker 4>Node is built on v eight from Chrome, and you know,

337
00:18:26.519 --> 00:18:28.720
<v Speaker 4>you can kind of think of Dino and Node as

338
00:18:28.759 --> 00:18:32.720
<v Speaker 4>like different Linux distributions, Like you know, they both both

339
00:18:32.880 --> 00:18:35.400
<v Speaker 4>both use the same kernel, but they have kind of

340
00:18:35.440 --> 00:18:39.599
<v Speaker 4>a different code around it. So yeah, A v A

341
00:18:40.119 --> 00:18:43.799
<v Speaker 4>has fantastic you know, va is is the best javascripts

342
00:18:43.880 --> 00:18:46.400
<v Speaker 4>VM in the world, and of course has all the

343
00:18:46.440 --> 00:18:48.319
<v Speaker 4>cool features like LASM.

344
00:18:48.839 --> 00:18:51.079
<v Speaker 2>Can you talk to us about the role of typescript

345
00:18:51.160 --> 00:18:53.359
<v Speaker 2>in do you know just you know is thinking about

346
00:18:53.440 --> 00:18:57.839
<v Speaker 2>something more adjacent to the Microsoft community. It's great to

347
00:18:57.839 --> 00:18:58.359
<v Speaker 2>see it there.

348
00:18:58.480 --> 00:19:02.160
<v Speaker 4>Yeah, I think types so a lot of people think

349
00:19:02.200 --> 00:19:04.920
<v Speaker 4>of typescript as like a separate language from JavaScript. I

350
00:19:04.960 --> 00:19:07.440
<v Speaker 4>think of it as like the evolution of JavaScript. This

351
00:19:07.519 --> 00:19:11.519
<v Speaker 4>is where JavaScript is going, right, It's it's very it

352
00:19:11.599 --> 00:19:15.279
<v Speaker 4>is JavaScript with types, and it's become clear over the

353
00:19:15.359 --> 00:19:19.440
<v Speaker 4>last i don't know eight years or so that like

354
00:19:19.559 --> 00:19:28.240
<v Speaker 4>typescript is the canonical syntax for adding types to JavaScript.

355
00:19:28.880 --> 00:19:32.400
<v Speaker 4>We have supported typescript in Dino from the outset.

356
00:19:32.599 --> 00:19:32.799
<v Speaker 1>Yeah.

357
00:19:32.839 --> 00:19:34.799
<v Speaker 4>I guess it should also be said that, you know,

358
00:19:34.799 --> 00:19:37.839
<v Speaker 4>if you look at the you know, amount of code

359
00:19:37.880 --> 00:19:40.839
<v Speaker 4>on get out for example, JavaScript of course is number one,

360
00:19:41.200 --> 00:19:44.359
<v Speaker 4>Python is number two, typescript is number three, so you know,

361
00:19:44.680 --> 00:19:47.359
<v Speaker 4>in some ways, like JavaScript has both the number one

362
00:19:47.519 --> 00:19:54.119
<v Speaker 4>and number three spots. So I think that future versions

363
00:19:54.160 --> 00:19:58.240
<v Speaker 4>of the javascripts back will actually have some version of type,

364
00:19:58.319 --> 00:20:00.920
<v Speaker 4>like I feel like it will be standard ees inspect

365
00:20:00.960 --> 00:20:05.279
<v Speaker 4>out at some point in there's there's proposals in the

366
00:20:05.319 --> 00:20:08.839
<v Speaker 4>works to have types as comments added to the spec

367
00:20:08.920 --> 00:20:12.759
<v Speaker 4>so that browsers can actually understand Typescript directly and just

368
00:20:12.839 --> 00:20:15.519
<v Speaker 4>kind of strip out the types. Don't do it, you know,

369
00:20:15.559 --> 00:20:17.559
<v Speaker 4>they wouldn't do any type checking, but they would they

370
00:20:17.599 --> 00:20:20.519
<v Speaker 4>could strip it out and get the JavaScript out pretty quickly.

371
00:20:20.920 --> 00:20:22.880
<v Speaker 1>We should be clear right now for those who don't

372
00:20:22.880 --> 00:20:26.839
<v Speaker 1>know that Typescript isn't a language that runs. It's a

373
00:20:26.960 --> 00:20:29.559
<v Speaker 1>language that creates JavaScript that runs.

374
00:20:29.960 --> 00:20:30.400
<v Speaker 4>That's right.

375
00:20:30.480 --> 00:20:35.279
<v Speaker 1>So it isn't a replacement for JavaScript. It's a JavaScript generator.

376
00:20:36.039 --> 00:20:38.640
<v Speaker 1>So I think what you're talking about now is adding

377
00:20:38.799 --> 00:20:44.480
<v Speaker 1>Typescript features to JavaScript acmascript, right that.

378
00:20:45.160 --> 00:20:46.839
<v Speaker 3>Sort of do what typescript does.

379
00:20:46.960 --> 00:20:48.400
<v Speaker 1>Is that what you're getting at, Yeah.

380
00:20:48.200 --> 00:20:50.480
<v Speaker 4>There's kind of you can think of it as there's

381
00:20:50.480 --> 00:20:54.319
<v Speaker 4>two modes for Typescript. There is. So there's one compiler

382
00:20:54.359 --> 00:20:57.160
<v Speaker 4>pass that's super easy where you just strip out all

383
00:20:57.200 --> 00:21:00.240
<v Speaker 4>the types and what's left is JavaScript, right, and you

384
00:21:00.240 --> 00:21:02.200
<v Speaker 4>can do that. You can implement this sort of thing

385
00:21:02.319 --> 00:21:06.480
<v Speaker 4>like trivially. Then there's the type checking where it says, oh,

386
00:21:06.599 --> 00:21:09.880
<v Speaker 4>this function, you know needs a string argument. Let's go

387
00:21:10.000 --> 00:21:12.359
<v Speaker 4>make sure that the variable that you're passing to it

388
00:21:12.400 --> 00:21:15.079
<v Speaker 4>is actually a string and give you an error if

389
00:21:15.440 --> 00:21:20.599
<v Speaker 4>it's not. The type checking algorithm is wildly complicated and

390
00:21:20.680 --> 00:21:24.160
<v Speaker 4>like not something that you could re implement. Dino actually

391
00:21:24.200 --> 00:21:26.839
<v Speaker 4>does does both of these things. What I'm talking about

392
00:21:26.839 --> 00:21:30.240
<v Speaker 4>adding to the JavaScript spec would be type stripping. That's

393
00:21:30.279 --> 00:21:34.440
<v Speaker 4>the trivial operation. Perhaps in the future Chrome you could

394
00:21:34.480 --> 00:21:39.359
<v Speaker 4>like use typescript directly in your HTML, and Chrome could

395
00:21:39.440 --> 00:21:42.279
<v Speaker 4>understand that by like stripping out the types and executing

396
00:21:42.279 --> 00:21:46.680
<v Speaker 4>the JavaScript. But reimplyment, Yeah, the type checking is is

397
00:21:46.720 --> 00:21:49.839
<v Speaker 4>something that you would do in CI, not not like

398
00:21:50.039 --> 00:21:50.680
<v Speaker 4>at run time.

399
00:21:50.880 --> 00:21:52.839
<v Speaker 2>Yeah, there's no reason to do it at the browser level.

400
00:21:52.839 --> 00:21:57.319
<v Speaker 2>It should be done at the push basically. Yeah. Yeah, now,

401
00:21:57.359 --> 00:22:00.200
<v Speaker 2>and it's any're right. The folks that write that kind

402
00:22:00.279 --> 00:22:03.160
<v Speaker 2>of code to do type validation like that, they're different

403
00:22:03.200 --> 00:22:04.440
<v Speaker 2>kind of humans, Like.

404
00:22:04.400 --> 00:22:06.279
<v Speaker 1>That's that's an, that's anders Land.

405
00:22:06.480 --> 00:22:09.480
<v Speaker 2>Yeah, it's anders Land and Luke Hoban and those guys

406
00:22:09.559 --> 00:22:13.119
<v Speaker 2>like just crazy smart. But also it's almost like they're

407
00:22:13.160 --> 00:22:16.880
<v Speaker 2>sacrificed a part of their brain to think in compiler passes,

408
00:22:17.240 --> 00:22:19.920
<v Speaker 2>Like that's not a small thing to have to think

409
00:22:20.000 --> 00:22:20.359
<v Speaker 2>that way.

410
00:22:20.519 --> 00:22:22.960
<v Speaker 4>Yeah, yeah, and I mean the people who write V

411
00:22:23.039 --> 00:22:25.599
<v Speaker 4>eight for for that matter. I mean also also, yeah,

412
00:22:25.640 --> 00:22:28.759
<v Speaker 4>compiler people, it's a different breeder programmer yep.

413
00:22:28.920 --> 00:22:32.039
<v Speaker 2>Right, And strangely enough, it's like it's the thing they

414
00:22:32.079 --> 00:22:34.480
<v Speaker 2>want to do too, Like you can't plug them into

415
00:22:34.480 --> 00:22:36.480
<v Speaker 2>other projects either, they will go find another compiler to

416
00:22:36.519 --> 00:22:39.440
<v Speaker 2>work on, like that's what they look it's a specialization.

417
00:22:39.680 --> 00:22:40.559
<v Speaker 4>Yeah.

418
00:22:40.640 --> 00:22:43.160
<v Speaker 2>Well, and you seem to have a pattern too, Ryan,

419
00:22:43.279 --> 00:22:45.799
<v Speaker 2>because you keep building tools for us to make more

420
00:22:45.839 --> 00:22:47.000
<v Speaker 2>reliable websites.

421
00:22:47.200 --> 00:22:50.480
<v Speaker 4>Yeah, I would not. I am definitely not a compiler person,

422
00:22:50.559 --> 00:22:52.960
<v Speaker 4>even though you know I interact with the v A

423
00:22:53.119 --> 00:22:55.960
<v Speaker 4>VM quite heavily or with the Typescript compiler. I use

424
00:22:56.039 --> 00:22:59.440
<v Speaker 4>those as tools. I would consider myself a server person,

425
00:22:59.599 --> 00:23:02.799
<v Speaker 4>like right, I know how to write servers and kind

426
00:23:02.839 --> 00:23:06.000
<v Speaker 4>of use those programming languages to do this, like I

427
00:23:06.000 --> 00:23:08.799
<v Speaker 4>IO juggling, how do you how do you juggle a

428
00:23:08.880 --> 00:23:12.759
<v Speaker 4>thousand web socket connections in the most optimal way? And

429
00:23:13.160 --> 00:23:16.119
<v Speaker 4>you know, my my mantra or you know, goal I

430
00:23:16.119 --> 00:23:21.839
<v Speaker 4>guess is to allow people to do that more easily

431
00:23:21.920 --> 00:23:25.279
<v Speaker 4>because in the past, you know, pre node, it was

432
00:23:26.039 --> 00:23:28.960
<v Speaker 4>it was a specialized skill to be able to to say,

433
00:23:29.039 --> 00:23:32.720
<v Speaker 4>have a have a multiplayer web server that had a

434
00:23:32.720 --> 00:23:36.599
<v Speaker 4>bunch of ongoing connections where everybody, you know, write a

435
00:23:36.640 --> 00:23:39.000
<v Speaker 4>chat server, I r C server or something like that,

436
00:23:39.079 --> 00:23:43.559
<v Speaker 4>and being able to open that up is kind of fun.

437
00:23:43.920 --> 00:23:46.319
<v Speaker 1>So when you started, note at least were you using

438
00:23:46.359 --> 00:23:49.880
<v Speaker 1>web sockets or was this all just HDDP sockets.

439
00:23:49.960 --> 00:23:52.359
<v Speaker 4>Yeah, websitits did not exist.

440
00:23:52.519 --> 00:23:53.839
<v Speaker 1>Yeah, web sockets didn't exist.

441
00:23:53.960 --> 00:23:55.160
<v Speaker 2>Yeah, but long.

442
00:23:55.039 --> 00:23:58.079
<v Speaker 4>Long pulling existed, so you could you could you know,

443
00:23:58.240 --> 00:24:01.200
<v Speaker 4>have an open h GP require that kind of streamed

444
00:24:01.240 --> 00:24:05.599
<v Speaker 4>out responses. Yeah right, yeah, transferring coding streams. You can

445
00:24:05.720 --> 00:24:08.440
<v Speaker 4>just send send more and more chunks, chunks down to

446
00:24:08.519 --> 00:24:11.680
<v Speaker 4>the down to the browser mm hm, and up in

447
00:24:11.720 --> 00:24:13.599
<v Speaker 4>the other direction as well. You can just make a

448
00:24:13.720 --> 00:24:15.839
<v Speaker 4>make a request and keep appending to the body.

449
00:24:16.359 --> 00:24:19.799
<v Speaker 1>I did not claiming anything close to what you did,

450
00:24:19.839 --> 00:24:23.559
<v Speaker 1>but I spent a lot of time back then before

451
00:24:23.759 --> 00:24:29.000
<v Speaker 1>node really working on socket based servers that juggled multiple

452
00:24:29.000 --> 00:24:33.279
<v Speaker 1>clients and the problems with that, especially scaling and especially

453
00:24:33.359 --> 00:24:38.640
<v Speaker 1>dealing with net garbage collection. Sometimes the sockets would get

454
00:24:39.160 --> 00:24:42.240
<v Speaker 1>moved around and so you had to pin them in memory.

455
00:24:42.359 --> 00:24:46.680
<v Speaker 1>Like just a whole bunch of plumbing that nobody even

456
00:24:46.720 --> 00:24:49.680
<v Speaker 1>thinks about anymore. You know, that's hard stuff.

457
00:24:49.880 --> 00:24:53.960
<v Speaker 4>Yeah, I think to a large extent like this is

458
00:24:54.000 --> 00:24:57.799
<v Speaker 4>alleviated but I think, you know, doing this at larger

459
00:24:57.880 --> 00:25:01.359
<v Speaker 4>scales is still kind of open questions that people are

460
00:25:01.400 --> 00:25:03.400
<v Speaker 4>working on. So if you know, if you have a

461
00:25:03.440 --> 00:25:07.680
<v Speaker 4>single server, you know, single instance server, you know, maybe

462
00:25:07.720 --> 00:25:10.599
<v Speaker 4>you can handle a thousand connections at once or so,

463
00:25:11.200 --> 00:25:14.599
<v Speaker 4>but what what do you do when you have a

464
00:25:14.680 --> 00:25:18.319
<v Speaker 4>million connections? Right that? Like, how do you structure that?

465
00:25:18.440 --> 00:25:20.519
<v Speaker 4>How do you do this like in a serverless way?

466
00:25:20.599 --> 00:25:25.240
<v Speaker 4>Because you know, frankly, I'm so bullish that serverless is

467
00:25:25.519 --> 00:25:27.680
<v Speaker 4>kind of the future of cloud. You know, how do

468
00:25:27.839 --> 00:25:29.480
<v Speaker 4>how do you do this at the edge? How do

469
00:25:29.559 --> 00:25:31.920
<v Speaker 4>you like there's kind of you know, we've kind of

470
00:25:31.960 --> 00:25:35.160
<v Speaker 4>moved on to to like larger scale problems, and those

471
00:25:35.799 --> 00:25:37.839
<v Speaker 4>are not worked out yet.

472
00:25:38.720 --> 00:25:41.799
<v Speaker 1>Definitively, I'm interested to hear what you think about signal R.

473
00:25:43.000 --> 00:25:45.400
<v Speaker 1>I'll tell you my opinions of it. I think it's

474
00:25:45.440 --> 00:25:48.319
<v Speaker 1>really good for some things. But the thing that it's missing,

475
00:25:48.480 --> 00:25:51.440
<v Speaker 1>and it becomes quite obvious when you use it, is

476
00:25:51.559 --> 00:25:56.079
<v Speaker 1>any kind of any kind of cash, you know, And

477
00:25:56.160 --> 00:26:00.920
<v Speaker 1>so if your client is not connected, while when the

478
00:26:00.960 --> 00:26:04.640
<v Speaker 1>server sends you something, you miss it, it's gone, right,

479
00:26:04.720 --> 00:26:07.559
<v Speaker 1>And I guess that's why messaging and all those things

480
00:26:08.200 --> 00:26:10.839
<v Speaker 1>are they are the way they are is because hey,

481
00:26:10.880 --> 00:26:12.880
<v Speaker 1>I might go down and I might come back and

482
00:26:12.920 --> 00:26:14.240
<v Speaker 1>I want to get all my messages.

483
00:26:15.160 --> 00:26:17.400
<v Speaker 4>I have zero experience with dot net.

484
00:26:18.319 --> 00:26:22.680
<v Speaker 1>Okay, signal artisan just dot net. It's a JavaScript as well,

485
00:26:23.599 --> 00:26:27.680
<v Speaker 1>so yeah, but it's an implementation of web sockets, right

486
00:26:28.519 --> 00:26:30.200
<v Speaker 1>all right, Well, anyway we can move on from that.

487
00:26:30.279 --> 00:26:33.000
<v Speaker 1>But it's just, uh, you know something that I was

488
00:26:33.079 --> 00:26:33.799
<v Speaker 1>curious about.

489
00:26:34.599 --> 00:26:37.359
<v Speaker 2>Yeah, I mean, I'm always jumpy about direct connections between

490
00:26:37.359 --> 00:26:40.240
<v Speaker 2>a client and a server for longer than that's absolutely necessary,

491
00:26:40.319 --> 00:26:43.519
<v Speaker 2>like m but I, you know, cut my chops on

492
00:26:43.599 --> 00:26:47.119
<v Speaker 2>scaling where get in get out, like maybe yeah, turn

493
00:26:47.160 --> 00:26:49.279
<v Speaker 2>the resources quickly as possible. As soon as you're doing

494
00:26:49.279 --> 00:26:51.920
<v Speaker 2>anyone to run relationships like that, you're going to run

495
00:26:51.920 --> 00:26:57.000
<v Speaker 2>out of resources pretty fast. That being said that real

496
00:26:57.039 --> 00:27:01.079
<v Speaker 2>time stuff's cool, like they they continue the animated dashboard,

497
00:27:01.079 --> 00:27:02.480
<v Speaker 2>that kind of thing. It's just as long as you

498
00:27:02.519 --> 00:27:04.240
<v Speaker 2>got the user count under control, you're fine.

499
00:27:04.480 --> 00:27:04.880
<v Speaker 3>Mm hmm.

500
00:27:05.319 --> 00:27:07.319
<v Speaker 2>It's you know, what's the problem space you're working And

501
00:27:07.359 --> 00:27:09.759
<v Speaker 2>I think it's one of the challenges with with web

502
00:27:09.799 --> 00:27:11.920
<v Speaker 2>in general is there's so many things you can do

503
00:27:11.960 --> 00:27:15.680
<v Speaker 2>with it. Thinking about any one pattern, you're probably wrong.

504
00:27:16.039 --> 00:27:20.279
<v Speaker 4>I think that's that's a truism. Yeah, it's exciting as well.

505
00:27:20.319 --> 00:27:22.640
<v Speaker 4>I mean you can can do kind of anything with it,

506
00:27:23.119 --> 00:27:25.000
<v Speaker 4>so everybody can be very creative.

507
00:27:25.240 --> 00:27:28.359
<v Speaker 2>Yeah, just an experiment, like you go down different paths.

508
00:27:28.359 --> 00:27:31.480
<v Speaker 2>The problem is to applying a pattern suitiment suited to

509
00:27:31.559 --> 00:27:34.359
<v Speaker 2>a high scaling technique to a highly interative technique and

510
00:27:34.400 --> 00:27:36.839
<v Speaker 2>now you're fighting with it or going highly interactive on

511
00:27:36.839 --> 00:27:38.400
<v Speaker 2>something needs to scale and so on.

512
00:27:38.519 --> 00:27:41.400
<v Speaker 1>Sounds like we're opening up the airing of grievances for

513
00:27:41.519 --> 00:27:44.200
<v Speaker 1>web technology here. Who wants to start?

514
00:27:47.839 --> 00:27:50.640
<v Speaker 2>Why don't we take the break first and we can

515
00:27:50.680 --> 00:27:52.559
<v Speaker 2>do the second half as grievances.

516
00:27:52.720 --> 00:27:55.359
<v Speaker 1>That sounds good. All right, we'll be right back after

517
00:27:55.400 --> 00:27:58.720
<v Speaker 1>these very important messages. Do you have a complex dot

518
00:27:58.799 --> 00:28:02.359
<v Speaker 1>net monolith you'd like to factor to a micro services architecture?

519
00:28:02.920 --> 00:28:06.640
<v Speaker 1>The micro Service Extractor for dot Net tool visualizes your

520
00:28:06.680 --> 00:28:11.039
<v Speaker 1>app and helps progressively extract code into micro services. Learn

521
00:28:11.039 --> 00:28:17.920
<v Speaker 1>more at aws dot Amazon dot com, slash modernize, and

522
00:28:18.000 --> 00:28:21.799
<v Speaker 1>we're back. It's dot Netrocksom, Carl Franklin, It's Richard Campbell. Hey,

523
00:28:22.119 --> 00:28:25.599
<v Speaker 1>and that's our friend Ryan Dahl and the inventor of

524
00:28:25.680 --> 00:28:28.640
<v Speaker 1>no JS. And just a reminder If you don't want

525
00:28:28.640 --> 00:28:30.240
<v Speaker 1>to hear these ads, you can sign up for a

526
00:28:30.240 --> 00:28:33.359
<v Speaker 1>Patreon five bucks a month. I'll get you an ad

527
00:28:33.400 --> 00:28:36.640
<v Speaker 1>free RSS feed that you could probably use with follow.

528
00:28:37.079 --> 00:28:41.319
<v Speaker 1>I don't know. I'm just fascinated, totally. I'm totally fascinating.

529
00:28:41.359 --> 00:28:44.000
<v Speaker 1>I downloaded it. After this show, I'm going to run it.

530
00:28:44.039 --> 00:28:46.519
<v Speaker 1>I'm going to see what it is. Anyway, we're talking

531
00:28:46.519 --> 00:28:50.160
<v Speaker 1>about the airing of grievances of web technologies, which is

532
00:28:50.200 --> 00:28:52.200
<v Speaker 1>a topic I suggested we don't have to go down

533
00:28:52.240 --> 00:28:56.559
<v Speaker 1>this rope, but I'll start that. One of the things

534
00:28:56.559 --> 00:29:00.319
<v Speaker 1>I don't like about modern web applications is you know,

535
00:29:01.240 --> 00:29:04.440
<v Speaker 1>your your site is half rendered, and then you see

536
00:29:04.440 --> 00:29:07.519
<v Speaker 1>a button that's available, and you go to click on it,

537
00:29:07.599 --> 00:29:10.559
<v Speaker 1>and just before you click, boom, it moves over and

538
00:29:10.680 --> 00:29:13.079
<v Speaker 1>another button you clicked on that you didn't intend to

539
00:29:13.079 --> 00:29:15.799
<v Speaker 1>click on, which is going to call the fire department

540
00:29:15.960 --> 00:29:21.519
<v Speaker 1>or something. Right, And these aren't necessarily things that are

541
00:29:21.559 --> 00:29:23.680
<v Speaker 1>bad that are built into the web that you must

542
00:29:23.720 --> 00:29:27.359
<v Speaker 1>always have, but but it, you know, like my wife says,

543
00:29:27.640 --> 00:29:36.440
<v Speaker 1>I blame the programmer. Stupid programmers. Somebody built this thing. Yeah,

544
00:29:37.640 --> 00:29:39.880
<v Speaker 1>anybody got a comment or aggrievance.

545
00:29:40.720 --> 00:29:46.400
<v Speaker 4>I mean I think, you know, that style of bug

546
00:29:46.920 --> 00:29:52.920
<v Speaker 4>is something that ideally the platform should provide. I mean,

547
00:29:53.119 --> 00:29:56.359
<v Speaker 4>obviously you can kind of code around these things, but yeah,

548
00:29:56.839 --> 00:30:00.240
<v Speaker 4>in general, like it would be good if the web

549
00:30:00.279 --> 00:30:04.000
<v Speaker 4>platform did the right thing by default. And I'm not

550
00:30:04.079 --> 00:30:06.480
<v Speaker 4>exactly sure who's to blame here. Is is it the

551
00:30:06.799 --> 00:30:10.880
<v Speaker 4>you know iOS or is it Safari or is it

552
00:30:10.960 --> 00:30:15.720
<v Speaker 4>the CSSPEC you know? Probably different in different situations, but

553
00:30:16.119 --> 00:30:19.759
<v Speaker 4>in general, I think the philosophy of like should be

554
00:30:21.599 --> 00:30:24.599
<v Speaker 4>not broken by default or the easiest thing should you know,

555
00:30:24.839 --> 00:30:26.799
<v Speaker 4>the right thing should be the easiest thing to do,

556
00:30:26.920 --> 00:30:29.079
<v Speaker 4>and like the wrong thing should be the hard thing

557
00:30:29.119 --> 00:30:31.880
<v Speaker 4>to do, is right, And probably in the case of

558
00:30:32.160 --> 00:30:36.279
<v Speaker 4>jumping buttons that is a little flipped around.

559
00:30:36.839 --> 00:30:39.559
<v Speaker 1>It's just an easy thing to fix. If you're a programmer.

560
00:30:39.799 --> 00:30:43.039
<v Speaker 1>Is just to not enable any of your UI until

561
00:30:43.079 --> 00:30:46.880
<v Speaker 1>it's fully formed, you know, And if the user has

562
00:30:46.920 --> 00:30:50.359
<v Speaker 1>to wait for that, that's a good thing. I think, yeah,

563
00:30:50.480 --> 00:30:51.880
<v Speaker 1>as long as they can see it, as long as

564
00:30:51.920 --> 00:30:53.759
<v Speaker 1>they can see it, as long as sometimes when it's

565
00:30:53.759 --> 00:30:56.839
<v Speaker 1>not fully formed, it looks formed and you just don't know, right,

566
00:30:56.920 --> 00:31:00.559
<v Speaker 1>you're an interpret state spinny button you want to pull

567
00:31:00.599 --> 00:31:03.759
<v Speaker 1>out of one to debate. This goes all the way

568
00:31:03.759 --> 00:31:07.279
<v Speaker 1>back to the Node days too. It's promises and ASYNC

569
00:31:07.680 --> 00:31:11.160
<v Speaker 1>coding in general for JavaScript. I mean, this scripting language

570
00:31:11.160 --> 00:31:14.119
<v Speaker 1>that was supposed to be very linear and just part

571
00:31:14.160 --> 00:31:16.359
<v Speaker 1>of helping and render a page, and it's grown into

572
00:31:16.400 --> 00:31:19.599
<v Speaker 1>this crazy thing. But we need a sync programming like

573
00:31:19.640 --> 00:31:21.599
<v Speaker 1>that to me was a battle. I don't know where

574
00:31:21.640 --> 00:31:23.720
<v Speaker 1>you fall on this, Ryan, I think you talked about

575
00:31:23.759 --> 00:31:25.440
<v Speaker 1>promises right at the beginning of Note.

576
00:31:26.400 --> 00:31:30.079
<v Speaker 4>Promises were in a very very early version of Node.

577
00:31:30.680 --> 00:31:34.480
<v Speaker 4>I took them out because I was worried about the

578
00:31:34.880 --> 00:31:39.920
<v Speaker 4>garbage collection pressure that creating many objects created, but clearly

579
00:31:39.960 --> 00:31:42.680
<v Speaker 4>that was a mistake. It was long before there was

580
00:31:42.720 --> 00:31:44.599
<v Speaker 4>like a spec for promises, so we are kind of

581
00:31:44.640 --> 00:31:49.000
<v Speaker 4>inventing the API for it. But I mean it's a

582
00:31:49.039 --> 00:31:51.960
<v Speaker 4>pretty straightforward API, and.

583
00:31:53.559 --> 00:31:54.160
<v Speaker 2>It is now.

584
00:31:54.319 --> 00:31:58.240
<v Speaker 4>It is back then too. I mean, you know, you

585
00:31:58.599 --> 00:32:00.759
<v Speaker 4>have an object to you, you have call back attached

586
00:32:00.759 --> 00:32:06.200
<v Speaker 4>to that object. So yeah, I mean, I'm glad that

587
00:32:06.240 --> 00:32:08.119
<v Speaker 4>it's been specked out now and there's like a clear

588
00:32:08.160 --> 00:32:11.839
<v Speaker 4>way of doing ACYNC programming. And of course you know

589
00:32:11.880 --> 00:32:15.960
<v Speaker 4>in DNO now, like all the APIs are very much

590
00:32:16.000 --> 00:32:19.200
<v Speaker 4>promise based, and that just makes everything much nicer with

591
00:32:19.240 --> 00:32:22.559
<v Speaker 4>like a sinkle weight, a single weight back in no

592
00:32:22.720 --> 00:32:28.480
<v Speaker 4>development times was in a crazy idea that nobody could

593
00:32:28.640 --> 00:32:32.960
<v Speaker 4>actually imagine coming to pass. And yeah, those those compiler

594
00:32:33.000 --> 00:32:37.319
<v Speaker 4>guys made it happen. It's like it's a fantastic kind

595
00:32:37.359 --> 00:32:41.599
<v Speaker 4>of sugar on the syntax to on top of kind

596
00:32:41.599 --> 00:32:44.720
<v Speaker 4>of promises to allow a single weight.

597
00:32:44.559 --> 00:32:47.480
<v Speaker 2>And that's you know you talk about typescript acincle weight

598
00:32:47.519 --> 00:32:51.319
<v Speaker 2>that sanders as well, right, like they got that thing

599
00:32:51.359 --> 00:32:53.599
<v Speaker 2>to work and see sharp and it really seemed to

600
00:32:53.640 --> 00:32:56.640
<v Speaker 2>propagate after that. Was that twenty ten?

601
00:32:57.240 --> 00:33:01.920
<v Speaker 4>Yeah, yeah, I don't know the origin of where that

602
00:33:01.920 --> 00:33:02.200
<v Speaker 4>came from.

603
00:33:02.240 --> 00:33:03.079
<v Speaker 1>Yeah, that's it, and.

604
00:33:04.480 --> 00:33:06.039
<v Speaker 2>You know you made it when the C plus plus

605
00:33:06.079 --> 00:33:08.160
<v Speaker 2>guys want to implement it.

606
00:33:07.720 --> 00:33:11.079
<v Speaker 1>Like John Skeet from Google was smitten with a sink

607
00:33:11.119 --> 00:33:15.039
<v Speaker 1>away so much that he reverse engineered and figured out

608
00:33:15.039 --> 00:33:17.279
<v Speaker 1>how it worked. We did a d n R TV

609
00:33:17.400 --> 00:33:19.559
<v Speaker 1>on that and it was just amazing.

610
00:33:19.839 --> 00:33:22.440
<v Speaker 2>Imagine want to do this. But you know the concept

611
00:33:22.480 --> 00:33:26.480
<v Speaker 2>is simple, The implementation is the hard part. When do

612
00:33:26.559 --> 00:33:31.599
<v Speaker 2>you abandon the socket the holder Like I've been awaiting

613
00:33:31.960 --> 00:33:34.799
<v Speaker 2>but it's never getting here now what like there is

614
00:33:34.839 --> 00:33:36.960
<v Speaker 2>a sense here like you said at the garbagelastion angle,

615
00:33:37.039 --> 00:33:39.599
<v Speaker 2>it's the when is this a dead package? Like it's

616
00:33:39.640 --> 00:33:42.119
<v Speaker 2>never going to arrive? And how do you cope with that?

617
00:33:42.400 --> 00:33:46.160
<v Speaker 4>I mean, my primary programming language is actually not a script.

618
00:33:46.160 --> 00:33:49.880
<v Speaker 4>It's it's Rust, right, and rust implementation of a sinc

619
00:33:50.039 --> 00:33:53.559
<v Speaker 4>awaight is just just fantastic, right. I mean the answer

620
00:33:53.640 --> 00:33:55.440
<v Speaker 4>to that question, of course, is like you have some

621
00:33:55.480 --> 00:33:59.920
<v Speaker 4>sort of timer object, wrap the promise in or the future,

622
00:34:00.079 --> 00:34:03.680
<v Speaker 4>and rust with with some something that times out and

623
00:34:04.279 --> 00:34:08.559
<v Speaker 4>uh has it has a deadline to it. All of

624
00:34:08.559 --> 00:34:11.559
<v Speaker 4>that stuff can be structured very very nicely in Rust

625
00:34:11.639 --> 00:34:15.559
<v Speaker 4>and compiles down to like, you know, just just the

626
00:34:16.039 --> 00:34:20.519
<v Speaker 4>tightest assembly code possible. And it's it's just a fantastic

627
00:34:20.719 --> 00:34:21.880
<v Speaker 4>language to work in.

628
00:34:22.519 --> 00:34:25.719
<v Speaker 2>MMM. I've heard it described as the modern C plus

629
00:34:25.719 --> 00:34:29.199
<v Speaker 2>plus Like it's absolutely it's the low level language you

630
00:34:29.199 --> 00:34:32.079
<v Speaker 2>want to as well. Recentovich is on board, like pieces

631
00:34:32.079 --> 00:34:34.800
<v Speaker 2>of Windows are being rewritten in it, pieces of Azure

632
00:34:34.840 --> 00:34:38.119
<v Speaker 2>being ready written in it. It's going into places where

633
00:34:38.119 --> 00:34:38.679
<v Speaker 2>it matters.

634
00:34:38.840 --> 00:34:41.360
<v Speaker 4>I will never start a new C plus plus project,

635
00:34:41.480 --> 00:34:42.039
<v Speaker 4>that's for sure.

636
00:34:42.159 --> 00:34:42.639
<v Speaker 2>You're done.

637
00:34:43.480 --> 00:34:46.400
<v Speaker 1>I wonder what Kate Gregory thinks of Rust. It's really

638
00:34:46.400 --> 00:34:49.639
<v Speaker 1>cool to to hear our world's colliding. You know that

639
00:34:49.639 --> 00:34:52.960
<v Speaker 1>that it's just one big ecosystem software development and we're

640
00:34:52.960 --> 00:34:56.320
<v Speaker 1>all learning from each other. I like that, can't we

641
00:34:56.360 --> 00:34:57.599
<v Speaker 1>all just get along next?

642
00:34:57.960 --> 00:35:00.719
<v Speaker 2>Because you didn't start up with Rust for Dino, right,

643
00:35:00.840 --> 00:35:02.320
<v Speaker 2>did you? Wasn't it originally a Go.

644
00:35:02.360 --> 00:35:06.679
<v Speaker 4>Project, very very early, like the first? So I did

645
00:35:06.840 --> 00:35:09.280
<v Speaker 4>this demo for this this ten things I hate about

646
00:35:09.360 --> 00:35:13.960
<v Speaker 4>node talk, and I spent like thirty days, you know,

647
00:35:14.000 --> 00:35:17.159
<v Speaker 4>putting the demo together. And Go. Actually I had been

648
00:35:17.199 --> 00:35:21.199
<v Speaker 4>playing around with Go plus V eight for years before that,

649
00:35:21.320 --> 00:35:24.960
<v Speaker 4>kind of looking for ways that you could restructure a

650
00:35:25.039 --> 00:35:29.039
<v Speaker 4>JavaScript VM and kind of you know, just just through

651
00:35:29.599 --> 00:35:32.800
<v Speaker 4>the tools that I had to handle together. But yeah,

652
00:35:33.400 --> 00:35:36.119
<v Speaker 4>Go has a garbage collector, as says V eight, right,

653
00:35:36.440 --> 00:35:40.039
<v Speaker 4>Go has a run time, and you know, in a

654
00:35:40.119 --> 00:35:43.559
<v Speaker 4>complex system like a JavaScript runtime, like you need to

655
00:35:43.639 --> 00:35:47.400
<v Speaker 4>control everything you can, like you really need you cannot

656
00:35:47.440 --> 00:35:51.679
<v Speaker 4>have like GC randomly popping up in the background. V

657
00:35:51.800 --> 00:35:54.599
<v Speaker 4>eight obviously has the GC and will randomly pop up

658
00:35:54.639 --> 00:35:56.519
<v Speaker 4>in the background. But like, let's leave it to one,

659
00:35:56.639 --> 00:35:59.719
<v Speaker 4>let's not have two. So you know, I think Rust

660
00:35:59.880 --> 00:36:02.400
<v Speaker 4>was a you know, a bit of a leap in

661
00:36:03.079 --> 00:36:12.159
<v Speaker 4>twenty nineteen or I think that's decision, but it's paid

662
00:36:12.159 --> 00:36:16.280
<v Speaker 4>off greatly. Like it's just just fantastic to be able

663
00:36:16.320 --> 00:36:21.440
<v Speaker 4>to build on Rust build on top of you know,

664
00:36:21.440 --> 00:36:25.440
<v Speaker 4>we have a wrapper around V eight that exposes essentially

665
00:36:25.480 --> 00:36:28.159
<v Speaker 4>the same C plus plus API that V eight uses

666
00:36:28.320 --> 00:36:33.119
<v Speaker 4>in Rust, but memory safe and really structured. And then

667
00:36:33.199 --> 00:36:35.280
<v Speaker 4>on top of that we kind of layer all of

668
00:36:35.039 --> 00:36:40.880
<v Speaker 4>our Dino stuff. And what's great is, you know, actually

669
00:36:41.199 --> 00:36:46.079
<v Speaker 4>C plus plus the syntax and is fine. I mean,

670
00:36:46.480 --> 00:36:50.519
<v Speaker 4>you know pointers, Like I don't find that so problematic,

671
00:36:50.639 --> 00:36:54.760
<v Speaker 4>like the fact that it's not memory safe. It's the

672
00:36:54.800 --> 00:36:57.159
<v Speaker 4>build system that's really a problem, like the fact that

673
00:36:57.199 --> 00:37:00.639
<v Speaker 4>you just can't pull in dependencies that you know, you've

674
00:37:00.639 --> 00:37:03.440
<v Speaker 4>got to kind of wrangle seamake and make and like

675
00:37:03.800 --> 00:37:07.000
<v Speaker 4>you know, autocomf and all sorts of stuff, and it

676
00:37:07.079 --> 00:37:09.559
<v Speaker 4>just becomes a real headache to be able to pull

677
00:37:09.599 --> 00:37:13.840
<v Speaker 4>in external code in Rust. In modern languages, like you know,

678
00:37:13.880 --> 00:37:16.760
<v Speaker 4>there's there's a.

679
00:37:15.880 --> 00:37:17.920
<v Speaker 2>There's a package manager, and there's a pipeline and.

680
00:37:17.920 --> 00:37:20.039
<v Speaker 4>There's a package Yeah, exactly, you can just you can

681
00:37:20.159 --> 00:37:23.119
<v Speaker 4>just add independencies and that allows us to just go

682
00:37:23.280 --> 00:37:24.039
<v Speaker 4>so much faster.

683
00:37:24.199 --> 00:37:27.840
<v Speaker 1>And Carnigan and Richie made C to be the cross

684
00:37:27.880 --> 00:37:30.599
<v Speaker 1>platform language, right, I mean that's back in the day.

685
00:37:30.639 --> 00:37:32.800
<v Speaker 1>Back in the day, that was the promise, and C

686
00:37:32.920 --> 00:37:36.119
<v Speaker 1>plus plus certainly, I mean it was cross platform for

687
00:37:36.159 --> 00:37:36.400
<v Speaker 1>a while.

688
00:37:36.400 --> 00:37:38.400
<v Speaker 2>I was supposed to be this safe version.

689
00:37:38.760 --> 00:37:39.320
<v Speaker 1>Yeah right.

690
00:37:40.079 --> 00:37:43.239
<v Speaker 2>See, you know my mistake when you when I first

691
00:37:43.239 --> 00:37:45.239
<v Speaker 2>saw this was go lying in V eight duh, they're

692
00:37:45.239 --> 00:37:47.079
<v Speaker 2>both googleed. They should love each other. I just don't

693
00:37:47.119 --> 00:37:47.639
<v Speaker 2>know they do.

694
00:37:48.039 --> 00:37:49.960
<v Speaker 4>Yeah, I think they have nothing to do with each other.

695
00:37:51.679 --> 00:37:55.119
<v Speaker 2>I think that's fair. That's very fair. And yeah, to

696
00:37:55.119 --> 00:37:58.079
<v Speaker 2>talk about rust in twenty nineteen, that's challenging. Those are

697
00:37:58.119 --> 00:37:58.719
<v Speaker 2>early days.

698
00:37:58.920 --> 00:38:00.719
<v Speaker 4>Yeah, maybe even twenty seventeen.

699
00:38:00.920 --> 00:38:04.079
<v Speaker 2>I don't know, man even no, yeah, no, no, no kidding.

700
00:38:04.800 --> 00:38:07.880
<v Speaker 2>So in the end, we're still in a lot of ways.

701
00:38:07.880 --> 00:38:10.280
<v Speaker 2>I feel like Dino's got the same sort of philosophy

702
00:38:10.280 --> 00:38:13.960
<v Speaker 2>of just what you need to build a web resource

703
00:38:14.039 --> 00:38:18.000
<v Speaker 2>or whatever whatever your project needs. Am I wrong there? Like,

704
00:38:18.320 --> 00:38:20.119
<v Speaker 2>I don't think your philosophy's changed much.

705
00:38:20.440 --> 00:38:24.239
<v Speaker 4>So. Inde, Node, you need to know a lot about

706
00:38:24.239 --> 00:38:27.280
<v Speaker 4>the ecosystem to really get ramped up right. Node is

707
00:38:27.320 --> 00:38:30.280
<v Speaker 4>the run time, but you need to add on your

708
00:38:30.400 --> 00:38:33.599
<v Speaker 4>Typescript compiler. You need to add on your linter. You

709
00:38:33.639 --> 00:38:35.679
<v Speaker 4>need to add you need to know that prettier is

710
00:38:35.719 --> 00:38:37.960
<v Speaker 4>the way that you code format. You need to know

711
00:38:38.000 --> 00:38:41.800
<v Speaker 4>how to set up a project structure. In Dino, the

712
00:38:41.960 --> 00:38:44.599
<v Speaker 4>entire tool chain is literally executable.

713
00:38:44.719 --> 00:38:44.880
<v Speaker 1>Right.

714
00:38:44.880 --> 00:38:47.920
<v Speaker 4>There's a Dno dot ex that you can install on

715
00:38:47.960 --> 00:38:51.039
<v Speaker 4>your Windows computer that has everything in it. Right, It's

716
00:38:51.079 --> 00:38:55.559
<v Speaker 4>a single file distribution. And this has the code formatting,

717
00:38:55.760 --> 00:38:59.800
<v Speaker 4>you know, Dino format subcommand. It has very much inspired

718
00:38:59.800 --> 00:39:03.719
<v Speaker 4>by Go of course, you know, has a Dino lint subcommand.

719
00:39:04.039 --> 00:39:08.199
<v Speaker 4>It has obviously the runtime execution. It has type checking

720
00:39:08.440 --> 00:39:12.559
<v Speaker 4>Dino check to type check typescript. All of this is

721
00:39:12.639 --> 00:39:17.199
<v Speaker 4>kind of packaged together and thought about cohesively, so that

722
00:39:17.599 --> 00:39:22.239
<v Speaker 4>you know, maybe for the advanced node programmer, maybe not

723
00:39:22.639 --> 00:39:25.880
<v Speaker 4>a huge difference because they kind of know how to

724
00:39:25.920 --> 00:39:26.960
<v Speaker 4>operate in this world.

725
00:39:27.119 --> 00:39:30.239
<v Speaker 2>They assembled the same set of tools themselves.

726
00:39:30.400 --> 00:39:30.599
<v Speaker 4>Yeah.

727
00:39:30.639 --> 00:39:33.280
<v Speaker 2>I mean, I would also see in advanced node developer going, hey,

728
00:39:33.679 --> 00:39:36.000
<v Speaker 2>you're making choices I want to make myself.

729
00:39:36.840 --> 00:39:39.920
<v Speaker 4>Sure. Yeah, But for you know, the c sharp developer,

730
00:39:39.960 --> 00:39:42.880
<v Speaker 4>who's who's coming to JavaScript or just you know, doesn't

731
00:39:43.199 --> 00:39:45.880
<v Speaker 4>you know, like many people hates JavaScript, but it's forced

732
00:39:45.880 --> 00:39:48.559
<v Speaker 4>to work in it for whatever reason, you know, somebody

733
00:39:48.599 --> 00:39:54.639
<v Speaker 4>coming from Java or just just people less steeped in nodisms.

734
00:39:55.480 --> 00:39:57.719
<v Speaker 4>It's pretty great to be able to be like here's

735
00:39:57.760 --> 00:40:02.000
<v Speaker 4>your Dino dot exx file. You know, run run Dino

736
00:40:02.079 --> 00:40:05.840
<v Speaker 4>help and get started right, and you probably already know

737
00:40:05.920 --> 00:40:08.719
<v Speaker 4>JavaScript more or less. Uh, you know, we have the

738
00:40:08.800 --> 00:40:12.519
<v Speaker 4>Dino LSP that hooks into vs code, so like get

739
00:40:12.559 --> 00:40:16.719
<v Speaker 4>all your intellisence and and tab completion stuff working out

740
00:40:16.760 --> 00:40:19.480
<v Speaker 4>of the box. You'll get the code formatting kind of happening.

741
00:40:20.000 --> 00:40:23.360
<v Speaker 4>And uh yeah, it's just a delightful experience, which for

742
00:40:23.440 --> 00:40:25.679
<v Speaker 4>a scripting language. You know, like I said, I'm a

743
00:40:25.760 --> 00:40:30.480
<v Speaker 4>RUSS programmer. Uh uh, you know, my my programming Rust

744
00:40:30.559 --> 00:40:33.320
<v Speaker 4>is not as delightful as JavaScript. But you know the

745
00:40:33.360 --> 00:40:35.920
<v Speaker 4>reason that you might work, you know, I like Rust

746
00:40:35.960 --> 00:40:37.880
<v Speaker 4>of course because you can write fast code. You can

747
00:40:37.960 --> 00:40:41.280
<v Speaker 4>control exactly what you are what the CPU is going

748
00:40:41.320 --> 00:40:44.519
<v Speaker 4>to execute. But uh, you know, there's a time and

749
00:40:44.559 --> 00:40:47.559
<v Speaker 4>place for scripting languages where you just want to move fast.

750
00:40:47.760 --> 00:40:51.679
<v Speaker 4>And when you're moving fast, like let's remove all the bs,

751
00:40:51.719 --> 00:40:56.440
<v Speaker 4>like let's let's focus on let's just get the scripting language.

752
00:40:56.800 --> 00:40:58.800
<v Speaker 4>Like who wants to set up, you know, spend a

753
00:40:58.800 --> 00:41:02.199
<v Speaker 4>bunch of time setting up a structure for a for

754
00:41:02.239 --> 00:41:04.519
<v Speaker 4>a freaking scripting language. I'll do that for C plus

755
00:41:04.559 --> 00:41:07.480
<v Speaker 4>plus because, like, you know, there's some benefit that I'm

756
00:41:07.480 --> 00:41:09.880
<v Speaker 4>getting there. But you know, I'm working a scripting language,

757
00:41:09.880 --> 00:41:12.440
<v Speaker 4>for god sakes, let's let's make it. Let's make it

758
00:41:12.719 --> 00:41:13.639
<v Speaker 4>easy to use.

759
00:41:14.400 --> 00:41:16.559
<v Speaker 2>Yeah, it's not just a scripting language anymore. Ryan, I

760
00:41:16.599 --> 00:41:18.599
<v Speaker 2>don't know if you'd noticed, but it's been up to stuff.

761
00:41:19.960 --> 00:41:23.679
<v Speaker 2>I do like the tagline uncomplicate JavaScript, but I almost

762
00:41:23.679 --> 00:41:25.719
<v Speaker 2>feel like it's more uncomplicate web dev.

763
00:41:25.920 --> 00:41:29.039
<v Speaker 4>Sure. I mean, yeah, JavaScript, that's a core of web dev.

764
00:41:29.840 --> 00:41:33.920
<v Speaker 4>You know, uncomplicate Typeescript as well, I mean Typescript. Traditionally

765
00:41:33.960 --> 00:41:36.760
<v Speaker 4>you have to have your tsconfig dot json like set

766
00:41:36.800 --> 00:41:39.760
<v Speaker 4>a bunch of configurations. You know, people have complained that

767
00:41:39.840 --> 00:41:42.639
<v Speaker 4>it's not one language, but like a suite of languages,

768
00:41:42.719 --> 00:41:46.159
<v Speaker 4>depending on which different options you're enabling. We make all

769
00:41:46.199 --> 00:41:48.519
<v Speaker 4>those choices for you. I mean, you can drop in

770
00:41:48.559 --> 00:41:51.199
<v Speaker 4>your ts can fig, but like you know, is zero

771
00:41:51.320 --> 00:41:54.239
<v Speaker 4>can fig like literally just open a file, pull in

772
00:41:54.280 --> 00:42:00.079
<v Speaker 4>an MPM dependency, no package json, no no necessity to

773
00:42:01.639 --> 00:42:02.480
<v Speaker 4>do anything else.

774
00:42:02.719 --> 00:42:06.320
<v Speaker 2>It seems far more opinionated than Node ever was. Oh

775
00:42:06.360 --> 00:42:08.920
<v Speaker 2>for sure, yeah, like no kind of left you open

776
00:42:09.000 --> 00:42:11.159
<v Speaker 2>for and in some ways left you wandering the desert,

777
00:42:11.239 --> 00:42:12.840
<v Speaker 2>like do you know what bits the light up?

778
00:42:12.880 --> 00:42:13.199
<v Speaker 3>First?

779
00:42:13.360 --> 00:42:16.079
<v Speaker 2>Like it you work through sub tutorial to try and

780
00:42:16.119 --> 00:42:18.039
<v Speaker 2>get anything to run a node at first, where this

781
00:42:18.079 --> 00:42:20.199
<v Speaker 2>one's going. Now we do it this way, here you go.

782
00:42:20.360 --> 00:42:24.519
<v Speaker 4>I mean, I think I don't regret this, but I

783
00:42:24.519 --> 00:42:28.119
<v Speaker 4>mean I think this is a result of me stepping

784
00:42:28.119 --> 00:42:30.880
<v Speaker 4>away from the project. Right. Had I stayed in the project,

785
00:42:30.880 --> 00:42:34.320
<v Speaker 4>I would have been very opinionated and like dictated things.

786
00:42:34.480 --> 00:42:39.159
<v Speaker 4>Node is a democracy, and you know, is a kind

787
00:42:39.159 --> 00:42:42.119
<v Speaker 4>of free democracy that's nice in many ways, but it

788
00:42:42.199 --> 00:42:44.760
<v Speaker 4>also means, you know, it goes in all sorts of

789
00:42:44.800 --> 00:42:48.880
<v Speaker 4>different different directions and there's not necessarily hard decisions being made.

790
00:42:49.039 --> 00:42:51.280
<v Speaker 4>Do you know makes hard decisions and people you know

791
00:42:51.719 --> 00:42:56.199
<v Speaker 4>violently disagree with us sometimes, but you know, it does

792
00:42:56.280 --> 00:42:59.800
<v Speaker 4>kind of result in, you know, frankly zero configu you know,

793
00:43:00.039 --> 00:43:04.239
<v Speaker 4>very little boilerplate, and I think that is absolutely delightful

794
00:43:04.360 --> 00:43:07.960
<v Speaker 4>for people who you know, the majority who just do

795
00:43:07.960 --> 00:43:10.719
<v Speaker 4>not give a crap a lot of those decisions.

796
00:43:11.440 --> 00:43:14.519
<v Speaker 1>You can change the default configuration if you want to, right,

797
00:43:14.599 --> 00:43:16.960
<v Speaker 1>I mean, nobody's saying that this is the way everything

798
00:43:17.079 --> 00:43:21.320
<v Speaker 1>must be done. It's just the default convention over configuration.

799
00:43:21.159 --> 00:43:24.000
<v Speaker 4>That's right. Yeah, So the principle with with Dino is

800
00:43:24.039 --> 00:43:26.440
<v Speaker 4>like you can start with a single file. You can.

801
00:43:26.559 --> 00:43:29.119
<v Speaker 4>You don't need to have a package Jason, or a

802
00:43:29.159 --> 00:43:32.320
<v Speaker 4>product project structure. Like literally a single file is all

803
00:43:32.360 --> 00:43:35.280
<v Speaker 4>you need to get started and go pretty far with that.

804
00:43:35.519 --> 00:43:38.519
<v Speaker 4>But you can of course have a Dino dot json

805
00:43:38.679 --> 00:43:42.159
<v Speaker 4>to set configurations. You can have a ts canfig you

806
00:43:42.199 --> 00:43:45.199
<v Speaker 4>can set configurations in there. You can have a package Jason.

807
00:43:46.039 --> 00:43:48.360
<v Speaker 4>You know, a big part of what we're doing with

808
00:43:48.480 --> 00:43:51.400
<v Speaker 4>Dino two is kind of scaling Dino up to more

809
00:43:51.480 --> 00:43:54.920
<v Speaker 4>complex project structures because yeah, frankly, there's a lot of

810
00:43:54.960 --> 00:43:57.800
<v Speaker 4>people out there with very large JavaScript code bases, and

811
00:43:57.880 --> 00:43:59.639
<v Speaker 4>for sure we want we want to make sure that

812
00:44:00.480 --> 00:44:04.119
<v Speaker 4>Deno scales to support very complex setups as well.

813
00:44:04.239 --> 00:44:06.760
<v Speaker 2>Okay, talk to me about the differ between Dino and

814
00:44:06.880 --> 00:44:08.159
<v Speaker 2>Dino Fresh.

815
00:44:08.280 --> 00:44:11.920
<v Speaker 4>So Fresh is a web framework built on top of

816
00:44:12.039 --> 00:44:15.360
<v Speaker 4>dinum So dinos. The runtime Fresh is Fresh is a

817
00:44:15.400 --> 00:44:21.920
<v Speaker 4>way of doing reacty sort of websites. So it has

818
00:44:22.000 --> 00:44:28.800
<v Speaker 4>kind of server side rendering of jsx React style style JavaScript,

819
00:44:29.599 --> 00:44:34.239
<v Speaker 4>and it has Yeah, it's designed to be very fast

820
00:44:34.320 --> 00:44:37.840
<v Speaker 4>has It has a pretty simple structure with a technique

821
00:44:37.840 --> 00:44:41.000
<v Speaker 4>called islands where you kind of segment your client side

822
00:44:41.000 --> 00:44:43.079
<v Speaker 4>code with your server side code. It is a full

823
00:44:43.119 --> 00:44:47.159
<v Speaker 4>stack web framework, meaning that you write client side and

824
00:44:47.239 --> 00:44:51.000
<v Speaker 4>server side code, which you know, frankly is a great

825
00:44:51.000 --> 00:44:53.880
<v Speaker 4>way to build websites as the benefit of JavaScript is

826
00:44:53.920 --> 00:44:56.559
<v Speaker 4>that you can kind of share code between between the

827
00:44:56.960 --> 00:45:01.320
<v Speaker 4>two sides, and by default, uh, you know you can

828
00:45:01.400 --> 00:45:06.000
<v Speaker 4>you can kind of it's build static websites. So by default,

829
00:45:06.039 --> 00:45:08.199
<v Speaker 4>like you can write a bunch of React code, actually

830
00:45:08.239 --> 00:45:11.480
<v Speaker 4>it uses Preact, but you know, same thing. For for

831
00:45:11.519 --> 00:45:14.280
<v Speaker 4>all intents and purposes, you can write a bunch of

832
00:45:14.440 --> 00:45:18.639
<v Speaker 4>server side React code. It'll just render to a static

833
00:45:18.679 --> 00:45:22.840
<v Speaker 4>site and there will actually be no client side JavaScript.

834
00:45:22.960 --> 00:45:25.480
<v Speaker 4>And but you know, as as necessary, if you need

835
00:45:25.519 --> 00:45:28.679
<v Speaker 4>to add on interactive bits, you can kind of pull

836
00:45:28.719 --> 00:45:33.320
<v Speaker 4>those in pretty easily and generally follows kind of Dino's

837
00:45:34.199 --> 00:45:38.960
<v Speaker 4>philosophy of zero can fig zero boiler plate. It feels

838
00:45:39.119 --> 00:45:41.480
<v Speaker 4>really simple and nice to use, and.

839
00:45:41.559 --> 00:45:43.920
<v Speaker 2>Is it obvious what should be client? What should be server?

840
00:45:44.280 --> 00:45:46.239
<v Speaker 2>Do you get in any debates of where any stuff

841
00:45:46.280 --> 00:45:48.480
<v Speaker 2>that needs to live? I guess you can switch if

842
00:45:48.519 --> 00:45:48.880
<v Speaker 2>you want to.

843
00:45:49.079 --> 00:45:51.679
<v Speaker 4>I mean, if if you have a button that changes

844
00:45:51.719 --> 00:45:53.920
<v Speaker 4>color when you click on it or whatever, then then

845
00:45:54.079 --> 00:45:55.679
<v Speaker 4>you know client side.

846
00:45:57.880 --> 00:46:01.519
<v Speaker 2>Yeah, so it's always question mark when's the codes living

847
00:46:01.519 --> 00:46:03.679
<v Speaker 2>in two places? Like do I need to pick? How

848
00:46:03.719 --> 00:46:07.639
<v Speaker 2>big of the deal? Is this fairly open?

849
00:46:09.360 --> 00:46:12.039
<v Speaker 4>I think it's usually pretty clear, but I guess in

850
00:46:12.519 --> 00:46:15.599
<v Speaker 4>kind of the limit when you get into very complicated applications,

851
00:46:15.599 --> 00:46:17.519
<v Speaker 4>maybe it's a little tricky.

852
00:46:17.599 --> 00:46:19.400
<v Speaker 2>Should be a parent most of the time, but once

853
00:46:19.440 --> 00:46:20.079
<v Speaker 2>in a while you're going.

854
00:46:20.079 --> 00:46:20.679
<v Speaker 4>To get an a question.

855
00:46:21.519 --> 00:46:24.679
<v Speaker 2>So two point zero is imminent? What make you what

856
00:46:24.760 --> 00:46:27.519
<v Speaker 2>makes you do a new version number? Like, what are

857
00:46:27.519 --> 00:46:28.440
<v Speaker 2>you thinking? So?

858
00:46:28.800 --> 00:46:31.320
<v Speaker 4>Yeah, like I said, we are kind of working on

859
00:46:31.480 --> 00:46:38.679
<v Speaker 4>scaling up to big, bigger, more complex javascripts and typeescript projects.

860
00:46:39.039 --> 00:46:42.480
<v Speaker 4>So the big thing that's happening in Dino two is

861
00:46:42.480 --> 00:46:47.239
<v Speaker 4>that we can essentially execute any node project. Now, modern

862
00:46:47.280 --> 00:46:50.360
<v Speaker 4>node projects you do need to use ESM like exmascript

863
00:46:50.440 --> 00:46:54.920
<v Speaker 4>module syntax, not require but import, but you should be

864
00:46:54.920 --> 00:46:57.840
<v Speaker 4>able to drop into any kind of modern ish node

865
00:46:57.840 --> 00:47:02.960
<v Speaker 4>project and use DNO to execute the code in Dino itself.

866
00:47:03.199 --> 00:47:05.360
<v Speaker 4>Whether you're in kind of a node project or not.

867
00:47:06.199 --> 00:47:11.320
<v Speaker 4>You can pull in NPM dependencies. Pretty pretty nicely. And

868
00:47:11.360 --> 00:47:16.719
<v Speaker 4>we've also introduced this new package registry called JSR where

869
00:47:16.719 --> 00:47:23.079
<v Speaker 4>people can publish JavaScript and typescript code and it is well,

870
00:47:23.119 --> 00:47:26.320
<v Speaker 4>I don't know how much you guys interact with NPM,

871
00:47:26.480 --> 00:47:31.039
<v Speaker 4>but post get Hub acquisition, NPM is really not changing

872
00:47:31.199 --> 00:47:34.000
<v Speaker 4>at all. And that is kind of a shame for

873
00:47:34.679 --> 00:47:38.920
<v Speaker 4>the world's most popular programming language, where there's like vibrant, exciting,

874
00:47:39.000 --> 00:47:42.960
<v Speaker 4>creative things happening, publishing the NPM is still very much

875
00:47:42.960 --> 00:47:46.280
<v Speaker 4>stuck in the common JS era. It's really hard to

876
00:47:46.960 --> 00:47:50.400
<v Speaker 4>for people to figure out how to take typescript and

877
00:47:50.519 --> 00:47:57.320
<v Speaker 4>compile it down and publish it for different different situations.

878
00:47:58.039 --> 00:48:00.480
<v Speaker 4>And yeah, frankly, we live in a world that is

879
00:48:00.480 --> 00:48:03.840
<v Speaker 4>not just Node. Now. There's there's a number of run times.

880
00:48:03.599 --> 00:48:07.239
<v Speaker 4>There's there's a note of course, but Dino and Bun

881
00:48:07.400 --> 00:48:12.159
<v Speaker 4>and cloud flare workers and browsers of course. So JSR

882
00:48:12.440 --> 00:48:17.320
<v Speaker 4>is a modern package registry for JavaScript and typescript that

883
00:48:17.519 --> 00:48:22.119
<v Speaker 4>makes it just delightful to publish ads, say, for example,

884
00:48:24.440 --> 00:48:29.159
<v Speaker 4>auto generated documentation for consumers of these modules, and is

885
00:48:30.239 --> 00:48:33.199
<v Speaker 4>cross platform like can work with all of these different

886
00:48:33.639 --> 00:48:34.199
<v Speaker 4>run times.

887
00:48:34.559 --> 00:48:37.280
<v Speaker 2>Ind you say that of an NPM, because on one hand,

888
00:48:37.360 --> 00:48:39.400
<v Speaker 2>when get up acquired. You're like, oh good, it's safe.

889
00:48:39.440 --> 00:48:42.280
<v Speaker 2>Now we won't have to worry anymore. It doesn't have

890
00:48:42.320 --> 00:48:43.559
<v Speaker 2>to figure out how to make money or any of

891
00:48:43.559 --> 00:48:45.800
<v Speaker 2>those sorts of things. It's now living in that big ecosystem.

892
00:48:45.880 --> 00:48:49.400
<v Speaker 2>But like there's in inertia. I wonder if they lost

893
00:48:49.519 --> 00:48:53.239
<v Speaker 2>key people like that. There's just they're afraid to do

894
00:48:53.360 --> 00:48:54.079
<v Speaker 2>much to NPM.

895
00:48:54.880 --> 00:48:57.360
<v Speaker 4>Yeah, I think it's hard to change anything because it's

896
00:48:57.400 --> 00:49:00.719
<v Speaker 4>so large at this point and there's no real all uh,

897
00:49:01.400 --> 00:49:03.480
<v Speaker 4>there's no real business there. I mean that was always

898
00:49:03.480 --> 00:49:07.280
<v Speaker 4>the problem with as a company that like they couldn't

899
00:49:07.280 --> 00:49:09.960
<v Speaker 4>figure out the business. And so I think, yeah, it's safe,

900
00:49:10.199 --> 00:49:11.320
<v Speaker 4>that's that's a good thing.

901
00:49:11.360 --> 00:49:14.960
<v Speaker 2>Package managers in general aren't a business. We all need them, right,

902
00:49:15.079 --> 00:49:16.639
<v Speaker 2>none of well none of us will pay for them.

903
00:49:16.719 --> 00:49:19.360
<v Speaker 4>Yes, I totally agree, which is, by the way, is

904
00:49:19.679 --> 00:49:24.639
<v Speaker 4>which why JSR is kind of a completely open source

905
00:49:24.719 --> 00:49:29.639
<v Speaker 4>unlike NPM is completely open source. And although I'm managing

906
00:49:29.639 --> 00:49:31.880
<v Speaker 4>it right now, the Dino company is managing it. It

907
00:49:31.960 --> 00:49:37.880
<v Speaker 4>is a aims to be a kind of public service,

908
00:49:38.000 --> 00:49:40.719
<v Speaker 4>and I hope to put it into a foundation of

909
00:49:40.719 --> 00:49:41.159
<v Speaker 4>some sort.

910
00:49:42.159 --> 00:49:44.960
<v Speaker 1>I'll have to check that out. Coming from New gat

911
00:49:45.039 --> 00:49:47.800
<v Speaker 1>in the ease of which I can use that in

912
00:49:47.800 --> 00:49:51.719
<v Speaker 1>my environment. NPM was a real kind of learning curve

913
00:49:51.760 --> 00:49:54.639
<v Speaker 1>for me, So I'm hoping that I'm hoping this is

914
00:49:54.679 --> 00:49:57.599
<v Speaker 1>going to be nicer, and it sounds like it already is.

915
00:49:59.079 --> 00:50:01.400
<v Speaker 4>It's it's super delightful if.

916
00:50:02.880 --> 00:50:03.840
<v Speaker 1>That's the way it should be.

917
00:50:03.880 --> 00:50:06.320
<v Speaker 2>I don't know. The perfect packing manager is when I

918
00:50:06.400 --> 00:50:09.039
<v Speaker 2>never think about it, just is what I needed to do. Yeah,

919
00:50:09.360 --> 00:50:11.719
<v Speaker 2>and the moment it pops up and interrupts me, look

920
00:50:11.760 --> 00:50:14.559
<v Speaker 2>at you and you yet, yeah, then it's wrong. Right,

921
00:50:14.920 --> 00:50:16.239
<v Speaker 2>That's a that's a problem.

922
00:50:16.559 --> 00:50:18.880
<v Speaker 1>Sometimes you do want to make sure that you're not

923
00:50:19.559 --> 00:50:22.760
<v Speaker 1>getting the newer version that isn't compatible with another package,

924
00:50:22.760 --> 00:50:25.119
<v Speaker 1>that isn't compatible with another I mean you do kind

925
00:50:25.119 --> 00:50:26.280
<v Speaker 1>of need that control.

926
00:50:26.400 --> 00:50:30.159
<v Speaker 4>But assuming speaking of like never needing a package manager

927
00:50:30.360 --> 00:50:32.519
<v Speaker 4>like in Diino two. If you want to pull in

928
00:50:32.559 --> 00:50:36.400
<v Speaker 4>an NPM dependency, for example, a common one is Express

929
00:50:36.599 --> 00:50:39.880
<v Speaker 4>kind of a web you know, simple simple web framework.

930
00:50:40.440 --> 00:50:43.280
<v Speaker 4>You can just import and PM call and express like

931
00:50:43.320 --> 00:50:46.079
<v Speaker 4>you don't need to set up and do kind of

932
00:50:46.079 --> 00:50:50.400
<v Speaker 4>an NPM AD or create a package Jason. You can

933
00:50:50.440 --> 00:50:53.519
<v Speaker 4>really kind of scale down your your stuff and just

934
00:50:53.559 --> 00:50:59.480
<v Speaker 4>have these kind of single line imports, that's defined education

935
00:50:59.800 --> 00:51:04.480
<v Speaker 4>and yeah, and Dino knows how. Dino included in the

936
00:51:04.519 --> 00:51:07.519
<v Speaker 4>Dino ex single file is a package manager and knows

937
00:51:07.519 --> 00:51:11.000
<v Speaker 4>how to pull down the MPM dependencies. And you know,

938
00:51:11.039 --> 00:51:14.119
<v Speaker 4>you don't have this problem of having a node modules

939
00:51:14.119 --> 00:51:20.039
<v Speaker 4>folder in your local project. Uh maybe you want that,

940
00:51:20.039 --> 00:51:23.719
<v Speaker 4>that's an option, of course, but uh, generally it stores

941
00:51:23.760 --> 00:51:25.880
<v Speaker 4>these things in a global cash and so yeah, it

942
00:51:25.960 --> 00:51:28.280
<v Speaker 4>has a generally clean feel to it.

943
00:51:28.440 --> 00:51:31.000
<v Speaker 1>So when Dino is done and you're on that trajectory

944
00:51:31.079 --> 00:51:33.440
<v Speaker 1>again and you're you're looking around and saying, you know,

945
00:51:33.920 --> 00:51:35.559
<v Speaker 1>I think I want to go on to the next thing.

946
00:51:35.599 --> 00:51:37.360
<v Speaker 1>Do you have something in mind that you want to

947
00:51:37.400 --> 00:51:38.800
<v Speaker 1>do that you can share with us.

948
00:51:41.480 --> 00:51:47.119
<v Speaker 4>I was just saying to my wife earlier today, like

949
00:51:47.360 --> 00:51:50.039
<v Speaker 4>I want to return to my Pinterest app and get

950
00:51:50.039 --> 00:51:54.000
<v Speaker 4>this this uh this social network going because I hate Pinterest.

951
00:51:54.039 --> 00:51:56.639
<v Speaker 4>It's so terrible. I need it, don't you kind of

952
00:51:56.679 --> 00:51:59.480
<v Speaker 4>need it? I never I never a lot of random

953
00:51:59.519 --> 00:52:04.159
<v Speaker 4>ideas that I would love to pursue, random id manager,

954
00:52:04.280 --> 00:52:09.039
<v Speaker 4>some of them are I pursue with with Dino. You know,

955
00:52:09.039 --> 00:52:13.920
<v Speaker 4>we we just released this JavaScript trademark open letter a

956
00:52:13.920 --> 00:52:16.519
<v Speaker 4>couple of days ago, which is kind of a pet

957
00:52:16.559 --> 00:52:19.639
<v Speaker 4>project of mind fighting Oracle for did you know that

958
00:52:19.800 --> 00:52:26.280
<v Speaker 4>Oracle owns the JavaScript trademark? I hate them and why

959
00:52:26.320 --> 00:52:28.800
<v Speaker 4>do they own it? And how confusing that is, and

960
00:52:30.519 --> 00:52:33.039
<v Speaker 4>especially for people who you know, have something called the

961
00:52:33.119 --> 00:52:42.519
<v Speaker 4>Dino JavaScript runtime. It's just very annoying. Yeah, a lot

962
00:52:42.559 --> 00:52:47.000
<v Speaker 4>of a lot of fun, fun undertakings I continue to do.

963
00:52:47.679 --> 00:52:50.800
<v Speaker 1>Kind of thinking. There's a little sarcasm in that word

964
00:52:50.880 --> 00:52:52.679
<v Speaker 1>fun coming out of your mouth there.

965
00:52:54.360 --> 00:52:56.280
<v Speaker 2>But there is a whole initiative going on to try

966
00:52:56.280 --> 00:52:58.199
<v Speaker 2>and get them just to render the trademark. Like right,

967
00:52:58.360 --> 00:53:00.840
<v Speaker 2>you're not doing anything with it, it's not important to Heck,

968
00:53:00.880 --> 00:53:03.400
<v Speaker 2>you barely pay attention to Java. Why you have the

969
00:53:03.480 --> 00:53:07.239
<v Speaker 2>JavaScript trademark as well? Like just it makes everything confusing.

970
00:53:07.400 --> 00:53:10.719
<v Speaker 2>It's just because Sun registered at the time, not that

971
00:53:10.760 --> 00:53:11.880
<v Speaker 2>it was important to them.

972
00:53:12.880 --> 00:53:16.079
<v Speaker 4>I mean, the Java trademark might actually be important because

973
00:53:16.119 --> 00:53:19.639
<v Speaker 4>that is something that they continue to develop and presumably

974
00:53:19.679 --> 00:53:22.760
<v Speaker 4>have a business around. I'm not against trademarks, of course,

975
00:53:22.840 --> 00:53:30.800
<v Speaker 4>but it is the JavaScript one is very problematic. You

976
00:53:31.039 --> 00:53:33.719
<v Speaker 4>can check out check out this open letter that I'm writing.

977
00:53:33.760 --> 00:53:36.840
<v Speaker 4>So I'm planning on filing. I just learned about this

978
00:53:36.880 --> 00:53:39.599
<v Speaker 4>process a couple of months ago, I'm planning to file

979
00:53:40.119 --> 00:53:45.360
<v Speaker 4>a petition with the USPTO, the Patent and Trademark Office

980
00:53:45.719 --> 00:53:50.440
<v Speaker 4>to cancel oracles JavaScript trademark because I think it is

981
00:53:51.000 --> 00:53:54.880
<v Speaker 4>it is actually invalids as defined in the US Code,

982
00:53:54.880 --> 00:53:57.000
<v Speaker 4>And I go through that in this in this open letter,

983
00:53:58.800 --> 00:54:01.480
<v Speaker 4>and yeah, I think I think next month we'll actually

984
00:54:01.480 --> 00:54:01.880
<v Speaker 4>file this.

985
00:54:02.119 --> 00:54:04.960
<v Speaker 2>Great, I mean, good for you. They should actually just

986
00:54:05.039 --> 00:54:06.880
<v Speaker 2>release it and try and make themselves look like the

987
00:54:06.920 --> 00:54:09.199
<v Speaker 2>good guy. But it is Oracle. There's not a lot

988
00:54:09.199 --> 00:54:09.760
<v Speaker 2>of good guy there.

989
00:54:09.800 --> 00:54:10.679
<v Speaker 4>Yeah.

990
00:54:10.760 --> 00:54:14.679
<v Speaker 1>Yeah, let's let's hold open source developers feet to the

991
00:54:14.679 --> 00:54:17.360
<v Speaker 1>fire so that they can't use our trademark.

992
00:54:17.679 --> 00:54:20.880
<v Speaker 2>Nice, stupid. There's nothing they could do with it that

993
00:54:20.920 --> 00:54:23.039
<v Speaker 2>would be useful in any way or.

994
00:54:23.079 --> 00:54:25.360
<v Speaker 1>Profitable for them, right, what's the point? Yeah?

995
00:54:25.400 --> 00:54:27.599
<v Speaker 4>I think the best best thing they could do is

996
00:54:27.880 --> 00:54:31.480
<v Speaker 4>release it and get the goodwill for it. But as

997
00:54:31.800 --> 00:54:36.960
<v Speaker 4>Brian Cantrell has said, don't anthromorphize the lawnmower, Oracle being

998
00:54:37.400 --> 00:54:38.000
<v Speaker 4>the lawnmower.

999
00:54:38.679 --> 00:54:41.599
<v Speaker 2>A lot more that collects is licensing fees along the way,

1000
00:54:41.880 --> 00:54:45.599
<v Speaker 2>oh man, a licensing strategy known as so how much

1001
00:54:45.639 --> 00:54:47.719
<v Speaker 2>money do you have? Yeah? Right, all right?

1002
00:54:48.000 --> 00:54:49.440
<v Speaker 1>The leaf sucker.

1003
00:54:51.880 --> 00:54:53.639
<v Speaker 2>Hey, Ryan's so much fun to talk to you. Thanks

1004
00:54:53.679 --> 00:54:55.239
<v Speaker 2>so much for all the great work you do. It's

1005
00:54:55.280 --> 00:54:56.320
<v Speaker 2>really a pleasure.

1006
00:54:56.000 --> 00:54:57.719
<v Speaker 1>And it was delightful talk to you as well.

1007
00:54:58.079 --> 00:54:58.360
<v Speaker 2>Great.

1008
00:54:58.599 --> 00:55:00.800
<v Speaker 4>Thanks, It's fun all right, and.

1009
00:55:00.800 --> 00:55:03.800
<v Speaker 1>We'll talk to you, dear listener next time on dot

1010
00:55:03.920 --> 00:55:26.400
<v Speaker 1>net rocks. Dot net Rocks is brought to you by

1011
00:55:26.480 --> 00:55:31.199
<v Speaker 1>Franklin's Net and produced by Pop Studios, a full service audio,

1012
00:55:31.280 --> 00:55:35.719
<v Speaker 1>video and post production facility located physically in New London, Connecticut,

1013
00:55:36.000 --> 00:55:40.800
<v Speaker 1>and of course in the cloud online at pwop dot com.

1014
00:55:41.000 --> 00:55:43.119
<v Speaker 5>Visit our website at d O T N E t

1015
00:55:43.360 --> 00:55:47.360
<v Speaker 5>R O c k S dot com for RSS feeds, downloads,

1016
00:55:47.519 --> 00:55:51.199
<v Speaker 5>mobile apps, comments, and access to the full archives going

1017
00:55:51.239 --> 00:55:54.639
<v Speaker 5>back to show number one, recorded in September two thousand

1018
00:55:54.639 --> 00:55:54.920
<v Speaker 5>and two.

1019
00:55:55.519 --> 00:55:57.880
<v Speaker 1>And make sure you check out our sponsors. They keep

1020
00:55:57.960 --> 00:56:01.079
<v Speaker 1>us in business. Now go write some Oh see you

1021
00:56:01.159 --> 00:56:08.199
<v Speaker 1>next time. Got trade middle vands do the summer time

1022
00:56:09.440 --> 00:56:13.320
<v Speaker 1>that means home than my Texas a line d
