WEBVTT

1
00:00:04.759 --> 00:00:07.879
<v Speaker 1>Hey, folks, welcome back to another episode of the Ruby

2
00:00:08.000 --> 00:00:13.439
<v Speaker 1>Rogues podcast. This week on our panel we have a Yushnwatya.

3
00:00:13.480 --> 00:00:13.759
<v Speaker 2>Hello.

4
00:00:14.800 --> 00:00:17.559
<v Speaker 1>I'm Charles Maxwett from Top End Devs and this week

5
00:00:17.600 --> 00:00:21.039
<v Speaker 1>we have a special guest. It is Joe Mazzlati. Joe,

6
00:00:21.160 --> 00:00:25.359
<v Speaker 1>Welcome to the show. Hello, how are you doing all right?

7
00:00:25.399 --> 00:00:28.440
<v Speaker 1>I think we had you a while back talking about

8
00:00:29.039 --> 00:00:34.640
<v Speaker 1>then Turbo Native now hot Wire Native. But yeah, what's new?

9
00:00:35.600 --> 00:00:40.560
<v Speaker 3>Yeah, So I am writing a book on hot Wire

10
00:00:40.640 --> 00:00:45.280
<v Speaker 3>Native and it is coming very close to it being

11
00:00:45.320 --> 00:00:48.399
<v Speaker 3>completely done. So getting the word out talking about hot

12
00:00:48.439 --> 00:00:52.719
<v Speaker 3>Wire Native and just getting more and more rails developers

13
00:00:52.759 --> 00:00:55.320
<v Speaker 3>to use it. It's been it's been a fun couple

14
00:00:55.439 --> 00:00:56.520
<v Speaker 3>months for sure.

15
00:00:57.039 --> 00:00:59.000
<v Speaker 1>All Right. The book is out right.

16
00:01:00.079 --> 00:01:01.719
<v Speaker 3>Yeah, So the book is out. You can buy it

17
00:01:02.560 --> 00:01:06.480
<v Speaker 3>digital only right now as we finish up the last chapter,

18
00:01:07.000 --> 00:01:10.200
<v Speaker 3>and then when it comes out you know, final version,

19
00:01:11.120 --> 00:01:13.519
<v Speaker 3>you can start ordering the physical copies and like get

20
00:01:13.519 --> 00:01:15.560
<v Speaker 3>it at your bookstore and stuff. But if you buy

21
00:01:15.560 --> 00:01:17.480
<v Speaker 3>it now, you get a discount and then you get

22
00:01:17.480 --> 00:01:20.200
<v Speaker 3>an update email every two weeks with like the new

23
00:01:20.239 --> 00:01:22.719
<v Speaker 3>features and everything that have been added to the book.

24
00:01:23.239 --> 00:01:25.840
<v Speaker 3>So if you're only going digital, it makes sense to

25
00:01:25.840 --> 00:01:27.439
<v Speaker 3>buy it now for the discount, but if you want

26
00:01:27.480 --> 00:01:29.519
<v Speaker 3>to wait for physical, wait till you know, a few

27
00:01:29.519 --> 00:01:31.599
<v Speaker 3>more months, right.

28
00:01:31.439 --> 00:01:35.079
<v Speaker 1>And that's shows it only available on the Pragmatic Bookshelf.

29
00:01:35.680 --> 00:01:38.319
<v Speaker 3>Yeah then yeah, it's only available directly from my publisher.

30
00:01:39.840 --> 00:01:42.120
<v Speaker 1>Awesome. And those guys are amazing. I love those guys.

31
00:01:42.959 --> 00:01:45.040
<v Speaker 3>It has been such a pleasure working with them. Oh

32
00:01:45.079 --> 00:01:48.480
<v Speaker 3>my god. I even just from like the initial calls

33
00:01:48.519 --> 00:01:50.519
<v Speaker 3>with them, I had such a good feeling about them

34
00:01:50.519 --> 00:01:53.400
<v Speaker 3>as a publisher versus everyone else I spoke to and

35
00:01:54.000 --> 00:01:56.719
<v Speaker 3>ooof looking back on it, so glad I went with

36
00:01:56.760 --> 00:02:00.599
<v Speaker 3>a publisher instead of self publishing, because I probably would

37
00:02:00.640 --> 00:02:05.239
<v Speaker 3>have given up now, to be honest, Yeah what I'm

38
00:02:05.280 --> 00:02:05.760
<v Speaker 3>talking about.

39
00:02:06.239 --> 00:02:08.560
<v Speaker 2>Oh yeah, that was one of the questions I was

40
00:02:08.560 --> 00:02:10.800
<v Speaker 2>going to dig into. His publisher was and no publisher?

41
00:02:10.800 --> 00:02:12.039
<v Speaker 2>We got to be a bit later on.

42
00:02:12.159 --> 00:02:15.240
<v Speaker 1>Yeah, for sure, we could just do it now. I

43
00:02:15.280 --> 00:02:17.280
<v Speaker 1>was going to say, I mean, I've self published a book.

44
00:02:17.360 --> 00:02:22.080
<v Speaker 1>I know, I used self published a book. I've talked

45
00:02:22.080 --> 00:02:25.520
<v Speaker 1>to the guys at Pragmatic Bookshelf before, but I've never

46
00:02:25.560 --> 00:02:28.360
<v Speaker 1>actually gone all the way to hey, maybe we should

47
00:02:28.840 --> 00:02:31.560
<v Speaker 1>do a book together. But I know a lot of

48
00:02:31.560 --> 00:02:33.199
<v Speaker 1>folks over there. I don't know who you're working with,

49
00:02:33.240 --> 00:02:38.000
<v Speaker 1>but over there as your editor and stuff. But yeah,

50
00:02:38.120 --> 00:02:41.520
<v Speaker 1>it's way back in the day. Ruby Roges was going

51
00:02:41.560 --> 00:02:45.560
<v Speaker 1>to write a book and we were talking to Pearson.

52
00:02:45.879 --> 00:02:50.080
<v Speaker 1>O'Reilly kind of folks. And the reason was was because

53
00:02:50.080 --> 00:02:53.800
<v Speaker 1>we were gonna piggyback on small Talk best practice patterns

54
00:02:53.800 --> 00:02:56.639
<v Speaker 1>to write Ruby best Practice patterns. And so since we

55
00:02:56.680 --> 00:03:02.879
<v Speaker 1>were kind of stealing the book a little bit, you know,

56
00:03:03.159 --> 00:03:06.240
<v Speaker 1>we figured we'd have less legal trouble. But there were

57
00:03:06.639 --> 00:03:08.479
<v Speaker 1>six of us at the time, and they wanted to

58
00:03:08.520 --> 00:03:13.520
<v Speaker 1>give us like a ten or fifteen percent royalty to

59
00:03:13.560 --> 00:03:15.680
<v Speaker 1>splut am on the six of us, and we were

60
00:03:15.719 --> 00:03:17.560
<v Speaker 1>just we we kind of did all the looking and

61
00:03:17.599 --> 00:03:21.520
<v Speaker 1>feeling and everything, and I mean they they had a

62
00:03:21.599 --> 00:03:25.120
<v Speaker 1>clamp down ownership blah blah blah blah blah, and the

63
00:03:25.240 --> 00:03:28.120
<v Speaker 1>royalty was awful. And then I talked to people who

64
00:03:28.120 --> 00:03:32.599
<v Speaker 1>have published through Pragmatic Bookshelf and they they're like, oh,

65
00:03:32.759 --> 00:03:36.280
<v Speaker 1>these guys are a dream, and you know, they're totally

66
00:03:36.319 --> 00:03:39.039
<v Speaker 1>willing to work with you. As far as like ownership rights,

67
00:03:39.120 --> 00:03:40.759
<v Speaker 1>I know some people have let them own it and

68
00:03:40.800 --> 00:03:44.039
<v Speaker 1>other people have kept ownership I've seen it work both ways.

69
00:03:44.280 --> 00:03:47.840
<v Speaker 1>They've also published books like Abdy Grimm's Exceptional Ruby. He

70
00:03:47.960 --> 00:03:50.639
<v Speaker 1>self published it and then they picked it up, and so,

71
00:03:50.879 --> 00:03:52.639
<v Speaker 1>you know, and so they're totally willing to play ball.

72
00:03:52.719 --> 00:03:55.800
<v Speaker 1>And they're everybody that I've talked to. The royalty rates

73
00:03:55.840 --> 00:03:56.919
<v Speaker 1>like forty or fifty percent.

74
00:03:58.000 --> 00:04:01.479
<v Speaker 3>Yeah, yeah, exactly, and we could talk about it more.

75
00:04:01.479 --> 00:04:04.080
<v Speaker 3>But like if they were giving me zero percent royalties,

76
00:04:04.120 --> 00:04:06.840
<v Speaker 3>I still would have went with them. Oh really, yeah,

77
00:04:06.919 --> 00:04:11.360
<v Speaker 3>the the uh perhaps a little you know, insider knowledge here.

78
00:04:11.599 --> 00:04:14.400
<v Speaker 3>I am not planning on making money off of the book.

79
00:04:15.319 --> 00:04:17.439
<v Speaker 3>It's not my goal to make money like I you know,

80
00:04:17.480 --> 00:04:19.800
<v Speaker 3>I do the I did the math on it. However,

81
00:04:19.839 --> 00:04:21.920
<v Speaker 3>many rails developers there are in the world, However, many

82
00:04:22.000 --> 00:04:24.160
<v Speaker 3>of those are going to do mobile apps. It's still

83
00:04:24.199 --> 00:04:27.560
<v Speaker 3>a relatively niche topic. Right Maybe that changes in a

84
00:04:27.560 --> 00:04:30.959
<v Speaker 3>few years and I'm singing a different tune. But right now,

85
00:04:31.680 --> 00:04:37.920
<v Speaker 3>if I can get one or like two high ticket

86
00:04:38.040 --> 00:04:42.000
<v Speaker 3>clients for my consulting business from this book, it will

87
00:04:42.000 --> 00:04:44.199
<v Speaker 3>pay for itself, like all the work that I put

88
00:04:44.199 --> 00:04:46.199
<v Speaker 3>into it. Like that's all I need is to land

89
00:04:46.199 --> 00:04:50.399
<v Speaker 3>two big clients. And that's my kind of marketing plan

90
00:04:50.480 --> 00:04:52.160
<v Speaker 3>with all of it, Like when I go to conferences,

91
00:04:52.279 --> 00:04:55.120
<v Speaker 3>I am checking a suitcase full of books to bring

92
00:04:55.160 --> 00:04:58.759
<v Speaker 3>with me to just throw into the crowd. Essentially, you know,

93
00:04:58.839 --> 00:05:00.399
<v Speaker 3>like I want to get this thing to as many

94
00:05:00.399 --> 00:05:05.639
<v Speaker 3>people as possible. So having a publisher that supports really

95
00:05:05.639 --> 00:05:09.439
<v Speaker 3>good distribution and getting into local bookstores and kick ass

96
00:05:09.560 --> 00:05:13.839
<v Speaker 3>editor like it worked. It works so well. The forty

97
00:05:13.879 --> 00:05:16.600
<v Speaker 3>fifty royalties is kind of just a bonus to me.

98
00:05:18.120 --> 00:05:21.079
<v Speaker 1>Yeah, it's it's interesting that you bring that up, because

99
00:05:21.120 --> 00:05:23.120
<v Speaker 1>it seems like the only people I really see make

100
00:05:23.199 --> 00:05:26.920
<v Speaker 1>any kind of real money on books are essentially celebrities, right,

101
00:05:27.079 --> 00:05:30.560
<v Speaker 1>so you hear that, like Michelle Obama got a gazillion

102
00:05:30.639 --> 00:05:33.720
<v Speaker 1>dollar and it wasn't royalties, It was an advance on

103
00:05:33.879 --> 00:05:39.079
<v Speaker 1>royalties for the book, and it was because the publishing

104
00:05:39.120 --> 00:05:40.759
<v Speaker 1>house knew they could sell a whole bunch of those

105
00:05:40.759 --> 00:05:45.759
<v Speaker 1>books and they liked her, and so they figured it out. Whereas, yeah,

106
00:05:45.879 --> 00:05:48.639
<v Speaker 1>you know, for us, we're in a small niche, and

107
00:05:48.720 --> 00:05:51.639
<v Speaker 1>in your case, it's a small niche of a small niche,

108
00:05:52.000 --> 00:05:54.680
<v Speaker 1>and so yeah, you know you're you're doing it for

109
00:05:54.800 --> 00:05:57.240
<v Speaker 1>reputational and other reasons that make a lot of sense.

110
00:05:57.720 --> 00:06:02.480
<v Speaker 3>Exactly it's not going to be a New York Times bestseller,

111
00:06:02.480 --> 00:06:03.199
<v Speaker 3>and I'm okay with that.

112
00:06:04.000 --> 00:06:05.439
<v Speaker 1>I'm disappointed it should be.

113
00:06:05.680 --> 00:06:09.279
<v Speaker 3>I mean, never wild if it was. But I don't.

114
00:06:09.360 --> 00:06:11.040
<v Speaker 3>I don't see that happening anytime soon.

115
00:06:11.279 --> 00:06:13.600
<v Speaker 1>Everybody's doing hot Wire Native these days.

116
00:06:15.480 --> 00:06:18.680
<v Speaker 3>Hopefully, you know, the broader New York Times audience is

117
00:06:18.720 --> 00:06:20.959
<v Speaker 3>also doing hot Wire Native and they'll understand what I'm

118
00:06:20.959 --> 00:06:24.199
<v Speaker 3>talking about. But maybe the second edition.

119
00:06:25.279 --> 00:06:27.759
<v Speaker 1>Yeah, well, you know, we are in the rails renaissance,

120
00:06:27.800 --> 00:06:31.600
<v Speaker 1>is what I'm hearing. So but but but let's let's

121
00:06:31.639 --> 00:06:33.439
<v Speaker 1>move in and talk about hot Wire Native, because I

122
00:06:33.439 --> 00:06:37.519
<v Speaker 1>think that's probably where most people want to want to

123
00:06:37.560 --> 00:06:40.279
<v Speaker 1>hear about. I think I think the book Insider Baseball

124
00:06:40.759 --> 00:06:42.399
<v Speaker 1>is helpful for the people who may want to write

125
00:06:42.399 --> 00:06:45.360
<v Speaker 1>a book or you know, maybe they're like, oh, this

126
00:06:45.439 --> 00:06:47.519
<v Speaker 1>publisher does a good job on these things and takes

127
00:06:47.560 --> 00:06:49.120
<v Speaker 1>good care of their authors, and so I want to

128
00:06:49.160 --> 00:06:52.000
<v Speaker 1>support them. But yeah, let's let's dive in. So hot

129
00:06:52.040 --> 00:06:55.800
<v Speaker 1>Wire Native. We've already done a show on Turbo Native,

130
00:06:56.000 --> 00:06:59.600
<v Speaker 1>and I don't think the overall thing that it does

131
00:06:59.680 --> 00:07:01.800
<v Speaker 1>is change, So just give us a real quick overview

132
00:07:01.839 --> 00:07:03.720
<v Speaker 1>on that, and then what I'd like to do is

133
00:07:03.759 --> 00:07:07.000
<v Speaker 1>get into what's changed. Sure if that makes sense.

134
00:07:07.360 --> 00:07:12.959
<v Speaker 3>Yeah. So hot Wire Native takes your mobile website and

135
00:07:13.399 --> 00:07:16.079
<v Speaker 3>shoves it inside of an app that you download from

136
00:07:16.079 --> 00:07:20.839
<v Speaker 3>the App Store or Google Play. So your app itself,

137
00:07:20.959 --> 00:07:24.199
<v Speaker 3>the code is essentially a web browser that has you know,

138
00:07:24.199 --> 00:07:28.600
<v Speaker 3>maybe a native tab bar, native navigation, push onification, stuff

139
00:07:28.639 --> 00:07:32.240
<v Speaker 3>like that, but the majority of the content is a

140
00:07:32.240 --> 00:07:36.759
<v Speaker 3>WebView hitting your server, probably your Rails server, and rendering

141
00:07:36.759 --> 00:07:42.079
<v Speaker 3>your HTML, CSS and JavaScript. And what it gives you

142
00:07:42.360 --> 00:07:45.959
<v Speaker 3>is like almost full feature parody with your Rails app

143
00:07:46.000 --> 00:07:49.560
<v Speaker 3>with just a few lines of native code. And once

144
00:07:49.600 --> 00:07:52.399
<v Speaker 3>you submit to the app stores, you can continue to

145
00:07:52.439 --> 00:07:54.879
<v Speaker 3>add new features to your Rails app, and because the

146
00:07:55.079 --> 00:07:58.040
<v Speaker 3>native clients are just hitting your server, they get those

147
00:07:58.079 --> 00:08:00.959
<v Speaker 3>features essentially for free as long as there is a

148
00:08:01.000 --> 00:08:06.519
<v Speaker 3>link to that new feature on an existing page. That's

149
00:08:06.560 --> 00:08:11.279
<v Speaker 3>been the story for a decade since, like turbolinks, native

150
00:08:11.360 --> 00:08:15.360
<v Speaker 3>was around, and there's also opportunity to dive down into

151
00:08:15.439 --> 00:08:19.199
<v Speaker 3>native APIs. It's different than like React Native, where it's

152
00:08:19.279 --> 00:08:21.920
<v Speaker 3>taking over the entire app and you have to write

153
00:08:21.920 --> 00:08:26.160
<v Speaker 3>React native. Hot Wire Native sits next to iOS or Android,

154
00:08:26.639 --> 00:08:28.959
<v Speaker 3>and when you want to drop down to you know,

155
00:08:29.000 --> 00:08:33.120
<v Speaker 3>Pushmification API or the Haptics feedback or health Kit. You

156
00:08:33.200 --> 00:08:35.399
<v Speaker 3>just write that code and then send some data back

157
00:08:35.440 --> 00:08:38.000
<v Speaker 3>to your server or back to the WebView. There's no

158
00:08:39.600 --> 00:08:42.919
<v Speaker 3>health Kit plugin for hot Wire Native. You just write

159
00:08:42.919 --> 00:08:46.399
<v Speaker 3>health Kit code, so to speak, right, And I think, yeah,

160
00:08:46.399 --> 00:08:48.600
<v Speaker 3>it's a little bit like, oh, go ahead.

161
00:08:49.000 --> 00:08:50.759
<v Speaker 2>I think one key point that also needs to be

162
00:08:50.799 --> 00:08:54.279
<v Speaker 2>made is its separate code basis for iOS and Android,

163
00:08:54.360 --> 00:08:58.440
<v Speaker 2>which I'm a huge fan of because I don't believe

164
00:08:58.440 --> 00:09:01.879
<v Speaker 2>the one code based across money platform thing has ever worked.

165
00:09:02.279 --> 00:09:03.919
<v Speaker 2>So I really like the fact that you have to

166
00:09:04.039 --> 00:09:09.799
<v Speaker 2>separate code bases which kind of share this common engine

167
00:09:10.039 --> 00:09:11.000
<v Speaker 2>off the rails app.

168
00:09:13.159 --> 00:09:14.679
<v Speaker 1>Yeah, I'll say I have done.

169
00:09:14.799 --> 00:09:18.799
<v Speaker 3>The two code bases are essentially rappers, right Like there's

170
00:09:19.399 --> 00:09:22.960
<v Speaker 3>until you go into real native implementations of things. The codes,

171
00:09:23.559 --> 00:09:28.159
<v Speaker 3>the code length in the native apps is relatively minimal.

172
00:09:30.320 --> 00:09:33.000
<v Speaker 1>Yeah, I've done some Turbo or no, not turbinative. I've

173
00:09:33.000 --> 00:09:39.240
<v Speaker 1>done some React Native, and I mean they tried to

174
00:09:39.399 --> 00:09:42.000
<v Speaker 1>sell you on the one code base for everything, but

175
00:09:43.360 --> 00:09:48.039
<v Speaker 1>I think eventually they just had to acknowledge that sometimes

176
00:09:48.039 --> 00:09:49.919
<v Speaker 1>you're just going to have to deviate and have this

177
00:09:50.000 --> 00:09:53.919
<v Speaker 1>for this and that for that, but yeah, it's it's

178
00:09:54.000 --> 00:09:57.399
<v Speaker 1>like a full takeover on the javascripture, building the interface

179
00:09:57.399 --> 00:10:00.799
<v Speaker 1>in the whole nine yards and what I've seen and

180
00:10:00.879 --> 00:10:04.279
<v Speaker 1>done with something like hot wired Native. The nice thing

181
00:10:04.399 --> 00:10:06.320
<v Speaker 1>is is I can keep the same look and feel

182
00:10:06.360 --> 00:10:08.399
<v Speaker 1>if I want people to have the same experience on

183
00:10:08.440 --> 00:10:12.399
<v Speaker 1>the web and on the app. Or I've also seen

184
00:10:12.440 --> 00:10:14.360
<v Speaker 1>it where people tend, you know, they they kind of

185
00:10:14.399 --> 00:10:16.600
<v Speaker 1>pick up a style sheet and kind of figure it

186
00:10:16.639 --> 00:10:19.279
<v Speaker 1>out so that it looks more native. If you're in

187
00:10:19.320 --> 00:10:21.759
<v Speaker 1>the app, m you get you get a lot of

188
00:10:21.799 --> 00:10:25.600
<v Speaker 1>mileage out of it that way, Yeah, you get a lot.

189
00:10:25.679 --> 00:10:29.840
<v Speaker 3>And one of the big recommendations I have is to

190
00:10:29.879 --> 00:10:34.159
<v Speaker 3>continue using your web design in the apps. Like if

191
00:10:34.159 --> 00:10:39.720
<v Speaker 3>you're trying to chase iOS specific iOS Native UI and

192
00:10:39.720 --> 00:10:43.960
<v Speaker 3>Android Native UI, you're always just playing catch up. So

193
00:10:44.399 --> 00:10:47.320
<v Speaker 3>doing your continuing your you know, your tailwin CSS or

194
00:10:47.360 --> 00:10:51.639
<v Speaker 3>your Twitter bootstrap, you know styling on the mobile apps

195
00:10:51.799 --> 00:10:55.080
<v Speaker 3>is usually the best approach because you just have too

196
00:10:55.399 --> 00:10:58.480
<v Speaker 3>fewer things to worry about. It's like you have your

197
00:10:58.480 --> 00:11:01.639
<v Speaker 3>Web UI and you that works on your native and

198
00:11:01.679 --> 00:11:03.960
<v Speaker 3>then maybe you show or hide some content that doesn't

199
00:11:03.960 --> 00:11:06.000
<v Speaker 3>make sense on the native apps, like your you know,

