1
00:00:00,000 --> 00:00:02,280
All right, well, here we are at, where are we, Josh?

2
00:00:02,680 --> 00:00:04,020
Huh, Singapore.

3
00:00:04,340 --> 00:00:04,940
Can you believe it?

4
00:00:05,280 --> 00:00:05,940
Singapore, yeah.

5
00:00:05,960 --> 00:00:07,080
How many times have you been here?

6
00:00:07,420 --> 00:00:07,780
Just here?

7
00:00:08,200 --> 00:00:08,920
Just in general.

8
00:00:09,180 --> 00:00:10,860
Just more than a handful?

9
00:00:11,040 --> 00:00:11,320
Oh, yeah.

10
00:00:11,320 --> 00:00:11,840
Or a bucket?

11
00:00:12,200 --> 00:00:16,660
So when you come here, what would you recommend as a good thing to eat?

12
00:00:16,880 --> 00:00:17,240
Laksa.

13
00:00:17,760 --> 00:00:18,360
What's that?

14
00:00:19,220 --> 00:00:20,880
That's not related to lox, is it?

15
00:00:21,060 --> 00:00:28,400
No, it's a soup with spice and prawns and shellfish.

16
00:00:28,560 --> 00:00:28,760
And prawns?

17
00:00:28,760 --> 00:00:29,380
I don't do...

18
00:00:29,380 --> 00:00:31,340
Now, how do you distinguish between a prawn and a shrimp?

19
00:00:31,480 --> 00:00:32,240
I think it's the same thing.

20
00:00:32,440 --> 00:00:36,920
It's a shrimp and fish of some sort and spicy noodles.

21
00:00:37,120 --> 00:00:39,580
My feeling is that a prawn is bigger than a shrimp.

22
00:00:39,820 --> 00:00:42,600
Like, have you ever seen a prawn that's the size of an American shrimp?

23
00:00:42,980 --> 00:00:43,460
I don't know.

24
00:00:43,620 --> 00:00:44,280
No, I don't...

25
00:00:44,280 --> 00:00:44,460
No.

26
00:00:44,720 --> 00:00:46,460
So I think prawns are always big.

27
00:00:46,480 --> 00:00:47,480
Is that why they call them shrimps?

28
00:00:47,540 --> 00:00:48,340
Because they're shrimp-y?

29
00:00:48,680 --> 00:00:49,960
Or it may be the other way around.

30
00:00:50,020 --> 00:00:52,560
Maybe they were called shrimp originally and someone...

31
00:00:52,560 --> 00:00:54,760
We use that as a slang for a diminutive person.

32
00:00:54,880 --> 00:00:55,400
I guess.

33
00:00:55,500 --> 00:00:56,020
I don't know.

34
00:00:56,480 --> 00:00:56,800
Yeah.

35
00:00:57,300 --> 00:00:58,760
Okay, so...

36
00:00:58,760 --> 00:00:59,380
What was it again?

37
00:01:00,060 --> 00:01:00,340
Laksa.

38
00:01:00,440 --> 00:01:01,000
L-A-K-S-A.

39
00:01:01,000 --> 00:01:01,960
So you got prawns?

40
00:01:02,000 --> 00:01:02,220
Yeah.

41
00:01:02,500 --> 00:01:02,780
Broth.

42
00:01:03,300 --> 00:01:03,660
Spice.

43
00:01:03,860 --> 00:01:04,080
Uh-huh.

44
00:01:04,320 --> 00:01:05,320
Now, how do you eat that?

45
00:01:06,280 --> 00:01:07,080
Just with a spoon?

46
00:01:07,500 --> 00:01:09,620
There's a spoon and there's a lot of slurping involved.

47
00:01:09,840 --> 00:01:10,000
It's not...

48
00:01:10,000 --> 00:01:13,120
So here's a challenge I have with a lot of soups.

49
00:01:13,220 --> 00:01:13,360
Sure.

50
00:01:13,360 --> 00:01:14,380
It's like, it's really hot.

51
00:01:14,920 --> 00:01:15,300
Yeah, and this is...

52
00:01:15,300 --> 00:01:16,300
So how do you deal with it?

53
00:01:16,300 --> 00:01:17,100
Not spicy hot.

54
00:01:17,220 --> 00:01:17,400
Right.

55
00:01:17,400 --> 00:01:20,720
You have that problem with this as well.

56
00:01:20,720 --> 00:01:24,740
And so is it expected that there's sort of like a five-minute literal cooling-off period?

57
00:01:24,940 --> 00:01:25,020
Yeah, yeah.

58
00:01:25,020 --> 00:01:25,140
That's fine.

59
00:01:25,140 --> 00:01:26,560
So you just kind of hang out?

60
00:01:26,640 --> 00:01:26,720
Totally.

61
00:01:26,720 --> 00:01:27,740
You have the soup in front of you?

62
00:01:27,820 --> 00:01:27,960
Yeah.

63
00:01:28,060 --> 00:01:30,060
I mean, it is going to be the longest five minutes you've ever had.

64
00:01:30,180 --> 00:01:31,520
It'll sit there salivating.

65
00:01:31,700 --> 00:01:35,040
The other thing is, here in Singapore in particular, they have chicken rice.

66
00:01:35,140 --> 00:01:35,740
Hainan chicken rice.

67
00:01:35,840 --> 00:01:37,680
So you are the third person to mention this now.

68
00:01:37,720 --> 00:01:38,520
What's the deal with chicken rice?

69
00:01:38,520 --> 00:01:38,860
Well, okay.

70
00:01:38,960 --> 00:01:40,320
So it's not actually a Singaporean thing.

71
00:01:41,380 --> 00:01:41,660
It's...

72
00:01:41,660 --> 00:01:42,660
Well, you can get in Hong Kong.

73
00:01:42,780 --> 00:01:43,240
You can get in Malaysia.

74
00:01:43,660 --> 00:01:44,580
It's everywhere but here.

75
00:01:44,720 --> 00:01:46,480
But they have here the...

76
00:01:46,480 --> 00:01:47,920
And I did this like four trips ago.

77
00:01:48,220 --> 00:01:54,780
They have the first Michelin star, Michelin guide, one star, hawker stall.

78
00:01:54,880 --> 00:01:55,580
So they have hawker stalls.

79
00:01:55,820 --> 00:01:56,560
Oh, yeah.

80
00:01:56,680 --> 00:01:57,840
Someone was telling me that's here.

81
00:01:57,920 --> 00:01:58,360
Right, right, right.

82
00:01:58,480 --> 00:01:59,200
They have hawker stalls.

83
00:01:59,300 --> 00:02:00,680
Hawker stalls are...

84
00:02:00,680 --> 00:02:01,360
Where you eat hawk.

85
00:02:01,860 --> 00:02:04,480
Well, they're little sheds, basically.

86
00:02:04,560 --> 00:02:05,260
They're little booths.

87
00:02:05,260 --> 00:02:05,800
Right, right, right.

88
00:02:05,820 --> 00:02:06,400
And they're open.

89
00:02:06,940 --> 00:02:08,540
You can go to these stall centers.

90
00:02:08,680 --> 00:02:10,360
You know, they have like 50 of them.

91
00:02:10,600 --> 00:02:11,000
Right, right.

92
00:02:11,000 --> 00:02:11,420
All lined up in a queue.

93
00:02:11,420 --> 00:02:12,960
Street food is what we would call it back home.

94
00:02:13,000 --> 00:02:14,900
But you don't have to wander the streets.

95
00:02:15,220 --> 00:02:16,700
It's like a mall but it's outside.

96
00:02:16,820 --> 00:02:17,160
It's just a fanciful term.

97
00:02:17,380 --> 00:02:18,320
Yeah, it's an outside mall.

98
00:02:18,580 --> 00:02:20,400
And every vendor is a food vendor.

99
00:02:20,560 --> 00:02:22,860
So in this vendor, are they the chicken rice people?

100
00:02:22,880 --> 00:02:24,360
Yeah, Hainan chicken rice, specifically.

101
00:02:24,560 --> 00:02:29,700
And it's just rice, some like vinegar and soy and whatever.

102
00:02:29,900 --> 00:02:34,540
You know, there's like a few sauces and rice and then chicken strips.

103
00:02:34,540 --> 00:02:35,340
It's just chicken.

104
00:02:35,640 --> 00:02:37,520
Now, is the chicken flavored or is the rice flavored?

105
00:02:37,700 --> 00:02:38,340
What's the deal?

106
00:02:38,560 --> 00:02:39,100
I don't know.

107
00:02:39,460 --> 00:02:40,020
It just tastes good.

108
00:02:40,380 --> 00:02:42,900
You know, if you taste chicken rice...

109
00:02:42,900 --> 00:02:44,200
And how would you describe the flavor?

110
00:02:44,320 --> 00:02:44,960
It's not sweet.

111
00:02:45,100 --> 00:02:46,800
No, it's a little bit salty sometimes.

112
00:02:46,920 --> 00:02:47,260
It's nice.

113
00:02:47,600 --> 00:02:49,100
It's like soy sauce and vinegar.

114
00:02:49,320 --> 00:02:50,960
Do they include the skin with the chicken and the bones?

115
00:02:50,980 --> 00:02:53,520
And that's what makes it so, oh, the fat.

116
00:02:53,720 --> 00:02:54,520
It's just perfect.

117
00:02:54,720 --> 00:02:58,180
And you dip it in, you dip into the soup.

118
00:02:58,480 --> 00:03:00,400
You got the chicken, you got the rice, you got the sauces.

119
00:03:00,760 --> 00:03:01,160
Life is good.

120
00:03:01,360 --> 00:03:02,160
Dip into the soup.

121
00:03:02,360 --> 00:03:02,620
Okay.

122
00:03:02,840 --> 00:03:04,380
Well, maybe I'll get some of that.

123
00:03:04,620 --> 00:03:08,980
I've gone towards more of the, I don't know what people call it, but the dumpling things.

124
00:03:09,100 --> 00:03:09,220
Yes.

125
00:03:09,220 --> 00:03:10,460
I always like that.

126
00:03:10,480 --> 00:03:11,400
Sha Long Bao, that kind of thing?

127
00:03:11,560 --> 00:03:11,800
Sure.

128
00:03:11,960 --> 00:03:12,940
I don't know what that is, but it sounds good.

129
00:03:12,940 --> 00:03:16,520
So they have a, in China, they have this thing, in Shanghai, in that region, they have this

130
00:03:16,520 --> 00:03:19,340
thing called Sha Long Bao, which is hot soup dumplings.

131
00:03:20,160 --> 00:03:21,980
And it's the same thing.

132
00:03:22,040 --> 00:03:25,460
You better wait until, better wait a few minutes before you eat it because otherwise you'll...

133
00:03:25,460 --> 00:03:26,140
You'll burn your mouth.

134
00:03:26,200 --> 00:03:26,860
You'll scald your mouth.

135
00:03:27,020 --> 00:03:28,780
And it'll hurt so good because it does taste good.

136
00:03:29,040 --> 00:03:35,800
But they have a, Sha Long Bao, there's a restaurant that's pretty, I think it's from Taiwan.

137
00:03:35,920 --> 00:03:36,360
I could be wrong.

138
00:03:36,420 --> 00:03:37,180
I could be wrong on this part.

139
00:03:37,400 --> 00:03:41,260
There's a restaurant called Din Tai Fung, and they have that, it's international, right?

140
00:03:41,300 --> 00:03:45,900
So they have it in Taiwan, they have it in Singapore, they have it in Malaysia, they have

141
00:03:45,900 --> 00:03:46,780
it in all over China.

142
00:03:47,060 --> 00:03:47,300
Yeah.

143
00:03:47,640 --> 00:03:49,020
And in Hong Kong.