200
00:11:06.639 --> 00:11:09.000
<v Speaker 3>Hamburger menu or whatever. That doesn't make sense in a

201
00:11:09.000 --> 00:11:11.759
<v Speaker 3>mobile context because you have a tab bar. But for

202
00:11:11.799 --> 00:11:14.440
<v Speaker 3>the most part, you're just like rendering the same stuff

203
00:11:14.480 --> 00:11:15.440
<v Speaker 3>styled the same way.

204
00:11:16.519 --> 00:11:22.120
<v Speaker 1>Yeah, so what's new, I mean besides the name change.

205
00:11:22.639 --> 00:11:24.240
<v Speaker 1>You know, what are we looking at here?

206
00:11:24.600 --> 00:11:28.519
<v Speaker 3>Yeah? So Turbo Native became hot wire Native a few

207
00:11:28.519 --> 00:11:33.759
<v Speaker 3>months ago, and the big change is that it now

208
00:11:33.879 --> 00:11:39.159
<v Speaker 3>encompasses what used to be called Strata. Strata is or

209
00:11:39.480 --> 00:11:44.039
<v Speaker 3>was the library formerly known as Strata is the way

210
00:11:44.039 --> 00:11:47.480
<v Speaker 3>to communicate to your webue through JavaScript. It's how you

211
00:11:47.480 --> 00:11:49.960
<v Speaker 3>can add It's kind of like stimulus for mobile apps.

212
00:11:50.480 --> 00:11:53.639
<v Speaker 3>You add native sprinkles to your apps. You add a

213
00:11:53.679 --> 00:11:55.679
<v Speaker 3>button in the top right or the top left. You

214
00:11:55.759 --> 00:12:00.559
<v Speaker 3>add an interaction with the push notification API. And Strata

215
00:12:01.519 --> 00:12:04.879
<v Speaker 3>worked with sending Jason back and forth between the native

216
00:12:04.919 --> 00:12:08.399
<v Speaker 3>code and the WebView, but it required like one hundred

217
00:12:08.399 --> 00:12:10.360
<v Speaker 3>and fifty lines of code to just integrate into your

218
00:12:10.360 --> 00:12:14.000
<v Speaker 3>library because you had to subclass something and pass along messages.

219
00:12:14.480 --> 00:12:18.519
<v Speaker 3>Now Strata is part of hot wire Native and has

220
00:12:18.600 --> 00:12:22.039
<v Speaker 3>just been renamed like Bridge components lowercase you know, B,

221
00:12:22.200 --> 00:12:24.600
<v Speaker 3>not a capital S for Strata. They're just a part

222
00:12:24.600 --> 00:12:27.399
<v Speaker 3>of hot Wire Native now, and what that means is

223
00:12:27.440 --> 00:12:30.679
<v Speaker 3>that when you use these bridge components, you just use them.

224
00:12:30.720 --> 00:12:32.840
<v Speaker 3>You don't have to worry about like a whole installation step.

225
00:12:32.840 --> 00:12:36.200
<v Speaker 3>They're already bundled. That's probably the biggest one. That's for

226
00:12:36.320 --> 00:12:40.279
<v Speaker 3>probably more not more experienced hot Wire Native developers, but

227
00:12:40.320 --> 00:12:44.039
<v Speaker 3>more advanced apps. The most relevant change for people that

228
00:12:44.080 --> 00:12:47.679
<v Speaker 3>have never used it is that the time to market,

229
00:12:47.759 --> 00:12:50.919
<v Speaker 3>Like from starting a new hot Wire native iOS app

230
00:12:50.960 --> 00:12:53.759
<v Speaker 3>to running it in the emulator or the simulator went

231
00:12:53.799 --> 00:12:57.039
<v Speaker 3>from forty five lines of code to like twelve lines

232
00:12:57.080 --> 00:13:00.759
<v Speaker 3>of code to get something running. And Android went from

233
00:13:01.440 --> 00:13:05.639
<v Speaker 3>I think like seventy eighty to like twenty five thirty five.

234
00:13:06.480 --> 00:13:09.000
<v Speaker 3>And those are the things that we're really looking forward

235
00:13:09.039 --> 00:13:11.559
<v Speaker 3>to as making those even fewer. Is just like how

236
00:13:11.639 --> 00:13:14.960
<v Speaker 3>quickly can we get from brand new excodeor Android studio

237
00:13:15.039 --> 00:13:18.960
<v Speaker 3>project to content rendering on the screen in a mobile

238
00:13:19.120 --> 00:13:23.240
<v Speaker 3>simulator emulator. And we've made some really big progress with

239
00:13:23.279 --> 00:13:26.879
<v Speaker 3>that by just making a lot of assumptions and letting people,

240
00:13:27.320 --> 00:13:31.120
<v Speaker 3>you know, giving people some of the higher level abstractions

241
00:13:31.159 --> 00:13:32.960
<v Speaker 3>than we used to give them with turbonative.

242
00:13:34.720 --> 00:13:37.080
<v Speaker 1>That makes sense. I have to say, there's this really

243
00:13:37.120 --> 00:13:38.639
<v Speaker 1>terrific book out there. I don't know if you all

244
00:13:38.639 --> 00:13:41.360
<v Speaker 1>have heard of it. It's called The Rails and hot

245
00:13:41.360 --> 00:13:44.240
<v Speaker 1>Wire Code X and I was going through some steps

246
00:13:44.279 --> 00:13:50.279
<v Speaker 1>in that for Turbonative at the time. And yeah, a

247
00:13:50.320 --> 00:13:52.759
<v Speaker 1>lot of this stuff that you're talking about, like the

248
00:13:52.799 --> 00:13:57.320
<v Speaker 1>extra installation step, it wasn't impossible to figure out, but

249
00:13:57.399 --> 00:14:01.200
<v Speaker 1>it wasn't something that I was regularly doing. So it

250
00:14:01.240 --> 00:14:03.639
<v Speaker 1>felt like it took an inordinate amount of time to

251
00:14:03.840 --> 00:14:06.279
<v Speaker 1>figure things out when I messed them up. And so

252
00:14:06.600 --> 00:14:09.200
<v Speaker 1>it sounds like there are just a lot fewer places

253
00:14:09.200 --> 00:14:13.360
<v Speaker 1>where Chuck can mess it up, if that makes sense.

254
00:14:13.440 --> 00:14:16.799
<v Speaker 3>Yeah, the way I look at it, like Turboonative, the

255
00:14:17.000 --> 00:14:21.120
<v Speaker 3>hot Wire Native is like equivalent on rails to writing

256
00:14:21.120 --> 00:14:24.799
<v Speaker 3>a routes a route, adding a controller, and adding a view.

257
00:14:25.639 --> 00:14:28.360
<v Speaker 3>Those are all wired up magically by their name. Right,

258
00:14:28.519 --> 00:14:31.080
<v Speaker 3>you have a posts controller, it's going to render posts

259
00:14:31.120 --> 00:14:33.759
<v Speaker 3>slash index or post slash show, depending on the method

260
00:14:33.759 --> 00:14:38.240
<v Speaker 3>you're in. Turbo Native required you to manually say okay,

261
00:14:39.360 --> 00:14:43.279
<v Speaker 3>the post, the get request to posts has to go

262
00:14:43.360 --> 00:14:47.799
<v Speaker 3>to the post's index controller, and the post's index controller

263
00:14:47.840 --> 00:14:50.720
<v Speaker 3>has to render the post index view. Like all of

264
00:14:50.720 --> 00:14:53.639
<v Speaker 3>those little places that you could either fat finger or

265
00:14:53.759 --> 00:14:57.440
<v Speaker 3>just like miss. That's how we love That's why we

266
00:14:57.480 --> 00:15:01.440
<v Speaker 3>love rails. All of those conventions make sense. Configuration, yeah yeah,

267
00:15:01.519 --> 00:15:05.320
<v Speaker 3>And like the Turbo Native was way more configuration over convention,

268
00:15:05.480 --> 00:15:08.639
<v Speaker 3>and now hot Wire Native is way more convention over configuration.

269
00:15:09.080 --> 00:15:10.840
<v Speaker 3>I hope I got those right. You do a lot

270
00:15:10.919 --> 00:15:13.600
<v Speaker 3>less code with hot Wire Native, and a lot of

271
00:15:13.600 --> 00:15:16.519
<v Speaker 3>it is just assumed for you. But we didn't hide

272
00:15:16.559 --> 00:15:18.879
<v Speaker 3>any of the APIs. They're still public. Like, if you

273
00:15:18.879 --> 00:15:21.240
<v Speaker 3>still want to drop down and do all the wild

274
00:15:21.240 --> 00:15:24.039
<v Speaker 3>stuff you were doing in a Turbnative app, those APIs

275
00:15:24.039 --> 00:15:27.000
<v Speaker 3>are still available to you. It's just like you're, you know,

276
00:15:27.039 --> 00:15:29.279
<v Speaker 3>a layer below the abstraction we want you to work

277
00:15:29.320 --> 00:15:31.799
<v Speaker 3>with so you have more freedom, but you also are

278
00:15:31.840 --> 00:15:33.440
<v Speaker 3>more responsible when something goes wrong.

279
00:15:34.879 --> 00:15:36.679
<v Speaker 1>I wish, how does that make you feel? With all

280
00:15:36.720 --> 00:15:38.159
<v Speaker 1>the stuff you wrote in that book.

281
00:15:40.399 --> 00:15:43.519
<v Speaker 2>Honestly, it not doesn't make too much of a difference

282
00:15:43.519 --> 00:15:47.200
<v Speaker 2>to me, because uh, like it is it's a false

283
00:15:47.240 --> 00:15:51.320
<v Speaker 2>moving kind of Hey, yeah, and I knew that, and

284
00:15:51.960 --> 00:15:54.840
<v Speaker 2>excuse me, and I kind of And that was the

285
00:15:54.879 --> 00:15:57.320
<v Speaker 2>reason why I decided for the second edition in my book,

286
00:15:58.039 --> 00:16:01.039
<v Speaker 2>I wasn't going to cover the Native stuff anymore because

287
00:16:01.159 --> 00:16:03.799
<v Speaker 2>I'm I've got both my feet firmly in the website

288
00:16:03.799 --> 00:16:06.799
<v Speaker 2>of things, and it was it's quite a lot to

289
00:16:07.000 --> 00:16:10.320
<v Speaker 2>do keeping up with all three platforms. I'm like, yeah,

290
00:16:10.360 --> 00:16:13.799
<v Speaker 2>not anymore. But I'm quite happy that these developments are

291
00:16:13.840 --> 00:16:18.039
<v Speaker 2>happening because it makes life easier for other developers. Like

292
00:16:19.440 --> 00:16:22.639
<v Speaker 2>when I was writing that the native chapters in my book,

293
00:16:23.600 --> 00:16:26.200
<v Speaker 2>it drove me to the edge of sanity, like it

294
00:16:26.240 --> 00:16:30.279
<v Speaker 2>was like and I had done native development professionally before,

295
00:16:30.320 --> 00:16:32.200
<v Speaker 2>it just had been a few years. I was a

296
00:16:32.200 --> 00:16:35.759
<v Speaker 2>bit rusty, like for a beginner, I can imagine the

297
00:16:35.799 --> 00:16:38.440
<v Speaker 2>shut tricky that must have been. So I think removing

298
00:16:39.159 --> 00:16:41.240
<v Speaker 2>all these hoops that you kind of have to jump

299
00:16:41.279 --> 00:16:45.320
<v Speaker 2>through is definitely a step in the right direction. And

300
00:16:46.120 --> 00:16:51.120
<v Speaker 2>really happy to hear that these changes are being made.

301
00:16:51.679 --> 00:16:55.639
<v Speaker 3>Yeah. So much of the old way of doing things

302
00:16:56.120 --> 00:17:00.919
<v Speaker 3>was just like totally manual, like here's a link, what

303
00:17:00.960 --> 00:17:02.279
<v Speaker 3>do you want to do with it? There was no

304
00:17:02.440 --> 00:17:05.119
<v Speaker 3>routing in place, there was no modal handling, there was

305
00:17:05.160 --> 00:17:09.599
<v Speaker 3>no dismissing like here's a link, here's a WebView, like,

306
00:17:09.680 --> 00:17:12.400
<v Speaker 3>go for it. It was so thin around the web view,

307
00:17:12.440 --> 00:17:15.680
<v Speaker 3>the wrapper that you know your book, the Codex book,

308
00:17:16.359 --> 00:17:19.319
<v Speaker 3>you had to deal with session delegates and like navigating

309
00:17:19.359 --> 00:17:21.279
<v Speaker 3>between screens if there's a modal and stuff, and like

310
00:17:21.359 --> 00:17:24.160
<v Speaker 3>all of that stuff has been abstracted into just one

311
00:17:24.240 --> 00:17:27.759
<v Speaker 3>line where it's like, here's an object, give it a URL,

312
00:17:28.039 --> 00:17:31.039
<v Speaker 3>and it will handle everything for you automatically, as long

313
00:17:31.079 --> 00:17:33.440
<v Speaker 3>as you have the path configuration set up, which we

314
00:17:33.440 --> 00:17:35.640
<v Speaker 3>could dive into if you want. But that just didn't

315
00:17:35.640 --> 00:17:40.599
<v Speaker 3>exist back then. And what's kind of wild is like

316
00:17:40.920 --> 00:17:45.359
<v Speaker 3>it existed in Turboonative Android for quite a while, but

317
00:17:45.400 --> 00:17:48.279
<v Speaker 3>the iOS library just hadn't been updated in like a

318
00:17:48.440 --> 00:17:51.759
<v Speaker 3>year to get up to speed with this. And when

319
00:17:51.799 --> 00:17:53.720
<v Speaker 3>I first learned that, I was, well, first I was

320
00:17:53.720 --> 00:17:56.079
<v Speaker 3>really upset because I was writing all this iOS code

321
00:17:56.119 --> 00:17:59.319
<v Speaker 3>for so many clients. And then I was like, well,

322
00:17:59.319 --> 00:18:01.160
<v Speaker 3>this is also just silly, like why have we not

323
00:18:01.200 --> 00:18:03.359
<v Speaker 3>gotten up to speed? And that's around the time I

324
00:18:03.359 --> 00:18:08.240
<v Speaker 3>started working with thirty seven Signals directly and started getting

325
00:18:08.240 --> 00:18:11.559
<v Speaker 3>contracted by then to bring the iOS library up to

326
00:18:11.599 --> 00:18:15.680
<v Speaker 3>speed with Android. That's where the Turbo Navigator library came from.

327
00:18:15.720 --> 00:18:18.720
<v Speaker 3>That we then upstreamed into hot Wire Native, like all

328
00:18:18.759 --> 00:18:22.160
<v Speaker 3>of this development that was essentially sponsored right by them

329
00:18:22.519 --> 00:18:24.720
<v Speaker 3>that I could do to bring the two libraries back

330
00:18:24.759 --> 00:18:28.799
<v Speaker 3>to feature parody. And I'm still working with them, Like

331
00:18:28.839 --> 00:18:31.160
<v Speaker 3>we have a really cool new demo site coming which

332
00:18:31.160 --> 00:18:33.000
<v Speaker 3>I'm very excited about that's going to be written in

333
00:18:33.079 --> 00:18:36.880
<v Speaker 3>Rails instead of JavaScript, so really relevant for rails developers.

334
00:18:37.279 --> 00:18:40.319
<v Speaker 3>But like all of that stuff took buy in from

335
00:18:40.400 --> 00:18:42.559
<v Speaker 3>thirty seven signals to finally sit down and say, okay,

336
00:18:42.839 --> 00:18:46.200
<v Speaker 3>we're focusing on this now. And before that it was

337
00:18:46.279 --> 00:18:48.839
<v Speaker 3>just like, what is this turbo native thing? Is it

338
00:18:48.880 --> 00:18:49.599
<v Speaker 3>even supported?

339
00:18:49.960 --> 00:18:50.240
<v Speaker 1>You know?

340
00:18:50.319 --> 00:18:53.640
<v Speaker 3>And I'm trying to scream from the from the mountaintops

341
00:18:53.680 --> 00:18:56.440
<v Speaker 3>of yes it is. I have many, many clients running

342
00:18:56.480 --> 00:18:59.599
<v Speaker 3>these apps, but it's hard when there's thirty open issues

343
00:18:59.640 --> 00:19:01.880
<v Speaker 3>in the last commit was six months ago. It's not

344
00:19:01.920 --> 00:19:02.599
<v Speaker 3>the case anymore.

345
00:19:02.680 --> 00:19:06.400
<v Speaker 1>Yeah, So speaking to that, right, speaking to kind of

346
00:19:07.119 --> 00:19:09.599
<v Speaker 1>keeping things up to date and stuff like that, I

347
00:19:09.640 --> 00:19:11.519
<v Speaker 1>will say that one of the things I ran into

348
00:19:12.200 --> 00:19:17.000
<v Speaker 1>pretty fast was that. And I think I was working

349
00:19:17.000 --> 00:19:20.119
<v Speaker 1>off an older version of I Use's book Codex book.

350
00:19:20.559 --> 00:19:23.039
<v Speaker 1>But and I'm looking forward to this in your book

351
00:19:23.079 --> 00:19:26.000
<v Speaker 1>because Pragmatic Programmers is usually pretty good, I will say,

352
00:19:26.599 --> 00:19:29.880
<v Speaker 1>in making sure that what's in the book is pretty

353
00:19:29.880 --> 00:19:32.119
<v Speaker 1>close to up to date, but I ran into version

354
00:19:32.160 --> 00:19:35.759
<v Speaker 1>issues almost right away, right, and it's like, okay, do

355
00:19:35.799 --> 00:19:38.400
<v Speaker 1>you want to run the latest Android? Okay, well, you

356
00:19:38.440 --> 00:19:40.759
<v Speaker 1>know the example in this book is you know, a

357
00:19:40.880 --> 00:19:45.440
<v Speaker 1>version old or two versions old. And so I guess

358
00:19:45.519 --> 00:19:50.160
<v Speaker 1>the question is both for the book and for the framework.

359
00:19:51.200 --> 00:19:53.000
<v Speaker 1>I don't know as a framework the right term for

360
00:19:53.119 --> 00:19:54.839
<v Speaker 1>hot Wire Native. I'm going to say framework.

361
00:19:55.480 --> 00:19:58.559
<v Speaker 3>Yeah, framework, it's technically a library, right, but like I

362
00:19:58.640 --> 00:20:00.920
<v Speaker 3>call it a framework because we're building hot Wire Native app.

363
00:20:01.559 --> 00:20:06.880
<v Speaker 1>Yeah. Anyway, so how how well are they doing staying

364
00:20:06.880 --> 00:20:09.599
<v Speaker 1>on top of those things? Right? So when Apple releases

365
00:20:09.599 --> 00:20:12.599
<v Speaker 1>a new iOS version or Android releases a new version,

366
00:20:13.119 --> 00:20:17.039
<v Speaker 1>you know, yeah it is thirty seven signals or whoever's

367
00:20:17.079 --> 00:20:19.200
<v Speaker 1>working on it keeping that up to date. And then

368
00:20:19.319 --> 00:20:21.880
<v Speaker 1>is your book going to stay up to date? Yeah?

369
00:20:22.079 --> 00:20:27.039
<v Speaker 3>So right now we're in this interesting part where Android

370
00:20:27.319 --> 00:20:31.039
<v Speaker 3>SDK thirty five is like the default with new Android

371
00:20:31.079 --> 00:20:35.480
<v Speaker 3>studio builds, but hot Wire Native Android works only with

372
00:20:35.599 --> 00:20:39.240
<v Speaker 3>Android thirty four. So if you like, create a new

373
00:20:39.240 --> 00:20:43.359
<v Speaker 3>Android project right now, and you know, this is February twentyeth,

374
00:20:43.480 --> 00:20:47.079
<v Speaker 3>twenty twenty five, we're in really that awkward time where

375
00:20:47.079 --> 00:20:49.680
<v Speaker 3>the new life that became the default last week, and

376
00:20:49.720 --> 00:20:50.279
<v Speaker 3>we have an.

377
00:20:50.160 --> 00:20:54.880
<v Speaker 1>Up there last week, okay, like last.

378
00:20:54.079 --> 00:20:57.240
<v Speaker 3>Like the SDK has been around for a while, but

379
00:20:57.799 --> 00:20:59.920
<v Speaker 3>it was became the new default and Android like very

380
00:21:00.039 --> 00:21:02.559
<v Speaker 3>very recently, right, So if you create a new Android

381
00:21:02.599 --> 00:21:04.720
<v Speaker 3>app right now, it will be broken. You have to

382
00:21:04.799 --> 00:21:06.559
<v Speaker 3>drop down to thirty four and you're gonna get all

383
00:21:06.599 --> 00:21:08.559
<v Speaker 3>these warnings from Android Studio. So there's an open pr

384
00:21:08.640 --> 00:21:10.640
<v Speaker 3>already for hot Wire I need of Android. You're just

385
00:21:10.640 --> 00:21:12.400
<v Speaker 3>doing all our due diligence to make sure it works.

386
00:21:13.400 --> 00:21:17.200
<v Speaker 3>But like things like that are we stay on top

387
00:21:17.200 --> 00:21:19.359
<v Speaker 3>of them. With the libraries, it's easy to release a

388
00:21:19.359 --> 00:21:23.240
<v Speaker 3>new version of a library, relatively speaking. For the book,

389
00:21:23.359 --> 00:21:27.319
<v Speaker 3>it gets a little bit trickier because I can't just

390
00:21:27.559 --> 00:21:30.440
<v Speaker 3>update someone's physical copy of a book, right. I can

391
00:21:30.519 --> 00:21:34.400
<v Speaker 3>update the PDF no problem, like the three beta versions

392
00:21:34.440 --> 00:21:35.680
<v Speaker 3>of the book that have been out already.

393
00:21:36.039 --> 00:21:38.559
<v Speaker 1>That's why I always buy the digital version from the

394
00:21:38.720 --> 00:21:43.640
<v Speaker 1>Ragmatic Studio and not from Amazon, just because they'll email me, hey, dude, there's.

395
00:21:43.440 --> 00:21:46.920
<v Speaker 3>A new one exactly exactly, yeah, direct from the publisher.

396
00:21:47.279 --> 00:21:49.000
<v Speaker 3>You get an update every time I update it. And

397
00:21:49.319 --> 00:21:51.720
<v Speaker 3>right now we're in a really good spot with iOS

398
00:21:51.960 --> 00:21:55.720
<v Speaker 3>iOS just released a new version of x code that

399
00:21:56.039 --> 00:21:58.799
<v Speaker 3>changes some things about how folders and groups are related

400
00:21:58.839 --> 00:22:00.799
<v Speaker 3>under the hood, and like, we're using that new stuff,

401
00:22:01.079 --> 00:22:03.640
<v Speaker 3>so we're on up to speed there. But Android, the

402
00:22:03.680 --> 00:22:06.720
<v Speaker 3>book is written for thirty four, not thirty five, because

403
00:22:06.720 --> 00:22:09.000
<v Speaker 3>I have to wait till the hot wire native Android

404
00:22:09.079 --> 00:22:12.160
<v Speaker 3>support comes out. So what I'm doing as an author

405
00:22:12.440 --> 00:22:16.519
<v Speaker 3>is making sure that I'm not releasing this thing to

406
00:22:16.599 --> 00:22:19.559
<v Speaker 3>physical until we are set on both platforms at least

407
00:22:19.599 --> 00:22:23.000
<v Speaker 3>for a little while. And that won't always be the case.

408
00:22:23.039 --> 00:22:25.599
<v Speaker 3>Android thirty seven will probably break something when it comes

409
00:22:25.640 --> 00:22:28.759
<v Speaker 3>out in a few years, but I see this book

410
00:22:28.880 --> 00:22:32.039
<v Speaker 3>as something that will probably need to be updated every

411
00:22:33.119 --> 00:22:38.440
<v Speaker 3>eighteen months at a minimum, So I'm making sure that

412
00:22:38.680 --> 00:22:41.119
<v Speaker 3>every single time I reference a version code or a

413
00:22:41.200 --> 00:22:44.759
<v Speaker 3>version number or an SDK, it's like, by the way,

414
00:22:44.799 --> 00:22:47.720
<v Speaker 3>this was tested on version X. If you're using anything newer,

415
00:22:47.960 --> 00:22:51.799
<v Speaker 3>like you're kind of at your own, but also join

416
00:22:51.839 --> 00:22:54.759
<v Speaker 3>my discord and I'll help you, like join my private

417
00:22:54.799 --> 00:22:57.759
<v Speaker 3>discord just for book owned book readers, and I will

418
00:22:57.759 --> 00:22:59.480
<v Speaker 3>help you get through it because someone else is already

419
00:22:59.480 --> 00:23:01.000
<v Speaker 3>going to ask that we're already going to be up

420
00:23:01.000 --> 00:23:03.240
<v Speaker 3>to speed on it, and maybe that just means like, hey,

421
00:23:03.240 --> 00:23:05.480
<v Speaker 3>here's a PDF version of the book, You're good to go.

422
00:23:06.079 --> 00:23:08.640
<v Speaker 3>Or it's like, oh, you need to just this one

423
00:23:08.720 --> 00:23:12.319
<v Speaker 3>change and it's like documented somewhere. The short of it

424
00:23:12.400 --> 00:23:16.079
<v Speaker 3>is that it sucks, like like there's so many changes

425
00:23:16.160 --> 00:23:19.400
<v Speaker 3>all the time, and I'm sometimes the one who's making

426
00:23:19.480 --> 00:23:21.160
<v Speaker 3>the changes to the library, and then I know I

427
00:23:21.160 --> 00:23:25.960
<v Speaker 3>have to update the book later, so I both have

428
00:23:26.079 --> 00:23:28.880
<v Speaker 3>insider knowledge into what's coming next, but I also can

429
00:23:28.880 --> 00:23:32.920
<v Speaker 3>dictate how quickly it happens or slowly. So it's it's

430
00:23:33.079 --> 00:23:35.359
<v Speaker 3>also this just like fun mental game that I play

431
00:23:35.400 --> 00:23:37.640
<v Speaker 3>with myself where it's like do we include this in

432
00:23:37.680 --> 00:23:40.240
<v Speaker 3>the Hotwire native repos but then my book has to

433
00:23:40.319 --> 00:23:42.240
<v Speaker 3>mention it or do we not? And like I wait,

434
00:23:42.359 --> 00:23:45.839
<v Speaker 3>So it's all this fun stuff I never really had

435
00:23:45.839 --> 00:23:47.160
<v Speaker 3>to think about before.

436
00:23:48.599 --> 00:23:55.079
<v Speaker 2>Yeah, when new stuff comes out in reales, I'm always

437
00:23:55.359 --> 00:23:58.079
<v Speaker 2>like organizing. I'm still agonizing about what to do with

438
00:23:58.119 --> 00:24:02.599
<v Speaker 2>the second edition, what to include, what takes It's it's

439
00:24:02.640 --> 00:24:04.720
<v Speaker 2>a lot harder when you're when you're a nor book

440
00:24:04.759 --> 00:24:09.799
<v Speaker 2>author as well, which actually segues nicely into another conversation

441
00:24:09.880 --> 00:24:13.920
<v Speaker 2>I wanted to have, which is, you historically were primarily

442
00:24:13.960 --> 00:24:16.400
<v Speaker 2>an iOS develop permise, Am I right in saying that?

443
00:24:17.160 --> 00:24:20.279
<v Speaker 2>And you did Android for this book as well? That like,

444
00:24:20.440 --> 00:24:23.680
<v Speaker 2>Android is fairly new to you for this book. What

445
00:24:23.759 --> 00:24:25.880
<v Speaker 2>was that experience like? Because from my point of view,

446
00:24:25.920 --> 00:24:27.960
<v Speaker 2>Android has been the bane of my life for years

447
00:24:27.960 --> 00:24:32.319
<v Speaker 2>and years and years, like everything on Android has been

448
00:24:32.359 --> 00:24:35.880
<v Speaker 2>more difficult to do than iOS. Uh. And I think

449
00:24:35.920 --> 00:24:39.079
<v Speaker 2>for me, the final straw that made me decide to

450
00:24:39.200 --> 00:24:43.359
<v Speaker 2>exclude Native from the second edition was when Strata had

451
00:24:43.400 --> 00:24:45.279
<v Speaker 2>just come out and I needed to update my book

452
00:24:45.519 --> 00:24:48.920
<v Speaker 2>to include Strada. I was on holiday at my parents'

453
00:24:48.920 --> 00:24:52.960
<v Speaker 2>house in India, and I opened up the uh, the

454
00:24:53.039 --> 00:24:55.799
<v Speaker 2>Android Reaper for the book, and I included the Strata

455
00:24:55.839 --> 00:25:00.319
<v Speaker 2>library and there instantly everything broke. I fixed it. Know

456
00:25:00.319 --> 00:25:01.920
<v Speaker 2>how I fixed don't know how I fixed it, but

457
00:25:01.960 --> 00:25:05.240
<v Speaker 2>I fixed it. Closed Android Studio, got back, got back

458
00:25:05.240 --> 00:25:08.680
<v Speaker 2>home to the UK, open Android Studio again and it

459
00:25:08.759 --> 00:25:09.519
<v Speaker 2>was broken again.

460
00:25:09.640 --> 00:25:10.400
<v Speaker 3>Oh yeah, And.

461
00:25:10.359 --> 00:25:16.519
<v Speaker 2>I'm like, how was your experience like learning Android?

462
00:25:17.039 --> 00:25:23.880
<v Speaker 3>Yeah? I would say that I didn't really start learning

463
00:25:23.920 --> 00:25:28.440
<v Speaker 3>Android until the Java to Cotlan migration like change. Like

464
00:25:28.519 --> 00:25:31.640
<v Speaker 3>once Cotland became the default language for Android apps and

465
00:25:31.640 --> 00:25:36.039
<v Speaker 3>Android Studio, that was when I seriously started considering Android

466
00:25:36.319 --> 00:25:40.119
<v Speaker 3>and started doing Android projects for clients. All of my

467
00:25:40.279 --> 00:25:43.799
<v Speaker 3>public material, like my newsletter, my blog posts, my Twitter

468
00:25:43.839 --> 00:25:47.279
<v Speaker 3>and everything. I usually talk about iOS because it's such

469
00:25:47.279 --> 00:25:50.079
<v Speaker 3>a majority of the market and the code is just

470
00:25:50.480 --> 00:25:53.200
<v Speaker 3>way simpler most of the time, Like there's way less quids,

471
00:25:53.200 --> 00:25:55.440
<v Speaker 3>like you don't worry about some x random XML file

472
00:25:55.720 --> 00:25:58.839
<v Speaker 3>or some factory just to wire a little button up

473
00:25:58.920 --> 00:26:01.640
<v Speaker 3>or whatever. So I usually talk about iOS because it's

474
00:26:01.680 --> 00:26:05.000
<v Speaker 3>just more elegant and markets better. I've been doing Android

475
00:26:05.000 --> 00:26:09.119
<v Speaker 3>for a long time, but I've never taught Android in

476
00:26:09.119 --> 00:26:11.880
<v Speaker 3>the way that I'm teaching it in this book. So

477
00:26:12.240 --> 00:26:16.240
<v Speaker 3>what I've had to do is get I have an editor,

478
00:26:16.319 --> 00:26:18.799
<v Speaker 3>or not an editor. I have a beta reviewer who

479
00:26:18.920 --> 00:26:23.880
<v Speaker 3>is a like hardcore Android developer, doesn't know rails, doesn't

480
00:26:23.880 --> 00:26:26.440
<v Speaker 3>know hot wire Native. They do Android day in and

481
00:26:26.480 --> 00:26:29.160
<v Speaker 3>day out, and they are giving every single line of

482
00:26:29.160 --> 00:26:32.519
<v Speaker 3>Android code like two or three REA read throughs in

483
00:26:32.559 --> 00:26:35.720
<v Speaker 3>this book, and that has pointed out some small things

484
00:26:35.759 --> 00:26:37.839
<v Speaker 3>about like where I use it Ruby term instead of

485
00:26:37.839 --> 00:26:40.720
<v Speaker 3>a Cotland term, but also some larger things where like

486
00:26:40.799 --> 00:26:43.240
<v Speaker 3>I've made mistakes in the book that are just straight

487
00:26:43.279 --> 00:26:46.640
<v Speaker 3>up wrong, like I outlined a function and was like,

488
00:26:46.680 --> 00:26:48.759
<v Speaker 3>here's how you write it in Scotland, and he applied

489
00:26:48.799 --> 00:26:53.240
<v Speaker 3>and was like, I, no, that doesn't even compile. It's like,

490
00:26:53.400 --> 00:26:56.680
<v Speaker 3>thanks for that. But he's also bringing up more conventions

491
00:26:56.799 --> 00:27:00.960
<v Speaker 3>that are more akin to the Android developer or experience.

492
00:27:01.799 --> 00:27:03.599
<v Speaker 3>And you do things in rails a certain way, you

493
00:27:03.599 --> 00:27:05.279
<v Speaker 3>do things in iOS a certain way, you do things

494
00:27:05.359 --> 00:27:07.720
<v Speaker 3>in Android a certain way, and I'm not as privy

495
00:27:07.759 --> 00:27:09.759
<v Speaker 3>to those because I'm mostly just like slapping what I

496
00:27:09.799 --> 00:27:13.119
<v Speaker 3>can together. He's coming out and saying, hey, you're managing

497
00:27:13.119 --> 00:27:17.680
<v Speaker 3>your versions the wrong way, Like you're essentially not adding

498
00:27:17.720 --> 00:27:20.160
<v Speaker 3>any version numbers to your gem file, Like you should

499
00:27:20.200 --> 00:27:23.039
<v Speaker 3>probably have a version number in the equivalent for Android.

500
00:27:23.119 --> 00:27:25.759
<v Speaker 3>Stuff like that. That's just like really helpful to pass

501
00:27:25.839 --> 00:27:29.599
<v Speaker 3>on to my readers. It'd be really tough without that.

502
00:27:30.119 --> 00:27:31.880
<v Speaker 3>And also just like the book would be worse because

503
00:27:31.920 --> 00:27:33.720
<v Speaker 3>it'd be wrong in some places and I looked like

504
00:27:33.759 --> 00:27:37.759
<v Speaker 3>an idiot. So very grateful for that editor, for that

505
00:27:37.960 --> 00:27:41.440
<v Speaker 3>beta reviewer. It still doesn't change the fact that writing

506
00:27:41.480 --> 00:27:43.960
<v Speaker 3>Android chapters usually takes me two to three times as

507
00:27:44.000 --> 00:27:49.000
<v Speaker 3>long as writing iOS chapters. I have half a chapter

508
00:27:49.160 --> 00:27:52.640
<v Speaker 3>left to finish my manuscript. All of the content it'll

509
00:27:52.680 --> 00:27:54.599
<v Speaker 3>still need to go over to through two or three

510
00:27:54.640 --> 00:27:57.119
<v Speaker 3>rounds of editing. But like the content, I have half

511
00:27:57.119 --> 00:28:00.880
<v Speaker 3>a chapter left. It is an Android half a chapter.

512
00:28:01.039 --> 00:28:03.279
<v Speaker 3>I have been writing this half a chapter for three

513
00:28:03.319 --> 00:28:07.559
<v Speaker 3>weeks and it is killing me. And it's just like

514
00:28:07.759 --> 00:28:10.119
<v Speaker 3>I wrote the iOS chapter in like two hours, the

515
00:28:10.160 --> 00:28:13.240
<v Speaker 3>iOS side of the chapter, but the Android side has

516
00:28:13.279 --> 00:28:15.079
<v Speaker 3>been such a pain in the butt because I just

517
00:28:15.119 --> 00:28:17.240
<v Speaker 3>like skip a step or forget something, or get locked

518
00:28:17.240 --> 00:28:19.640
<v Speaker 3>out of my Google Play account because I like said

519
00:28:19.680 --> 00:28:22.839
<v Speaker 3>that my name was Joseph Mazzilotti instead of Joseph Anthony Mazzolotti,

520
00:28:22.880 --> 00:28:26.519
<v Speaker 3>and like little silly, nippicky things like that are causing

521
00:28:26.519 --> 00:28:31.640
<v Speaker 3>this chapter to just take forever. But as soon as

522
00:28:31.640 --> 00:28:33.640
<v Speaker 3>this call is done, I have a nice three hour

523
00:28:33.720 --> 00:28:35.839
<v Speaker 3>chunk to work on it, and I'm hoping I can

524
00:28:35.880 --> 00:28:37.200
<v Speaker 3>finish it.

525
00:28:37.200 --> 00:28:41.920
<v Speaker 1>It sounds like the old yarn for programmers, where it's

526
00:28:41.480 --> 00:28:45.039
<v Speaker 1>the first ninety percent of the work and then you

527
00:28:45.079 --> 00:28:46.920
<v Speaker 1>know the second ninety percent of the work.

528
00:28:47.160 --> 00:28:48.799
<v Speaker 3>Oh my god, totally, And I know that as soon

529
00:28:48.799 --> 00:28:51.359
<v Speaker 3>as I finish the manuscript, the real work starts of

530
00:28:51.400 --> 00:28:54.559
<v Speaker 3>like the editor, get the first round, development editor, the

531
00:28:54.559 --> 00:28:58.240
<v Speaker 3>beta reviewers, then the publishing editor, and then we talk

532
00:28:58.279 --> 00:29:00.880
<v Speaker 3>about typos and layout and it's like grammar, Like, we

533
00:29:00.880 --> 00:29:04.440
<v Speaker 3>haven't even addressed those things yet, you know, and that's

534
00:29:04.559 --> 00:29:08.279
<v Speaker 3>just going to be i know, the most tedious, tiny changes,

535
00:29:08.799 --> 00:29:10.559
<v Speaker 3>but they'll all make a better book. And that's why

536
00:29:10.559 --> 00:29:11.559
<v Speaker 3>I'm working with a publisher.

537
00:29:13.079 --> 00:29:16.400
<v Speaker 1>Yeah, so, you know, kind of getting into this where

538
00:29:16.400 --> 00:29:19.039
<v Speaker 1>you have a book, you know, you're walking people through

539
00:29:20.279 --> 00:29:24.000
<v Speaker 1>building apps. I guess some of the questions that I

540
00:29:24.039 --> 00:29:28.440
<v Speaker 1>have getting into kind of what you can and can't

541
00:29:28.480 --> 00:29:31.000
<v Speaker 1>do with hot Wire Native, right, And I think we

542
00:29:31.079 --> 00:29:32.920
<v Speaker 1>went into some of this in the other episode. But

543
00:29:35.079 --> 00:29:38.839
<v Speaker 1>the biggest podcast that I do every week is JavaScript Jabber. Right.

544
00:29:39.440 --> 00:29:42.559
<v Speaker 1>Until you've got the React developers and the view developers,

545
00:29:42.599 --> 00:29:44.799
<v Speaker 1>and then you've got other people that you know, they're

546
00:29:44.880 --> 00:29:48.799
<v Speaker 1>kind of into JavaScript, but they're not really like deeply, right,

547
00:29:48.839 --> 00:29:50.880
<v Speaker 1>so they might have instead of a single page app

548
00:29:50.880 --> 00:29:54.960
<v Speaker 1>with React and React Router, they've got, you know, something

549
00:29:55.000 --> 00:29:56.720
<v Speaker 1>that looks a little bit more like a Rails app

550
00:29:56.720 --> 00:29:58.480
<v Speaker 1>and they've got express or sales or something on the

551
00:29:58.480 --> 00:30:01.759
<v Speaker 1>back end. And so my question is is can you

552
00:30:02.000 --> 00:30:07.079
<v Speaker 1>do a hot wire native app if it's not Rails?

553
00:30:07.640 --> 00:30:13.240
<v Speaker 3>Yeah, short answer is yes. The native frameworks. Hot Wire Native,

554
00:30:13.279 --> 00:30:17.079
<v Speaker 3>iOS and Android are platform agnostic. They will work on

555
00:30:17.160 --> 00:30:22.359
<v Speaker 3>any back end, any web rendered content as long as

556
00:30:22.400 --> 00:30:27.240
<v Speaker 3>you are doing your page to page navigation with TURBOJS.

557
00:30:28.000 --> 00:30:30.640
<v Speaker 3>So if you're not doing turbo JS, which is the

558
00:30:30.640 --> 00:30:33.039
<v Speaker 3>default on new Rails apps it has been for a

559
00:30:33.119 --> 00:30:37.160
<v Speaker 3>number of years, you will not get the callback handlers

560
00:30:37.160 --> 00:30:39.359
<v Speaker 3>to the native apps to know to present a new screen,

561
00:30:39.480 --> 00:30:41.400
<v Speaker 3>to know to do the native transition, to give you

562
00:30:41.440 --> 00:30:46.000
<v Speaker 3>the hooks to make changes. So my recommendation is usually like,

563
00:30:46.880 --> 00:30:49.440
<v Speaker 3>if you have Rails and you're using hot Wire, hot

564
00:30:49.480 --> 00:30:53.079
<v Speaker 3>Wire Native is a very easy add on to it.

565
00:30:53.119 --> 00:30:54.759
<v Speaker 3>You don't have to make many changes to your server.

566
00:30:55.359 --> 00:30:58.240
<v Speaker 3>If you have a React front end and you have

567
00:30:58.279 --> 00:31:01.359
<v Speaker 3>like adjase, your Rails app is supplying a Jason endpoint

568
00:31:01.400 --> 00:31:03.960
<v Speaker 3>type thing, You're going to have a much harder time

569
00:31:05.160 --> 00:31:07.599
<v Speaker 3>kind of hammering that to make it work with hot

570
00:31:07.640 --> 00:31:11.039
<v Speaker 3>Wire Native, And honestly, i'd just recommend React Native. But

571
00:31:11.079 --> 00:31:14.319
<v Speaker 3>if you have a view app or a lower of

572
00:31:14.359 --> 00:31:18.920
<v Speaker 3>a app, if you change the page navigation to use TURBOJS,

573
00:31:19.359 --> 00:31:20.839
<v Speaker 3>hot Wire Native will work as if it was a

574
00:31:20.880 --> 00:31:26.000
<v Speaker 3>Rails app and there's very little that you'll need to

575
00:31:26.039 --> 00:31:29.920
<v Speaker 3>add to your non rails back end to get some

576
00:31:30.000 --> 00:31:32.119
<v Speaker 3>of the niceties, like you'll have to create your own

577
00:31:32.319 --> 00:31:34.880
<v Speaker 3>hot wire native app helper that just checks the user

578
00:31:34.920 --> 00:31:36.920
<v Speaker 3>agents like things like that that are actually not that

579
00:31:37.119 --> 00:31:40.960
<v Speaker 3>hard or not that much code. But the most important

580
00:31:40.960 --> 00:31:42.640
<v Speaker 3>thing is if it's running TURBOJS, you're good.

581
00:31:45.200 --> 00:31:49.240
<v Speaker 1>Right. So the other question that I have is, I

582
00:31:49.319 --> 00:31:52.400
<v Speaker 1>know that some people have a tendency to like they'll

583
00:31:52.480 --> 00:31:55.319
<v Speaker 1>run into some some weird gotcha's. I think my favorite

584
00:31:55.359 --> 00:31:58.960
<v Speaker 1>one is that you have a form submit and a

585
00:31:59.000 --> 00:32:03.119
<v Speaker 1>lot of times it'll met with turbo turbo stream and

586
00:32:03.160 --> 00:32:05.680
<v Speaker 1>then you know, the way that you put your page together,

587
00:32:05.799 --> 00:32:08.720
<v Speaker 1>it doesn't actually reload anything, and so then people just

588
00:32:08.839 --> 00:32:12.480
<v Speaker 1>turn it off. Does that make it not work with

589
00:32:12.799 --> 00:32:14.720
<v Speaker 1>turbo native when you do that kind of a thing,

590
00:32:15.319 --> 00:32:17.279
<v Speaker 1>or are there other things that people may be doing

591
00:32:17.279 --> 00:32:18.880
<v Speaker 1>with their rails apps that are going to cause them

592
00:32:18.880 --> 00:32:20.480
<v Speaker 1>trouble if they try and adopt this approach.

593
00:32:21.279 --> 00:32:26.599
<v Speaker 3>Yeah, So anything that's happening on the same page that,

594
00:32:26.680 --> 00:32:32.000
<v Speaker 3>like I use the example is your URL changing. If

595
00:32:32.000 --> 00:32:35.759
<v Speaker 3>your URL is changing, that will trigger most likely a

596
00:32:35.799 --> 00:32:38.440
<v Speaker 3>new page, a new screen getting pushed on the native

597
00:32:38.480 --> 00:32:42.960
<v Speaker 3>apps because you're doing like a full on TURBOJS navigation.

598
00:32:43.720 --> 00:32:46.319
<v Speaker 3>If you're doing something where you have a turbo frame

599
00:32:46.920 --> 00:32:50.000
<v Speaker 3>and that's making a request that's happening inside the turbo frame,