144
00:03:49,540 --> 00:03:52,660
And they have it here in Singapore.

145
00:03:52,820 --> 00:03:56,700
So you go to the Din Tai Fung, and it's famous.

146
00:03:56,700 --> 00:03:59,960
It's like these locations, you know, every celebrity in Asia has been to these places.

147
00:04:00,120 --> 00:04:03,920
Is it like a steakhouse where they've got pictures of people on the wall who've been there?

148
00:04:03,920 --> 00:04:04,600
Or caricatures and stuff.

149
00:04:04,740 --> 00:04:05,380
Oh, even better.

150
00:04:05,480 --> 00:04:06,380
The one in...

151
00:04:06,380 --> 00:04:07,280
Small body, big head?

152
00:04:07,680 --> 00:04:08,240
Yeah, exactly.

153
00:04:08,320 --> 00:04:09,020
And signatures, too.

154
00:04:09,100 --> 00:04:09,900
They actually signed it, you know?

155
00:04:10,220 --> 00:04:18,340
So I lived in Shanghai for several months in 2012, and I just got fat on these Sha Long Bao,

156
00:04:18,440 --> 00:04:18,580
you know?

157
00:04:18,720 --> 00:04:19,780
So how do you eat those?

158
00:04:19,860 --> 00:04:21,100
How are they presented to you?

159
00:04:22,200 --> 00:04:26,600
You get a bucket, you get a wicker basket kind of with some paper on it.

160
00:04:26,600 --> 00:04:27,940
And there's a bunch of Sha Long Bao in there.

161
00:04:28,060 --> 00:04:28,260
Okay.

162
00:04:28,360 --> 00:04:32,540
And you use your top stick, and just carefully, when you bite into it, it's going to explode

163
00:04:32,540 --> 00:04:33,640
in soup, you know?

164
00:04:33,980 --> 00:04:37,380
And there's different flavors, like garlic and whatever, all sorts of different flavored

165
00:04:37,380 --> 00:04:38,660
Sha Long Bao soups.

166
00:04:38,760 --> 00:04:39,360
What's your favorite?

167
00:04:40,400 --> 00:04:41,020
Classic is great.

168
00:04:41,140 --> 00:04:41,700
Garlic is great.

169
00:04:42,320 --> 00:04:42,980
What's a classic?

170
00:04:43,120 --> 00:04:43,520
I don't know.

171
00:04:43,580 --> 00:04:45,140
It's just, it's a little bit of vinegary.

172
00:04:45,420 --> 00:04:46,940
It's a little sour.

173
00:04:47,040 --> 00:04:47,340
It's nice.

174
00:04:47,420 --> 00:04:47,960
It's just a soup.

175
00:04:48,160 --> 00:04:48,500
All right.

176
00:04:48,560 --> 00:04:48,760
All right.

177
00:04:48,760 --> 00:04:49,980
Well, now that we've got the important things covered.

178
00:04:49,980 --> 00:04:50,240
Yeah, yeah.

179
00:04:50,460 --> 00:04:53,600
The point is, Singapore is great, because you've got this nexus of all these different flavors.

180
00:04:53,620 --> 00:04:54,120
Yeah, yeah, yeah.

181
00:04:54,120 --> 00:04:54,320
Of course.

182
00:04:54,320 --> 00:04:57,020
Right, so you're right next to Malaysia, and they have their own, like...

183
00:04:57,020 --> 00:05:00,480
That's why I've been asking what people recommend, because there's so many things to choose

184
00:05:00,480 --> 00:05:00,720
from.

185
00:05:00,900 --> 00:05:01,880
And there's no real...

186
00:05:01,880 --> 00:05:06,100
There are some things that are Singaporean, but the best part about Singapore is the nexus

187
00:05:06,100 --> 00:05:11,340
of all these other things from Asia proper, like the rest of it, China, Thailand's north

188
00:05:11,340 --> 00:05:12,060
of here.

189
00:05:12,200 --> 00:05:13,180
You've got, you know...

190
00:05:13,180 --> 00:05:14,400
A veritable melage.

191
00:05:14,640 --> 00:05:16,260
Yeah, and then, oh, and the Indian food.

192
00:05:16,380 --> 00:05:16,720
Oh, God.

193
00:05:16,780 --> 00:05:17,400
And the Malay food.

194
00:05:17,640 --> 00:05:18,600
Just everything you can imagine.

195
00:05:19,000 --> 00:05:21,260
Now, what's the characteristic of Malay food?

196
00:05:21,820 --> 00:05:22,800
Malay food...

197
00:05:22,800 --> 00:05:23,640
What's its deal?

198
00:05:24,460 --> 00:05:27,500
Well, it's not too different, because they are just next door, right?

199
00:05:27,560 --> 00:05:28,120
Sure, sure.

200
00:05:28,280 --> 00:05:31,240
But when you say Malaysian, that encompasses the country...

201
00:05:31,240 --> 00:05:31,440
It's big.

202
00:05:31,700 --> 00:05:32,840
Well, yeah, but the country...

203
00:05:32,840 --> 00:05:35,320
And then there's different regions that have their own culture, like Penang.

204
00:05:35,580 --> 00:05:36,060
Right, right, right.

205
00:05:36,080 --> 00:05:38,940
It's own food, you know, thing.

206
00:05:39,320 --> 00:05:46,080
But Malaysia has, like, a 20% ethnic Chinese population.

207
00:05:46,840 --> 00:05:47,740
So you've got that going on.

208
00:05:47,760 --> 00:05:49,280
And then you've got the rest who are Malay.

209
00:05:49,540 --> 00:05:50,060
Right, right, right.

210
00:05:50,060 --> 00:05:53,380
Right, and so Malay doesn't describe everybody in the country.

211
00:05:53,480 --> 00:05:54,660
Malaysians describe everybody in the country.

212
00:05:54,660 --> 00:05:54,840
Sure, sure.

213
00:05:55,060 --> 00:06:03,220
So the Malay people predate, obviously, the Chinese, and they have a very different cuisine.

214
00:06:03,620 --> 00:06:04,700
And what's their cuisine like?

215
00:06:05,300 --> 00:06:14,660
Oh, um, as far as I, you know, it's in some, for some parts of that cuisine, for some part

216
00:06:14,660 --> 00:06:18,920
of the population, it's informed by religion, which in this case is Muslim, right?

217
00:06:19,020 --> 00:06:19,260
Sure.

218
00:06:19,260 --> 00:06:21,420
So there are some things that are not in that cuisine.

219
00:06:21,420 --> 00:06:21,740
For sure.

220
00:06:22,040 --> 00:06:27,000
But otherwise, it's, I think it's fairly, I don't know, it's, I don't know how to describe

221
00:06:27,000 --> 00:06:27,200
it, actually.

222
00:06:27,200 --> 00:06:28,960
Well, let me model for you, right?

223
00:06:29,740 --> 00:06:32,120
I would say, and this is not complete, but...

224
00:06:32,120 --> 00:06:32,280
Sure.

225
00:06:32,660 --> 00:06:35,020
Uh, if I were to describe American food, right?

226
00:06:35,020 --> 00:06:36,060
We have a, we don't have a...

227
00:06:36,060 --> 00:06:40,500
Hold on, if I were to describe American food, I would say we have, we have a lot of meat

228
00:06:40,500 --> 00:06:44,040
that we cook, and we'll have sides of vegetables with it.

229
00:06:44,100 --> 00:06:46,120
That's kind of like a template for generic American food.

230
00:06:46,120 --> 00:06:46,240
Right.

231
00:06:46,340 --> 00:06:48,580
As opposed to the rest of the world where it's vegetables and some salad.

232
00:06:48,580 --> 00:06:52,440
You might fry the chicken, or you might have slices of beef, you might have a steak, but

233
00:06:52,440 --> 00:06:54,940
you have separate, separate sides.

234
00:06:55,100 --> 00:06:58,860
Now, we have another style, which I would call anything between two slices of bread.

235
00:06:59,060 --> 00:06:59,280
Right.

236
00:06:59,420 --> 00:07:03,340
And you could have a hamburger, you could have a sandwich, you could have a Reuben, whatever

237
00:07:03,340 --> 00:07:05,640
it is, we're going to put it between two slices of bread.

238
00:07:05,800 --> 00:07:05,980
Yeah.

239
00:07:06,100 --> 00:07:10,640
And then I think, it's debatable which one is bigger, but I would say we have the Chinese

240
00:07:10,640 --> 00:07:11,640
slash Mexican.

241
00:07:12,060 --> 00:07:12,220
Yeah.

242
00:07:12,300 --> 00:07:12,460
Right?

243
00:07:12,520 --> 00:07:14,680
And then that's a, that's another subset of food.

244
00:07:14,860 --> 00:07:15,000
Right.

245
00:07:15,080 --> 00:07:17,460
And the American Chinese food is its own distinct thing.

246
00:07:17,520 --> 00:07:18,640
It's from, from, right, right.

247
00:07:18,660 --> 00:07:19,640
Sugar with some flavors, yeah.

248
00:07:19,640 --> 00:07:20,000
Right, right.

249
00:07:20,100 --> 00:07:23,940
And, and, and us cosmopolitan worldly people be like, oh my God, it's terrible.

250
00:07:24,120 --> 00:07:29,140
But then, in fact, American Chinese food is kind of like chicken and dumplings, it's comfort

251
00:07:29,140 --> 00:07:29,440
food.

252
00:07:29,820 --> 00:07:29,940
Yeah.

253
00:07:30,300 --> 00:07:34,740
So, and then, but then we also have Mexican food, which is like tacos, burritos, occasionally

254
00:07:34,740 --> 00:07:35,520
enchiladas, chips.

255
00:07:35,520 --> 00:07:36,040
American Mexican, yeah.

256
00:07:36,040 --> 00:07:36,200
Right.

257
00:07:36,300 --> 00:07:41,360
So like, that whole collection, if someone were to ask me, how, what's the deal with American

258
00:07:41,360 --> 00:07:42,780
food, that's what I would start with.

259
00:07:42,880 --> 00:07:44,380
Well, okay, so it's the opposite for the rest of the world.

260
00:07:44,840 --> 00:07:47,460
The rest of the world does vegetables first and a dash of meat.

261
00:07:47,740 --> 00:07:48,060
Right, right, right.

262
00:07:48,060 --> 00:07:53,580
So if you go to China, if you go to, even here, soup is mostly broth and vegetables and, you

263
00:07:53,580 --> 00:07:56,700
know, mushrooms and whatever, and then maybe for flavoring, meat.

264
00:07:57,200 --> 00:07:57,600
Right, right.

265
00:07:57,740 --> 00:07:57,960
Sure.

266
00:07:58,200 --> 00:08:01,980
And, so now, so now back, let me take you back to Malaysia.

267
00:08:01,980 --> 00:08:04,400
So Malaysia actually has a little bit, I think in the, in the meat to vegetable ratio, I

268
00:08:04,400 --> 00:08:07,580
think it's a little bit more even handed than, than it is, for example, China.

269
00:08:07,880 --> 00:08:08,080
Right.

270
00:08:08,220 --> 00:08:10,060
Where you have a lot of, a lot of vegetables.

271
00:08:10,360 --> 00:08:12,840
Oh, oh, and another characteristic of American food, not spicy.

272
00:08:13,100 --> 00:08:13,460
Oh, sorry.

273
00:08:13,760 --> 00:08:15,680
Malay food can be spicy and sometimes not.

274
00:08:15,820 --> 00:08:16,800
It can be a lot of fried food.

275
00:08:16,880 --> 00:08:19,260
There can be a lot of, you know, I don't know, it's just.

276
00:08:19,560 --> 00:08:22,100
Oh, now fried food, that's an important like trait of food.

277
00:08:22,240 --> 00:08:26,480
Like it's, it would be a slight misconception to think that American food is fried a lot.

278
00:08:26,680 --> 00:08:29,120
In fact, there are some special parts and not special.

279
00:08:29,120 --> 00:08:33,740
There's, there's some sections that there's a lot of fried food, but really you don't really

280
00:08:33,740 --> 00:08:37,660
see fried food as much as I think you do in other, other cultures in American food.

281
00:08:37,780 --> 00:08:38,960
So there's a lot of frying.

282
00:08:39,160 --> 00:08:39,280
Right.

283
00:08:39,640 --> 00:08:41,680
Well, not, yeah, at least it seems to me, but.

284
00:08:42,060 --> 00:08:43,020
A noticeable amount.

285
00:08:43,200 --> 00:08:46,960
Here's my, here's where I get into trouble is because I want, while I want to characterize

286
00:08:46,960 --> 00:08:51,740
certain things as being typically Malaysian, a lot, it's not, a lot of the food that's

287
00:08:51,740 --> 00:08:54,980
in Malaysia is actually also Indonesian.

288
00:08:55,360 --> 00:08:55,680
Right, right, right.

289
00:08:55,680 --> 00:08:56,960
So, and so you get into trouble.

290
00:08:56,960 --> 00:09:00,860
Well, I mean, the basis of American food is like, you know, Western Europeans and then,

291
00:09:00,860 --> 00:09:02,940
and then South Americans, right?

292
00:09:02,940 --> 00:09:03,760
South, yeah, yeah.

293
00:09:04,120 --> 00:09:04,200
So.

294
00:09:04,600 --> 00:09:05,160
Southwestern cuisine.

295
00:09:05,160 --> 00:09:05,520
Corn.

296
00:09:05,800 --> 00:09:06,180
Right, right.

297
00:09:06,200 --> 00:09:06,580
Maize.

298
00:09:07,040 --> 00:09:07,220
Yeah.

299
00:09:07,340 --> 00:09:07,440
Yeah.

300
00:09:07,620 --> 00:09:10,200
So our, our food isn't from us.

301
00:09:10,400 --> 00:09:11,260
Well, but I mean, yeah, exactly.

302
00:09:11,340 --> 00:09:16,560
So I don't, so one of my favorite dishes that I would, that I would eat all day for, I mean,

303
00:09:16,580 --> 00:09:21,040
I could eat it every meal for the rest of my life is Nazi goreng, which is a Malaysian,

304
00:09:22,340 --> 00:09:23,720
sorry, Indonesian dish.

305
00:09:24,080 --> 00:09:24,400
Right.

306
00:09:24,400 --> 00:09:25,460
But you can get it in Malaysia.

307
00:09:25,680 --> 00:09:26,460
So, so what is it?

308
00:09:26,760 --> 00:09:29,420
It's rice and meat and certain spices in the rice.

309
00:09:29,520 --> 00:09:30,900
And it is so good.

310
00:09:31,360 --> 00:09:35,560
It is, they have it actually in our hotel where you and I are staying at one of those

311
00:09:35,560 --> 00:09:37,600
Starwood properties here in Singapore, of which there are many.

312
00:09:38,180 --> 00:09:40,660
And that is not the real thing.

313
00:09:41,020 --> 00:09:41,520
No, no.

314
00:09:41,720 --> 00:09:43,200
That's like American Chinese food.

315
00:09:43,560 --> 00:09:44,740
You don't want to get that.

316
00:09:44,860 --> 00:09:48,360
It's, I mean, they do, normally our hotel does a pretty good job, but that's not, it's

317
00:09:48,360 --> 00:09:48,860
not the real thing.

318
00:09:49,860 --> 00:09:51,800
But yeah, yeah.

319
00:09:52,260 --> 00:09:52,500
Okay.

320
00:09:52,720 --> 00:09:53,020
All right.

321
00:09:53,420 --> 00:09:53,720
All right.

322
00:09:53,780 --> 00:09:57,560
Well, you've done a good job of dodging, describing Malaysian food.

323
00:09:57,840 --> 00:10:00,460
I'll have to go look it up in Wikipedia and I'll sort it out.

324
00:10:00,460 --> 00:10:00,900
Or just go try it.

325
00:10:00,920 --> 00:10:02,220
You can get it here in Singapore.

326
00:10:02,340 --> 00:10:02,500
They have it.

327
00:10:02,500 --> 00:10:06,980
You see, if you could identify where I would go to get it, then therefore it exists.

328
00:10:07,300 --> 00:10:07,720
Or that's Malaysia.

329
00:10:07,720 --> 00:10:08,860
And then you could say what it was.

330
00:10:08,980 --> 00:10:09,240
Yeah, yeah.

331
00:10:09,360 --> 00:10:10,660
I mean, there's, yeah.

332
00:10:11,200 --> 00:10:12,540
You know who would know even better?

333
00:10:13,000 --> 00:10:14,220
Our buddy Adrian Cole.

334
00:10:14,780 --> 00:10:15,620
Oh, yeah, yeah.

335
00:10:15,640 --> 00:10:16,440
He probably wouldn't know.

336
00:10:16,460 --> 00:10:17,060
He lives in Malaysia.

337
00:10:17,200 --> 00:10:17,760
He probably wouldn't know.

338
00:10:17,820 --> 00:10:18,620
Well, all right.

339
00:10:18,660 --> 00:10:20,060
For the second half of our conversation.

340
00:10:20,980 --> 00:10:22,580
So, so, you know.

341
00:10:22,800 --> 00:10:23,800
You're just going to let that pass.

342
00:10:23,860 --> 00:10:25,720
We don't even want to explain who Adrian is.

343
00:10:25,720 --> 00:10:26,360
No, it's fine.

344
00:10:26,460 --> 00:10:28,340
People that have the internet, they can look it up.

345
00:10:28,600 --> 00:10:29,460
Oh, look, I'll be like you.

346
00:10:29,860 --> 00:10:31,300
Does anyone have the internet?

347
00:10:31,580 --> 00:10:31,960
Yeah, yeah.

348
00:10:32,000 --> 00:10:32,360
The internet.

349
00:10:32,700 --> 00:10:33,000
Internet.

350
00:10:33,400 --> 00:10:33,700
Internet.

351
00:10:34,320 --> 00:10:34,800
Well, Adrian.

352
00:10:35,060 --> 00:10:37,400
Do you have three and a half floppy disks?

353
00:10:37,800 --> 00:10:38,100
Anyone?

354
00:10:38,420 --> 00:10:40,020
Three and a half floppy disks.

355
00:10:40,160 --> 00:10:40,360
Exactly.

356
00:10:41,160 --> 00:10:42,400
Well, you should Google him.

357
00:10:42,580 --> 00:10:46,020
He's a, he works on the Spring Cloud team, does distributed tracing.

358
00:10:46,480 --> 00:10:47,020
Yeah, yeah.

359
00:10:47,240 --> 00:10:47,600
Open tracing.

360
00:10:47,600 --> 00:10:51,860
So, so, so, so you, you have this book that you wrote a while ago, and I heard the journey

361
00:10:51,860 --> 00:10:53,700
of the bird who flies through the clouds and everything.

362
00:10:53,760 --> 00:10:55,400
Yeah, from Indonesia, no less.

363
00:10:55,420 --> 00:10:55,520
Yeah.

364
00:10:55,520 --> 00:10:57,540
I like, I always like the way you, you open up your talks.

365
00:10:57,600 --> 00:10:58,060
Very nice.

366
00:10:58,220 --> 00:11:02,100
It's very important to be, make sure they understand from the outside that this is, this is not,

367
00:11:02,420 --> 00:11:04,560
this is not the smartest talk you could be in.

368
00:11:04,660 --> 00:11:05,260
Sure, sure.

369
00:11:05,560 --> 00:11:07,180
I don't, because they're going to arrive at that conclusion one way or another.

370
00:11:07,320 --> 00:11:08,960
I want to make sure that I'm the one who breaks the music.

371
00:11:08,960 --> 00:11:09,020
That's right.

372
00:11:09,020 --> 00:11:10,360
I prefer that approach as well.

373
00:11:10,360 --> 00:11:10,680
Yeah, yeah.

374
00:11:10,920 --> 00:11:13,700
The, please do not expect very much.

375
00:11:14,240 --> 00:11:15,900
Under promise, over deliver.

376
00:11:16,080 --> 00:11:17,280
Well, or at least just under promise.

377
00:11:17,280 --> 00:11:17,940
Yeah, there you go.

378
00:11:17,940 --> 00:11:18,240
That first book.

379
00:11:18,540 --> 00:11:20,840
So, so then, so you wrote this big book with Kenny, right?

380
00:11:20,880 --> 00:11:21,080
Yes.

381
00:11:21,220 --> 00:11:22,240
Another great person.

382
00:11:22,480 --> 00:11:22,760
Amazing.

383
00:11:22,760 --> 00:11:27,340
And what, what is, maybe there's more than one, but what's one part of the book that

384
00:11:27,340 --> 00:11:30,180
you find you like never talk about that you wish you would?

385
00:11:30,680 --> 00:11:31,000
Operations.

386
00:11:31,420 --> 00:11:32,640
And so, so what's in that part?

387
00:11:32,920 --> 00:11:35,240
It's all about, it's all, it's all, it's all.

388
00:11:35,260 --> 00:11:39,300
It is everything involved after you've gotten the REST API up and running or the message.

389
00:11:39,520 --> 00:11:41,920
So all the stuff like observability, how do you monitor it?

390
00:11:41,940 --> 00:11:43,140
How do you, what about remediation?

391
00:11:43,260 --> 00:11:45,840
How do you, what happens when the service falls down?

392
00:11:46,180 --> 00:11:46,320
Right.

393
00:11:46,440 --> 00:11:49,840
And we use Spring and Cloud Foundry in the book.

394
00:11:49,840 --> 00:11:52,500
The book is all about how to build apps that survive and thrive in the cloud using Spring

395
00:11:52,500 --> 00:11:53,640
Boot, Spring Cloud, and Cloud Foundry, right?

396
00:11:53,720 --> 00:11:59,060
And so one thing that we really harp on in the book is that if there's a problem you want

397
00:11:59,060 --> 00:12:01,240
to solve with infrastructure, you can program that infrastructure.

398
00:12:01,460 --> 00:12:03,900
So the way to solve problems with code is just to write more code, right?

399
00:12:04,000 --> 00:12:07,760
So, and that's the nice thing about Cloud Foundry is you can just, you can program it.

400
00:12:07,880 --> 00:12:10,680
And there's a nice reactive Java client that people on the Spring team wrote.

401
00:12:10,760 --> 00:12:12,580
So it works nicely with that stack, you know?

402
00:12:12,800 --> 00:12:17,420
And we, so for example, if something goes wrong, you can detect, you can write sensors.

403
00:12:17,500 --> 00:12:20,880
You can write things that look at the output of logs using, you can use Java API to read

404
00:12:20,880 --> 00:12:21,880
things from LogoGator.

405
00:12:22,020 --> 00:12:23,540
You can start to analyze what's been going on.

406
00:12:23,540 --> 00:12:26,620
Yeah, and then use that to feed into event processing, basically.

407
00:12:26,800 --> 00:12:29,080
Say, okay, well, I've detected, or complex event processing, right?

408
00:12:29,080 --> 00:12:29,260
Mm-hmm.

409
00:12:29,260 --> 00:12:32,180
I've detected, I've detected the word error in the log two times in the last minute.

410
00:12:32,480 --> 00:12:33,600
Send in a pager or something, you know?

411
00:12:33,600 --> 00:12:34,200
Oh, yeah, yeah, yeah.

412
00:12:34,200 --> 00:12:37,540
And you can use, you can use Spring Cloud Data Flow to compose pipelines that respond to