600
00:32:50.039 --> 00:32:51.880
<v Speaker 3>that's not going to push a new screen onto the stack,

601
00:32:52.400 --> 00:32:55.279
<v Speaker 3>and that's ideal. Like you think about a lazy loaded frame.

602
00:32:56.000 --> 00:32:57.759
<v Speaker 3>You don't want when that frame loads to push a

603
00:32:57.799 --> 00:33:00.440
<v Speaker 3>new screen. You just want that content to appear inside

604
00:33:00.440 --> 00:33:04.160
<v Speaker 3>the website. Turbo streams have their own custom handling, and

605
00:33:04.400 --> 00:33:08.640
<v Speaker 3>there's some documentation about it on Native dot Hotwired dot dev.

606
00:33:09.759 --> 00:33:14.079
<v Speaker 3>But the short of it is like, if you're submitting

607
00:33:14.119 --> 00:33:16.400
<v Speaker 3>a form, you'll most likely want to push a new

608
00:33:16.400 --> 00:33:18.640
<v Speaker 3>page for the mobile apps because it will create a

609
00:33:18.640 --> 00:33:24.920
<v Speaker 3>better experience for your mobile users, mostly related to when

610
00:33:24.960 --> 00:33:27.920
<v Speaker 3>you click a link, it opens a form in a modal.

611
00:33:28.279 --> 00:33:30.279
<v Speaker 3>It slides in from the bottom to give you that

612
00:33:30.359 --> 00:33:32.279
<v Speaker 3>context of like you've kind of broken out of the

613
00:33:32.279 --> 00:33:35.000
<v Speaker 3>standard view, and then when you submit that form, it

614
00:33:35.039 --> 00:33:38.720
<v Speaker 3>dismisses the modal and either refreshes the page underneath the

615
00:33:38.759 --> 00:33:41.079
<v Speaker 3>original page you're on or pushes a new screen onto

616
00:33:41.079 --> 00:33:44.279
<v Speaker 3>the stack, and all of that is handled out with

617
00:33:44.319 --> 00:33:47.480
<v Speaker 3>the framework. You don't have to do anything custom except

618
00:33:47.519 --> 00:33:49.759
<v Speaker 3>one line of configuration to say that these screen should

619
00:33:49.759 --> 00:33:52.799
<v Speaker 3>be presented as modals. But the best part about all

620
00:33:52.839 --> 00:33:54.519
<v Speaker 3>of that is like all of the caching of the

621
00:33:54.559 --> 00:33:57.240
<v Speaker 3>previous screens, because you made a post or a non

622
00:33:57.279 --> 00:34:00.359
<v Speaker 3>get request, all that caching is destroyed. So when you

623
00:34:00.359 --> 00:34:04.359
<v Speaker 3>go back, that content will be fresh. If you go forward,

624
00:34:04.400 --> 00:34:09.000
<v Speaker 3>that content will be new. You have all this default

625
00:34:09.159 --> 00:34:13.280
<v Speaker 3>sane handling around form submissions that didn't exist before. That

626
00:34:13.480 --> 00:34:17.039
<v Speaker 3>really makes it like most folks won't even know what

627
00:34:17.039 --> 00:34:18.760
<v Speaker 3>I'm talking about because you never have to deal with it.

628
00:34:19.239 --> 00:34:20.679
<v Speaker 3>And that's and that's like the way we want it,

629
00:34:20.719 --> 00:34:20.880
<v Speaker 3>you know.

630
00:34:22.280 --> 00:34:22.480
<v Speaker 1>Yep.

631
00:34:24.039 --> 00:34:27.679
<v Speaker 2>Do you want to talk briefly about the I don't

632
00:34:27.679 --> 00:34:29.079
<v Speaker 2>know if these are still a thing that there are

633
00:34:29.119 --> 00:34:35.119
<v Speaker 2>three pods which are drawn in rails specific of a

634
00:34:35.159 --> 00:34:39.559
<v Speaker 2>hot wire native received historical location, Resume historical location, and

635
00:34:40.119 --> 00:34:42.719
<v Speaker 2>refresh historical location. I don't know if those are still

636
00:34:42.719 --> 00:34:45.480
<v Speaker 2>a thing and scenes relevant. We could probably chat about

637
00:34:45.519 --> 00:34:46.119
<v Speaker 2>that as well.

638
00:34:46.599 --> 00:34:49.519
<v Speaker 3>Yeah, for sure. So those are the historical location routes

639
00:34:50.159 --> 00:34:53.280
<v Speaker 3>and the turbo rails GEM includes those by default. It's

640
00:34:53.280 --> 00:34:57.400
<v Speaker 3>also what exposes the hot wire native question mark helper

641
00:34:57.599 --> 00:34:59.719
<v Speaker 3>to essentially say, is this request coming from a hot

642
00:34:59.719 --> 00:35:04.920
<v Speaker 3>wire app to do conditional logic. Those three routes were

643
00:35:05.000 --> 00:35:07.440
<v Speaker 3>something that I didn't know about for a number of years.

644
00:35:07.719 --> 00:35:09.719
<v Speaker 3>They've kind of flown under the radar. They kind of

645
00:35:09.760 --> 00:35:12.639
<v Speaker 3>were shoved in turbo rails because base Camp needed them,

646
00:35:12.679 --> 00:35:16.679
<v Speaker 3>and they were never publicly exposed or documented. You found

647
00:35:16.719 --> 00:35:19.840
<v Speaker 3>those in your book, and when I was reading your book,

648
00:35:19.880 --> 00:35:22.840
<v Speaker 3>the Codex book, I was like, Wow, these are really powerful,

649
00:35:23.920 --> 00:35:27.679
<v Speaker 3>but didn't really understand how to use them because you

650
00:35:27.760 --> 00:35:30.440
<v Speaker 3>had to set up a lot of default handling around them.

651
00:35:31.079 --> 00:35:33.840
<v Speaker 3>And there's an open pr right now. Hopefully by the

652
00:35:33.880 --> 00:35:36.280
<v Speaker 3>time this podcast is released, it's merged in and the

653
00:35:36.360 --> 00:35:39.599
<v Speaker 3>new version is released where this handling will be automatically

654
00:35:39.679 --> 00:35:43.800
<v Speaker 3>included in the native wrappers by default. And what that

655
00:35:43.880 --> 00:35:46.639
<v Speaker 3>means is that at any point you can redirect to

656
00:35:46.679 --> 00:35:50.480
<v Speaker 3>one of these three special routes and the hot Wire

657
00:35:50.519 --> 00:35:55.639
<v Speaker 3>Native Apple Tape custom actions receide, refresh, resume, So recede

658
00:35:55.719 --> 00:35:58.440
<v Speaker 3>will pop the top screen off the stack, kind of

659
00:35:58.519 --> 00:36:02.039
<v Speaker 3>navigate backwards. If there's a modal presented, it will dismiss

660
00:36:02.079 --> 00:36:04.800
<v Speaker 3>the modal. Refresh will do the same thing, but then

661
00:36:04.840 --> 00:36:08.280
<v Speaker 3>refresh the previous page and then resume. Essentially just says

662
00:36:08.320 --> 00:36:10.400
<v Speaker 3>like don't do anything. I still haven't found to use

663
00:36:10.440 --> 00:36:13.360
<v Speaker 3>case for that one, so if you're listening and no

664
00:36:13.519 --> 00:36:15.760
<v Speaker 3>of one, I'd love to hear it. But these are

665
00:36:15.800 --> 00:36:18.480
<v Speaker 3>really really helpful when you're doing form submissions because like

666
00:36:18.920 --> 00:36:20.880
<v Speaker 3>most of the time, when you submit a form, you're

667
00:36:20.920 --> 00:36:24.239
<v Speaker 3>like on the index page, you show the new page,

668
00:36:24.320 --> 00:36:26.039
<v Speaker 3>and then you go back to the index page. You

669
00:36:26.039 --> 00:36:28.639
<v Speaker 3>want that index page to refresh to show the new

670
00:36:29.719 --> 00:36:32.280
<v Speaker 3>entry or like the flash message or whatever, and you

671
00:36:32.280 --> 00:36:36.679
<v Speaker 3>can use this refresh historical location to dismiss the screen

672
00:36:36.679 --> 00:36:40.039
<v Speaker 3>and then refresh the one underneath, and your mobile apps

673
00:36:40.119 --> 00:36:43.039
<v Speaker 3>behave as if it was a rails app, just like perfectly.

674
00:36:44.800 --> 00:36:49.440
<v Speaker 3>There's also some helpers built in that let you do

675
00:36:49.559 --> 00:36:52.000
<v Speaker 3>these routes only for hot Wire native apps, but then

676
00:36:52.039 --> 00:36:54.639
<v Speaker 3>do a normal redirect for reil for your web apps,

677
00:36:54.679 --> 00:36:56.639
<v Speaker 3>so you actually don't even have to have any conditional logic.

678
00:36:57.000 --> 00:36:59.119
<v Speaker 3>You can just use these helpers and pass in a

679
00:36:59.159 --> 00:37:02.119
<v Speaker 3>new route, which make it even easier on your rail

680
00:37:02.119 --> 00:37:05.400
<v Speaker 3>server because there's less changes to manage. You're essentially changing

681
00:37:05.400 --> 00:37:08.079
<v Speaker 3>that one line of code instead of you know, anfl statement.

682
00:37:11.119 --> 00:37:15.599
<v Speaker 2>Yeah. I found that the integration with the redirect helps

683
00:37:15.719 --> 00:37:18.280
<v Speaker 2>really really isful because you could just do something like

684
00:37:18.360 --> 00:37:19.599
<v Speaker 2>receid or redirect to.

685
00:37:21.719 --> 00:37:23.519
<v Speaker 3>Exactly. Yeah, exactly.

686
00:37:24.119 --> 00:37:28.679
<v Speaker 1>So I have another tangent other question that's not in

687
00:37:28.679 --> 00:37:33.239
<v Speaker 1>this vein at all. One of the things that I

688
00:37:33.320 --> 00:37:35.920
<v Speaker 1>see people talk about, you know, when they're talking about

689
00:37:35.920 --> 00:37:38.760
<v Speaker 1>the different options, right, usually it's in the jobscript world,

690
00:37:38.800 --> 00:37:41.480
<v Speaker 1>and so they're looking at like ionic capacitor kind of thing,

691
00:37:42.000 --> 00:37:46.000
<v Speaker 1>which is sort of kind of in this vein and

692
00:37:46.039 --> 00:37:48.039
<v Speaker 1>sort of kind of not in this vein. And then

693
00:37:48.079 --> 00:37:51.639
<v Speaker 1>you've got the React native, and then you've just gotten

694
00:37:51.679 --> 00:37:53.920
<v Speaker 1>like straight up native where you're writing swift or Coughlin.

695
00:37:55.440 --> 00:37:59.880
<v Speaker 1>And with the React natives and the and the others base.

696
00:38:00.320 --> 00:38:02.400
<v Speaker 1>One of the things that people get into then is

697
00:38:02.880 --> 00:38:05.599
<v Speaker 1>what if my app has to be offline? Right? What

698
00:38:05.639 --> 00:38:09.440
<v Speaker 1>if I have to deliver content or or stuff like

699
00:38:09.480 --> 00:38:13.280
<v Speaker 1>that offline, or you know, I'm working in a place

700
00:38:13.320 --> 00:38:16.519
<v Speaker 1>where there's not really good connection, but I need to

701
00:38:16.639 --> 00:38:18.840
<v Speaker 1>use the app to I don't know, upload pictures or

702
00:38:18.840 --> 00:38:20.800
<v Speaker 1>crap like that, right, so it needs to cash it

703
00:38:20.880 --> 00:38:23.360
<v Speaker 1>And then when my WIFEI turns on, then it says, oh,

704
00:38:23.400 --> 00:38:26.400
<v Speaker 1>here's all the activity I needed to do. Yeah, is

705
00:38:26.440 --> 00:38:29.480
<v Speaker 1>that just not a good fit for Turbo Native or

706
00:38:29.519 --> 00:38:31.679
<v Speaker 1>are there mechanisms that allow you to do some of

707
00:38:31.719 --> 00:38:32.199
<v Speaker 1>these things.

708
00:38:33.039 --> 00:38:36.440
<v Speaker 3>Short answer is, if you need an offline first app,

709
00:38:36.840 --> 00:38:38.239
<v Speaker 3>howt wire native is on a good choice.

710
00:38:39.000 --> 00:38:40.760
<v Speaker 1>Okay, You're you're gonna.

711
00:38:40.519 --> 00:38:42.360
<v Speaker 3>End up having to build out so much of the

712
00:38:42.400 --> 00:38:46.760
<v Speaker 3>code base natively to do offline access first that it's

713
00:38:46.760 --> 00:38:49.599
<v Speaker 3>not worth trying to kind of shove hot wire Native

714
00:38:49.599 --> 00:38:52.760
<v Speaker 3>into it. If you have an app, you know, kind

715
00:38:52.760 --> 00:38:54.320
<v Speaker 3>of moving along the spectrum here. If you need an

716
00:38:54.360 --> 00:38:57.199
<v Speaker 3>app that is mostly web connected but has like one

717
00:38:57.400 --> 00:39:01.679
<v Speaker 3>or two offline features snapping a photo and uploading it

718
00:39:01.719 --> 00:39:05.000
<v Speaker 3>when you have Wi Fi, you build a hot wire

719
00:39:05.039 --> 00:39:08.400
<v Speaker 3>native app and you just build those features natively. So

720
00:39:08.559 --> 00:39:11.519
<v Speaker 3>maybe okay, twenty percent of your app is native, the

721
00:39:11.559 --> 00:39:13.400
<v Speaker 3>rest of the eighty percent is driven by the web.

722
00:39:13.840 --> 00:39:16.039
<v Speaker 3>That's a really good use case because you still get

723
00:39:16.079 --> 00:39:18.400
<v Speaker 3>all the benefits of hot wire Native and then you

724
00:39:18.480 --> 00:39:23.840
<v Speaker 3>have this little offline experience. For a very specific use case,

725
00:39:24.480 --> 00:39:26.920
<v Speaker 3>I did exactly this for a client last year, two

726
00:39:27.000 --> 00:39:30.400
<v Speaker 3>years ago. At this point, where they were a tour

727
00:39:30.480 --> 00:39:34.800
<v Speaker 3>guide like reseller. They sold tickets to tour guides to

728
00:39:35.159 --> 00:39:40.039
<v Speaker 3>tourists going on tours, and oftentimes they were traveling, so

729
00:39:40.039 --> 00:39:42.760
<v Speaker 3>they didn't have Wi Fi right or internet at all.

730
00:39:43.320 --> 00:39:45.880
<v Speaker 3>So they would open the hot wire Native app in

731
00:39:45.920 --> 00:39:48.599
<v Speaker 3>the background, it would download all of their tickets, and

732
00:39:48.639 --> 00:39:51.000
<v Speaker 3>then when they opened the app without service, it would

733
00:39:51.039 --> 00:39:54.800
<v Speaker 3>switch into offline mode with some native code and show

734
00:39:54.920 --> 00:39:57.199
<v Speaker 3>through a native screen all of the tickets that they

735
00:39:57.199 --> 00:40:00.239
<v Speaker 3>have purchased that are stored on the device. When they

736
00:40:00.239 --> 00:40:02.079
<v Speaker 3>click one of those, it would show the QR code

737
00:40:02.079 --> 00:40:05.159
<v Speaker 3>and the map, all this stuff that they needed to

738
00:40:05.280 --> 00:40:07.559
<v Speaker 3>get to the tour and then show the tour guide, Hey,

739
00:40:07.559 --> 00:40:09.960
<v Speaker 3>this is my ticket. But all of it was offline,

740
00:40:10.679 --> 00:40:13.719
<v Speaker 3>All of it was cash to the device, and none

741
00:40:13.719 --> 00:40:15.480
<v Speaker 3>of it was dealt with with Turbo Native or hot

742
00:40:15.480 --> 00:40:18.519
<v Speaker 3>Wire Native. It was all done with manual code. And

743
00:40:18.559 --> 00:40:20.239
<v Speaker 3>then as soon as they got internet access again, it

744
00:40:20.239 --> 00:40:23.000
<v Speaker 3>would switch to online mode where there was a link

745
00:40:23.000 --> 00:40:25.719
<v Speaker 3>to the same experience on the web. That's like the

746
00:40:26.000 --> 00:40:28.880
<v Speaker 3>really I think the best best of both worlds essentially,

747
00:40:28.880 --> 00:40:33.800
<v Speaker 3>where you have this offline experience for a very important

748
00:40:33.880 --> 00:40:36.559
<v Speaker 3>specific use case and then everything else is powered by

749
00:40:36.840 --> 00:40:41.760
<v Speaker 3>hot Wire Native. For complexity, the hot wire Native implementation

750
00:40:42.360 --> 00:40:46.199
<v Speaker 3>versus the native code, hot Wire Native was about five percent.

751
00:40:46.400 --> 00:40:50.199
<v Speaker 3>Native implementation was out in ninety five, so like that's

752
00:40:50.280 --> 00:40:52.840
<v Speaker 3>the level of you know, native code you'll need just

753
00:40:52.840 --> 00:40:56.960
<v Speaker 3>to build those two screens versus what you need for

754
00:40:56.960 --> 00:40:59.440
<v Speaker 3>hot wire native to access your entire rail server.

755
00:41:00.599 --> 00:41:04.280
<v Speaker 1>Right. So I have two use cases that I'm thinking

756
00:41:04.320 --> 00:41:05.639
<v Speaker 1>of here, and one of them is kind of like

757
00:41:05.719 --> 00:41:10.960
<v Speaker 1>that where I've talked about, Hey, I'm politically whatever whatever.

758
00:41:11.159 --> 00:41:12.960
<v Speaker 1>I'm not going to get into all that, but we

759
00:41:13.320 --> 00:41:15.039
<v Speaker 1>have an issue where we have a caucus night in

760
00:41:15.159 --> 00:41:18.800
<v Speaker 1>Utah every two years, and last year we tried to

761
00:41:18.800 --> 00:41:22.519
<v Speaker 1>do a registration and that was a web app, and

762
00:41:22.559 --> 00:41:24.760
<v Speaker 1>then we wanted to be able to scan people's QR

763
00:41:24.800 --> 00:41:26.960
<v Speaker 1>codes and check them in, and the Wi Fi at

764
00:41:27.000 --> 00:41:31.079
<v Speaker 1>the schools was not ideal. And so what you're saying

765
00:41:31.199 --> 00:41:32.800
<v Speaker 1>is is we could have had the people who were

766
00:41:32.800 --> 00:41:38.199
<v Speaker 1>scanning QR codes right the QR code scanner and having

767
00:41:38.199 --> 00:41:43.039
<v Speaker 1>a list of people who have already registered, having that

768
00:41:42.719 --> 00:41:45.960
<v Speaker 1>that could be a native component, but the rest of

769
00:41:46.000 --> 00:41:49.480
<v Speaker 1>it's all turbonative, and then the same thing with people

770
00:41:49.840 --> 00:41:53.480
<v Speaker 1>showing up with a QR code. The other use case

771
00:41:53.519 --> 00:41:57.400
<v Speaker 1>that I'm looking at is a little different, and that

772
00:41:57.559 --> 00:42:02.360
<v Speaker 1>is for top end devs. And incidentally, I made it

773
00:42:02.360 --> 00:42:04.239
<v Speaker 1>into a multi tenant app, So if you wanted to

774
00:42:04.280 --> 00:42:07.360
<v Speaker 1>run your podcast network on what I'm running. You know,

775
00:42:07.400 --> 00:42:08.960
<v Speaker 1>I want to open that up to people, and I

776
00:42:09.000 --> 00:42:12.360
<v Speaker 1>want them to have an app. But one thing that

777
00:42:12.400 --> 00:42:17.760
<v Speaker 1>I've seen is if you're putting out videos or other content, yeah,

778
00:42:17.800 --> 00:42:20.800
<v Speaker 1>some people want to access that offline, right, And what

779
00:42:20.800 --> 00:42:23.239
<v Speaker 1>I've seen from other apps is you kind of hit

780
00:42:23.280 --> 00:42:26.159
<v Speaker 1>the button and then it says, okay, I'm downloading it,

781
00:42:26.199 --> 00:42:27.960
<v Speaker 1>and then once is downloaded, it just kind of has

782
00:42:28.000 --> 00:42:30.719
<v Speaker 1>a flag on it that says this is available offline.

783
00:42:30.760 --> 00:42:33.280
<v Speaker 1>And so what you're saying is is I could just

784
00:42:33.360 --> 00:42:36.760
<v Speaker 1>have it then load a native player and play the

785
00:42:36.840 --> 00:42:39.920
<v Speaker 1>video or a native player for the audio, and then

786
00:42:39.960 --> 00:42:42.760
<v Speaker 1>the rest of the app, So browsing and knowing what

787
00:42:42.840 --> 00:42:46.639
<v Speaker 1>you have access to and everything else, I can either

788
00:42:46.719 --> 00:42:51.880
<v Speaker 1>cash those pages or I can yeah things like that.

789
00:42:51.960 --> 00:42:53.800
<v Speaker 1>Just let that run as a regular app.

790
00:42:54.159 --> 00:43:01.320
<v Speaker 3>Yeah, yeah, exactly. And offline cashing is like a whole

791
00:43:01.760 --> 00:43:06.000
<v Speaker 3>another topic that is not supported right now but is

792
00:43:06.079 --> 00:43:09.400
<v Speaker 3>supported in like base camp and hay if you notice that,

793
00:43:09.920 --> 00:43:14.639
<v Speaker 3>So that is something that like maybe there's opportunity to

794
00:43:14.920 --> 00:43:18.320
<v Speaker 3>upstream that. Maybe there's opportunity for thirty seven signals to

795
00:43:19.119 --> 00:43:21.639
<v Speaker 3>get like a public Here's how you could enable caching.

796
00:43:22.639 --> 00:43:24.639
<v Speaker 3>There's been some open prs that have been closed over

797
00:43:24.679 --> 00:43:26.719
<v Speaker 3>the Reese over the last year or so that it

798
00:43:26.760 --> 00:43:30.679
<v Speaker 3>wasn't right for public use. But I wouldn't be surprised

799
00:43:30.719 --> 00:43:33.079
<v Speaker 3>if there is something like that in the future for

800
00:43:33.119 --> 00:43:36.320
<v Speaker 3>hotwire and Native, where if you've visited a page and

801
00:43:36.320 --> 00:43:39.079
<v Speaker 3>then you try to access that same page without Internet access,

802
00:43:39.199 --> 00:43:41.639
<v Speaker 3>like you get a cased version right.