413
00:12:37,540 --> 00:12:38,540
those errors.

414
00:12:38,680 --> 00:12:42,160
You can do, so, I mean, Cloud Foundry, this book predates ever so slightly some of the more

415
00:12:42,160 --> 00:12:45,360
complex options for load, for auto-scaling in Cloud Foundry.

416
00:12:45,360 --> 00:12:45,780
Oh, right, right.

417
00:12:46,000 --> 00:12:47,060
You put that in the updates.

418
00:12:47,420 --> 00:12:53,140
Yeah, well, definitely, the update is already, there's so much to do, but in the book, we

419
00:12:53,140 --> 00:12:57,240
demonstrate, okay, well, if there's an error condition detected by some sort of sensor,

420
00:12:57,580 --> 00:13:03,200
put that into a Spring Cloud Data Flow pipeline, have something on the other end, a sync, which

421
00:13:03,200 --> 00:13:07,680
is a component that takes inputs and then does something accordingly, have a sync that auto-scales

422
00:13:07,680 --> 00:13:09,880
based on whatever arbitrary condition.

423
00:13:09,880 --> 00:13:14,300
So you can take whatever input over here, turn that into a ratio between 1 and 10 or whatever,

424
00:13:14,900 --> 00:13:17,580
and if it exceeds that number, then you scale up.

425
00:13:17,620 --> 00:13:20,400
If it falls below that number, then you scale down, right?

426
00:13:20,520 --> 00:13:26,340
So where do you think the line, and just like defining Malaysian food, maybe it's very blurry,

427
00:13:26,780 --> 00:13:31,920
but like, where do you think the line is between the developers putting all that instrumentation

428
00:13:31,920 --> 00:13:35,900
and stuff in there and determining how it should behave, and then the people who are, like,

429
00:13:35,960 --> 00:13:37,060
operating the software?

430
00:13:37,540 --> 00:13:44,640
Like, who, how does the developer figure out, oh, I've done enough putting stuff in

431
00:13:44,640 --> 00:13:44,980
a sync.

432
00:13:45,180 --> 00:13:45,340
Right.

433
00:13:45,520 --> 00:13:50,360
Like, now I've done all I can, or all that I should, because I don't really know what I'm

434
00:13:50,360 --> 00:13:54,020
doing here, and someone else needs to, like, figure out what they would do with the stuff

435
00:13:54,020 --> 00:13:54,420
I'm throwing.

436
00:13:54,460 --> 00:14:01,940
So the nice thing about this is the platform has had, at the time we wrote this, three existing

437
00:14:01,940 --> 00:14:02,860
options for auto-scaling.

438
00:14:03,180 --> 00:14:06,820
And those are just knobs you could turn that were built into the platform.

439
00:14:07,340 --> 00:14:09,040
And so all we're doing in this...

440
00:14:09,040 --> 00:14:09,380
Well, that's true.

441
00:14:09,440 --> 00:14:11,880
You've got limited options, so you can kind of, like...

442
00:14:11,880 --> 00:14:12,760
Like RAM, CPU...

443
00:14:12,760 --> 00:14:13,560
Or, I shouldn't say limited.

444
00:14:13,720 --> 00:14:15,020
You've got the perfect amount of options.

445
00:14:15,020 --> 00:14:15,220
Right.

446
00:14:15,320 --> 00:14:17,220
Well, you've got the ones that are calm, 80% cases.

447
00:14:17,580 --> 00:14:20,340
So by definition, you're already set for the 80% case.

448
00:14:20,340 --> 00:14:24,420
What we wanted to show was that if you wanted to, if there's something outside of that 20%,

449
00:14:24,420 --> 00:14:29,720
outside that 80% in the 20% case, that you had the toolkit there to build that, right?

450
00:14:29,880 --> 00:14:30,040
Right.

451
00:14:30,180 --> 00:14:35,480
And so operators, this would be an operator solution first, and only then does it turn

452
00:14:35,480 --> 00:14:36,200
into a developer solution.

453
00:14:36,640 --> 00:14:37,680
And if it's...

454
00:14:37,680 --> 00:14:39,620
Hopefully, at that point, it doesn't go back to the operator.

455
00:14:39,720 --> 00:14:41,020
Hopefully, at that point, we've solved it, you know?

456
00:14:41,220 --> 00:14:41,600
Yeah, yeah.

457
00:14:41,980 --> 00:14:45,700
But if you do need to, again, you can drive alerting based on this.

458
00:14:45,800 --> 00:14:46,540
You could...

459
00:14:46,540 --> 00:14:47,100
Again, I showed...

460
00:14:47,100 --> 00:14:51,720
I mentioned having the output of those sensors feed into something that does auto-scaling,

461
00:14:51,820 --> 00:14:55,260
but the sync that does auto-scaling could just as easily be something that sends an email

462
00:14:55,260 --> 00:14:56,780
by using SendGrid or something, right?

463
00:14:56,900 --> 00:14:57,360
Yeah, yeah, yeah.

464
00:14:57,540 --> 00:14:58,760
Or PagerDuty or whatever.

465
00:14:59,000 --> 00:14:59,240
Right.

466
00:14:59,240 --> 00:15:01,960
And then, so, like, we...

467
00:15:01,960 --> 00:15:03,600
You know, you mentioned Adrian earlier, right?

468
00:15:03,760 --> 00:15:03,860
Yeah.

469
00:15:04,240 --> 00:15:09,060
I assume he still does this, but, you know, he's worked on distributed tracing and things

470
00:15:09,060 --> 00:15:09,400
like that.

471
00:15:09,560 --> 00:15:09,860
Open tracing, yeah.

472
00:15:09,860 --> 00:15:16,040
And it seems like a large part of open tracing, as you say, or whatever, is having the developers

473
00:15:16,040 --> 00:15:18,460
properly instrument their code somewhere, right?

474
00:15:18,540 --> 00:15:24,100
Like, because, you know, it's entertaining to see the execution path of something, right?

475
00:15:24,160 --> 00:15:27,300
Like, I guess what I'm getting at is there's two models of doing tracing.

476
00:15:27,420 --> 00:15:30,700
One of them is from the outside, and you're kind of looking at the opaqueness.

477
00:15:30,980 --> 00:15:31,080
Right.

478
00:15:31,080 --> 00:15:32,160
You can't really get into the code.

479
00:15:32,560 --> 00:15:35,260
And another one is, like, it's actually...

480
00:15:35,260 --> 00:15:36,140
How would it go?

481
00:15:36,300 --> 00:15:38,020
Outside, no, inside out.

482
00:15:38,140 --> 00:15:38,300
Right.

483
00:15:38,440 --> 00:15:38,600
Right?

484
00:15:38,980 --> 00:15:41,260
But that implies that developers...

485
00:15:41,260 --> 00:15:41,700
Need to be aware.

486
00:15:41,700 --> 00:15:44,440
Someone has come around and, like, stuck things in the code.

487
00:15:44,520 --> 00:15:46,120
Now, maybe they do it, like...

488
00:15:46,120 --> 00:15:49,820
I don't know what the Java kids call it anymore, but maybe they do it after it was compiled and

489
00:15:49,820 --> 00:15:51,320
they reflectively put it in or whatever.

490
00:15:51,440 --> 00:15:54,900
But there's, like, actual getting in there and messing around with stuff.

491
00:15:55,120 --> 00:15:55,280
Right.

492
00:15:55,480 --> 00:15:57,540
And so is that accurate, first of all?

493
00:15:57,620 --> 00:15:59,760
And then so are there...

494
00:15:59,760 --> 00:16:03,460
Like, what's emerging is, like, if you're going to do this tracing, here are the things

495
00:16:03,460 --> 00:16:04,240
you should trace.

496
00:16:04,380 --> 00:16:05,020
Or does it...

497
00:16:05,020 --> 00:16:06,440
There's no common pattern.

498
00:16:06,560 --> 00:16:07,360
It's just, like, whatever.

499
00:16:07,460 --> 00:16:08,860
How do you figure out what to put in there?

500
00:16:09,040 --> 00:16:09,400
Well, okay.

501
00:16:09,500 --> 00:16:10,260
So, yeah.

502
00:16:10,420 --> 00:16:12,400
So the platform will give you...

503
00:16:12,400 --> 00:16:18,700
The platform will give you the opportunity to...

504
00:16:18,700 --> 00:16:20,880
Like, for example, these days we have Istio, right?

505
00:16:20,960 --> 00:16:21,440
We can use Istio.

506
00:16:21,680 --> 00:16:28,240
Istio is an ideal fit for ingress coming into the application.

507
00:16:28,680 --> 00:16:35,420
But once you've passed that threshold from the cloud controller or whatever, then it's

508
00:16:35,420 --> 00:16:35,880
up to your code.

509
00:16:36,000 --> 00:16:40,300
So there's actually intra-process, not between processes, but inside one single process.

510
00:16:40,720 --> 00:16:43,360
There's actually stuff happening inside that opaque black box, right?

511
00:16:43,720 --> 00:16:45,620
So if you're using something like...

512
00:16:45,620 --> 00:16:50,240
If you're using a service mesh of some sort, or a route service in Cloud Foundry or something

513
00:16:50,240 --> 00:16:54,600
like that, right, you can easily add tracing in that layer.

514
00:16:54,720 --> 00:16:55,460
Right, on the outside.

515
00:16:55,540 --> 00:16:57,520
And that'll give you the network.

516
00:16:57,700 --> 00:16:59,620
That'll give you the, you know, one hop to another.

517
00:16:59,780 --> 00:17:05,300
But when you want to go a step further, you need something that you can use for component

518
00:17:05,300 --> 00:17:07,220
boundaries, if not network boundaries, right?

519
00:17:07,240 --> 00:17:07,660
Yep, yep.

520
00:17:07,660 --> 00:17:10,100
And that is where you need to have code in your application.

521
00:17:10,240 --> 00:17:11,780
So these days we have Spring Cloud.

522
00:17:11,780 --> 00:17:19,100
Spring Cloud has an SPI called Sleuth, S-L-E-U-T-H, which is one of the hard...

523
00:17:19,100 --> 00:17:20,260
I get so many questions about that.

524
00:17:20,680 --> 00:17:24,960
You wouldn't believe the proportion of the world for which that particular English word

525
00:17:24,960 --> 00:17:25,780
is a troublesome word.

526
00:17:25,980 --> 00:17:26,580
Oh, yeah.

527
00:17:26,700 --> 00:17:28,240
Just knowing what it means or saying it?

528
00:17:28,240 --> 00:17:29,800
Just pronouncing it and all of the above.

529
00:17:29,860 --> 00:17:29,960
Yeah.

530
00:17:30,000 --> 00:17:31,920
It's just not a word that is easy to...

531
00:17:31,920 --> 00:17:32,720
That is a weird word.

532
00:17:32,980 --> 00:17:34,380
I have to look up the etymology of that.

533
00:17:34,660 --> 00:17:37,100
That feels like a word that came from, like, the Normans.

534
00:17:37,380 --> 00:17:38,140
Not the Normans.

535
00:17:38,220 --> 00:17:39,660
That came from, like, Vikings or something.

536
00:17:39,660 --> 00:17:39,900
Right, yeah.

537
00:17:40,000 --> 00:17:42,600
Something that was designed to flummox people a thousand years later.

538
00:17:42,600 --> 00:17:43,200
Oh, flummox.

539
00:17:43,220 --> 00:17:44,420
See, that's in the same school there.

540
00:17:44,680 --> 00:17:45,200
Darn it again.

541
00:17:45,800 --> 00:17:46,180
Either way.

542
00:17:47,740 --> 00:17:52,040
Yeah, so we have this SPI called Sleuth, of which we have one implementation that supports

543
00:17:52,040 --> 00:17:55,840
Zipkin, the Twitter distributed tracing platform, on which, of course, Adrian works.

544
00:17:56,600 --> 00:18:00,420
And so Sleuth provides hooks.

545
00:18:00,860 --> 00:18:02,300
We implement the Sleuth API.

546
00:18:02,420 --> 00:18:04,160
We use it in Spring Cloud and in Spring.

547
00:18:04,160 --> 00:18:08,020
So everywhere you have ingress and egress, whether it's across the network or from one

548
00:18:08,020 --> 00:18:11,860
service to another or from one component to another, that's useful to have that, we do it.

549
00:18:12,240 --> 00:18:12,340
Right.

550
00:18:12,400 --> 00:18:17,620
And then if you add the Zipkin binding for Sleuth, then it automatically publishes those

551
00:18:17,620 --> 00:18:25,800
bindings out of band over either HTTP, which is not the best choice because it's synchronous.

552
00:18:26,180 --> 00:18:29,660
So your request arrives and then something sends an HTTP request.

553
00:18:29,860 --> 00:18:31,840
Well, I don't want to sit there and wait for an acknowledgement.

554
00:18:31,840 --> 00:18:33,700
It's for all those curl programmers out there.

555
00:18:33,840 --> 00:18:35,160
Yeah, don't do that.

556
00:18:35,520 --> 00:18:36,840
Or you can use a broker.

557
00:18:37,080 --> 00:18:38,280
So you can publish it, fire and forget.

558
00:18:39,320 --> 00:18:40,880
And this is automatically done for you.

559
00:18:41,480 --> 00:18:45,660
So you make a REST call in your Spring code, for example, or if you invoke another method

560
00:18:45,660 --> 00:18:50,780
or whatever, you can tell Spring, I want all these things to be sampled or some percentage

561
00:18:50,780 --> 00:18:51,260
thereof.

562
00:18:51,760 --> 00:18:53,680
And you can prescribe a sampler.

563
00:18:55,100 --> 00:19:01,380
And Sleuth will publish that to whatever, you can say to publish it over Kafka or RabbitMQ.

564
00:19:01,860 --> 00:19:06,480
And then those messages eventually arrive at Zipkin itself, which then assimilates all the trace

565
00:19:06,480 --> 00:19:07,720
information into a graph.

566
00:19:07,780 --> 00:19:09,300
So we've got this wonderful framework.

567
00:19:09,440 --> 00:19:09,580
Right.

568
00:19:09,640 --> 00:19:15,000
And then equally wonderful is that you have a standardized way of doing it.

569
00:19:15,080 --> 00:19:15,220
Right.

570
00:19:15,280 --> 00:19:19,080
Like, you might even call that a, what are they used to, I never got a computer science

571
00:19:19,080 --> 00:19:20,820
degree, but a data structure.

572
00:19:21,080 --> 00:19:21,260
Yeah.

573
00:19:21,380 --> 00:19:23,480
Like, it's like, this is the way that you format stuff.

574
00:19:23,560 --> 00:19:25,160
This is the expected interaction pattern.

575
00:19:25,600 --> 00:19:27,520
So you don't invent that every single time.

576
00:19:27,540 --> 00:19:29,640
And actually, you don't even deal with it.

577
00:19:29,700 --> 00:19:34,680
So if you're using Cloud Foundry and you're doing something smart with the cloud controller

578
00:19:34,680 --> 00:19:40,720
and the route service or using a service mesh, or if you're using Spring Cloud Sleuth, there

579
00:19:40,720 --> 00:19:44,040
is no, you have the library, you have the dependency on the cost path, that's it.

580
00:19:44,500 --> 00:19:45,040
Right, right.

581
00:19:45,160 --> 00:19:45,760
So you're not actually.

582
00:19:46,500 --> 00:19:51,100
So then, like, one of your, if not the most common demo is a reservation system.

583
00:19:51,140 --> 00:19:51,340
Yes.

584
00:19:51,460 --> 00:19:51,600
Right?

585
00:19:52,320 --> 00:19:55,360
And if you remember the term business logic.

586
00:19:55,540 --> 00:19:55,820
Yes.

587
00:19:55,980 --> 00:19:58,360
Some places then there is some business logic.

588
00:19:58,360 --> 00:19:58,620
Yeah.

589
00:19:58,920 --> 00:19:59,640
Not much.

590
00:19:59,800 --> 00:20:00,420
Yeah, not much.

591
00:20:00,480 --> 00:20:03,620
So maybe this is a hard question and it automatically gets done.

592
00:20:03,700 --> 00:20:05,680
But for those little parts where there's business logic.

593
00:20:05,880 --> 00:20:06,040
Yeah.

594
00:20:06,260 --> 00:20:08,620
And let's assume you had to put in the tracing stuff.

595
00:20:08,740 --> 00:20:08,840
Right.

596
00:20:08,840 --> 00:20:09,960
Like, what would you put in?

597
00:20:10,140 --> 00:20:13,140
Ah, so if you wanted to instrument particular paths yourself.

598
00:20:13,160 --> 00:20:13,460
Yeah, yeah.

599
00:20:13,500 --> 00:20:14,940
Like, we're really inside the black box.

600
00:20:14,940 --> 00:20:15,520
So you can inject.

601
00:20:15,520 --> 00:20:18,800
Not only the application, but the actual, like, business logic-y code.

602
00:20:19,000 --> 00:20:19,360
Well, okay.

603
00:20:19,400 --> 00:20:19,980
So you can do that.

604
00:20:20,060 --> 00:20:21,780
You can inject what's called a span accessor.

605
00:20:21,980 --> 00:20:22,840
I think that's what it's called.

606
00:20:22,940 --> 00:20:23,940
It may have changed, actually.

607
00:20:23,940 --> 00:20:31,540
But we just moved some of that API to somewhere else.

608
00:20:31,860 --> 00:20:32,560
No, it's a different.

609
00:20:32,760 --> 00:20:33,220
Slightly changed.

610
00:20:33,280 --> 00:20:35,280
So it used to be you can inject something called a span accessor.

611
00:20:35,500 --> 00:20:35,660
Uh-huh.

612
00:20:35,780 --> 00:20:38,800
And then you would, basically there's some way by which you can get access to what we call

613
00:20:38,800 --> 00:20:39,240
a span.

614
00:20:39,520 --> 00:20:39,780
Uh-huh.

615
00:20:39,920 --> 00:20:40,300
Yeah, yeah, yeah.

616
00:20:40,300 --> 00:20:40,620
That's right.

617
00:20:40,700 --> 00:20:43,500
Which is, like, a segment of a process that's running somewhere.

618
00:20:43,500 --> 00:20:43,860
It's a hop.

619
00:20:44,220 --> 00:20:44,800
Yeah, yeah, yeah.

620
00:20:44,820 --> 00:20:45,140
That's right.

621
00:20:45,200 --> 00:20:45,380
That's right.

622
00:20:45,380 --> 00:20:47,360
So you have the trace, which is the aggregate A to Z.

623
00:20:47,640 --> 00:20:47,820
Yeah.

624
00:20:47,880 --> 00:20:49,160
I forgot I read about that.

625
00:20:49,180 --> 00:20:49,320
Right.

626
00:20:49,440 --> 00:20:49,820
Yeah, yeah.

627
00:20:49,820 --> 00:20:50,440
That makes sense.

628
00:20:50,600 --> 00:20:52,280
And then E to hop in the journey is called a span.

629
00:20:52,380 --> 00:20:52,740
So you might have.

630
00:20:52,740 --> 00:20:53,580
I just impressed myself there.

631
00:20:53,640 --> 00:20:54,580
I've actually read up on this stuff.

632
00:20:54,580 --> 00:20:54,940
You're pretty awesome.

633
00:20:55,080 --> 00:20:55,280
You should.

634
00:20:55,440 --> 00:21:01,080
But, like, I mean, what I'm getting at is, like, what do you want to log in the business

635
00:21:01,080 --> 00:21:01,600
logic?

636
00:21:01,760 --> 00:21:01,940
Oh.

637
00:21:02,200 --> 00:21:02,320
Right?

638
00:21:02,560 --> 00:21:03,720
Like, and what do you put in there?

639
00:21:03,840 --> 00:21:05,760
If I have a five-line method call.

640
00:21:06,020 --> 00:21:06,220
Yeah.

641
00:21:06,380 --> 00:21:10,760
That's just writing data to the database, I might want to trace that in addition to what

642
00:21:10,760 --> 00:21:11,860
Springwater automatically do.

643
00:21:12,580 --> 00:21:17,900
So you might say, if I remember your reservation system, I want to look up a person.

644
00:21:18,180 --> 00:21:18,440
Sure.

645
00:21:18,560 --> 00:21:18,760
Right?

646
00:21:19,060 --> 00:21:23,600
And one of the things you might log is when I get this person's name, I want to say, here's

647
00:21:23,600 --> 00:21:27,820
the name that I got, and here's what I looked up, or something like that.

648
00:21:27,820 --> 00:21:32,760
Now, the issue is that a lot of that could automatically be done for you, but, like, I mean, so that's

649
00:21:32,760 --> 00:21:34,100
why the reservation system's hard.

650
00:21:34,180 --> 00:21:38,320
But at some point, you want to know that, like, someone searched for the Coté Reservation,

651
00:21:38,920 --> 00:21:40,440
and this happened or not happened.

652
00:21:40,620 --> 00:21:45,320
Like, here's something that I'm sure, I don't know if this happens to you, but this happens

653
00:21:45,320 --> 00:21:50,540
to me all the time, and it's infuriating, is, like, on my passport, my name is Michael

654
00:21:50,540 --> 00:21:51,300
Richard Coté.

655
00:21:51,500 --> 00:21:51,720
Okay.

656
00:21:51,880 --> 00:21:52,100
Right?

657
00:21:52,520 --> 00:21:56,180
And for whatever reason, in Concur, my name is Michael R. Coté.

658
00:21:56,860 --> 00:21:59,360
And so the computers get very confused.

659
00:21:59,440 --> 00:21:59,600
Yeah.

660
00:21:59,760 --> 00:22:00,000
Right?

661
00:22:00,060 --> 00:22:01,600
And it causes all sorts of problems.

662
00:22:01,700 --> 00:22:06,700
And so at some point, I feel like there should be some tracing that's like, Michael Richard

663
00:22:06,700 --> 00:22:10,780
Coté came in, but then we were looking for Michael R. Coté.

664
00:22:11,180 --> 00:22:11,740
Awkward.

665
00:22:11,840 --> 00:22:14,940
So what, and, like, how do I log that or whatever?

666
00:22:14,960 --> 00:22:17,560
Well, okay, so tracing isn't a great fit for that.

667
00:22:17,920 --> 00:22:18,240
Right, right.

668
00:22:18,260 --> 00:22:24,100
Because, so you can include context about the journey of a particular message, but the

669
00:22:24,100 --> 00:22:26,900
goal isn't so much to record the context, it's about to record the message.

670
00:22:26,900 --> 00:22:31,940
So basically all I'm doing in tracing is, whatever span I'm operating in, whatever sub-segment

671
00:22:31,940 --> 00:22:35,680
of the overall transaction, I'm just kind of throwing extra stuff in there.

672
00:22:35,720 --> 00:22:36,500
Meditate it if you want.

673
00:22:36,500 --> 00:22:37,840
That might be useful at some point.

674
00:22:38,100 --> 00:22:40,880
But you shouldn't use this as a way of finding information about that.

675
00:22:41,080 --> 00:22:45,160
So you'd have a whole separate system that was tracing, like, this name.

676
00:22:45,400 --> 00:22:48,000
Well, because, and the reason is because sampler, the reason is because your distributed

677
00:22:48,000 --> 00:22:52,320
tracing system isn't going to keep by default if you're doing something, unless you're doing