803
00:43:42.000 --> 00:43:47.880
<v Speaker 1>Well. The other thing that I can see is, and

804
00:43:48.000 --> 00:43:50.519
<v Speaker 1>I've seen this in another apps, and you can do

805
00:43:50.599 --> 00:43:52.679
<v Speaker 1>this with PWA's you should be able to do with

806
00:43:52.840 --> 00:43:57.000
<v Speaker 1>Turbo Native is you've got the offline storage kind of thing,

807
00:43:57.119 --> 00:43:59.760
<v Speaker 1>and so you just you just cram the state up

808
00:43:59.840 --> 00:44:04.119
<v Speaker 1>into the offline storage and then when they browse, Yeah,

809
00:44:04.199 --> 00:44:07.039
<v Speaker 1>it checks to see if you have access to the Internet,

810
00:44:07.079 --> 00:44:08.920
<v Speaker 1>and if it doesn't, then it just loads the data

811
00:44:08.960 --> 00:44:12.519
<v Speaker 1>off of what's you know, what's held in memory essentially.

812
00:44:12.599 --> 00:44:15.840
<v Speaker 3>Yeah, yeah, exactly, Yes.

813
00:44:15.760 --> 00:44:18.519
<v Speaker 2>That was actually gonna be My next question is how

814
00:44:18.519 --> 00:44:22.440
<v Speaker 2>do you feel about using like service workers for offline access.

815
00:44:22.840 --> 00:44:27.519
<v Speaker 3>Yeah, service workers are something that I have very little

816
00:44:27.519 --> 00:44:31.719
<v Speaker 3>experience with, so I can't comment on anything like firsthand,

817
00:44:32.320 --> 00:44:33.360
<v Speaker 3>but I do know.

818
00:44:33.320 --> 00:44:36.400
<v Speaker 1>That it adds it adds to service workers chs in

819
00:44:36.719 --> 00:44:39.960
<v Speaker 1>RAILS eight, So I'm assuming they're I mean, I'm giving

820
00:44:40.000 --> 00:44:41.480
<v Speaker 1>you access to that kind of exactly.

821
00:44:41.519 --> 00:44:44.760
<v Speaker 3>Yeah, so like PWA stuff without how you know, hot

822
00:44:44.800 --> 00:44:47.000
<v Speaker 3>wire Native removed is already on a great path with

823
00:44:47.320 --> 00:44:51.760
<v Speaker 3>Rails eight. The Android side has actually a better story here.

824
00:44:51.960 --> 00:44:58.000
<v Speaker 3>Service workers work better in an embedded web view. Right now,

825
00:44:58.079 --> 00:45:01.679
<v Speaker 3>there's this issue with WK WebView, which is the WebView

826
00:45:01.679 --> 00:45:06.800
<v Speaker 3>that powers the iOS apps, and PWA like features don't

827
00:45:06.840 --> 00:45:09.599
<v Speaker 3>exactly work in the way that they work on the

828
00:45:09.840 --> 00:45:13.760
<v Speaker 3>web in like Safari dot app. So to make those

829
00:45:13.880 --> 00:45:17.159
<v Speaker 3>work well, like with service workers and you know, offline

830
00:45:17.199 --> 00:45:20.079
<v Speaker 3>storage and background processing and all that stuff, like, we

831
00:45:20.199 --> 00:45:23.760
<v Speaker 3>have to do something either to hot wire native or

832
00:45:25.519 --> 00:45:27.800
<v Speaker 3>it won't be possible because of WK webew until they

833
00:45:27.920 --> 00:45:30.360
<v Speaker 3>update that. And it's usually a security thing because you're

834
00:45:30.400 --> 00:45:35.760
<v Speaker 3>just like injecting JavaScript and stuff into it. But from

835
00:45:35.760 --> 00:45:38.639
<v Speaker 3>the literature that I've read around this, like WK web

836
00:45:38.880 --> 00:45:42.639
<v Speaker 3>is actually the biggest blocker on PWA like features in

837
00:45:42.760 --> 00:45:45.199
<v Speaker 3>an embedded web app. And that's not a hot that

838
00:45:45.239 --> 00:45:48.960
<v Speaker 3>wouldn't be a hot wire native limitation. That's like an

839
00:45:49.000 --> 00:45:50.679
<v Speaker 3>embedded web browser limitation.

840
00:45:51.280 --> 00:45:54.719
<v Speaker 1>Yeah, JavaScript Jabber. We did an episode where it was

841
00:45:54.800 --> 00:46:00.559
<v Speaker 1>mostly Dan, but he he basically just ripped into Safari

842
00:46:01.360 --> 00:46:05.400
<v Speaker 1>because there are a lot of features that make web

843
00:46:05.480 --> 00:46:11.199
<v Speaker 1>enabled apps better, cleaner, easier to run that Safari just

844
00:46:11.360 --> 00:46:14.880
<v Speaker 1>doesn't implement, and where it causes issues on their end

845
00:46:15.039 --> 00:46:19.760
<v Speaker 1>on the JavaScript end is that yes, you can get

846
00:46:19.800 --> 00:46:23.880
<v Speaker 1>Chrome or Brave for your iPhone and it's basically a

847
00:46:23.960 --> 00:46:25.960
<v Speaker 1>dressed up version of Safari, and so you have the

848
00:46:26.000 --> 00:46:30.079
<v Speaker 1>same issues. And so yeah, this is this is not

849
00:46:30.199 --> 00:46:32.639
<v Speaker 1>an isolated issue, and there are people outside of the

850
00:46:32.679 --> 00:46:34.719
<v Speaker 1>Rails community that are working on workarounds for a lot

851
00:46:34.760 --> 00:46:35.320
<v Speaker 1>of stuff.

852
00:46:36.639 --> 00:46:41.719
<v Speaker 3>Yeah, not specific to how our native just Safari, even

853
00:46:41.760 --> 00:46:43.800
<v Speaker 3>though it's my browser of choice, is a kind of

854
00:46:43.800 --> 00:46:44.679
<v Speaker 3>a pain in the butt.

855
00:46:45.880 --> 00:46:47.920
<v Speaker 1>Yep, you can say, Wow, you're the only person I've

856
00:46:47.960 --> 00:46:48.719
<v Speaker 1>ever heard say that.

857
00:46:53.000 --> 00:46:54.840
<v Speaker 2>I kind of want to go back to something we

858
00:46:54.960 --> 00:46:57.320
<v Speaker 2>kind of we touched on at the start of the talk,

859
00:46:57.519 --> 00:47:00.480
<v Speaker 2>and that like more about the process of a writer book.

860
00:47:00.519 --> 00:47:04.159
<v Speaker 2>I know, if I remember correctly from your social media,

861
00:47:04.239 --> 00:47:07.079
<v Speaker 2>you weren't sure whether you wanted to self publish or

862
00:47:07.159 --> 00:47:10.039
<v Speaker 2>go with the publisher, and eventually you did go with

863
00:47:10.079 --> 00:47:13.800
<v Speaker 2>the publisher. And I have personally self published, so I

864
00:47:13.840 --> 00:47:16.840
<v Speaker 2>just wanted to compare notes, What made you go with

865
00:47:16.880 --> 00:47:19.159
<v Speaker 2>the publisher? What have you liked? What have you not liked?

866
00:47:19.760 --> 00:47:25.199
<v Speaker 3>Yeah, there's two big re I guess, one big reason

867
00:47:25.239 --> 00:47:28.760
<v Speaker 3>for going for a publisher and one big reason against

868
00:47:28.760 --> 00:47:31.840
<v Speaker 3>self publishing, which both led me towards using a publisher.

869
00:47:32.280 --> 00:47:40.119
<v Speaker 3>The big reason against self publishing is that going self published,

870
00:47:40.320 --> 00:47:45.400
<v Speaker 3>the benefit is getting one hundred percent royalties or ninety

871
00:47:45.679 --> 00:47:49.400
<v Speaker 3>x percent royalties, right, like, you make more money per sale.

872
00:47:50.639 --> 00:47:52.400
<v Speaker 3>My goal was not to make money off of this

873
00:47:52.440 --> 00:47:55.840
<v Speaker 3>book directly. My goal is to get clients and exposure

874
00:47:56.119 --> 00:47:59.360
<v Speaker 3>and you know, solidify myself as the expert in the space.

875
00:48:00.719 --> 00:48:05.440
<v Speaker 3>Having another couple of thousands of dollars, maybe tens of

876
00:48:05.480 --> 00:48:07.880
<v Speaker 3>thousands of dollars if I got really lucky by self

877
00:48:07.880 --> 00:48:13.320
<v Speaker 3>publishing was not worth it compared to what I could

878
00:48:13.360 --> 00:48:17.480
<v Speaker 3>be making off of a couple of clients. So the

879
00:48:17.519 --> 00:48:21.000
<v Speaker 3>benefits of self publishing were like, not really benefits at all.

880
00:48:21.760 --> 00:48:25.280
<v Speaker 3>The benefits of having a publisher were having an editor

881
00:48:25.320 --> 00:48:27.599
<v Speaker 3>I didn't have to hire, having someone keep me to

882
00:48:27.639 --> 00:48:30.639
<v Speaker 3>a timeline, someone making sure that the last eighty percent

883
00:48:31.239 --> 00:48:33.599
<v Speaker 3>after I finished the first eighty percent actually gets done,

884
00:48:34.079 --> 00:48:37.119
<v Speaker 3>you know, things like that, and having someone to review

885
00:48:37.159 --> 00:48:41.159
<v Speaker 3>cover art, with having a team of beta reviewers that

886
00:48:41.199 --> 00:48:43.920
<v Speaker 3>are platforms specific that can help me with stuff, having

887
00:48:43.960 --> 00:48:47.559
<v Speaker 3>a distribution network, talking to my local bookstore to make

888
00:48:47.599 --> 00:48:49.280
<v Speaker 3>sure my book is on the shelves there instead of

889
00:48:49.280 --> 00:48:50.960
<v Speaker 3>having to walk in and be like, hey, can you

890
00:48:51.760 --> 00:48:54.199
<v Speaker 3>stock this for me? Like, the list of going with

891
00:48:54.239 --> 00:48:58.719
<v Speaker 3>a publisher of any publisher, were just aligned so well

892
00:48:58.800 --> 00:49:02.400
<v Speaker 3>to my goals of the book book that self publishing

893
00:49:02.480 --> 00:49:06.159
<v Speaker 3>like didn't stand a chance once I really once I

894
00:49:07.679 --> 00:49:12.000
<v Speaker 3>finally understood that that was my goals. Those are my goals.

895
00:49:12.360 --> 00:49:15.519
<v Speaker 3>At the beginning, I didn't really get that. I was like,

896
00:49:15.559 --> 00:49:17.440
<v Speaker 3>I want to write a book and I want full

897
00:49:17.480 --> 00:49:19.199
<v Speaker 3>control over it, so I was leaning for it towards

898
00:49:19.239 --> 00:49:21.159
<v Speaker 3>self publishing. I want to make sure that the margins

899
00:49:21.159 --> 00:49:23.639
<v Speaker 3>are exactly what I want the code cop the codes

900
00:49:23.760 --> 00:49:27.239
<v Speaker 3>looks like this, the cover looks like that. But those

901
00:49:27.320 --> 00:49:30.400
<v Speaker 3>things didn't really matter because of all the extra work

902
00:49:30.400 --> 00:49:32.639
<v Speaker 3>I would have had to have done going self publishing.

903
00:49:34.320 --> 00:49:38.159
<v Speaker 2>Yeah, man, self publishing is a hard wack, just to

904
00:49:38.239 --> 00:49:41.559
<v Speaker 2>kind of give our listeners the other side of the kind.

905
00:49:41.559 --> 00:49:44.760
<v Speaker 2>Because I decided to solve publish, and I honestly went

906
00:49:44.800 --> 00:49:49.000
<v Speaker 2>through the same kind of decision process, And yeah, marketing

907
00:49:49.039 --> 00:49:51.840
<v Speaker 2>myself as a freelancer was a huge part of why

908
00:49:51.960 --> 00:49:56.360
<v Speaker 2>I wrote my book as well. But for me, the

909
00:49:56.719 --> 00:49:59.480
<v Speaker 2>kind of clinch I was creative control. I wanted one

910
00:49:59.559 --> 00:50:03.000
<v Speaker 2>hundred per and creative control top to bottom, from everything

911
00:50:03.000 --> 00:50:05.119
<v Speaker 2>to do with the cover art to the fond size,

912
00:50:05.239 --> 00:50:09.519
<v Speaker 2>to content, to silly jokes that I had in the text,

913
00:50:09.599 --> 00:50:13.000
<v Speaker 2>Like I ended the book with a kling onward. It's like,

914
00:50:13.079 --> 00:50:15.960
<v Speaker 2>just silly, silly, stupid things like that. And I didn't

915
00:50:15.960 --> 00:50:19.559
<v Speaker 2>want anybody over my shoulder telling me we can't do

916
00:50:19.599 --> 00:50:23.159
<v Speaker 2>that or we can't do that. So for me, that

917
00:50:23.440 --> 00:50:27.639
<v Speaker 2>was the clincher. And yeah, it came with a hell

918
00:50:27.639 --> 00:50:30.679
<v Speaker 2>of a lot of additional work. And another thing I

919
00:50:30.679 --> 00:50:33.320
<v Speaker 2>think what kind of pushed me toward self publishing is

920
00:50:33.400 --> 00:50:36.679
<v Speaker 2>I knew was going to be ebook only. The way

921
00:50:36.719 --> 00:50:39.360
<v Speaker 2>I've written the book. For anyone who's read it knows

922
00:50:39.400 --> 00:50:42.199
<v Speaker 2>it's full of hyper links to stuff, It has links

923
00:50:42.239 --> 00:50:43.920
<v Speaker 2>to other parts of the book, it has links out

924
00:50:43.960 --> 00:50:47.840
<v Speaker 2>to the Internet. It was never written to be a

925
00:50:47.880 --> 00:50:50.840
<v Speaker 2>print book, and I knew that from day one. So

926
00:50:50.880 --> 00:50:56.079
<v Speaker 2>what with an ebook only distribution model as like, and

927
00:50:56.159 --> 00:50:59.559
<v Speaker 2>the fact that I wanted creative control, I was like, yeah,

928
00:50:59.840 --> 00:51:02.599
<v Speaker 2>just to get on gum ruth and be done with it. Yeah,

929
00:51:02.639 --> 00:51:05.039
<v Speaker 2>but obviously it comes with a lot more hard work

930
00:51:05.039 --> 00:51:08.960
<v Speaker 2>in terms of marketing and self editing and stuff like that.

931
00:51:09.159 --> 00:51:12.119
<v Speaker 2>So yeah, I just wanted to give the listeners a

932
00:51:12.119 --> 00:51:14.519
<v Speaker 2>bit of contrast because there's no right onset to this,

933
00:51:14.719 --> 00:51:17.480
<v Speaker 2>and Joe and I had different goals and I think

934
00:51:17.519 --> 00:51:21.599
<v Speaker 2>we both found the right both for us. And yeah,

935
00:51:21.639 --> 00:51:23.679
<v Speaker 2>if you're thinking of writing a book, doing just take

936
00:51:23.719 --> 00:51:24.760
<v Speaker 2>someone else's answer.

937
00:51:26.159 --> 00:51:28.000
<v Speaker 3>Yeah, I think that if your goal is to just

938
00:51:28.159 --> 00:51:31.840
<v Speaker 3>like get something out as quickly as possible, also, like

939
00:51:31.920 --> 00:51:34.320
<v Speaker 3>you have to self publish. It's going to take me

940
00:51:35.440 --> 00:51:38.400
<v Speaker 3>almost to the month two years from the time I

941
00:51:38.440 --> 00:51:40.320
<v Speaker 3>started writing this to the time it will be a

942
00:51:40.320 --> 00:51:43.360
<v Speaker 3>physical you know, I can hold it in my hands

943
00:51:43.679 --> 00:51:44.800
<v Speaker 3>done with the printing press.

944
00:51:44.840 --> 00:51:44.920
<v Speaker 1>Like.

945
00:51:44.960 --> 00:51:48.360
<v Speaker 3>That's a really long time. And I mean it actually

946
00:51:48.360 --> 00:51:51.000
<v Speaker 3>worked out for me because during those two years, Tribonnative

947
00:51:51.039 --> 00:51:53.639
<v Speaker 3>became hot Wire Native. Like I would have self published

948
00:51:53.639 --> 00:51:55.199
<v Speaker 3>a book for Turbo Native and then had to like

949
00:51:55.400 --> 00:51:59.480
<v Speaker 3>reado the book entirely for hot Wire Native. So I'm

950
00:51:59.480 --> 00:52:01.440
<v Speaker 3>glad that it's took longer because I was able to

951
00:52:01.440 --> 00:52:03.840
<v Speaker 3>do that during the editing process, not during the like

952
00:52:04.199 --> 00:52:08.599
<v Speaker 3>post published process, but if you want to get something out,

953
00:52:08.639 --> 00:52:10.880
<v Speaker 3>like you have something to say that you need to

954
00:52:10.880 --> 00:52:12.480
<v Speaker 3>get out in the next couple of months, like you

955
00:52:12.519 --> 00:52:14.519
<v Speaker 3>can't go with a publisher. Most likely it's going to

956
00:52:14.559 --> 00:52:16.320
<v Speaker 3>be way too long. It's going to take that long

957
00:52:16.360 --> 00:52:17.159
<v Speaker 3>to find a publisher.

958
00:52:18.960 --> 00:52:20.920
<v Speaker 1>Yeah, one a couple of other things I wanted to

959
00:52:20.920 --> 00:52:24.760
<v Speaker 1>just push in here. So the book I wrote it

960
00:52:24.840 --> 00:52:27.800
<v Speaker 1>was on building your career and finding your next job.

961
00:52:28.639 --> 00:52:32.119
<v Speaker 1>And to be honest, I mean at this point I

962
00:52:32.119 --> 00:52:33.960
<v Speaker 1>would go back and I would put add a whole

963
00:52:34.000 --> 00:52:38.039
<v Speaker 1>bunch of stuff about using AI to understand your resume

964
00:52:38.239 --> 00:52:41.679
<v Speaker 1>and line it up with the job postings and things

965
00:52:41.719 --> 00:52:43.719
<v Speaker 1>like that. You know. There was a bunch of other

966
00:52:43.760 --> 00:52:46.320
<v Speaker 1>stuff in there about building your personal brand. That is

967
00:52:46.320 --> 00:52:52.639
<v Speaker 1>a separate book. But yeah, I didn't really understand what

968
00:52:52.719 --> 00:52:54.840
<v Speaker 1>the goal was. I thought for sure that I would

969
00:52:54.880 --> 00:52:56.880
<v Speaker 1>just put the book out there and a whole bunch

970
00:52:56.880 --> 00:53:00.840
<v Speaker 1>of people would buy it. Yeah, And so I experience,

971
00:53:01.079 --> 00:53:04.000
<v Speaker 1>having done that now is, Yeah, if I were going

972
00:53:04.079 --> 00:53:08.039
<v Speaker 1>to write a full on book or manual or you know,

973
00:53:08.159 --> 00:53:10.320
<v Speaker 1>something that that you know, you kind of think of

974
00:53:10.400 --> 00:53:14.599
<v Speaker 1>as that technical book you put on your shelf, I

975
00:53:14.639 --> 00:53:17.480
<v Speaker 1>would one hundred percent go talk to the folks over

976
00:53:17.519 --> 00:53:21.159
<v Speaker 1>at Pragmatic Bookshelf. I mean, I might shop at to Manning.

977
00:53:21.840 --> 00:53:27.519
<v Speaker 1>Manning's royalties are higher than like Pearson and them. I've

978
00:53:27.519 --> 00:53:29.360
<v Speaker 1>got a pretty good relationship with them as well, But

979
00:53:29.639 --> 00:53:31.159
<v Speaker 1>you know, I'd probably go with one of the two

980
00:53:31.920 --> 00:53:35.559
<v Speaker 1>and use a lot of their distribution network. One thing

981
00:53:35.559 --> 00:53:37.360
<v Speaker 1>you have to understand, though, is no matter who you

982
00:53:37.440 --> 00:53:40.280
<v Speaker 1>go with, most of the marketing and sale of your

983
00:53:40.280 --> 00:53:42.440
<v Speaker 1>book is going to be down to you and what

984
00:53:42.480 --> 00:53:44.039
<v Speaker 1>you can do to go get the word out right.

985
00:53:44.079 --> 00:53:45.960
<v Speaker 1>So you're going to be doing what Joe's doing, coming

986
00:53:46.000 --> 00:53:48.719
<v Speaker 1>on a show like this and you know, and maybe

987
00:53:48.840 --> 00:53:52.360
<v Speaker 1>you know, publishing stuff to YouTube or a blog or

988
00:53:52.400 --> 00:53:54.760
<v Speaker 1>places like that and making sure that people can find it.

989
00:53:55.920 --> 00:54:01.119
<v Speaker 1>And you have to do that with self published too.

990
00:54:01.840 --> 00:54:06.199
<v Speaker 1>The difference is is that the book publisher will you know,

991
00:54:06.239 --> 00:54:09.360
<v Speaker 1>they'll provide you an editor and a lot of those

992
00:54:09.400 --> 00:54:12.440
<v Speaker 1>other things. And in some cases, like Manning has reached

993
00:54:12.440 --> 00:54:15.119
<v Speaker 1>out to me many many times for their authors, and

994
00:54:15.159 --> 00:54:18.760
<v Speaker 1>so you know, they may help you figure out some

995
00:54:18.840 --> 00:54:22.719
<v Speaker 1>of that marketing. One thing that I'm gonna kind of

996
00:54:23.920 --> 00:54:27.119
<v Speaker 1>back up on a little bit is I've talked to

997
00:54:27.159 --> 00:54:30.880
<v Speaker 1>a number of friends who have released like shorter versions

998
00:54:30.880 --> 00:54:33.480
<v Speaker 1>of things, right, so you know, it's like a thirty

999
00:54:33.519 --> 00:54:36.880
<v Speaker 1>page book on Hey, here's just how you get the

1000
00:54:38.320 --> 00:54:42.000
<v Speaker 1>thing to run, right, you know, so instead of building

1001
00:54:42.039 --> 00:54:44.519
<v Speaker 1>a car, you know, or building the frame of the

1002
00:54:44.559 --> 00:54:47.920
<v Speaker 1>car with turbine or with hot wire native, right, it's

1003
00:54:48.000 --> 00:54:51.320
<v Speaker 1>just basically a bare bones here's how you get turbo

1004
00:54:51.440 --> 00:54:54.639
<v Speaker 1>running in your app in you know, in thirty pages.