678
00:22:52,320 --> 00:22:55,520
something terribly wrong, which is, by the way, what I do on stage, and I tell people

679
00:22:55,520 --> 00:22:56,020
don't do it.

680
00:22:56,200 --> 00:22:59,500
Right, you're like, I'm the number one contributor, the number one contributor of, the number one

681
00:22:59,500 --> 00:23:00,760
contributor of bugs.

682
00:23:01,080 --> 00:23:07,320
But no, but I tell people don't, because in your demo, in your exam, in my demo, I record

683
00:23:07,320 --> 00:23:08,420
every single trace.

684
00:23:08,660 --> 00:23:09,160
Right, right, right.

685
00:23:09,160 --> 00:23:11,600
Every single request response anywhere in the system I record.

686
00:23:11,600 --> 00:23:12,880
So that's why my question is going to worry.

687
00:23:12,880 --> 00:23:13,720
But you're not going to do that for most people.

688
00:23:13,720 --> 00:23:17,440
You're actually recording, you're tracking the execution of the program.

689
00:23:17,440 --> 00:23:20,760
Right, but most people don't, you would overwhelm your tracing system if you did that.

690
00:23:21,040 --> 00:23:23,160
So by default, Spring Cloud Sleuth would capture 10%.

691
00:23:23,160 --> 00:23:26,840
Right, right, and then you do, like, I don't know, numbers, but you do the statistical thing

692
00:23:26,840 --> 00:23:27,640
where it's a sampling.

693
00:23:27,920 --> 00:23:28,380
Yeah, exactly.

694
00:23:28,500 --> 00:23:32,960
And you can provide a custom sampler, which Spring Cloud will consult to determine whether

695
00:23:32,960 --> 00:23:34,400
it should trace this request or this span.

696
00:23:35,040 --> 00:23:39,020
So my point is, that information is incidental.

697
00:23:39,100 --> 00:23:43,000
It's nice to know it was Michael, but we're more interested in the timing and the latency.

698
00:23:43,000 --> 00:23:47,220
And as I found out by the airline systems in the world, no one cares if that error happens.

699
00:23:47,380 --> 00:23:47,520
No.

700
00:23:47,900 --> 00:23:48,180
Yeah, no.

701
00:23:48,640 --> 00:23:53,220
They just return some red text on the web page and they say, must check in at desk.

702
00:23:53,560 --> 00:23:54,120
All the time.

703
00:23:54,200 --> 00:23:55,260
Oh, that's so annoying.

704
00:23:55,500 --> 00:23:55,580
Yeah.

705
00:23:55,900 --> 00:24:00,420
Like, you would think we would use some of our Bayesian big data machine learning to

706
00:24:00,420 --> 00:24:02,960
figure out that, like, this is the same person.

707
00:24:03,160 --> 00:24:03,700
It can't be done.

708
00:24:03,960 --> 00:24:04,100
Huh.

709
00:24:04,240 --> 00:24:08,040
All right, so is there another section that you feel like doesn't, that was operations?

710
00:24:08,520 --> 00:24:09,240
Yeah, and that's a big one.

711
00:24:09,260 --> 00:24:12,640
And then we burrowed into, like, tracing and sleuths and Zipkinites.

712
00:24:12,660 --> 00:24:14,440
No, that's covered in that chapter as well.

713
00:24:14,540 --> 00:24:14,980
Right, right.

714
00:24:15,140 --> 00:24:17,060
And also actuator, the observable.

715
00:24:17,360 --> 00:24:21,060
So sampling for traces is one thing, but also metrics.

716
00:24:21,540 --> 00:24:21,800
Oh, yes.

717
00:24:21,800 --> 00:24:23,780
And these are two things, these are two sides of the same corner.

718
00:24:23,780 --> 00:24:25,940
What does metrics mean in your world?

719
00:24:26,080 --> 00:24:31,660
Metrics are, I want to accumulate keys and values and calculate statistics based on those.

720
00:24:32,300 --> 00:24:33,200
Like, wait, what's a good example?

721
00:24:33,200 --> 00:24:33,820
So if you think about...

722
00:24:33,820 --> 00:24:34,180
Or a bad one.

723
00:24:34,440 --> 00:24:40,840
Well, okay, so imagine, so now, instead of asking about Richard or Josh's particular transaction,

724
00:24:41,160 --> 00:24:43,480
I want to know just how many transactions I've had, period.

725
00:24:43,580 --> 00:24:44,940
I want to count every single one of them.

726
00:24:45,120 --> 00:24:47,420
But I'm not going to store a heap of metadata about each one.

727
00:24:47,460 --> 00:24:49,020
I just want to increment a counter somewhere.

728
00:24:49,320 --> 00:24:49,520
Right.

729
00:24:49,600 --> 00:24:51,940
And then I want to be able to see a subset for that.

730
00:24:51,940 --> 00:24:54,580
I want to say, okay, these are all, for example, all the HTTP requests.

731
00:24:54,680 --> 00:24:56,320
I had one million of them, right?

732
00:24:56,620 --> 00:24:59,680
And then I could say, oh, well, how many of them were HTTP GET requests?

733
00:24:59,860 --> 00:25:01,420
Well, there's, you know, 80% of those.

734
00:25:01,500 --> 00:25:04,180
And then how many of them were HTTP GET that returned 200?

735
00:25:04,380 --> 00:25:05,880
Okay, so 99% of those.

736
00:25:06,000 --> 00:25:09,360
And so you keep different derivations of these numbers.

737
00:25:09,440 --> 00:25:10,200
But they're still just numbers.

738
00:25:10,740 --> 00:25:15,100
And you can keep those in your Java process, if you like.

739
00:25:15,460 --> 00:25:19,800
But that's pretty useless, because then you'd have to visit each node to see the stats about that process.

740
00:25:20,240 --> 00:25:24,420
Or you could publish them to a time series database or a monitoring tool.

741
00:25:24,740 --> 00:25:27,640
And so we have now this new framework in Spring Boot.

742
00:25:28,040 --> 00:25:29,780
Well, we have this framework that we Pivotal developed.

743
00:25:30,260 --> 00:25:36,240
We hired a guy named John Schneider from Netflix who, you know, they're not terrible at operations and monitoring, are they?

744
00:25:36,300 --> 00:25:38,020
So we thought he'd be a good fit.

745
00:25:38,060 --> 00:25:43,760
So he came in and he built this framework called Micrometer, which is you can use it independent of Spring.

746
00:25:44,120 --> 00:25:47,460
But why you would, I would, you know, it's not a thing.

747
00:25:47,520 --> 00:25:49,360
Well, developers like to do all sorts of crazy things.

748
00:25:49,380 --> 00:25:50,460
They're crazy, wild and crazy, yeah.

749
00:25:50,600 --> 00:25:54,540
So anyway, this Micrometer framework, it's a metrics facade.

750
00:25:55,060 --> 00:26:01,700
So you use one SPI, one SPI, and it'll publish based on whatever adapter you've contributed, you've configured.

751
00:26:02,080 --> 00:26:13,620
It'll publish those metrics to things like Prometheus, Graphite, OpenTSDB, Dynatrace, Atlas, you know, everything you can imagine.

752
00:26:13,820 --> 00:26:16,040
Datadog, SignalFX, InflexDB.

753
00:26:16,580 --> 00:26:20,000
And so these tools will then give you the ability to drill down, to draw pretty graphs.

754
00:26:20,240 --> 00:26:20,420
Right.

755
00:26:20,540 --> 00:26:25,720
So you pump your, from their perspective, raw metrics into this.

756
00:26:25,820 --> 00:26:29,920
And then they know how to analyze it and make sense of it, or make a sense of it.

757
00:26:30,120 --> 00:26:33,800
I don't want to be mono-judgmental and say there's only one sense.

758
00:26:34,280 --> 00:26:37,340
But like, you know, they make sense of all this stuff and do something with it.

759
00:26:37,340 --> 00:26:38,940
And you can query into that now.

760
00:26:39,280 --> 00:26:46,040
So again, Spring Boot and the platform will both give you automatically certain metrics that are interesting, like CPU usage and number of HTTP requests.

761
00:26:46,140 --> 00:26:51,920
But you can also say, okay, all these HTTP requests, you know, I don't want to know just the HTTP requests.

762
00:26:52,040 --> 00:26:55,460
I also want to know how many people have checked out the shopping cart.

763
00:26:55,900 --> 00:26:57,540
How many people purchased this product?

764
00:26:57,820 --> 00:26:59,420
How many people visited this page?

765
00:26:59,480 --> 00:27:01,520
How many people signed up for new accounts today?

766
00:27:01,560 --> 00:27:03,620
These are key...

767
00:27:03,620 --> 00:27:04,340
Right, right, right.

768
00:27:04,420 --> 00:27:04,620
What is that?

769
00:27:04,640 --> 00:27:05,400
Performance indicators?

770
00:27:05,420 --> 00:27:05,700
Yes.

771
00:27:06,320 --> 00:27:06,680
KPIs.

772
00:27:06,820 --> 00:27:07,420
My brain's a little...

773
00:27:07,420 --> 00:27:07,840
There you go.

774
00:27:08,000 --> 00:27:11,320
So you can have business metrics as well as technical metrics.

775
00:27:11,420 --> 00:27:14,060
And this informs both operations and the business, right?

776
00:27:14,400 --> 00:27:14,580
Right.

777
00:27:14,580 --> 00:27:15,000
And developers.

778
00:27:15,280 --> 00:27:18,360
So you get that ever-important single pane of glass, you know?

779
00:27:18,520 --> 00:27:19,060
Right, right, right.

780
00:27:19,080 --> 00:27:19,860
I have two more questions.

781
00:27:19,960 --> 00:27:20,560
Okay, I've got them.

782
00:27:20,680 --> 00:27:21,320
Are you ready?

783
00:27:21,420 --> 00:27:22,240
Then we'll wrap up one.

784
00:27:22,760 --> 00:27:24,540
So what's the deal with time series databases?

785
00:27:25,060 --> 00:27:29,020
Why do you just call it a time series database and not just a database?

786
00:27:29,700 --> 00:27:30,720
Well, yeah.

787
00:27:31,060 --> 00:27:36,820
It's like we have document databases, we have key value databases, we have graph databases, and we have time series databases.

788
00:27:36,820 --> 00:27:40,180
So a time series database is like a dictionary, like Redis.

789
00:27:40,820 --> 00:27:42,280
It stores the keys and values.

790
00:27:43,020 --> 00:27:45,860
But it also stores every iteration of that value over time.

791
00:27:46,600 --> 00:27:46,780
Right, right, right.

792
00:27:46,780 --> 00:27:48,040
So you can look at the history of that value.

793
00:27:48,560 --> 00:27:50,640
You know, what number was it a minute ago, a week ago, an hour ago?

794
00:27:50,820 --> 00:27:58,560
And then because you have that availability, you have that visibility, you have that data, you can then feed that into a graph and then plot trends.

795
00:27:59,020 --> 00:27:59,640
Right, right, right.

796
00:27:59,660 --> 00:28:01,060
And you can summarize it if you wanted to.

797
00:28:01,060 --> 00:28:06,660
And I guess more of my question is like, so do you call it a time series database?

798
00:28:06,820 --> 00:28:10,060
Is it because it's built around doing only that?

799
00:28:10,180 --> 00:28:10,260
Yeah.

800
00:28:10,260 --> 00:28:11,780
And so most performant doing it?

801
00:28:11,920 --> 00:28:14,820
Or because you could use that data structure anywhere, right?

802
00:28:14,840 --> 00:28:16,560
Like you could just store that wherever you wanted.

803
00:28:16,720 --> 00:28:18,620
But it may be a bad idea performance-wise.

804
00:28:18,620 --> 00:28:18,840
Right.