1005
00:54:55.519 --> 00:55:01.760
<v Speaker 1>And typically the publishers aren't so interested in those. Usually

1006
00:55:01.800 --> 00:55:03.960
<v Speaker 1>if you're trying to build your reputation on something like

1007
00:55:04.000 --> 00:55:06.239
<v Speaker 1>that too, like you can crank one of those every

1008
00:55:06.320 --> 00:55:09.679
<v Speaker 1>month and you can build some reputation for putting stuff out.

1009
00:55:10.159 --> 00:55:12.880
<v Speaker 1>And so again, there are a lot of approaches you

1010
00:55:12.880 --> 00:55:15.440
<v Speaker 1>can take. But yeah, if it and I think even

1011
00:55:15.480 --> 00:55:18.679
<v Speaker 1>if you're doing kind of the short content or if

1012
00:55:18.679 --> 00:55:22.239
<v Speaker 1>you're doing podcasts like this or something like that, like

1013
00:55:22.400 --> 00:55:26.519
<v Speaker 1>having that full length technical book on something that you know,

1014
00:55:26.960 --> 00:55:29.760
<v Speaker 1>like Joe saying that he can he can go find

1015
00:55:29.800 --> 00:55:34.159
<v Speaker 1>clients for and build business for, it really will pay

1016
00:55:34.159 --> 00:55:36.760
<v Speaker 1>off for you. But then you can do the other

1017
00:55:36.800 --> 00:55:39.840
<v Speaker 1>things to kind of you know, build your reputation and

1018
00:55:39.840 --> 00:55:41.960
<v Speaker 1>then go back to that and the fact that you

1019
00:55:42.000 --> 00:55:43.960
<v Speaker 1>went through a publisher that helped you make it the

1020
00:55:43.960 --> 00:55:48.800
<v Speaker 1>best thing possible is actually a good thing overall for

1021
00:55:48.840 --> 00:55:50.920
<v Speaker 1>your reputation. And so if I were to go back

1022
00:55:50.960 --> 00:55:54.199
<v Speaker 1>and write my book again, I would have gone to

1023
00:55:54.239 --> 00:55:56.639
<v Speaker 1>prag Prague and I would or you know, and I

1024
00:55:56.639 --> 00:55:58.239
<v Speaker 1>would have said, hey, look, guys, this is the book

1025
00:55:58.280 --> 00:56:00.480
<v Speaker 1>I want to write. Here's kind of an out line.

1026
00:56:00.719 --> 00:56:03.039
<v Speaker 1>They might have given me some other ideas. We don't

1027
00:56:03.039 --> 00:56:06.039
<v Speaker 1>know if we could sell it, or hey, you haven't

1028
00:56:06.039 --> 00:56:10.000
<v Speaker 1>covered this, or if you changed the direction of this

1029
00:56:10.079 --> 00:56:11.639
<v Speaker 1>a little bit. We think it's a better fit for

1030
00:56:11.679 --> 00:56:14.280
<v Speaker 1>the market, which is all healthy. And then they would

1031
00:56:14.320 --> 00:56:15.719
<v Speaker 1>have helped me get the book out and had to

1032
00:56:15.800 --> 00:56:18.480
<v Speaker 1>be the best thing possible. Yeah.

1033
00:56:18.519 --> 00:56:22.280
<v Speaker 3>I think that that last point is something that I

1034
00:56:22.320 --> 00:56:24.760
<v Speaker 3>haven't spoken about, so it might be interesting to cover here.

1035
00:56:25.639 --> 00:56:29.360
<v Speaker 3>One of the first things that I talked with Pragmatic

1036
00:56:29.559 --> 00:56:32.960
<v Speaker 3>about was the structure of my book. I went in

1037
00:56:33.960 --> 00:56:37.239
<v Speaker 3>wanting to do two books, an iOS book and an

1038
00:56:37.280 --> 00:56:40.559
<v Speaker 3>Android book. That was like my original pitch. I was like,

1039
00:56:40.599 --> 00:56:42.519
<v Speaker 3>I can knock out the iOS book in a couple

1040
00:56:42.519 --> 00:56:44.800
<v Speaker 3>of weeks. In terms of writing the Android book's going

1041
00:56:44.840 --> 00:56:47.239
<v Speaker 3>to take me a couple of months, and if someone

1042
00:56:47.320 --> 00:56:49.360
<v Speaker 3>wants both, they'll buy both both, and they'll be like

1043
00:56:49.360 --> 00:56:53.400
<v Speaker 3>some duplicated content on the rail server. And I could

1044
00:56:53.440 --> 00:56:56.079
<v Speaker 3>have easily filled tw hundred fifty pages for each and

1045
00:56:56.239 --> 00:56:57.880
<v Speaker 3>gone much more deeper with both.

1046
00:56:57.960 --> 00:57:01.280
<v Speaker 1>And that was why I can tell you I want

1047
00:57:01.280 --> 00:57:02.079
<v Speaker 1>one book.

1048
00:57:02.039 --> 00:57:04.599
<v Speaker 3>Exactly that, and that's where we kind of it's exactly

1049
00:57:04.719 --> 00:57:07.800
<v Speaker 3>where we ended up, like questions being asked of me

1050
00:57:07.840 --> 00:57:10.440
<v Speaker 3>of like, well, what does the audience want to read?

1051
00:57:10.960 --> 00:57:14.159
<v Speaker 3>Is the audience doing is ninety percent of the audience

1052
00:57:14.159 --> 00:57:17.159
<v Speaker 3>doing iOS and never touching Android? Okay, well, then Android

1053
00:57:17.199 --> 00:57:21.159
<v Speaker 3>goes second. Like all of these little decisions that I

1054
00:57:21.159 --> 00:57:23.800
<v Speaker 3>would have either hemmed and hawed over for months and

1055
00:57:23.880 --> 00:57:25.719
<v Speaker 3>just never made a decision on or made a just

1056
00:57:25.960 --> 00:57:29.159
<v Speaker 3>less educated decision. What I wanted to do as a

1057
00:57:29.199 --> 00:57:33.280
<v Speaker 3>second pass was like section one was all iOS and

1058
00:57:33.280 --> 00:57:35.440
<v Speaker 3>then section two was all Android, and you would build

1059
00:57:35.440 --> 00:57:37.599
<v Speaker 3>the full iOS app and then build the full Android app.

1060
00:57:37.599 --> 00:57:39.440
<v Speaker 3>And that kind of makes sense to how you're building it.

1061
00:57:39.800 --> 00:57:42.519
<v Speaker 3>You know, you're less likely to build both at the

1062
00:57:42.559 --> 00:57:45.719
<v Speaker 3>same time, but when you're learning, it's actually better to

1063
00:57:45.840 --> 00:57:47.719
<v Speaker 3>learn and build both at the same time because you

1064
00:57:47.719 --> 00:57:50.280
<v Speaker 3>can learn and compare and contrast the two frameworks and

1065
00:57:50.320 --> 00:57:54.119
<v Speaker 3>the two platforms, so every chapter is either is like

1066
00:57:54.400 --> 00:57:59.000
<v Speaker 3>Rails than iOS than Android, and that little change in

1067
00:57:59.039 --> 00:58:01.679
<v Speaker 3>the structure of the book book from my editor has

1068
00:58:01.800 --> 00:58:04.920
<v Speaker 3>made the book so much easier to read and understand

1069
00:58:05.679 --> 00:58:08.400
<v Speaker 3>and things like that. I just can't imagine having to

1070
00:58:08.440 --> 00:58:10.800
<v Speaker 3>have full control over and doing it on my own.

1071
00:58:12.199 --> 00:58:14.039
<v Speaker 3>And there's probably countless other ones that I don't even

1072
00:58:14.079 --> 00:58:17.159
<v Speaker 3>remember because we've made you know, we talk every couple

1073
00:58:17.199 --> 00:58:19.800
<v Speaker 3>of weeks on like how the direction and making sure

1074
00:58:19.800 --> 00:58:22.960
<v Speaker 3>that we're aligned with the goals of the book and

1075
00:58:23.000 --> 00:58:24.840
<v Speaker 3>the audience of the book and stuff like that that

1076
00:58:25.639 --> 00:58:28.000
<v Speaker 3>I would have gotten way distracted by now and probably

1077
00:58:28.079 --> 00:58:30.199
<v Speaker 3>just pushed whatever I had and called it done and

1078
00:58:30.239 --> 00:58:31.119
<v Speaker 3>not been happy with it.

1079
00:58:33.280 --> 00:58:36.840
<v Speaker 2>Yeah. Could you talk about a little bit about the

1080
00:58:36.960 --> 00:58:39.880
<v Speaker 2>process of finding a publisher what it entailed.

1081
00:58:41.280 --> 00:58:41.719
<v Speaker 1>Yeah.

1082
00:58:42.360 --> 00:58:45.840
<v Speaker 3>I A lot of my looking for a publisher phase

1083
00:58:46.199 --> 00:58:48.239
<v Speaker 3>was actually do I want to self publish or go

1084
00:58:48.280 --> 00:58:52.320
<v Speaker 3>with a publisher, So most of my research was spent

1085
00:58:52.559 --> 00:58:55.239
<v Speaker 3>talking to folks who had self published or folks who

1086
00:58:55.280 --> 00:58:58.679
<v Speaker 3>had gone with a publisher, you know, in casual calls.

1087
00:58:58.719 --> 00:59:01.119
<v Speaker 3>I think I spoke to like ten people either through

1088
00:59:01.320 --> 00:59:04.119
<v Speaker 3>a zoom call or like a Twitter conversation or email.

1089
00:59:05.119 --> 00:59:09.320
<v Speaker 3>And once I had spoken to everyone that had self

1090
00:59:09.320 --> 00:59:12.079
<v Speaker 3>published or gone through a publisher, I was like, Okay,

1091
00:59:12.079 --> 00:59:14.920
<v Speaker 3>I'm not deciding between self publishing and publisher. I'm deciding

1092
00:59:14.960 --> 00:59:18.239
<v Speaker 3>between self publishing and PRAG, like that was the option.

1093
00:59:18.360 --> 00:59:22.079
<v Speaker 3>It was so clear that PRAG was the best fit

1094
00:59:22.280 --> 00:59:25.639
<v Speaker 3>for me from talking to folks about my writing style,

1095
00:59:26.079 --> 00:59:29.320
<v Speaker 3>about what they valued, about how they manage code, about

1096
00:59:29.559 --> 00:59:32.400
<v Speaker 3>how they do promotions, royalties was great. It was kind

1097
00:59:32.400 --> 00:59:35.800
<v Speaker 3>of just icing on the cake. How they gave me

1098
00:59:35.800 --> 00:59:37.920
<v Speaker 3>an editor and beta reviewers and all this stuff. Like

1099
00:59:38.000 --> 00:59:42.719
<v Speaker 3>it was never is it PRAG or O'Reilly or whatever,

1100
00:59:42.760 --> 00:59:45.480
<v Speaker 3>it was like, self publish or go with PRAG. So

1101
00:59:45.559 --> 00:59:49.000
<v Speaker 3>once I got to that, the decision was actually pretty easy.

1102
00:59:49.000 --> 00:59:58.599
<v Speaker 3>Once I decided my goal of getting more clients, okay PRAG, Yeah.

1103
00:59:57.559 --> 00:59:59.199
<v Speaker 2>Is that just like to send them an email?

1104
00:59:59.280 --> 01:00:04.320
<v Speaker 3>And yeah, I ended up sending an email to PRAG.

1105
01:00:04.760 --> 01:00:11.039
<v Speaker 3>I submitted an official pitch to O'Reilly, and I submitted

1106
01:00:11.079 --> 01:00:15.400
<v Speaker 3>an official pitch to one more publisher that I can't

1107
01:00:15.519 --> 01:00:18.519
<v Speaker 3>I can't recall the name of. The third one that

1108
01:00:18.559 --> 01:00:20.199
<v Speaker 3>I can't remember the name of never got back to

1109
01:00:20.239 --> 01:00:24.719
<v Speaker 3>me at all, and O'Reilly said that they aren't looking

1110
01:00:24.840 --> 01:00:28.960
<v Speaker 3>for such a like cross platform book right now. It

1111
01:00:29.000 --> 01:00:31.360
<v Speaker 3>didn't fit in with their strategy. They're like, if you

1112
01:00:31.400 --> 01:00:34.760
<v Speaker 3>want to do just an iOS app or just a

1113
01:00:34.840 --> 01:00:37.559
<v Speaker 3>rails app, like, we would definitely like to talk more,

1114
01:00:38.079 --> 01:00:40.960
<v Speaker 3>but this weird cross platform thing is not what we're

1115
01:00:41.000 --> 01:00:44.039
<v Speaker 3>looking for right now. And Prag got back to me

1116
01:00:44.079 --> 01:00:46.199
<v Speaker 3>within like twenty four hours and was like, let's go.

1117
01:00:47.760 --> 01:00:50.079
<v Speaker 3>So that was pretty awesome. I was talking. I was

1118
01:00:50.119 --> 01:00:52.320
<v Speaker 3>talking to Dave within like a week, the you know,

1119
01:00:52.400 --> 01:00:57.159
<v Speaker 3>person who owns and runs Prag, and was just like, yes,

1120
01:00:57.239 --> 01:00:59.280
<v Speaker 3>this is this is great. We're really excited about this.

1121
01:00:59.400 --> 01:01:03.360
<v Speaker 1>Let's let's gets to talk to He is so funny.

1122
01:01:03.079 --> 01:01:06.119
<v Speaker 3>He's awesome. I just did an interview with him like

1123
01:01:06.159 --> 01:01:08.440
<v Speaker 3>two weeks ago and it just got published for this week.

1124
01:01:08.800 --> 01:01:11.039
<v Speaker 3>We chatted for like an hour and we cut it

1125
01:01:11.079 --> 01:01:13.480
<v Speaker 3>down to twenty minutes of just like what the books about,

1126
01:01:13.519 --> 01:01:15.760
<v Speaker 3>what hot Wire Native is, and he is such a

1127
01:01:15.800 --> 01:01:18.960
<v Speaker 3>delight to talk to and seeing those little clips of

1128
01:01:19.039 --> 01:01:21.719
<v Speaker 3>him asking like you know, these these naive questions is

1129
01:01:21.760 --> 01:01:22.360
<v Speaker 3>so much fun.

1130
01:01:24.199 --> 01:01:27.760
<v Speaker 1>Yeah. I think the other thing you have to because

1131
01:01:27.800 --> 01:01:30.320
<v Speaker 1>I think some people are probably going to be thinking oh, well,

1132
01:01:30.480 --> 01:01:34.440
<v Speaker 1>you know O'Reilly or you know Pearson owns O'Reilly. But

1133
01:01:35.239 --> 01:01:37.159
<v Speaker 1>you know, they just don't get it that that may

1134
01:01:37.199 --> 01:01:39.440
<v Speaker 1>not be the case. They know the audience they're trying

1135
01:01:39.480 --> 01:01:42.719
<v Speaker 1>to sell to. Yeah, and so does prag right, and

1136
01:01:42.800 --> 01:01:47.639
<v Speaker 1>so Pragmatic Bookshelf. I mean, they know they have pick acts,

1137
01:01:47.719 --> 01:01:52.960
<v Speaker 1>They've got you know, agile web development with rails or

1138
01:01:53.000 --> 01:01:55.400
<v Speaker 1>whatever it's called. You know, they have a handful of

1139
01:01:55.440 --> 01:01:58.800
<v Speaker 1>books in that space, and so they know that they

1140
01:01:58.800 --> 01:02:00.719
<v Speaker 1>are already in front of people who will buy this

1141
01:02:00.760 --> 01:02:03.679
<v Speaker 1>book exactly. And yeah, and so you know, I don't

1142
01:02:03.719 --> 01:02:06.880
<v Speaker 1>want anyone to be thinking, ho, well, you know, they

1143
01:02:07.000 --> 01:02:10.239
<v Speaker 1>blew it over there. They're selling to a different audience.

1144
01:02:12.119 --> 01:02:14.079
<v Speaker 1>It's the same with Manning or Packed or any of

1145
01:02:14.119 --> 01:02:14.920
<v Speaker 1>the other ones that you went to.

1146
01:02:15.000 --> 01:02:16.800
<v Speaker 3>Yeah, Packed, that was the one I reached out to.

1147
01:02:16.960 --> 01:02:17.239
<v Speaker 1>Packed.

1148
01:02:19.000 --> 01:02:21.679
<v Speaker 3>So y, yeah, I mean, my book's been came out

1149
01:02:22.199 --> 01:02:25.440
<v Speaker 3>like officially about a month beginning of January, like January

1150
01:02:25.480 --> 01:02:28.840
<v Speaker 3>sixth or ninth or something, and it's been in the

1151
01:02:28.880 --> 01:02:31.480
<v Speaker 3>best seller list and since then it hasn't dropped out,

1152
01:02:31.519 --> 01:02:36.199
<v Speaker 3>So like there's clearly something aligned with their audience and

1153
01:02:36.559 --> 01:02:38.679
<v Speaker 3>my book content, which is awesome to see.

1154
01:02:40.360 --> 01:02:43.760
<v Speaker 1>Yeah, and they do a good job too. Like if

1155
01:02:43.760 --> 01:02:46.079
<v Speaker 1>it's coming out, you know, because you said you haven't

1156
01:02:46.119 --> 01:02:49.039
<v Speaker 1>quite finished it, Yeah, you buy it now. You get

1157
01:02:49.079 --> 01:02:52.519
<v Speaker 1>a good deal on it for one and then you

1158
01:02:52.639 --> 01:02:56.599
<v Speaker 1>get the finished product anyway, And so if you want

1159
01:02:56.639 --> 01:03:00.280
<v Speaker 1>to get started and get you know, ninety five point

1160
01:03:01.079 --> 01:03:03.800
<v Speaker 1>nine percent of the way down the road and then

1161
01:03:03.840 --> 01:03:08.519
<v Speaker 1>you get that last piece that Joe's working on, yeah,

1162
01:03:08.840 --> 01:03:09.880
<v Speaker 1>it works out pretty well.

1163
01:03:11.239 --> 01:03:14.320
<v Speaker 3>Yeah, it works out pretty well. And like you just

1164
01:03:14.320 --> 01:03:16.000
<v Speaker 3>got it early, you're going to get the rest of

1165
01:03:16.000 --> 01:03:19.079
<v Speaker 3>the content eventually. You just got it early. And for

1166
01:03:19.159 --> 01:03:22.719
<v Speaker 3>cheaper You do have to deal with a terrible layout though,

1167
01:03:22.760 --> 01:03:25.960
<v Speaker 3>because coad snippets are are are smushed across multiple pages

1168
01:03:25.960 --> 01:03:28.119
<v Speaker 3>because the layout editor hasn't gotten in there. So if

1169
01:03:28.119 --> 01:03:29.920
<v Speaker 3>you can deal with that, it's a pretty good trade off.

1170
01:03:31.000 --> 01:03:33.360
<v Speaker 1>Yeah. So a couple of things that I'm just going

1171
01:03:33.440 --> 01:03:37.000
<v Speaker 1>to throw out there as well. So with Ruby Geniuses,

1172
01:03:37.159 --> 01:03:41.079
<v Speaker 1>we're doing a book club every month. For March, we're

1173
01:03:41.079 --> 01:03:44.840
<v Speaker 1>doing a book on prompt engineering because a lot of

1174
01:03:44.840 --> 01:03:48.679
<v Speaker 1>people want to learn AI. But I've already decided that.

1175
01:03:48.800 --> 01:03:53.519
<v Speaker 1>In April and May we're doing the hot Wire Native

1176
01:03:53.559 --> 01:03:56.960
<v Speaker 1>book by Joe, and then We're also going to do

1177
01:03:57.079 --> 01:04:00.480
<v Speaker 1>the Rails and hot Wire Codex because a lot of

1178
01:04:00.480 --> 01:04:03.760
<v Speaker 1>people are kind of looking for that front to back,

1179
01:04:03.960 --> 01:04:07.159
<v Speaker 1>soup to nuts, how do I build this thing the

1180
01:04:07.239 --> 01:04:10.639
<v Speaker 1>best way possible? And what I find with a lot

1181
01:04:10.679 --> 01:04:12.559
<v Speaker 1>of these books is it's not that I couldn't go

1182
01:04:12.599 --> 01:04:15.280
<v Speaker 1>figure it out on my own, right, I'm a smart guy.

1183
01:04:15.360 --> 01:04:17.199
<v Speaker 1>I go figure it out on my own. But the

1184
01:04:17.239 --> 01:04:19.320
<v Speaker 1>difference is is that you've gone through and thought through

1185
01:04:19.440 --> 01:04:22.760
<v Speaker 1>enough of the use cases that I'm gonna run into

1186
01:04:22.760 --> 01:04:25.880
<v Speaker 1>an issue and go, oh, what do I do here?

1187
01:04:26.440 --> 01:04:28.039
<v Speaker 1>And then it turns out it's in your book.

1188
01:04:28.400 --> 01:04:28.760
<v Speaker 3>Yeah.

1189
01:04:28.800 --> 01:04:31.800
<v Speaker 1>That's why I like the books is because you you

1190
01:04:31.880 --> 01:04:34.440
<v Speaker 1>steer me off of the tracks so that I'm not

1191
01:04:34.760 --> 01:04:37.559
<v Speaker 1>heading into an oncoming train that I didn't even know

1192
01:04:38.199 --> 01:04:39.480
<v Speaker 1>was out there. Yeah.

1193
01:04:39.719 --> 01:04:41.880
<v Speaker 3>A lot of my book, I think at least once

1194
01:04:41.920 --> 01:04:46.440
<v Speaker 3>a chapter, you'll do something and you'll get a you know,

1195
01:04:46.519 --> 01:04:51.400
<v Speaker 3>air quotes, unexpected result. That's how I've seen developers try

1196
01:04:51.400 --> 01:04:54.280
<v Speaker 3>to build hot Wire native apps, and you know, during

1197
01:04:54.320 --> 01:04:56.360
<v Speaker 3>the tab when you build tabs, the first time you

1198
01:04:56.400 --> 01:04:58.920
<v Speaker 3>launch the app, the app is just a completely white

1199
01:04:58.920 --> 01:05:01.599
<v Speaker 3>screen and I have a screenshot of that, you know,

1200
01:05:01.599 --> 01:05:04.079
<v Speaker 3>and I'm like, well, what the hell just happened? And

1201
01:05:04.119 --> 01:05:06.079
<v Speaker 3>you realize that you like forgot one line of code

1202
01:05:06.079 --> 01:05:09.280
<v Speaker 3>that almost every developer misses when they build tabs, and

1203
01:05:09.320 --> 01:05:12.000
<v Speaker 3>we walk through that together, so you know that not

1204
01:05:12.039 --> 01:05:15.079
<v Speaker 3>only did you learn that one line, but you will

1205
01:05:15.119 --> 01:05:17.800
<v Speaker 3>never make that mistake again because you saw the problem

1206
01:05:17.880 --> 01:05:20.000
<v Speaker 3>of the blank screen and then you fixed it yourself.

1207
01:05:20.480 --> 01:05:22.880
<v Speaker 3>And I have one of those, at least in every

1208
01:05:22.920 --> 01:05:26.159
<v Speaker 3>single chapter that I adds a lot of content, of course,

1209
01:05:26.280 --> 01:05:28.760
<v Speaker 3>but I just really love it because it really enforces

1210
01:05:28.800 --> 01:05:31.840
<v Speaker 3>the learning, not just the copy pasting from the book

1211
01:05:32.000 --> 01:05:34.480
<v Speaker 3>of code. It's like you're learning how this works.

1212
01:05:35.719 --> 01:05:37.159
<v Speaker 1>Yeah. I used to do that when I did the

1213
01:05:37.199 --> 01:05:40.280
<v Speaker 1>Teach Me to Code screen casts. I'd leave the mistakes in,

1214
01:05:40.679 --> 01:05:45.519
<v Speaker 1>like I would cut the googling the solution out. But yeah,

1215
01:05:45.519 --> 01:05:47.840
<v Speaker 1>I'd have people ask me all the time, why'd you

1216
01:05:47.920 --> 01:05:51.559
<v Speaker 1>leave the mistake in? And I was like, well, I

1217
01:05:51.679 --> 01:05:53.960
<v Speaker 1>talked to people after they watch my videos, and I

1218
01:05:54.000 --> 01:05:56.360
<v Speaker 1>asked them if they ran into the same mistake, and

1219
01:05:56.440 --> 01:05:59.760
<v Speaker 1>like half the people they follow along as I go

1220
01:05:59.840 --> 01:06:03.280
<v Speaker 1>and they make the same mistake I do, right, and

1221
01:06:03.400 --> 01:06:05.480
<v Speaker 1>then and then they fix it when I come back

1222
01:06:05.519 --> 01:06:08.519
<v Speaker 1>with the fixah, and the reason is is because it's

1223
01:06:08.559 --> 01:06:10.840
<v Speaker 1>a common thing. It's a real easy thing to do.

1224
01:06:10.880 --> 01:06:12.559
<v Speaker 1>And so yeah, I like that. I really like that.

1225
01:06:13.199 --> 01:06:18.239
<v Speaker 2>Yes, you mentioned briefly just like the layout of it

1226
01:06:18.679 --> 01:06:22.000
<v Speaker 2>iffy and stuff right now. So another thing, another huge

1227
01:06:22.079 --> 01:06:24.800
<v Speaker 2>challenge which you'll have if you're self publishing, is literally

1228
01:06:24.920 --> 01:06:28.199
<v Speaker 2>just producing a PDF and an e pub Like it

1229
01:06:28.320 --> 01:06:31.760
<v Speaker 2>is stupid hard to just convert something you've written into

1230
01:06:31.800 --> 01:06:35.679
<v Speaker 2>a PDF and EPUB And I was surprised, it's just

1231
01:06:35.679 --> 01:06:39.119
<v Speaker 2>how difficult it was. So when you work with the publisher,

1232
01:06:39.280 --> 01:06:41.960
<v Speaker 2>is that something that do they give you some tools

1233
01:06:42.000 --> 01:06:43.559
<v Speaker 2>to make life easier with that.

1234
01:06:44.960 --> 01:06:45.199
<v Speaker 1>Yeah.

1235
01:06:45.239 --> 01:06:50.199
<v Speaker 3>PRAG has its own markup language and it's like proprietary

1236
01:06:50.280 --> 01:06:54.039
<v Speaker 3>you know, nd under nda all of this awesome stuff,

1237
01:06:54.039 --> 01:06:58.360
<v Speaker 3>and it handles just I write one file and it

1238
01:06:58.400 --> 01:07:02.159
<v Speaker 3>then can output to PDF, to moby, to epub to

1239
01:07:02.320 --> 01:07:06.119
<v Speaker 3>physical copy like it does all of these amazing things

1240
01:07:06.840 --> 01:07:10.280
<v Speaker 3>with its own markup language that I don't have to

1241
01:07:10.320 --> 01:07:13.400
<v Speaker 3>worry about like should this be a link on mobile

1242
01:07:13.519 --> 01:07:17.840
<v Speaker 3>but actually a page number on a physical book? Like

1243
01:07:17.880 --> 01:07:20.960
<v Speaker 3>it's it's all handled for you. And then I can

1244
01:07:21.079 --> 01:07:25.000
<v Speaker 3>just write like in one file and images of course,

1245
01:07:25.119 --> 01:07:28.599
<v Speaker 3>and my code write it all in one file, and

1246
01:07:28.639 --> 01:07:30.599
<v Speaker 3>then when the layout editor gets in there, they can

1247
01:07:30.599 --> 01:07:33.000
<v Speaker 3>add their own special markup that I don't even like,

1248
01:07:33.199 --> 01:07:36.360
<v Speaker 3>know or care about. That's going to make sure that

1249
01:07:36.400 --> 01:07:40.320
<v Speaker 3>we don't have or like orphans or and whatever. The

1250
01:07:40.360 --> 01:07:44.559
<v Speaker 3>other opposite of an orphan is or code snippets spanning

1251
01:07:44.599 --> 01:07:47.239
<v Speaker 3>across two pages, or images that are too small or

1252
01:07:47.239 --> 01:07:50.159
<v Speaker 3>too big like all that's just going to be handled

1253
01:07:50.199 --> 01:07:53.239
<v Speaker 3>by the by the layout editors, and I can just

1254
01:07:53.280 --> 01:07:57.519
<v Speaker 3>worry about writing really good content. And that's a huge

1255
01:07:57.559 --> 01:07:59.480
<v Speaker 3>weight off my shoulders because that's something I don't have

1256
01:07:59.639 --> 01:08:00.960
<v Speaker 3>I do have to worry about when I do, like

1257
01:08:01.000 --> 01:08:04.760
<v Speaker 3>my newsletter or my blog posts. It's like that whole

1258
01:08:05.199 --> 01:08:09.280
<v Speaker 3>last thirty percent is just spent doing producing. I can

1259
01:08:09.400 --> 01:08:12.280
<v Speaker 3>just skip all that with the publisher and just write.

1260
01:08:14.280 --> 01:08:17.720
<v Speaker 2>Yeah, that's sounds like a huge case for a publisher.

1261
01:08:18.119 --> 01:08:21.560
<v Speaker 1>Yeah, yeah. So on one thing that I used brought

1262
01:08:21.640 --> 01:08:27.840
<v Speaker 1>up was the content ownership. So who has rights to

1263
01:08:27.920 --> 01:08:28.760
<v Speaker 1>your book?

1264
01:08:29.039 --> 01:08:31.640
<v Speaker 3>Yeah, PRAC has rights to my book. They have rights

1265
01:08:31.680 --> 01:08:35.199
<v Speaker 3>to the content in the book, and I am able

1266
01:08:35.279 --> 01:08:38.640
<v Speaker 3>to repurpose that content if I want to. So I've

1267
01:08:38.680 --> 01:08:40.680
<v Speaker 3>been thinking about doing like a course that would be

1268
01:08:40.880 --> 01:08:43.359
<v Speaker 3>very similar to the content of that book, but I can't.

1269
01:08:43.880 --> 01:08:47.840
<v Speaker 3>I can't reproduce like the whole content and sell it

1270
01:08:48.039 --> 01:08:51.039
<v Speaker 3>or publish it on my blog or anything. There's also

1271
01:08:51.159 --> 01:08:53.159
<v Speaker 3>exceptions to that, like if I want to sneak peak

1272
01:08:53.159 --> 01:08:55.840
<v Speaker 3>a chapter or two, I can get permission and republish

1273
01:08:55.880 --> 01:08:59.279
<v Speaker 3>it word for word, and as long as I outline

1274
01:08:59.319 --> 01:09:03.319
<v Speaker 3>that it's from the book, that's totally fine. The thing

1275
01:09:03.319 --> 01:09:06.640
<v Speaker 3>that didn't bother me about that is that, like a

1276
01:09:06.760 --> 01:09:09.960
<v Speaker 3>lot of the content from my book exists in the

1277
01:09:10.000 --> 01:09:14.359
<v Speaker 3>wild already, you'd have to piece together every one of

1278
01:09:14.359 --> 01:09:16.960
<v Speaker 3>my newsletters, every single one of my blog posts, every

1279
01:09:16.960 --> 01:09:20.239
<v Speaker 3>single one of your tweets, because that, yeah, like my

1280
01:09:20.239 --> 01:09:23.880
<v Speaker 3>private discord server where I'm answering people's questions, get hub issues,

1281
01:09:24.800 --> 01:09:28.560
<v Speaker 3>discourse discussions. Like if you pieced all of that together,

1282
01:09:29.199 --> 01:09:34.600
<v Speaker 3>you'd have fifty plus percent of the content of the book, right,

1283
01:09:34.880 --> 01:09:36.640
<v Speaker 3>but it all be disparate, and it wouldn't be connected

1284
01:09:36.680 --> 01:09:38.239
<v Speaker 3>to the same app that you're building, like it all

1285
01:09:38.319 --> 01:09:41.760
<v Speaker 3>itould be like spread across and code snippets. So them

1286
01:09:41.880 --> 01:09:44.920
<v Speaker 3>owning the content of my book seemed less. I'm less

1287
01:09:44.920 --> 01:09:48.319
<v Speaker 3>worried about it because I know that I can recreate

1288
01:09:48.439 --> 01:09:51.680
<v Speaker 3>this in my own different, like not my own voice,

1289
01:09:51.720 --> 01:09:55.319
<v Speaker 3>but from my own platforms. When it makes sense when

1290
01:09:55.359 --> 01:09:58.640
<v Speaker 3>I a whole chapters on tabs, If I write tabs

1291
01:09:58.680 --> 01:10:01.000
<v Speaker 3>on my blog, I'm not going to use the same

1292
01:10:01.039 --> 01:10:03.199
<v Speaker 3>techniques that I wrote about in the book. Sorry, I'm

1293
01:10:03.199 --> 01:10:04.760
<v Speaker 3>going to use the same techniques I'm going to write

1294
01:10:04.760 --> 01:10:05.880
<v Speaker 3>about in the book, but it's not going to be

1295
01:10:05.880 --> 01:10:08.640
<v Speaker 3>the same content. By the time you get to tabs

1296
01:10:08.640 --> 01:10:10.199
<v Speaker 3>in the book, you already have an app that does

1297
01:10:10.199 --> 01:10:12.760
<v Speaker 3>a bunch of stuff and we're just adding stuff on top.

1298
01:10:13.159 --> 01:10:15.279
<v Speaker 3>If I write that for my blog, it's like, Okay,

1299
01:10:15.520 --> 01:10:18.279
<v Speaker 3>new ex Code project, new Android studio project, here's how

1300
01:10:18.319 --> 01:10:20.199
<v Speaker 3>to add tabs. And that is a totally different piece

1301
01:10:20.239 --> 01:10:24.840
<v Speaker 3>of content, even if I'm teaching the same concepts and like,

1302
01:10:25.239 --> 01:10:28.840
<v Speaker 3>you know, approach, because of the audience and the context

1303
01:10:28.880 --> 01:10:29.560
<v Speaker 3>that's built into that.

1304
01:10:30.560 --> 01:10:33.640
<v Speaker 1>Awesome. Well, we're at about an hour and ten minutes.

1305
01:10:36.319 --> 01:10:38.760
<v Speaker 1>I think we pretty well covered this too. It seems

1306
01:10:38.760 --> 01:10:43.880
<v Speaker 1>like there's a lot there definitely an option worth looking at.

1307
01:10:43.960 --> 01:10:46.600
<v Speaker 1>If you're looking at putting a mobile app on your

1308
01:10:47.000 --> 01:10:49.560
<v Speaker 1>rails app and you're not super keen to oh now

1309
01:10:49.600 --> 01:10:51.239
<v Speaker 1>I have to add an API and I have to

1310
01:10:51.239 --> 01:10:53.560
<v Speaker 1>authenticate the API, and then I have to turn around

1311
01:10:53.600 --> 01:10:55.720
<v Speaker 1>and write an app that consumes the API, and I've

1312
01:10:55.720 --> 01:10:58.039
<v Speaker 1>got to build new interfaces and blah blah blah blah blah.

1313
01:10:58.920 --> 01:11:02.640
<v Speaker 1>So if people want to get the book, is there

1314
01:11:02.640 --> 01:11:05.800
<v Speaker 1>a link people can follow? You said there was a discount.

1315
01:11:05.800 --> 01:11:07.800
<v Speaker 1>Is that discount just built in? Or is there a

1316
01:11:07.840 --> 01:11:09.560
<v Speaker 1>coupon code? Do you want to tell us about that?

1317
01:11:10.439 --> 01:11:12.439
<v Speaker 3>We will put the coupon code in the show notes,

1318
01:11:12.479 --> 01:11:16.600
<v Speaker 3>because there is one. I cannot remember it right now,

1319
01:11:20.920 --> 01:11:23.760
<v Speaker 3>but you can get the book at if you go

1320
01:11:23.760 --> 01:11:27.159
<v Speaker 3>to my website, Mazziladi dot com. There's a big bounder

1321
01:11:27.239 --> 01:11:30.119
<v Speaker 3>up at the top that links to the purchase page

1322
01:11:30.159 --> 01:11:34.039
<v Speaker 3>on the publisher's website, which is the best way to

1323
01:11:34.039 --> 01:11:36.560
<v Speaker 3>buy it because, as Chuck mentioned earlier, you'll get an

1324
01:11:36.560 --> 01:11:40.560
<v Speaker 3>email from them on any update through the beta every

1325
01:11:40.560 --> 01:11:43.039
<v Speaker 3>two weeks, and then also once the book is published,

1326
01:11:43.079 --> 01:11:46.399
<v Speaker 3>any errata that gets changed, you'll get an email saying like, hey,

1327
01:11:46.760 --> 01:11:49.039
<v Speaker 3>these are all the changes, and a new version of

1328
01:11:49.039 --> 01:11:52.000
<v Speaker 3>that PDF or MOBI or epub for your readers.

1329
01:11:54.159 --> 01:11:56.159
<v Speaker 1>Yeah. And then I'm also just going to put this

1330
01:11:56.199 --> 01:11:59.479
<v Speaker 1>out there. I have an email list for the show,

1331
01:12:00.439 --> 01:12:03.000
<v Speaker 1>and I have two codes to give away free copies

1332
01:12:03.000 --> 01:12:07.439
<v Speaker 1>of the book. And so if you want a copy

1333
01:12:07.439 --> 01:12:12.159
<v Speaker 1>of the book for free, and I'm sure Pragmatic bookshelf's great,

1334
01:12:12.199 --> 01:12:14.600
<v Speaker 1>So if you buy it and then you win a copy,

1335
01:12:14.640 --> 01:12:19.119
<v Speaker 1>they'll they'll figure it out with you. I say that

1336
01:12:19.159 --> 01:12:22.680
<v Speaker 1>confidently without any authority to make promises for him, because

1337
01:12:22.680 --> 01:12:25.119
<v Speaker 1>they've just been so great with everything that I've ever

1338
01:12:25.159 --> 01:12:28.600
<v Speaker 1>done with them. But yeah, So if you go to

1339
01:12:28.720 --> 01:12:32.960
<v Speaker 1>Ruby rogues dot com, I'm adding in the email form

1340
01:12:33.000 --> 01:12:34.960
<v Speaker 1>literally this week, so by the time this is published,

1341
01:12:34.960 --> 01:12:36.800
<v Speaker 1>you'll be able to join the email list. Right now,

1342
01:12:36.800 --> 01:12:38.479
<v Speaker 1>the email list has like one hundred and thirty people

1343
01:12:38.479 --> 01:12:41.119
<v Speaker 1>on it, so you have a decent chance of getting

1344
01:12:41.279 --> 01:12:46.000
<v Speaker 1>the book. I took my old list and I segmented it.

1345
01:12:46.039 --> 01:12:47.279
<v Speaker 1>I just sent an email out and said, if you

1346
01:12:47.279 --> 01:12:49.880
<v Speaker 1>want to be on the Ruby only list. That's why

1347
01:12:49.920 --> 01:12:53.199
<v Speaker 1>they're only one hundred and thirty people on it. But anyway,

1348
01:12:53.359 --> 01:12:56.079
<v Speaker 1>if you want, if you want that, I mean, I'm

1349
01:12:56.079 --> 01:12:59.479
<v Speaker 1>going to be sending out content on doing whatever it

1350
01:12:59.520 --> 01:13:03.960
<v Speaker 1>is that we're in, you know, in the membership, but

1351
01:13:04.880 --> 01:13:07.479
<v Speaker 1>and then you know, dropping hints and tips and stuff

1352
01:13:07.520 --> 01:13:09.199
<v Speaker 1>like that. That'd be a bunch of good content. But

1353
01:13:09.279 --> 01:13:12.600
<v Speaker 1>besides that, if you're on the list, I'm gonna let

1354
01:13:12.600 --> 01:13:17.600
<v Speaker 1>it run through the end of I guess it's February now,

1355
01:13:17.840 --> 01:13:20.439
<v Speaker 1>so we'll let it run through the end of March,

1356
01:13:21.119 --> 01:13:24.039
<v Speaker 1>and then whoever's on the list, I'll take that list,

1357
01:13:24.079 --> 01:13:28.039
<v Speaker 1>I'll drop it into some random picker and we'll we'll

1358
01:13:28.079 --> 01:13:32.159
<v Speaker 1>give away two copies. So if you're interested, Yeah, go

1359
01:13:32.199 --> 01:13:33.800
<v Speaker 1>to Ruby rogues dot com and just join the me

1360
01:13:33.880 --> 01:13:37.520
<v Speaker 1>email list and yeah, I look forward to hearing from

1361
01:13:37.600 --> 01:13:38.319
<v Speaker 1>you there as well.

1362
01:13:38.920 --> 01:13:42.680
<v Speaker 3>Yeah, and the discount code is Ruby Rogues hot Wire.

1363
01:13:43.000 --> 01:13:45.680
<v Speaker 3>We'll get you that thirty five percent discount from the

1364
01:13:45.720 --> 01:13:47.000
<v Speaker 3>Pragmatic bookshelf upsite.

1365
01:13:48.439 --> 01:13:52.039
<v Speaker 1>Awesome. All right, Well, let's go and do some picks

1366
01:13:52.159 --> 01:13:55.359
<v Speaker 1>and then we'll go ahead and wrap up. I usual,

1367
01:13:55.359 --> 01:13:56.520
<v Speaker 1>do you have some picks for us?

1368
01:13:57.439 --> 01:13:59.880
<v Speaker 2>Yeah, so actually thinking of them during the show because

1369
01:14:00.439 --> 01:14:04.039
<v Speaker 2>they didn't think of any before. A couple of non

1370
01:14:04.079 --> 01:14:06.359
<v Speaker 2>technical picks. Again, I always started to do a music pick,

1371
01:14:06.359 --> 01:14:09.000
<v Speaker 2>so I'm going to continue with a music pick. And

1372
01:14:09.279 --> 01:14:12.439
<v Speaker 2>there's an album that I used to that I loved

1373
01:14:12.479 --> 01:14:15.319
<v Speaker 2>when it came out in twenty nineteen and kind of

1374
01:14:15.479 --> 01:14:17.520
<v Speaker 2>fell by the way, so I don't like discovered it again.

1375
01:14:17.560 --> 01:14:19.119
<v Speaker 2>A couple of weeks ago and I was like, Daddie Ill,

1376
01:14:19.159 --> 01:14:22.680
<v Speaker 2>I forgot how amazing the album is. It's called EmPATH

1377
01:14:22.840 --> 01:14:26.920
<v Speaker 2>by Devin Townsend. It's a metal album, but it kind

1378
01:14:26.960 --> 01:14:32.079
<v Speaker 2>of transcends genre. Really. It's like it's predominantly metal, but

1379
01:14:32.119 --> 01:14:33.840
<v Speaker 2>there's a whole lot of other kind of styles on

1380
01:14:33.920 --> 01:14:36.239
<v Speaker 2>there as well. And I think that's what makes it

1381
01:14:36.239 --> 01:14:38.640
<v Speaker 2>interesting for me because I'm not really that much of

1382
01:14:38.680 --> 01:14:44.479
<v Speaker 2>a metal fan, but I absolutely love that record. So yeah,

1383
01:14:44.479 --> 01:14:46.600
<v Speaker 2>I check that out. Mpath by Devin towns End came

1384
01:14:46.600 --> 01:14:51.600
<v Speaker 2>out in twenty nineteen, and I'm rewatching a TV show

1385
01:14:51.600 --> 01:14:53.439
<v Speaker 2>at the moment, which is one of my favorite TV

1386
01:14:53.479 --> 01:14:57.279
<v Speaker 2>shows called The Good Place, and yeah, I love it.

1387
01:14:57.399 --> 01:15:01.720
<v Speaker 2>I'm just doing a rewatch because I'm bored. Since I

1388
01:15:01.720 --> 01:15:04.720
<v Speaker 2>contact of anything else, I'll choose that as one of

1389
01:15:04.720 --> 01:15:07.560
<v Speaker 2>my picks. Yeah, that's all I've got today.

1390
01:15:09.319 --> 01:15:11.119
<v Speaker 1>If you're bored, I've got plenty of stuff that you

1391
01:15:11.119 --> 01:15:11.680
<v Speaker 1>can do for me.

1392
01:15:14.600 --> 01:15:16.840
<v Speaker 2>Else, I mean lazy and can be bothered to do

1393
01:15:16.880 --> 01:15:18.319
<v Speaker 2>the actual stuff I should be doing.

1394
01:15:19.079 --> 01:15:23.880
<v Speaker 1>Nice. Oh, okay, never mind, then I'm gonna jump in

1395
01:15:23.920 --> 01:15:25.920
<v Speaker 1>with some picks. My first pick I always do a

1396
01:15:25.920 --> 01:15:29.800
<v Speaker 1>board game. I don't think I picked this last week,

1397
01:15:30.399 --> 01:15:38.640
<v Speaker 1>but I'm picking groundhog Day the game. Now. Groundhog Day

1398
01:15:38.720 --> 01:15:42.720
<v Speaker 1>is a movie that came out in what ninety something,