805
00:28:18,960 --> 00:28:23,120
But, you know, you could make a relational database that's stored time series stuff.

806
00:28:23,320 --> 00:28:25,220
But it may technically be a bad idea.

807
00:28:25,400 --> 00:28:25,800
Terribly, yeah.

808
00:28:25,820 --> 00:28:30,860
And so the reason you call it a time series database is because it's optimized for that way of storing things.

809
00:28:30,860 --> 00:28:33,680
And that's an important, this is actually a burgeoning community right now.

810
00:28:33,800 --> 00:28:37,860
Netflix Atlas is a fairly new technology that was open sourced in the last five years, I think.

811
00:28:38,580 --> 00:28:39,620
Prometheus is super new.

812
00:28:39,780 --> 00:28:41,500
That came out of, I think, SoundCloud.com.

813
00:28:42,320 --> 00:28:46,960
This is, and there's, there's a, the, you know, do you ever read the morning paper from Adrian Collier?

814
00:28:47,140 --> 00:28:47,460
Sometimes.

815
00:28:47,780 --> 00:28:47,980
Yeah.

816
00:28:48,200 --> 00:28:52,940
He's a, he did one that looked at a time series database a few months ago.

817
00:28:53,340 --> 00:28:55,220
And it was, it was something out of academia.

818
00:28:55,220 --> 00:29:00,660
And basically this was like, it was optimized for huge data sets, like, you know, trillions of records or whatever.

819
00:29:00,720 --> 00:29:07,440
So do you think there was a time when sticking everything into a relational database was a good idea?

820
00:29:07,700 --> 00:29:07,940
No.

821
00:29:08,180 --> 00:29:10,420
Because that seems to be what we had for like 20 years.

822
00:29:10,620 --> 00:29:18,380
It's like, I think the last thing before this whole no SQL, no one calls it, but whatever, was basically, remember object-oriented databases?

823
00:29:18,600 --> 00:29:18,860
Yeah, yeah.

824
00:29:19,020 --> 00:29:19,700
Like that existed.

825
00:29:19,860 --> 00:29:21,900
And then everyone was like, well, that's not cool.

826
00:29:22,420 --> 00:29:22,740
I don't know about that.

827
00:29:22,740 --> 00:29:25,200
And then we went back to RDBMSs forever.

828
00:29:25,680 --> 00:29:35,140
And so like, whereas now we have the opposite, like as we were just discussing, we're like, you want a database that fits the type, not even the type of stuff you're putting in there,

829
00:29:35,140 --> 00:29:40,400
but the way that you want to retrieve and conceptualize the stuff.

830
00:29:40,400 --> 00:29:41,480
Purpose built for certain spaces.

831
00:29:41,480 --> 00:29:41,780
Right, right.

832
00:29:41,860 --> 00:29:47,460
But what matters, what the database is doing is servicing pretty much you, the human, right?

833
00:29:47,500 --> 00:29:47,680
Right.

834
00:29:47,780 --> 00:29:49,520
You want this in a document format.

835
00:29:49,660 --> 00:29:51,020
You want it in a time series format.

836
00:29:51,300 --> 00:29:52,160
It's not you, the human.

837
00:29:52,280 --> 00:29:54,260
It's the representation of that data that you're serving.

838
00:29:54,780 --> 00:29:55,040
Oh, yeah.

839
00:29:55,100 --> 00:30:00,460
What I mean to say is that we humans are programming and so we have a preference for the way that we arrange things.

840
00:30:00,520 --> 00:30:00,640
Right.

841
00:30:00,640 --> 00:30:04,440
If you ask the computers if you could, they would probably be like, I don't know, make it numbers.

842
00:30:04,780 --> 00:30:04,860
Sure.

843
00:30:05,000 --> 00:30:05,140
Right.

844
00:30:05,240 --> 00:30:05,940
Like, zero and one.

845
00:30:06,040 --> 00:30:10,800
Like, whenever all these databases store something, it's probably not in a format that humans would find useful.

846
00:30:11,120 --> 00:30:11,260
Right.

847
00:30:11,360 --> 00:30:11,520
So.

848
00:30:11,820 --> 00:30:12,020
No.

849
00:30:12,220 --> 00:30:17,840
So, like, the whole point of all these different databases is, like, we want our data to be arranged in these different ways.

850
00:30:17,980 --> 00:30:19,740
Now, it's not purely our desire.

851
00:30:19,840 --> 00:30:23,620
It might be because we're doing this stuff, it has to be in this format to optimize it.

852
00:30:23,680 --> 00:30:24,760
But we make those choices.

853
00:30:24,960 --> 00:30:25,060
Right.

854
00:30:25,060 --> 00:30:29,500
So, in contrast, we used to be like, I'll deal with relational databases.

855
00:30:29,840 --> 00:30:30,040
Right.

856
00:30:30,040 --> 00:30:34,080
Like, it didn't even occur to us that we could have an opinion about, like, what things would look like.

857
00:30:34,080 --> 00:30:37,020
I think, so I think a lot of, yeah, okay, so fair enough.

858
00:30:37,080 --> 00:30:45,780
But I think it's weird because any programmer with her or his salt would know that you need a data structure suited to the data.

859
00:30:45,880 --> 00:30:46,220
Right, right.

860
00:30:46,280 --> 00:30:46,520
No, no.

861
00:30:46,640 --> 00:30:52,800
And that's a, you would have your ORM tools or whatever that would take stuff from the database and get it in a format that works for you.

862
00:30:52,800 --> 00:30:57,760
They would, the thing is, we would, we all know to use a data structure, but then you get to the database section.

863
00:30:57,840 --> 00:30:59,000
You're like, oh, I give up.

864
00:30:59,180 --> 00:31:00,480
I guess I just don't know how to do any of this.

865
00:31:00,480 --> 00:31:00,760
Exactly.

866
00:31:00,960 --> 00:31:02,020
I've forgotten how to do data structures.

867
00:31:02,020 --> 00:31:03,380
That's kind of the weird shift that happened.

868
00:31:03,480 --> 00:31:10,800
It's like the, to put it in this term, the taboo of making demands on the database was somehow removed.

869
00:31:11,520 --> 00:31:13,360
Like, we lived under this error for a long time.

870
00:31:13,840 --> 00:31:16,800
Whereas you characterize it, it was just like, no, you can't tell the database what to do.

871
00:31:16,980 --> 00:31:18,540
It does the one, it's relational, and that's it.

872
00:31:18,560 --> 00:31:19,740
And developers would forget.

873
00:31:19,740 --> 00:31:22,520
They knew all the, like, in the code themselves, they'll sit there and haggle.

874
00:31:22,800 --> 00:31:25,860
To, to no end about what data structure we should use.

875
00:31:25,860 --> 00:31:26,080
That's right.

876
00:31:26,080 --> 00:31:29,560
But then it's like, oh, I need to persist this longer than the session of my current running application.

877
00:31:30,260 --> 00:31:31,260
I guess we only have one choice.

878
00:31:31,380 --> 00:31:32,240
There's only one option here.

879
00:31:32,340 --> 00:31:35,500
Maybe, and we'll skip my last, but closing out with food, right?

880
00:31:35,580 --> 00:31:35,820
Okay.

881
00:31:35,920 --> 00:31:38,660
For a long time, it was like, a taco is the following.

882
00:31:39,200 --> 00:31:41,120
You either have a crispy shell or a soft shell.

883
00:31:41,200 --> 00:31:41,380
Yeah.

884
00:31:41,500 --> 00:31:42,180
Or it's not a shell.

885
00:31:42,600 --> 00:31:46,040
And you're going to put some spicy meat into it.

886
00:31:46,040 --> 00:31:46,320
Mm-hmm.

887
00:31:46,800 --> 00:31:49,400
Or, if you're a vegetarian, we'll figure that out for you.

888
00:31:49,440 --> 00:31:49,760
But whatever.

889
00:31:49,900 --> 00:31:55,680
You have some ground meat or some chicken or some skirt steak that's been marinated and made into a fajita.

890
00:31:56,060 --> 00:31:57,980
And then you're going to put some cheese on top of it.

891
00:31:57,980 --> 00:31:59,640
And then you're going to put lettuce on top of it.

892
00:31:59,640 --> 00:32:02,400
And maybe some tomatoes, and if you're lucky, some guacamole, right?

893
00:32:02,400 --> 00:32:03,400
You're making me hungry.

894
00:32:03,620 --> 00:32:06,880
That was like 30 to maybe 200 years of tacos, right?

895
00:32:07,160 --> 00:32:12,720
And then at some point in the last 15 years, someone was like, you know, we could change the taco.

896
00:32:13,400 --> 00:32:13,500
Right?

897
00:32:13,540 --> 00:32:14,900
We could make demands on the taco.

898
00:32:15,180 --> 00:32:15,360
It's not a taco.

899
00:32:15,360 --> 00:32:15,420
It's not a taco.

900
00:32:15,420 --> 00:32:17,320
And we could put, like, bulgaki in there.

901
00:32:17,600 --> 00:32:17,800
Oh.

902
00:32:17,800 --> 00:32:21,400
Or, like, we could put, like, what if I put, like, a sushi roll in the taco?

903
00:32:22,200 --> 00:32:25,100
And nowadays, you put whatever you want in a taco, right?

904
00:32:25,100 --> 00:32:25,580
Yeah, you're right.

905
00:32:25,580 --> 00:32:33,300
So, similarly, like, it used to be, like, you go to the relational database, and it was just, like, rows and columns, buddy, and inner and outer whatevers.

906
00:32:33,660 --> 00:32:34,580
Like, that's what you got.

907
00:32:34,860 --> 00:32:35,940
You got tacos a taco.

908
00:32:36,400 --> 00:32:39,800
But then someone decided, no, I'll do whatever I want.

909
00:32:39,920 --> 00:32:43,500
You know, I think, and I think they decided this because, well, there's two things.

910
00:32:43,560 --> 00:32:45,960
I think there's several factors that play into this.

911
00:32:46,120 --> 00:32:47,140
First of all, data got bigger.

912
00:32:47,520 --> 00:32:50,920
I mean, we all, like, physicists have been looking at this going, yeah, it's always been big.

913
00:32:50,920 --> 00:32:51,740
It's like Ant-Man.

914
00:32:52,540 --> 00:32:52,980
It's bigger.

915
00:32:53,340 --> 00:32:54,380
Yeah, well, now, yeah.

916
00:32:54,700 --> 00:32:57,740
So, and by the way, that new movie, Ant-Man and Wasp, looks amazing.

917
00:32:58,000 --> 00:32:58,240
Oh, yeah?

918
00:32:58,420 --> 00:33:02,480
Anyway, we had, data's gotten, okay, it's gotten bigger for Enterprise.

919
00:33:02,760 --> 00:33:02,980
Uh-huh.

920
00:33:03,060 --> 00:33:09,860
I should caveat that NoSQL has not been taboo, specialized data stores have not been taboo in, you know, science.

921
00:33:10,720 --> 00:33:11,300
Oh, sure, sure.

922
00:33:11,540 --> 00:33:13,760
Physicists generating billions of events.

923
00:33:13,780 --> 00:33:14,980
But they're not real programmers, are they?

924
00:33:14,980 --> 00:33:16,080
They're much more than real.

925
00:33:16,300 --> 00:33:18,160
They're, like, they're actually doing really hard stuff, right?

926
00:33:18,420 --> 00:33:21,840
There's no, nobody's ever bothered to invent Visual Basic for physicists, you know?

927
00:33:21,840 --> 00:33:23,140
No, no, they probably wouldn't use it.

928
00:33:23,140 --> 00:33:24,460
No, because it's just way too hard.

929
00:33:24,540 --> 00:33:25,300
Right, right, right.

930
00:33:25,500 --> 00:33:29,560
But, so that, they've always used specialized data stores.