1399
01:15:43.840 --> 01:15:48.239
<v Speaker 1>ninety six, I don't know, I'm totally guessing. Anyway, funny movie,

1400
01:15:48.279 --> 01:15:55.079
<v Speaker 1>Bill Murray, classic movie. And I feel no compunctions whatsoever

1401
01:15:55.199 --> 01:15:58.720
<v Speaker 1>in putting out spoilers because the movie is so freaking old.

1402
01:15:59.119 --> 01:16:03.000
<v Speaker 1>Came out in ninety three, ninety three even better, right,

1403
01:16:03.079 --> 01:16:08.159
<v Speaker 1>it's more than thirty years old. So anyway, in the game,

1404
01:16:08.560 --> 01:16:11.159
<v Speaker 1>he goes through and relives the same day over and

1405
01:16:11.199 --> 01:16:14.760
<v Speaker 1>over and over again until he has kind of the

1406
01:16:14.800 --> 01:16:18.640
<v Speaker 1>perfect day, right, you know, he gets the girl, he

1407
01:16:18.960 --> 01:16:23.199
<v Speaker 1>you know, all the things right. And so groundhog Day

1408
01:16:23.279 --> 01:16:27.680
<v Speaker 1>the Game is the same, the same premise. And so

1409
01:16:27.760 --> 01:16:31.039
<v Speaker 1>you have a perfect day if you play all of

1410
01:16:32.079 --> 01:16:35.920
<v Speaker 1>all seven cards in a day as red cards, right,

1411
01:16:35.960 --> 01:16:39.239
<v Speaker 1>and the red cards are for four heart cards, and

1412
01:16:39.319 --> 01:16:40.960
<v Speaker 1>if so, if you do that, you win. The way

1413
01:16:41.119 --> 01:16:43.920
<v Speaker 1>you play on the on each day is you can

1414
01:16:43.960 --> 01:16:49.319
<v Speaker 1>play any number higher than the last number played, and

1415
01:16:49.359 --> 01:16:52.479
<v Speaker 1>then day today, your days have to get better. Right.

1416
01:16:52.560 --> 01:16:54.720
<v Speaker 1>So there are great cards that have no hearts. There

1417
01:16:54.720 --> 01:16:57.279
<v Speaker 1>are blue cards have one heart, there are orange cards

1418
01:16:57.279 --> 01:16:59.119
<v Speaker 1>that have two hearts, and there are yellow cards that

1419
01:16:59.119 --> 01:17:02.439
<v Speaker 1>have three hearts. Some of the yellow cards get more

1420
01:17:02.560 --> 01:17:04.880
<v Speaker 1>red cards into the deck, so when you pass them

1421
01:17:04.920 --> 01:17:08.359
<v Speaker 1>around to everybody is a cooperative game. Anybody can jump

1422
01:17:08.399 --> 01:17:10.119
<v Speaker 1>in at any time and play a number. So on

1423
01:17:10.159 --> 01:17:13.439
<v Speaker 1>your first day, you're usually playing the gray and blue

1424
01:17:13.439 --> 01:17:15.960
<v Speaker 1>cards because they're lower hearts, and so maybe you get

1425
01:17:15.960 --> 01:17:18.399
<v Speaker 1>a day that has four hearts. So the next day,

1426
01:17:18.960 --> 01:17:21.560
<v Speaker 1>you know, you take the rest of the cards, you

1427
01:17:21.600 --> 01:17:23.880
<v Speaker 1>shuffle them, and you pass them out again, and all

1428
01:17:23.920 --> 01:17:26.279
<v Speaker 1>of those lower value cards are gone. So now you

1429
01:17:26.479 --> 01:17:30.079
<v Speaker 1>maybe have a five hard or six heart day if

1430
01:17:30.159 --> 01:17:33.439
<v Speaker 1>you get too far ahead of yourself, right, because you

1431
01:17:34.720 --> 01:17:37.960
<v Speaker 1>has to go up. So if you can't play on

1432
01:17:38.039 --> 01:17:40.520
<v Speaker 1>the day and you need more cards in the day,

1433
01:17:40.600 --> 01:17:45.000
<v Speaker 1>you lose. And then if you don't ever get a

1434
01:17:45.119 --> 01:17:48.119
<v Speaker 1>day full of red cards, you lose. It's a pretty

1435
01:17:48.560 --> 01:17:52.520
<v Speaker 1>simple game. Board game geek says it's a one point too.

1436
01:17:52.640 --> 01:18:00.880
<v Speaker 1>To wait two is like complex ish games. So I

1437
01:18:00.880 --> 01:18:03.520
<v Speaker 1>mean this is one. I think we were playing around

1438
01:18:03.600 --> 01:18:08.880
<v Speaker 1>in like fifteen minutes with five of us. And anyway,

1439
01:18:08.920 --> 01:18:12.239
<v Speaker 1>it's really fun because you literally just pass out the cards,

1440
01:18:13.479 --> 01:18:17.720
<v Speaker 1>fill up the day, shuffle the cards, pass them out again, right,

1441
01:18:18.760 --> 01:18:20.960
<v Speaker 1>and you get fewer cards every round. Here's the other

1442
01:18:21.039 --> 01:18:26.439
<v Speaker 1>thing that comes in and so yeah, so our strategy

1443
01:18:26.600 --> 01:18:30.319
<v Speaker 1>was at the point where you know, somebody has a

1444
01:18:30.399 --> 01:18:33.600
<v Speaker 1>couple of red cards and one of them is reasonably low,

1445
01:18:34.720 --> 01:18:37.119
<v Speaker 1>and you think they're good odds that there are eight

1446
01:18:37.279 --> 01:18:41.600
<v Speaker 1>seven eight cards in the stack in other people's hands, right,

1447
01:18:41.600 --> 01:18:44.760
<v Speaker 1>because you don't deal out all the cards, then you

1448
01:18:44.800 --> 01:18:49.079
<v Speaker 1>go for it. So anyway, fun game really enjoyed it,

1449
01:18:49.600 --> 01:18:53.159
<v Speaker 1>and so I'm going to pick that. In the show notes,

1450
01:18:53.199 --> 01:18:54.880
<v Speaker 1>there will be a link to board game Geek where

1451
01:18:54.920 --> 01:18:56.880
<v Speaker 1>you can kind of check out what other people have thought,

1452
01:18:57.199 --> 01:18:59.079
<v Speaker 1>and then there's going to be an Amazon affiliate link

1453
01:18:59.159 --> 01:19:03.439
<v Speaker 1>so that you can go go check it out. A

1454
01:19:03.520 --> 01:19:08.680
<v Speaker 1>couple of other picks here. If you're watching the video,

1455
01:19:09.479 --> 01:19:10.680
<v Speaker 1>you can see I have a little bit of a

1456
01:19:10.720 --> 01:19:14.640
<v Speaker 1>split lip. So we have cold, dry winters here in Utah,

1457
01:19:14.680 --> 01:19:16.079
<v Speaker 1>And that's just the way it goes. I'm gonna pick

1458
01:19:16.119 --> 01:19:19.199
<v Speaker 1>Chapstick just because it's made my life better the last

1459
01:19:19.199 --> 01:19:24.359
<v Speaker 1>few days. And then, oh, there was something else I

1460
01:19:24.399 --> 01:19:25.960
<v Speaker 1>was gonna pick, and I just can't think of it.

1461
01:19:26.880 --> 01:19:30.199
<v Speaker 1>But anyway, I guess I'll just throw out Ruby Geniuses.

1462
01:19:30.239 --> 01:19:34.079
<v Speaker 1>Real quick, we're doing calls every week. I'm doing the

1463
01:19:34.239 --> 01:19:36.479
<v Speaker 1>all the calls in March, and then I'm starting to

1464
01:19:36.479 --> 01:19:39.960
<v Speaker 1>bring in experts in April and may probably for two

1465
01:19:40.079 --> 01:19:43.159
<v Speaker 1>or three out of the four or five weeks, so

1466
01:19:43.159 --> 01:19:46.039
<v Speaker 1>we'll get people like Joe or and Ayush and you know,

1467
01:19:46.079 --> 01:19:48.199
<v Speaker 1>some of our other guests. I'm probably going to ask

1468
01:19:48.239 --> 01:19:50.000
<v Speaker 1>the guests from the show to just come on and

1469
01:19:50.600 --> 01:19:53.840
<v Speaker 1>you know, we can hear what they're working on, and

1470
01:19:54.079 --> 01:19:55.840
<v Speaker 1>they can kind of help us figure out how to

1471
01:19:56.000 --> 01:19:58.359
<v Speaker 1>do what they're working on and whatever we're working on.

1472
01:19:59.520 --> 01:20:03.279
<v Speaker 1>I'm getting way into AI, and so there are going

1473
01:20:03.319 --> 01:20:06.279
<v Speaker 1>to be some videos as well in the system for AI,

1474
01:20:06.600 --> 01:20:10.279
<v Speaker 1>just everything from here's how you just kind of get

1475
01:20:10.319 --> 01:20:12.840
<v Speaker 1>started with the fundamentals, either with a chat GPT that

1476
01:20:12.880 --> 01:20:15.439
<v Speaker 1>you don't have to set up, or Olama and some

1477
01:20:15.479 --> 01:20:18.439
<v Speaker 1>of the other tools that are out there. That was

1478
01:20:18.479 --> 01:20:19.680
<v Speaker 1>what I was going to pick, but I don't have

1479
01:20:19.720 --> 01:20:20.840
<v Speaker 1>the link in front of me, so I'll pick it

1480
01:20:20.880 --> 01:20:23.319
<v Speaker 1>next week. But there's a web interface that sits on

1481
01:20:23.359 --> 01:20:25.680
<v Speaker 1>top of Olama that you can just basically run it

1482
01:20:25.720 --> 01:20:30.079
<v Speaker 1>like chat GPT, except you're not paying for it, and

1483
01:20:30.119 --> 01:20:32.920
<v Speaker 1>it's slightly less capable because chat GPT will go search

1484
01:20:32.960 --> 01:20:35.399
<v Speaker 1>the web for information and this really doesn't do that,

1485
01:20:35.479 --> 01:20:42.840
<v Speaker 1>but anyway, good stuff. And yeah, so those are my picks, Joe,

1486
01:20:42.880 --> 01:20:43.600
<v Speaker 1>what are your picks?

1487
01:20:44.439 --> 01:20:48.239
<v Speaker 3>I have two picks, a book and also a board game.

1488
01:20:48.960 --> 01:20:53.840
<v Speaker 3>The book is Beauty Land. I read it. I just

1489
01:20:53.880 --> 01:20:58.119
<v Speaker 3>finished it a few nights ago. It is the tale

1490
01:20:58.479 --> 01:21:02.640
<v Speaker 3>of a girl grows up in Philadelphia and has kind

1491
01:21:02.680 --> 01:21:05.600
<v Speaker 3>of a troubled childhood and she gets a fax machine

1492
01:21:05.920 --> 01:21:09.119
<v Speaker 3>and she starts faxing and slowly finds out that she's

1493
01:21:09.159 --> 01:21:13.520
<v Speaker 3>an alien living in Philadelphia and she communicates to her

1494
01:21:13.880 --> 01:21:17.560
<v Speaker 3>home planet through this fax machine. And it's told in

1495
01:21:17.680 --> 01:21:21.560
<v Speaker 3>really digestible, like two three paragraph chapters of her life

1496
01:21:21.640 --> 01:21:24.239
<v Speaker 3>experiences of her growing up from living in Philly to

1497
01:21:24.319 --> 01:21:27.159
<v Speaker 3>like getting a going through high school, getting a job,

1498
01:21:27.359 --> 01:21:30.159
<v Speaker 3>having friends along the way, and it gives this really

1499
01:21:30.319 --> 01:21:34.520
<v Speaker 3>unique point of view of how aliens look at our

1500
01:21:34.560 --> 01:21:37.960
<v Speaker 3>life as humans. And there's a really awesome chapter on

1501
01:21:38.000 --> 01:21:39.880
<v Speaker 3>New York City, where I used to live that's very

1502
01:21:39.920 --> 01:21:44.439
<v Speaker 3>nostalgic but also just like very ironic and really makes

1503
01:21:44.479 --> 01:21:46.640
<v Speaker 3>you think about some of the things that we value,

1504
01:21:46.920 --> 01:21:48.960
<v Speaker 3>and like bagels are a big part of it. It's

1505
01:21:49.000 --> 01:21:52.359
<v Speaker 3>really really good and a pretty quick a pretty quick

1506
01:21:52.399 --> 01:21:56.560
<v Speaker 3>read as well and scratches that sci fi itch that

1507
01:21:56.159 --> 01:22:00.239
<v Speaker 3>I that I really love. My board game is in

1508
01:22:00.279 --> 01:22:03.880
<v Speaker 3>the background right here, Slay the Spire. It is a

1509
01:22:03.920 --> 01:22:07.119
<v Speaker 3>board game based off of a video game based off

1510
01:22:07.119 --> 01:22:09.880
<v Speaker 3>of a board game. So the video game is called

1511
01:22:09.920 --> 01:22:12.119
<v Speaker 3>Slay the Spire, and it's essentially you play a board

1512
01:22:12.119 --> 01:22:16.840
<v Speaker 3>game of a rogue Light deck builder, so you're like,

1513
01:22:16.880 --> 01:22:20.439
<v Speaker 3>you know, you're buying cards, playing them against the computer,

1514
01:22:20.560 --> 01:22:22.880
<v Speaker 3>and like trying to build the optimal deck. The board

1515
01:22:22.960 --> 01:22:26.840
<v Speaker 3>game is exactly that as a board game. I think

1516
01:22:26.840 --> 01:22:28.600
<v Speaker 3>the only thing that changes are some of the scaling

1517
01:22:28.600 --> 01:22:30.640
<v Speaker 3>of the numbers. But like if you've played the video game,

1518
01:22:30.960 --> 01:22:32.960
<v Speaker 3>it is an awesome board game to play because it

1519
01:22:33.000 --> 01:22:36.560
<v Speaker 3>plays really well solo. It's one of the few games

1520
01:22:36.560 --> 01:22:39.239
<v Speaker 3>that I think is like better played on your own

1521
01:22:39.399 --> 01:22:42.800
<v Speaker 3>against the game than playing with other people cooperatively. So

1522
01:22:43.000 --> 01:22:44.960
<v Speaker 3>I really love it because in the evenings that I'm

1523
01:22:45.000 --> 01:22:47.600
<v Speaker 3>wiped and want to just watch TV, I can set

1524
01:22:47.640 --> 01:22:51.479
<v Speaker 3>up a board game and play around by myself and

1525
01:22:51.520 --> 01:22:53.159
<v Speaker 3>not like sit in front of a screen for an

1526
01:22:53.159 --> 01:22:56.239
<v Speaker 3>hour before I go to bed. And it's really challenging.

1527
01:22:57.159 --> 01:22:59.279
<v Speaker 3>It's not too hard to learn if you already know

1528
01:22:59.399 --> 01:23:02.159
<v Speaker 3>the video game. It just does take a little bit

1529
01:23:02.560 --> 01:23:06.680
<v Speaker 3>while to set up physically, but definitely recommend that it's

1530
01:23:06.720 --> 01:23:07.359
<v Speaker 3>a lot of fun.

1531
01:23:08.800 --> 01:23:11.079
<v Speaker 1>So I'm just going to ask a couple of questions

1532
01:23:11.079 --> 01:23:13.479
<v Speaker 1>because one thing that I've run into is I've bought

1533
01:23:13.560 --> 01:23:17.760
<v Speaker 1>games have the solo player mode and it's totally different

1534
01:23:17.760 --> 01:23:20.840
<v Speaker 1>from the regular game, and it's usually not as good.

1535
01:23:20.960 --> 01:23:26.279
<v Speaker 1>So how close does the solo game align with the multiplayer.

1536
01:23:25.920 --> 01:23:29.239
<v Speaker 3>It's the exact same game solo, and then when you

1537
01:23:29.319 --> 01:23:32.640
<v Speaker 3>play with multiplayer, it adds two rules, so it's actually

1538
01:23:32.680 --> 01:23:35.840
<v Speaker 3>meant for solo play, and then multiplayer is like a

1539
01:23:35.880 --> 01:23:39.680
<v Speaker 3>mode almost that lets you play cooperatively. So all of

1540
01:23:39.720 --> 01:23:43.560
<v Speaker 3>the rules, everything is meant to be played solo, with

1541
01:23:43.600 --> 01:23:44.560
<v Speaker 3>a few exceptions.

1542
01:23:44.760 --> 01:23:47.199
<v Speaker 1>Yeah. Board game Geek has this one at a weight

1543
01:23:47.279 --> 01:23:48.600
<v Speaker 1>of two point ninety three.

1544
01:23:49.119 --> 01:23:49.319
<v Speaker 3>Yeah.

1545
01:23:49.680 --> 01:23:51.640
<v Speaker 1>It says it can take anywhere from thirty to one

1546
01:23:51.720 --> 01:23:56.880
<v Speaker 1>hundred and fifteen minutes. It says age twelve plus, So

1547
01:23:58.439 --> 01:24:00.800
<v Speaker 1>it sounds like it's a little involved but probably isn't

1548
01:24:00.840 --> 01:24:03.479
<v Speaker 1>terribly hard to pick up. Is generally how I would

1549
01:24:03.479 --> 01:24:03.800
<v Speaker 1>read that.

1550
01:24:03.880 --> 01:24:07.720
<v Speaker 3>It's it's easy ish to play, it's really hard to master,

1551
01:24:08.039 --> 01:24:11.199
<v Speaker 3>So like learning the rules is reading a couple of

1552
01:24:11.239 --> 01:24:14.560
<v Speaker 3>cards and knowing when damage happens and not being good

1553
01:24:14.600 --> 01:24:16.920
<v Speaker 3>at it and actually beating one of the four levels

1554
01:24:16.920 --> 01:24:18.800
<v Speaker 3>requires a few playthroughs.

1555
01:24:20.479 --> 01:24:22.880
<v Speaker 1>Okay, it looks like fun though.

1556
01:24:22.920 --> 01:24:24.279
<v Speaker 3>It's a lot of fun. It's a lot of fun.

1557
01:24:24.640 --> 01:24:26.399
<v Speaker 3>I back to the Kickstarter version, so I have like

1558
01:24:26.840 --> 01:24:29.279
<v Speaker 3>metal coins and a little pouch and stuff for it.

1559
01:24:29.279 --> 01:24:31.119
<v Speaker 1>It's like, oh, yeah, that's always fun.

1560
01:24:31.359 --> 01:24:32.159
<v Speaker 3>Yeah, it's cool.

1561
01:24:33.119 --> 01:24:35.640
<v Speaker 1>Yeah. I'll buy a game at the game Store or

1562
01:24:35.680 --> 01:24:38.359
<v Speaker 1>on Amazon, and then I'll play it with my friend

1563
01:24:38.840 --> 01:24:41.920
<v Speaker 1>and yeah, the same game will have all these nice

1564
01:24:41.920 --> 01:24:44.800
<v Speaker 1>little pieces in it, and I'm like, did you make

1565
01:24:44.880 --> 01:24:50.199
<v Speaker 1>these or something. It's a Kickstarter version, yep, yep. Yeah.

1566
01:24:50.359 --> 01:24:52.760
<v Speaker 1>Board Game Life. Yeah, that one came out in twenty

1567
01:24:52.800 --> 01:24:55.439
<v Speaker 1>twenty four. That's probably part of the reason I haven't

1568
01:24:55.439 --> 01:24:56.279
<v Speaker 1>played yet.

1569
01:24:56.439 --> 01:24:57.119
<v Speaker 3>It's a good one.

1570
01:24:58.119 --> 01:25:00.760
<v Speaker 1>Yeah, I did come up with the other thing. I'm

1571
01:25:00.760 --> 01:25:02.279
<v Speaker 1>just going to throw it out real quick. It's open

1572
01:25:02.319 --> 01:25:07.279
<v Speaker 1>WebUI and it's really easy to run on top of Olama.

1573
01:25:07.560 --> 01:25:10.520
<v Speaker 1>So you install Olama, you tell it which model you

1574
01:25:10.560 --> 01:25:13.119
<v Speaker 1>want to run. If you've heard about deep Seek, that

1575
01:25:13.199 --> 01:25:16.079
<v Speaker 1>one made a splash. You can run deep Seek versions.

1576
01:25:16.079 --> 01:25:19.920
<v Speaker 1>You can get the uncensored version of deep seek. It's

1577
01:25:19.960 --> 01:25:22.319
<v Speaker 1>fun to ask it about like Kenneman square and stuff

1578
01:25:22.359 --> 01:25:24.720
<v Speaker 1>because the data they trained it on it doesn't know

1579
01:25:24.760 --> 01:25:30.439
<v Speaker 1>anything about anything that China sensors, right, but any it's

1580
01:25:30.520 --> 01:25:32.960
<v Speaker 1>a it's a decent model. It runs fast, and it's

1581
01:25:32.960 --> 01:25:36.840
<v Speaker 1>it's pretty good. So yeah, but it's open open you

1582
01:25:37.079 --> 01:25:42.159
<v Speaker 1>open WebUI, open dash WebUI, and so yeah, you can

1583
01:25:42.159 --> 01:25:46.359
<v Speaker 1>just run that on your local machine. I had somebody

1584
01:25:46.359 --> 01:25:49.159
<v Speaker 1>ask if you can do cursor on it, and cursor

1585
01:25:49.199 --> 01:25:56.159
<v Speaker 1>does other things too, so you really can't. But yeah,

1586
01:25:56.239 --> 01:25:57.800
<v Speaker 1>all right, Joe. If people want to find you on

1587
01:25:57.840 --> 01:25:58.920
<v Speaker 1>the internet, where do they find you?

1588
01:26:00.000 --> 01:26:03.640
<v Speaker 3>Easiest spot is my website Mazzilati dot com. I got

1589
01:26:03.680 --> 01:26:08.520
<v Speaker 3>links to all the socials there, my newsletter, my blog posts,

1590
01:26:08.560 --> 01:26:10.000
<v Speaker 3>and also the book.

1591
01:26:10.640 --> 01:26:14.640
<v Speaker 1>All right, well, one more time. That code if you

1592
01:26:14.680 --> 01:26:17.880
<v Speaker 1>want twenty percent off is Ruby rogues hotwire. That's correct,

1593
01:26:18.800 --> 01:26:20.800
<v Speaker 1>and you just go find it on the Pragmatic bookshelf.

1594
01:26:20.800 --> 01:26:26.520
<v Speaker 1>It's pragprog dot com. And yeah, all right, folks, we'll

1595
01:26:26.520 --> 01:26:29.119
<v Speaker 1>wrap it up here until next time. Max out