931
00:33:29,640 --> 00:33:30,720
They've written their own databases, you know?

932
00:33:31,180 --> 00:33:41,160
And, and by the way, it's, it's for that reason that it's no small coincidence that Dr. Dave Pollack, sorry, Dr. Mug Pollack, on the Spring team, his previous life was in physicists.

933
00:33:41,600 --> 00:33:42,320
He was in physics.

934
00:33:42,740 --> 00:33:43,180
Right, right.

935
00:33:43,180 --> 00:33:49,820
And he was the first founder of Spring Data, which is our project for specialized data stores, you know, SQL, whatever.

936
00:33:49,960 --> 00:33:50,260
Right, right.

937
00:33:50,380 --> 00:33:52,380
Right, because that was, his background was doing that, you know?

938
00:33:52,760 --> 00:33:55,820
Anyway, so, first of all, it got more, it got bigger, right?

939
00:33:56,240 --> 00:34:00,320
And then we, we started needing to be able to query it.

940
00:34:01,380 --> 00:34:03,720
We needed to be able to query this data in particular ways.

941
00:34:03,880 --> 00:34:04,080
Right.

942
00:34:04,100 --> 00:34:05,060
And still be performing, right?

943
00:34:05,080 --> 00:34:07,440
We couldn't, we have, we move more and more things online.

944
00:34:07,960 --> 00:34:12,440
And so, if it's offline, then yeah, you can afford to take this database, which is in a representation.

945
00:34:12,440 --> 00:34:16,020
Get it at a warehouse and put it, put it in whatever format is handy for querying it.

946
00:34:16,320 --> 00:34:18,460
But, but yeah, but okay, there you go, that's a good point.

947
00:34:18,760 --> 00:34:25,800
The warehouse model, that, that offline, you know, non-online transaction, that, that's the exact sort of thing that we did before.

948
00:34:26,120 --> 00:34:29,760
But we just assumed that you would only access that warehouse ever so infrequently.

949
00:34:30,060 --> 00:34:36,060
So even there, you had it in your SQL database, and then you'd turn it into something that would be optimized for reporting.

950
00:34:36,260 --> 00:34:36,840
Yep, yep.

951
00:34:36,840 --> 00:34:39,940
But now, that reporting has to be up to date almost instantly.

952
00:34:39,940 --> 00:34:47,700
And so, and so my theory, it would be that there was, there was a, point is the wrong word.

953
00:34:47,780 --> 00:34:59,940
There was, there was a time series, points of time, so to speak, where maybe it was not ideal, but the most efficient, optimized way to do stuff was to have a relational database, right?

954
00:34:59,980 --> 00:35:02,540
Like, it was like the tool that worked the best.

955
00:35:02,800 --> 00:35:03,460
I don't know about that.

956
00:35:03,460 --> 00:35:06,620
And again, and, and, and, and, and again, we can invalidate this theory at some point.

957
00:35:06,700 --> 00:35:10,900
But then, as you're saying, the needs for data changed, right?

958
00:35:11,000 --> 00:35:11,120
Right.

959
00:35:11,320 --> 00:35:16,400
And then also, the technologies changed such that we could actually make something better than an RDBMS.

960
00:35:16,560 --> 00:35:21,420
Well, we, because, okay, so I'm, I see what you're saying, but I think, I would say that we've always had specialized databases.

961
00:35:21,800 --> 00:35:21,980
Right.

962
00:35:22,040 --> 00:35:27,560
But the performance wasn't so, so provably bad that we were forced to care about it.

963
00:35:27,560 --> 00:35:32,020
So, so this, this, the, the amount of data that we have and the speed at which we want to do something with it.

964
00:35:32,020 --> 00:35:32,320
Yeah.

965
00:35:32,460 --> 00:35:34,960
Sort of like, what did it do?

966
00:35:35,620 --> 00:35:36,740
It exacerbated the problem.

967
00:35:36,800 --> 00:35:39,440
Whatever a nice way of saying broke the backup is.

968
00:35:39,520 --> 00:35:39,580
Right.

969
00:35:39,580 --> 00:35:40,160
That sounds very violent.

970
00:35:40,280 --> 00:35:44,760
But, but it, but it, it's, it's superseded the, the functionality of the relational database.

971
00:35:44,860 --> 00:35:45,000
Yeah.

972
00:35:45,120 --> 00:35:58,380
And, and, and I think we all, and, you know, solve some, in doing so, in changing that, we've, we've fixed some problems and spawned a whole industry of vendors who want to, who want to create more problems.

973
00:35:58,560 --> 00:35:58,560
Right, right, right.

974
00:35:58,560 --> 00:36:00,920
Well, every, every solution today is tomorrow's problem.

975
00:36:01,160 --> 00:36:02,420
And, oh, golf game.

976
00:36:02,940 --> 00:36:03,580
Golf game.

977
00:36:03,800 --> 00:36:09,320
There's always a golf game behind some terrible solution deployed in some, some, you know, vendorware.

978
00:36:09,660 --> 00:36:10,000
That's right.

979
00:36:10,060 --> 00:36:10,240
All right.

980
00:36:10,280 --> 00:36:11,720
Well, well, I've got to give a talk.

981
00:36:12,140 --> 00:36:12,420
Oh, yeah.

982
00:36:12,660 --> 00:36:13,180
And then maybe.

983
00:36:13,360 --> 00:36:14,000
What's it going to be about?

984
00:36:14,220 --> 00:36:16,640
Oh, it's just, it's just me trying to figure out what Kubernetes is.

985
00:36:16,680 --> 00:36:19,320
And then maybe, maybe I'll get some chicken rice.

986
00:36:19,600 --> 00:36:20,060
Honey and chicken rice?

987
00:36:20,060 --> 00:36:20,440
Or something.

988
00:36:20,620 --> 00:36:21,040
I don't know.

989
00:36:21,080 --> 00:36:21,660
We should go together.

990
00:36:21,980 --> 00:36:22,200
Yeah.

991
00:36:22,360 --> 00:36:22,980
That would be great.

992
00:36:22,980 --> 00:36:23,260
All right.

993
00:36:23,340 --> 00:36:25,900
Well, as always, this has been Pivotal Conversations.

994
00:36:26,120 --> 00:36:27,960
Why don't you tell people where you are on the Twitter?

995
00:36:28,260 --> 00:36:32,480
Oh, find me at, at, at, at Starbucksman, S-T-A-R-B-U-X-M-A-N.

996
00:36:32,880 --> 00:36:34,320
And, uh, you know.

997
00:36:34,380 --> 00:36:35,540
And do you use email, Josh?

998
00:36:35,820 --> 00:36:36,140
Email?

999
00:36:36,460 --> 00:36:36,780
Yeah.

1000
00:36:37,020 --> 00:36:37,260
Email?

1001
00:36:37,360 --> 00:36:37,920
You can.

1002
00:36:38,100 --> 00:36:39,480
It's, it's a little async, you know.

1003
00:36:39,740 --> 00:36:40,060
Telephone.

1004
00:36:40,140 --> 00:36:41,140
Josh at joshlong.com.

1005
00:36:41,240 --> 00:36:41,880
You use voicemail.

1006
00:36:41,880 --> 00:36:48,520
But, but also, um, uh, check out the, uh, the Gitter.

1007
00:36:48,960 --> 00:36:49,780
You know, you know, Gitter?

1008
00:36:49,920 --> 00:36:50,840
Do people use Gitter anymore?

1009
00:36:51,160 --> 00:36:52,440
We have a G-I-T-T-E-R.

1010
00:36:52,460 --> 00:36:53,480
Is that like Finger or something?

1011
00:36:53,580 --> 00:36:54,560
No, the, uh, the chat room.

1012
00:36:54,620 --> 00:36:56,380
It's like a, it's like a open source.

1013
00:36:56,520 --> 00:36:58,000
It's not, it's, it's like an open Slack.

1014
00:36:58,280 --> 00:37:00,700
So it's G-I-T-T-E-R dot I-M for slash.

1015
00:37:00,860 --> 00:37:02,260
And then Spring Hyphen Projects.

1016
00:37:02,260 --> 00:37:04,640
And you'll find chat rooms for all the different Spring Projects.

1017
00:37:04,720 --> 00:37:05,280
Oh, I see.

1018
00:37:05,320 --> 00:37:08,620
And what's the, what's the gender neutral word for manned?

1019
00:37:09,180 --> 00:37:10,320
For manned?

1020
00:37:10,320 --> 00:37:11,340
Like manned the ship.

1021
00:37:11,540 --> 00:37:11,780
Staffed?

1022
00:37:12,040 --> 00:37:12,400
Staffed.

1023
00:37:12,480 --> 00:37:12,800
Thank you.

1024
00:37:13,420 --> 00:37:13,800
Thank you.

1025
00:37:14,160 --> 00:37:16,040
Staffed by the Spring Engineers.

1026
00:37:16,300 --> 00:37:16,600
Ah.

1027
00:37:16,600 --> 00:37:20,380
So if you have questions, comments, feedback, whatever, we are, as always, happy to engage.

1028
00:37:20,680 --> 00:37:21,360
That sounds good.

1029
00:37:21,460 --> 00:37:26,160
And also you can find all the old episodes at soundcloud.com slash pivotalconversations.

1030
00:37:26,260 --> 00:37:29,220
Now do you think there's a space in that URL or an underscore?

1031
00:37:29,360 --> 00:37:30,000
What do you think, Josh?

1032
00:37:31,060 --> 00:37:31,380
Underscore?

1033
00:37:31,840 --> 00:37:32,540
No, no underscore.

1034
00:37:32,940 --> 00:37:33,580
Trick question.

1035
00:37:34,020 --> 00:37:35,660
Just all, all one word, no spaces.

1036
00:37:35,840 --> 00:37:36,520
That's the worst.

1037
00:37:36,680 --> 00:37:36,880
Yeah.

1038
00:37:37,080 --> 00:37:38,600
No, no percent 20s in there.

1039
00:37:38,720 --> 00:37:40,380
See, my mind would want to forget that.

1040
00:37:40,540 --> 00:37:41,180
I would actually try to forget that.

1041
00:37:41,180 --> 00:37:41,200
I know.

1042
00:37:41,200 --> 00:37:44,760
And that's why I like to tell people, Pivotal Conversations, no spaces, hyphens, other special

1043
00:37:44,760 --> 00:37:45,180
characters.

1044
00:37:45,480 --> 00:37:47,140
So, you know the one thing you would never think to do?

1045
00:37:47,240 --> 00:37:47,600
Do that.

1046
00:37:48,280 --> 00:37:48,620
That's right.

1047
00:37:48,700 --> 00:37:49,020
That's right.

1048
00:37:49,120 --> 00:37:49,900
Anti-Larry Wall.

1049
00:37:50,320 --> 00:37:53,740
Isn't he the one who said software should, no, I made this mistake the other day.

1050
00:37:53,780 --> 00:37:56,900
It was one of the pragmatic programmers who was like, software should do what you expect

1051
00:37:56,900 --> 00:37:57,220
it to.

1052
00:37:57,540 --> 00:37:57,820
Oh.

1053
00:37:57,940 --> 00:38:00,380
Which, which I think that's like saying food should taste good.

1054
00:38:00,600 --> 00:38:00,780
Right.

1055
00:38:00,860 --> 00:38:03,140
So, you know, that's still good.

1056
00:38:03,140 --> 00:38:04,160
It's true, but kind of useless.

1057
00:38:04,400 --> 00:38:04,760
Yeah, yeah.

1058
00:38:04,820 --> 00:38:06,480
So, we'll see everyone next time.

1059
00:38:06,600 --> 00:38:07,100
Bye-bye.

1060
00:38:07,240 --> 00:38:07,440
Bye.
