1
00:00:00,000 --> 00:00:05,220
Hey there. This is another interview from Mark in our SpringOne Platform speaker series.

2
00:00:05,620 --> 00:00:09,920
It's a pretty good one. I hope you enjoy it. Why don't you check out the conference that this is

3
00:00:09,920 --> 00:00:15,780
pulled from, SpringOne Platform. It's over at springoneplatform.io. It's October 7th and 10th

4
00:00:15,780 --> 00:00:20,940
in my hometown of Austin, Texas. And if you want to get $200 off registration when you go to

5
00:00:20,940 --> 00:00:30,220
springoneplatform.io and register, use the code S1P200 underscore M Heckler. That's S1P200

6
00:00:30,220 --> 00:00:38,540
underscore M-H-E-C-K-L-E-R. You can also check the show notes at pivotal.io slash podcast to get that

7
00:00:38,540 --> 00:00:44,120
spelled out to you. So with that, enjoy the episode. Today on our Women of SpringOne Platform

8
00:00:44,120 --> 00:00:50,080
series, I'm joined by Erin Schnabel. Erin, if you would, please tell our listeners a little bit about

9
00:00:50,080 --> 00:00:59,240
you. So I've been at IBM for a surprising to me 20 years. I've been working with Java for that

10
00:00:59,240 --> 00:01:04,660
amount of time, which is also kind of scary. I think we established there was one time I was

11
00:01:04,660 --> 00:01:11,100
talking with Adam Bean, who's a Java champion, and we figured out, I think I started with Java 1.1.

12
00:01:11,320 --> 00:01:16,600
I don't think I had 1.0, but I had 1.1. And so I spent all that time working with distributed

13
00:01:16,600 --> 00:01:23,200
computing. I started with Korba, all of that stuff, watched the rise and fall of the app server. And now

14
00:01:23,200 --> 00:01:28,760
at IBM, I'm working a lot with Spring within the context of Kubernetes and some new open source

15
00:01:28,760 --> 00:01:35,400
projects that have been coming out that try to make it easier to write Java apps of any kind and get

16
00:01:35,400 --> 00:01:42,160
them deployed in Kubernetes environments. And that's a really good summary, I guess, within the tech realm.

17
00:01:42,160 --> 00:01:48,380
But let's go back to maybe how you got into tech, because obviously, that's a good history with IBM.

18
00:01:48,540 --> 00:01:52,560
It's a good history of some things you've done. But what was life before IBM?

19
00:01:54,320 --> 00:02:12,820
So I landed an IBM right out of college. But the before before falling into tech was like, my dad brought home the first computer in whatever year that was, it was 8088, like zero RAM, five and quarter inch floppy drives, you know, the whole thing.

20
00:02:13,200 --> 00:02:20,880
And I learned early, and I learned early, how to format hard drives, how to foobar your machine by forgetting to do this last six at the end, did that one that was silly.

21
00:02:21,440 --> 00:02:34,360
But yeah, I was the one in the house that made sure all of the stuff worked all the time. I installed the modem by myself. I used to use bullet and board systems when those were a thing. And I would talk to my modem and make sounds because that's what you do. And you're a little nerd.

22
00:02:36,360 --> 00:02:53,120
And I remember the first programming classes in high school, we actually did Pascal. There was a girlfriend of mine, which is just a funny story, right, where we were going to be sophomores during this Pascal class. And she was like, Aaron, I don't really know if I'm going to be any good at this.

23
00:02:53,340 --> 00:03:02,540
She was amazing at math, like total brainiac. And I'm like, you're going to be fine. I don't understand. And so she, she relented. We did it together. She now works at the NSA.

24
00:03:04,420 --> 00:03:12,620
And now she does it. She's a closed mouth person too. So it just totally fits that she's at the NSA. But that was how I got started. It was all that long time ago.

25
00:03:12,620 --> 00:03:32,780
And then when I went into school, I was doing computer engineering, undergrad, computer science, master's degree. And my graduate advisor at the time, because that was when Korba was, was being born, basically. This is a million years ago. And so he was into Korba, which therefore meant I was into Korba.

26
00:03:33,000 --> 00:03:39,660
So right from the get-go, going from, actually at the time, I was also doing some C and C++ and that kind of stuff.

27
00:03:40,160 --> 00:03:47,740
So from Korba, I went into, into IBM to work actually on what was at the time component broker.

28
00:03:47,980 --> 00:03:51,460
And that grew into WebSphere, but on the mainframe.

29
00:03:52,460 --> 00:04:00,060
So my first couple of years at IBM was actually on, on the mainframe, which is a whole different environment to work in.

30
00:04:01,340 --> 00:04:15,820
I'm kind of going a little, maybe into the weeds here, but how did you make the transition from mainframe to Java to local development? Because Java at the time was mainly just desktop and browser based, right?

31
00:04:16,700 --> 00:04:25,140
Well, so, so in college we were doing Java and that's what I said, like the 1.1, I remember the first Java in a nutshell book. Do you remember those?

32
00:04:25,540 --> 00:04:29,360
And then I have like the first two huge volumes.

33
00:04:29,540 --> 00:04:37,640
They have these really big books because at the time, everything you could possibly want to know about Java fit in the two tones, but they were two inches thick.

34
00:04:37,780 --> 00:04:38,600
They're big, big books.

35
00:04:38,600 --> 00:04:41,500
And those were, that was in college, you know.

36
00:04:41,920 --> 00:04:49,320
So it was just when I went to IBM, I was actually back at C, C++ and Assembler for a little while.

37
00:04:50,100 --> 00:05:03,880
And then because of the way Webster evolved within IBM, right, we had Webster on ZOS or component broker on ZOS, mostly C and C++ at the time and some Assembler stuff.

38
00:05:04,200 --> 00:05:11,360
And then we had Webster that was on the distributed platform, both of which were trying to do Corva and ORM things and distributed computing.

39
00:05:12,140 --> 00:05:19,580
And so those ended up meeting and a lot of code ended up being shared, which brought, you know, the two code bases merged, if that makes sense.

40
00:05:19,740 --> 00:05:28,860
So that was years of fighting with JNI and memory management and blah, I'm really glad I don't have to do that anymore.

41
00:05:29,760 --> 00:05:33,380
But we learned a lot doing things at that low of a level.

42
00:05:34,200 --> 00:05:40,960
And I do think there's a lot of kids, I think, right now coming out of school that have only ever done Java.

43
00:05:41,680 --> 00:05:47,100
I feel a little on the fence about whether or not they've missed something, you know.

44
00:05:47,160 --> 00:05:53,940
Like, I feel like there's cards you earn if you double free or if you allocate memory incorrectly.

45
00:05:55,280 --> 00:06:02,640
It's an amount of care that I feel like, you know, you need to pay attention to at least at some point in your career.

46
00:06:02,640 --> 00:06:06,520
But you're, you know, you're understanding how things work under the covers.

47
00:06:07,040 --> 00:06:09,980
But maybe that's just because I had to do it.

48
00:06:10,080 --> 00:06:11,060
Maybe it's a hazing thing.

49
00:06:11,900 --> 00:06:13,500
I had to go through all that pain.

50
00:06:13,760 --> 00:06:15,700
So you should have to go through all that pain.

51
00:06:15,780 --> 00:06:16,140
I don't know.

52
00:06:16,900 --> 00:06:18,820
No, I think there's something to that, really.

53
00:06:18,820 --> 00:06:27,260
Because when I came from the C and C++ realm as well, I was immediately, well, maybe not immediately.

54
00:06:27,260 --> 00:06:28,880
It took me a bit to warm up to it.

55
00:06:29,200 --> 00:06:37,540
But as soon as I realized that I no longer had to worry about allocating and deallocating memory and, you know, worrying about leaks so badly, so much, I guess.

56
00:06:37,740 --> 00:06:39,440
I was immediately taken by that.

57
00:06:39,700 --> 00:06:41,420
I thought that was amazing.

58
00:06:42,020 --> 00:06:46,940
But by the same token, when you do come through that, you're a lot more aware of things, I think.

59
00:06:47,360 --> 00:06:57,300
And when you work in constrained environments, so to speak, I think it does make you better or more aware of things and potential pitfalls than you maybe would be otherwise.

60
00:06:58,300 --> 00:07:02,280
But, yeah, I'm not sure it's absolutely necessary, but I think it is useful.

61
00:07:02,620 --> 00:07:03,280
Does that make sense?

62
00:07:04,300 --> 00:07:04,600
Yeah.

63
00:07:04,600 --> 00:07:16,760
At some point, they started getting the Java out of the IO libraries that had native byte buffers in them, where they had a certain amount that could be shared with native memory.

64
00:07:18,100 --> 00:07:31,760
And I felt like when those came, having the previous experience about allocating and managing memory made a big difference, because those native byte buffers, like, you had to count those.

65
00:07:32,040 --> 00:07:38,880
You had to reference, count them, and make sure that they got cleaned up, because otherwise we were just leaking memory, leaking native memory.

66
00:07:40,100 --> 00:07:51,560
And I think it also impacted, at least on Z, or especially on Z, Z has a different resource, like, it has different resource consumption behavior for threads.

67
00:07:52,860 --> 00:08:05,160
And so when you would start, you know, like, you couldn't create threads willy-nilly, because they were much heavier, which made you much more conscious of, you know, algorithmic choices, because you couldn't just make threads whenever you wanted to.

68
00:08:06,320 --> 00:08:09,340
Because it had resources, it had performance implications.

69
00:08:10,100 --> 00:08:19,640
So it's like, you know, I don't know that that would be obvious to people who didn't have a background in native, like, low-level native programming.

70
00:08:20,380 --> 00:08:22,380
What I was going to say, I think it's weird.

71
00:08:23,220 --> 00:08:24,420
Maybe you can agree with me.

72
00:08:24,440 --> 00:08:34,520
But coming from the early days of Corva, through then all of the Java EE stuff, and now what's happening with Kubernetes, I'm, are you seeing the cycle that I'm seeing?

73
00:08:34,680 --> 00:08:36,560
It's just, it's cracking me up every day.

74
00:08:37,320 --> 00:08:39,500
We're, we're basically on the repeat cycle.

75
00:08:39,620 --> 00:08:50,700
We're at the stage where, instead of, you know, Corva managing transactions and connections and local remote transparency and all that stuff, well, Kubernetes did SEO or something.

76
00:08:52,160 --> 00:08:54,020
I'll handle this routing magic for you.

77
00:08:54,060 --> 00:08:55,520
You don't really have to worry about it.

78
00:08:56,480 --> 00:09:02,100
You're just going to go send, send your requests out, and we'll make sure they go to the right place and that the connection will be scary.

79
00:09:02,100 --> 00:09:08,520
It's like, you're seeing all the same, all the same behaviors where everything was in the app, but then they pushed it all into the infrastructure.

80
00:09:08,680 --> 00:09:11,220
And then everything's in the app, but now they pushed it down into the infrastructure.

81
00:09:11,480 --> 00:09:12,520
And I just think it's funny.

82
00:09:13,660 --> 00:09:25,460
I do think we spend a lot of time rediscovering problems and resolving problems and then changing our perspective on problems and solving them differently and then rinse, repeat.

83
00:09:26,160 --> 00:09:30,780
Oh yeah, I think it's, I think it's generational, right?

84
00:09:30,840 --> 00:09:33,480
It's like, I'm, I've been 20 years at IBM, right?

85
00:09:33,540 --> 00:09:40,380
So right now I'm the rebellious teenager yelling at my parents, my corporate parents, right?

86
00:09:40,440 --> 00:09:42,280
So all of my corporate parents are stupid.

87
00:09:42,400 --> 00:09:43,380
They don't know what they're doing anymore.

88
00:09:43,520 --> 00:09:44,220
I mean, I'm kidding.

89
00:09:44,340 --> 00:09:44,800
I love them.

90
00:09:44,880 --> 00:09:51,160
But it's like, it feels to me like you've got a generation, you've got a cohort of people who designed something one way.

91
00:09:51,360 --> 00:09:58,360
Then you have the next generational cohort, you get convinced, you didn't know what they were doing or, you know, technology, the environment changes enough.

92
00:09:58,560 --> 00:10:01,180
But they're like, that it becomes that they didn't know what they're doing.

93
00:10:01,260 --> 00:10:02,980
They're going to throw all that out and do it in a new way.

94
00:10:03,840 --> 00:10:07,180
And then that way, you know, progressives in the next cohort comes in.

95
00:10:07,240 --> 00:10:08,280
It's like, oh, they don't know what they're doing.

96
00:10:08,620 --> 00:10:10,540
And it's just the way the pendulum swings.

97
00:10:12,180 --> 00:10:17,940
I feel like it's because you get different generations learning and improving then and then a new thing happens.

98
00:10:18,100 --> 00:10:19,560
And then, I don't know.

99
00:10:20,900 --> 00:10:23,720
It's probably a little more, I don't mean it to sound that adversarial.

100
00:10:23,860 --> 00:10:25,280
It just feels to me like that's what happens.

101
00:10:26,300 --> 00:10:28,660
There's an old quote by Edmund Burke, I believe.

102
00:10:28,660 --> 00:10:30,940
Those who don't know history are doomed to repeat it.

103
00:10:31,400 --> 00:10:32,040
So here we are.

104
00:10:32,160 --> 00:10:33,740
It's like two generations later.

105
00:10:33,840 --> 00:10:38,640
Yeah, two generations later, or back when we started 20 years ago.

106
00:10:39,420 --> 00:10:41,420
There's a different spin on it now, right?

107
00:10:41,480 --> 00:10:45,060
Because the virtualization stuff that we have now was not present.

108
00:10:45,900 --> 00:10:54,900
But at the start of cloud native hype, right, you saw all the distributed computing mantras from 1984 coming up.

109
00:10:55,060 --> 00:10:55,720
There's a talk.

110
00:10:55,720 --> 00:11:00,460
I have it brewing in the back of my head, and I really need to put it down on paper and bring it to a conference.

111
00:11:00,980 --> 00:11:03,740
And it's everything we needed to know we learned on the main break.

112
00:11:03,840 --> 00:11:09,020
They had all these problems solved in 1982.

113
00:11:09,420 --> 00:11:11,600
Pick the mainframe stuff.

114
00:11:11,600 --> 00:11:16,960
All the distributed computing stuff, time coordination, and memory synchronization, and all that stuff.

115
00:11:17,400 --> 00:11:17,920
They had it done.

116
00:11:18,540 --> 00:11:21,300
And we've just been reinventing that over and over again.

117
00:11:21,740 --> 00:11:25,920
I do think, though, and I'll see what your thoughts are on this.

118
00:11:25,920 --> 00:11:33,660
I think that there are many times that we do fail to take into account the lessons of history, the hard wins that maybe have gone before us.

119
00:11:33,900 --> 00:11:44,820
But I do think sometimes that, for better and for worse, that when we come up with a new solution to a problem that had been previously solved under a different set of constraints, sometimes we have to do that, I think.

120
00:11:44,920 --> 00:11:48,420
And sometimes, frankly, we come out with a better solution overall.

121
00:11:49,380 --> 00:11:50,420
Yeah, no, we have to.

122
00:11:50,780 --> 00:12:05,320
I'm not blaming anybody who had cloud-native, like interpreted 12-factor apps, for example, and cloud-native stuff, and the way Netflix put all of the thought-tolerance behavior and the retry behavior and all that stuff and put it in the app.

123
00:12:05,440 --> 00:12:06,580
I'm not going to blame them for that.

124
00:12:06,980 --> 00:12:14,440
The infrastructure that they were running on was in the middle of just being hyper-virtualized, basically, and it couldn't do both things at once.

125
00:12:15,400 --> 00:12:15,780
You know what I mean?

126
00:12:15,840 --> 00:12:23,020
Like, the app had to do the compensation because the environment was just, people were just figuring out what to do with the environment.

127
00:12:23,620 --> 00:12:34,740
But now, with Kubernetes managing more of the environment and providing more of that same capability, and then you have things like ITO and service meshes coming in to smooth over even more of those bots.

128
00:12:35,400 --> 00:12:37,020
Well, now, this is what I'm saying.

129
00:12:37,140 --> 00:12:44,240
There's now this generational thing where it's like, okay, we learned in the past that it's hard to keep that stuff in all of the apps.

130
00:12:44,960 --> 00:12:51,780
It's too easy for developers to mess it up, for it not to be consistent and push it down into the infrastructure because they're ultimately an infrastructure concern.

131
00:12:52,880 --> 00:13:02,320
But it's like, you need to get to a consistent thing, essentially, at this point, which is Kubernetes, to be able to make that decision and push things down, right?

132
00:13:02,320 --> 00:13:05,200
It went back in the second day, right?

133
00:13:05,260 --> 00:13:05,820
That was Corva.

134
00:13:06,280 --> 00:13:08,120
Corva was handling local road transparency.

135
00:13:08,380 --> 00:13:18,080
Corva was determining subs and ties and retries and fragments and, like, you know, it was like all protocol-level stuff, which meant the app didn't have to deal with it.

136
00:13:18,160 --> 00:13:40,520
So, in short, we keep rebuilding the primitives and then rebuilding the abstractions and then rebuilding the supporting network of components around it.

137
00:13:40,580 --> 00:13:45,640
In fairness, though, in fairness, we did learn.

138
00:13:46,260 --> 00:13:50,580
Thankfully, with this new generation, we're just doing, like, JSON payloads.

139
00:13:51,460 --> 00:13:53,940
When you look at gRPC, that looks a hell of a lot, at least to me.

140
00:13:53,960 --> 00:13:57,000
And I fell on the floor laughing when I first read the WebSockets spec.

141
00:13:57,120 --> 00:13:59,600
I'm like, look, it's JRP packets for HTTP.

142
00:13:59,880 --> 00:14:00,880
I mean, I just thought it was so funny.

143
00:14:01,100 --> 00:14:09,340
But in doing that with just WebSockets or gRPC, they're still very basic types.

144
00:14:10,020 --> 00:14:18,180
They're not making the mistake that we did with Corva and Java use value-type marshalling, which used to make me cry.

145
00:14:18,560 --> 00:14:27,780
I was at the transport-level implementation details for all of that marshalling stuff, and ZOS was an EBSIDIC.

146
00:14:28,320 --> 00:14:35,520
So, not only did we have to convert these value types from big NBNs to little – well, yeah, Z was big NBN.

147
00:14:35,640 --> 00:14:42,020
All the distributed platforms were little NBNs, but we also had to translate from EBSIDIC to AFI or UTF-8 or whatever it was,

148
00:14:43,100 --> 00:14:48,680
which meant within the Corva test suites and the JavaE compliance test and all that stuff,

149
00:14:49,340 --> 00:14:58,940
there would be times when there would be a marshalling error, and we'd have to dig through the dumps to find the bite that didn't get – it was crazy.

150
00:14:59,880 --> 00:15:06,120
Like, we burned hours combing through binary dumps to figure out where the marshalling error was.

151
00:15:07,640 --> 00:15:08,160
Ridiculous.

152
00:15:08,780 --> 00:15:13,040
So, I'm really thankful now that when we're doing this, we're like, no, it's UTF-8.

153
00:15:13,100 --> 00:15:24,460
We're not doing code page, like, here, let me put in this service context, or, you know, let me put in the IOR that these are the code pages I support

154
00:15:24,460 --> 00:15:28,080
so that the client can figure out which code page it wants to use.

155
00:15:28,940 --> 00:15:29,980
Why did we do that?

156
00:15:30,080 --> 00:15:31,440
You know, like, we learned that lesson.

157
00:15:31,740 --> 00:15:36,820
This generation of things, we're not doing that, which is smart, because that was just miserable.

158
00:15:38,520 --> 00:15:39,160
So, progress.

159
00:15:39,180 --> 00:15:40,180
So, yeah, we are learning.

160
00:15:41,360 --> 00:15:46,820
We're not completely ignorant, but in some of the other cases, we're still, like, having to learn the lessons we learned before.

161
00:15:47,280 --> 00:15:53,100
Well, when we talk, I hear the love in your voice for the tech, all aspects, you know, the coding,

162
00:15:53,240 --> 00:15:57,600
but also just the archaeology, if you will, you know, kind of digging through things.

163
00:15:57,600 --> 00:16:06,720
But is there something in particular that drives you, that you love most about what you're doing, what you have done, kind of where the industry is heading, or anything?

164
00:16:08,500 --> 00:16:11,980
Oh, I'm still that nerd that just loves banging on something until it works.

165
00:16:12,760 --> 00:16:13,320
Just joy.

166
00:16:13,560 --> 00:16:15,480
It's like, oh, for no, we're going to laugh at swear words.

167
00:16:15,620 --> 00:16:15,960
Yes!

168
00:16:16,180 --> 00:16:17,300
That's my favorite.

169
00:16:17,540 --> 00:16:17,920
I love it.

170
00:16:18,460 --> 00:16:25,080
And some of the, like, these things that I'm passionate about is because I had those moments all the way through.

171
00:16:25,720 --> 00:16:31,960
Like I said, digging through the value type stuff to figure out which bite was wrong so we could fix it and, you know, do all that stuff.

172
00:16:32,000 --> 00:16:34,300
It was absolutely, ridiculously difficult.

173
00:16:35,120 --> 00:16:38,880
And over my career, I've been called the refactor queen a couple times.

174
00:16:39,520 --> 00:16:42,020
And, you know, so there's lessons that I've learned.

175
00:16:42,120 --> 00:16:48,540
Like, I go absolutely bananas when people are talking about 100% code coverage for Java.

176
00:16:49,480 --> 00:16:52,720
And the reason is because, again, I'm the refactor queen, right?

177
00:16:52,880 --> 00:16:56,300
It's the last minute before the release and there's a memory leak.

178
00:16:56,680 --> 00:17:01,980
And in order to fix it, we have to restructure the code to, you know, to be more conservative with memory or something.

179
00:17:02,000 --> 00:17:03,480
It's like, you go faster, right?

180
00:17:03,820 --> 00:17:06,740
But I have to go in with the last minute, refactor all this stuff.

181
00:17:06,960 --> 00:17:10,520
And Aaron's method of refactoring is I'm going to take all of these files.

182
00:17:10,640 --> 00:17:12,240
I'm going to put them over in a different directory.

183
00:17:12,400 --> 00:17:13,500
I'm going to create new files.

184
00:17:14,600 --> 00:17:18,440
And, you know, structure the, you know, in an object-oriented sense, right?

185
00:17:18,500 --> 00:17:21,460
Structure the pieces the way I know they have to go together to work better.

186
00:17:21,600 --> 00:17:27,680
And then I'll go rummage in the files I moved and, like, pull the code over that's still valid, right?

187
00:17:27,740 --> 00:17:30,020
And link it all together again, which is great.

188
00:17:30,380 --> 00:17:37,140
And from a getting the end result that you want, it's like being informed from what you did but not constrained by what you did.

189
00:17:37,560 --> 00:17:39,860
You get to, like, a better result.

190
00:17:40,100 --> 00:17:48,840
But let me tell you, if you have unit tests that are at the method level, the per-line level, you have completely hamstrung your ability to do that.

191
00:17:49,480 --> 00:18:04,620
I'm completely hamstrung it because, you know, at that point, if I want to make a code change and, like, every little section of code was tested, including a really ridiculous test that just basically ensure that if you pass a parameter in, you get it back out again.

192
00:18:05,660 --> 00:18:12,960
You can't then make those kinds of changes without changing the test, at which point you have no confidence that you didn't change behavior.

193
00:18:13,220 --> 00:18:13,700
That's important.

194
00:18:13,700 --> 00:18:14,140
That's important.

195
00:18:15,020 --> 00:18:28,320
I go bonkers with it because I spent more time trying to fix J-unit test weeks that had inherited, like, a whole inherited system of mocks.

196
00:18:28,800 --> 00:18:33,500
I get to the place where in order to get 100% code coverage, they were testing their mocks.

197
00:18:33,740 --> 00:18:35,000
They weren't testing their code anymore.

198
00:18:36,140 --> 00:18:41,840
And it's like, this is just, A, unsustainable, and, B, like, you could, you had no confidence.

199
00:18:41,960 --> 00:18:47,740
Yeah, the test run, and they gave you a green code coverage thing, but you had no guarantee that they actually tested anything meaningful.

200
00:18:48,440 --> 00:18:50,220
I want to talk about their passion right there.

201
00:18:51,120 --> 00:18:51,920
Good burn.

202
00:18:52,460 --> 00:18:52,960
It hurts.

203
00:18:53,340 --> 00:18:57,260
And I get really mad when people try to say 100% code coverage for Java.

204
00:18:57,760 --> 00:19:03,260
There's some other languages where that works better, but Java has so many weird boilerplates.

205
00:19:04,400 --> 00:19:04,680
Whatever.

206
00:19:04,940 --> 00:19:13,780
So that sometimes if you really want to get to 100% code coverage, you have to do really ridiculous things that provide no value and constrain your ability to fix the problem.

207
00:19:15,100 --> 00:19:17,240
Okay, you say that like that's a bad thing.

208
00:19:17,420 --> 00:19:18,040
I'm kidding.

209
00:19:18,180 --> 00:19:18,480
I'm kidding.

210
00:19:20,900 --> 00:19:26,560
Well, so for me, like, I take code coverage as advice, right?

211
00:19:26,560 --> 00:19:31,500
So it's like, I will go look at my code coverage report, and I'll look at what I've covered and what I haven't.

212
00:19:32,220 --> 00:19:38,300
And I'll be like, oh, you know, that path that's not tested, the end result of that actually matters.

213
00:19:38,900 --> 00:19:44,460
It's a behavior that something else in the system depends on, and I don't have anything that makes sure that that result comes out.

214
00:19:45,240 --> 00:19:46,260
So I'll test that.

215
00:19:47,660 --> 00:19:54,520
So if there's other things that aren't important, like aren't fundamentally important for the results, then I don't worry about it.

216
00:19:55,720 --> 00:19:56,520
Does that make sense?

217
00:19:57,600 --> 00:19:58,380
Absolutely, yeah.

218
00:19:58,480 --> 00:20:02,280
And the test coverage metrics are just like any other metric.

219
00:20:02,680 --> 00:20:03,760
They're subject to gaming.

220
00:20:03,820 --> 00:20:14,120
And I think sometimes when you just focus on the number of digits and I guess what the number is itself, then you kind of miss the whole point of the utility of it.

221
00:20:14,540 --> 00:20:15,100
So, yeah.

222
00:20:17,200 --> 00:20:17,640
Wow.

223
00:20:17,760 --> 00:20:20,660
Well, see, I had no idea you were also known as the refactoring queen.

224
00:20:20,820 --> 00:20:24,240
That does change a lot, actually, in a really cool way.

225
00:20:24,560 --> 00:20:31,940
So now I just want to go to SpringOne even more just so we can catch up and chat and, you know, kind of cover more ground on this.

226
00:20:32,020 --> 00:20:36,620
But to kind of bring things back to SpringOne, because obviously that's what we're building up to, right?

227
00:20:36,660 --> 00:20:39,140
This is kind of our favorite time of the year, at least mine.

228
00:20:39,220 --> 00:20:40,260
I hope it is yours, too.

229
00:20:40,540 --> 00:20:46,080
But a couple of years ago, you were on the main stage at SpringOne Platform presenting about distributed computing.

230
00:20:46,240 --> 00:20:47,880
And you covered a lot of ground there.

231
00:20:47,880 --> 00:20:52,460
Has your thinking evolved on that during the past couple of years?

232
00:20:52,780 --> 00:20:56,240
Or have you solidified your thinking or changed in any way?

233
00:20:57,480 --> 00:21:04,000
Well, what we were talking about during that particular talk was some algorithms in distributed computing.

234
00:21:04,200 --> 00:21:06,480
And those haven't really changed that much.

235
00:21:06,600 --> 00:21:07,660
Paxos is still Paxos.

236
00:21:07,760 --> 00:21:11,160
Like how you get distributed consensus, you know, all that stuff.

237
00:21:11,740 --> 00:21:13,140
They're pretty established patterns.

238
00:21:13,560 --> 00:21:15,460
And there's places where you use them.

239
00:21:15,520 --> 00:21:16,660
So that part hasn't changed.

240
00:21:17,140 --> 00:21:21,120
And that was an amazing experience that I really enjoyed.

241
00:21:21,720 --> 00:21:24,200
And Corina Lea-Bavis reached out to me for that.

242
00:21:24,380 --> 00:21:26,280
And I was both very flattered.

243
00:21:26,460 --> 00:21:27,720
And I'm really glad I did it.

244
00:21:27,780 --> 00:21:29,620
That was a really cool experience.

245
00:21:30,100 --> 00:21:31,720
And I tell people, I'm like, I did that.

246
00:21:31,800 --> 00:21:33,720
I stood up on the main page and I didn't die.

247
00:21:33,900 --> 00:21:34,560
Like, that was great.

248
00:21:34,860 --> 00:21:40,680
And all of the women that presented in that session, you know, it was just really great to meet them.

249
00:21:40,740 --> 00:21:42,640
And that was just a really great experience.

250
00:21:43,100 --> 00:21:51,740
But outside of that particular talk, which was more about consensus algorithms, we've already kind of touched on some of the other distributed computing things.

251
00:21:51,740 --> 00:21:58,960
And a lot of that has to do with the general move away from some of the original Netflix libraries, for example.

252
00:21:59,360 --> 00:22:02,240
And to some extent, even Netflix is moving away from those libraries.

253
00:22:02,760 --> 00:22:12,620
A whole bunch of the libraries that they have are tablized, essentially, because they're, even they are pushing a lot of these concerns down into the infrastructure and out of the library.

254
00:22:12,660 --> 00:22:19,040
And so how we, you know, isn't, isn't perfectly stable yet.

255
00:22:19,040 --> 00:22:34,540
The service mesh concept, I think everybody likes, and it's here to stay, but I think there's still a lot of behavior to stabilize, I guess, as people try to make it do all of the things that they needed to do.

256
00:22:34,540 --> 00:22:45,340
And I think it's sort of unfortunate how much still has to be exposed to the developer in some of these new distributed environments.

257
00:22:45,600 --> 00:22:47,360
In some cases, it's absolutely unavoidable.

258
00:22:47,740 --> 00:23:02,860
We're making the experience of writing the app and running the app or an application or a service or whatever, like, the developer is much more involved in that whole life cycle than they ever were before.

259
00:23:03,160 --> 00:23:24,740
And as far as I'm concerned, I think that's great, because when we were looking at some of the Java EU behaviors, which I know are still present in the industry in a lot of places, the, okay, I've written this app, I've coded it, I've tested it, now I'm going to throw it over the wall to the ops guys who are going to impose new roles, potentially change how it's deployed.

260
00:23:25,580 --> 00:23:29,080
And I think a lot of the 12-factor manifesto is all rebellion.

261
00:23:29,680 --> 00:23:35,500
I'm like, no, don't change all this stuff after I've tested it, please, because then if it introduces problems, I have no idea where they came from.

262
00:23:36,500 --> 00:23:38,820
And I think there's a lot of validity to that.

263
00:23:39,080 --> 00:23:48,740
And if you still look at the myth that if any kind of stability between a dev environment, a test environment, a staging environment, a pre-prod environment, and a prod environment, good luck.

264
00:23:49,720 --> 00:23:55,480
You know, if something breaks, you've got all those environments to maintain, and each of them is going to be differently non-stample.

265
00:23:56,600 --> 00:24:11,180
I'm not going to remember names right now, but there's a couple of really prominent people in the field who are like, in these distributed systems, the only place you're going to get a valid test is in production.

266
00:24:12,060 --> 00:24:18,280
Like, you're not going to be able to keep any of your other environments up to date and current and consistent.

267
00:24:18,440 --> 00:24:27,020
You may as well just put it in production and use routing magic to be very selective about how traffic reaches that new version.

268
00:24:27,020 --> 00:24:38,560
And I know that terrifies people, because the production system is often treated for regulatory or other reasons, and they're very protected.

269
00:24:39,940 --> 00:24:49,640
But I think when you look at large-scale systems, certainly, like, the ability to actually make a production-like pre-prod system or staging system, like, it just doesn't work.

270
00:24:49,980 --> 00:25:02,640
Within IBM, we have Kubernetes environment, we have a whole internal infrastructure, right, for all the services that we stand up, because we provide, you know, IaaS and PaaS and all that stuff, and we need to notice.

271
00:25:03,480 --> 00:25:19,560
So, when we're writing services that need to be surfaced to users, it's really difficult for us to test those on the internal staging system, because the infrastructure guys are also testing their things at the staging system,

272
00:25:19,660 --> 00:25:28,640
which means, as a service provider on top of the infrastructure, or if the infrastructure is unstable, then we can't tell if it's our app or if it's the infrastructure that's having a problem,

273
00:25:29,360 --> 00:25:34,920
which means we end up testing on the production system with routing tricks.

274
00:25:37,420 --> 00:25:40,020
So, I think that culture change is interesting.

275
00:25:41,400 --> 00:25:42,540
I think we move forward.

276
00:25:44,080 --> 00:25:58,260
I mean, we obviously always try to have those non-production systems, those pre-production systems mirror as closely as possible, but the fact that they are not the system means that there will always, always, always be some variation.

277
00:25:58,700 --> 00:26:01,880
And, I mean, what you're saying is absolutely the truth.

278
00:26:02,000 --> 00:26:04,740
You have to have, you have to limit risk, right?

279
00:26:04,760 --> 00:26:12,960
You have to accept that you're going to test the heck out of things, you're going to do everything you can to not deploy something that would break production,

280
00:26:13,460 --> 00:26:21,760
but realizing that at the same time, when you do deploy something to production, you have to limit your risk even there and do this kind of graduated rollout.

281
00:26:21,760 --> 00:26:26,980
And if there is damage, very much self-contained, small-scope damage.

282
00:26:27,460 --> 00:26:27,580
Yeah.

283
00:26:28,000 --> 00:26:34,000
Well, I mean, part of it is the shift in how things are deployed, period, right?

284
00:26:34,320 --> 00:26:41,860
The monolithic, let me deploy these six more files to my running forever application server, right?

285
00:26:41,920 --> 00:26:49,580
I mean, I come from a background of WebSphere ND, network deployment, right, where we would manage, here's the apps, here's how you want to deploy them,

286
00:26:49,580 --> 00:26:54,200
here's the nodes you want to deploy them to, here's how you're going to roll back, here's how you manage your versions.

287
00:26:54,320 --> 00:26:55,440
I mean, that was all there.

288
00:26:55,600 --> 00:27:01,080
So the servers were running all the time, and you were basically managing how the applications were deployed to those servers,

289
00:27:01,420 --> 00:27:02,640
which is similar, right?

290
00:27:02,720 --> 00:27:07,380
Because what you do now at the Kubernetes level, it's just, you're not deploying a work file,

291
00:27:07,480 --> 00:27:12,240
you're deploying a little isolated self-contained, but it can make people really uncomfortable

292
00:27:12,240 --> 00:27:17,560
because managing dependencies or relationships between services is fundamentally more complicated.

293
00:27:18,560 --> 00:27:29,220
And it's hard, like I'm just seeing a lot of people struggle with the transition from I need to deploy all of these things at the same time

294
00:27:29,220 --> 00:27:35,080
to incremental update of all of the pieces independently.

295
00:27:36,300 --> 00:27:42,520
I still feel like even people moving to Kubernetes, they're in a monolithic deployment mode.

296
00:27:43,600 --> 00:27:47,680
I've got these five services that are unrelated, I'm going to monolithically deploy all five.

297
00:27:48,300 --> 00:27:54,320
Rather than sticking to the point of cloud native, which is I should be able to update any one of those five alone.

298
00:27:55,960 --> 00:27:56,600
Such attention.

299
00:27:57,100 --> 00:27:58,440
People have a really hard time.

300
00:27:59,240 --> 00:28:02,180
It's ironic because I think you've identified the problem, which is people.

301
00:28:02,460 --> 00:28:03,520
The problem is always people.

302
00:28:05,580 --> 00:28:07,540
But I mean, it is true.

303
00:28:07,660 --> 00:28:08,960
We understand the concepts.

304
00:28:09,240 --> 00:28:11,040
We completely embrace the promise.

305
00:28:11,340 --> 00:28:14,980
And then we say, okay, to simplify things, I'm just going to make sure I roll out everything at once.

306
00:28:15,340 --> 00:28:16,560
Because that way it's consistent.

307
00:28:16,980 --> 00:28:21,480
So the whole reason to go to this cloud native microservices stuff is that we don't have to do these big bang releases.

308
00:28:21,780 --> 00:28:23,500
Except that I don't understand how to give you a little piece.

309
00:28:23,580 --> 00:28:25,080
So we're still going to do big bang releases.

310
00:28:25,080 --> 00:28:27,540
In which case, why did you break up your monolith to begin with?

311
00:28:28,160 --> 00:28:30,220
Why didn't you just leave it as an understood monolith?

312
00:28:32,380 --> 00:28:33,800
There's no reason to add the complexity.

313
00:28:33,980 --> 00:28:36,400
If you're going to keep it as a big ball, I mean, there's no reason.

314
00:28:37,020 --> 00:28:41,160
Along that same path, you are going to be speaking this year on metrics for the win,

315
00:28:41,240 --> 00:28:43,640
using micrometer to understand application behavior.

316
00:28:43,640 --> 00:28:48,460
And obviously, the more we need to be able to deal with individual applications,

317
00:28:48,680 --> 00:28:50,840
to deal with systems of applications,

318
00:28:50,840 --> 00:28:54,480
we need to understand what's happening at a particular point in time,

319
00:28:54,480 --> 00:28:56,340
to see what's happening as it unfolds,

320
00:28:56,340 --> 00:28:59,380
and to be able to address that, if need be, when it happens.

321
00:28:59,500 --> 00:29:01,020
So how did you get here?

322
00:29:01,600 --> 00:29:05,040
How did you decide to present on that particular topic?

323
00:29:05,200 --> 00:29:06,260
Why did you feel that was important?

324
00:29:06,340 --> 00:29:07,880
I mean, obviously, we know it is.

325
00:29:08,020 --> 00:29:10,120
But what brought you to the point of saying,

326
00:29:10,220 --> 00:29:12,620
hey, this is what I want to present on the SpringOne platform this year?

327
00:29:13,720 --> 00:29:15,680
Well, I'm a big fan of metrics.

328
00:29:16,380 --> 00:29:23,020
And it's hard in some cases to, like, as you get into distributed systems,

329
00:29:24,180 --> 00:29:29,480
people historically, like coming from monoliths, usually did log analysis.

330
00:29:30,020 --> 00:29:30,140
Right?

331
00:29:30,180 --> 00:29:30,940
They had their logs.

332
00:29:31,040 --> 00:29:32,100
They would go scan their logs.

333
00:29:32,220 --> 00:29:33,980
They would understand their behavior for logs.

334
00:29:34,060 --> 00:29:35,380
Like, everything was based on logs.

335
00:29:36,020 --> 00:29:39,740
When you get to a big distributed system with all the more moving,

336
00:29:39,820 --> 00:29:41,060
all the myriad of moving parts,

337
00:29:43,060 --> 00:29:45,740
dealing with centralized logs can get really expensive.

338
00:29:46,020 --> 00:29:47,720
There's a lot more data.

339
00:29:48,660 --> 00:29:51,460
I understand that Kibana dashboards are useful and stuff,

340
00:29:51,520 --> 00:29:53,580
but it's hard to query what you want.

341
00:29:54,260 --> 00:29:57,260
And the amount of data you're gathering is just huge.

342
00:29:57,860 --> 00:30:04,320
And so metrics, they're a much more concise way to represent behavior.

343
00:30:04,740 --> 00:30:07,720
And you can be a lot richer in terms of how you get,

344
00:30:08,080 --> 00:30:10,520
even though it's a more concise format,

345
00:30:11,580 --> 00:30:16,180
you can get a better understanding of what's going on in your system if you use metrics correctly.

346
00:30:16,920 --> 00:30:21,840
And if you look at some of the monitoring protocols,

347
00:30:22,920 --> 00:30:25,500
the Google SRE team has one.

348
00:30:26,060 --> 00:30:29,380
There's a few others that are not coming to mind right now.

349
00:30:30,220 --> 00:30:35,720
A lot of them go from, like, let me count errors.

350
00:30:35,720 --> 00:30:45,640
Let me count the kinds of errors because in terms of getting advanced warning or, you know,

351
00:30:45,700 --> 00:30:51,160
better alerting on behaviors that indicate something that actually bad is going to happen,

352
00:30:51,560 --> 00:30:57,000
you're much more likely to see that from numerical measurements than you are from log analysis.

353
00:30:57,800 --> 00:31:00,980
Both in terms of expense, frequency of gathering, you know,

354
00:31:01,020 --> 00:31:03,680
and just how you can analyze numbers versus words.

355
00:31:04,520 --> 00:31:06,960
But a lot of people don't understand, they still don't understand how to do that

356
00:31:06,960 --> 00:31:11,340
because they're coming from a background where most of what they did were looking at logs.

357
00:31:12,240 --> 00:31:17,380
I really like the way micrometer was created.

358
00:31:17,980 --> 00:31:20,160
The actuator is really simple to turn on.

359
00:31:20,640 --> 00:31:25,420
The way you can write to pick your output format without worrying about it, that's also really cool.

360
00:31:25,940 --> 00:31:29,860
There is a contrast that I think is going to have to, we're going to have to resolve,

361
00:31:29,860 --> 00:31:36,760
which is open census, is now combining with open tracing into open telemetry, I think it is.

362
00:31:37,120 --> 00:31:39,340
And open telemetry also has a metric library.

363
00:31:39,680 --> 00:31:45,900
So how we square that with the micrometer library, it's essentially a library, with the actuator, right,

364
00:31:45,960 --> 00:31:49,720
there might be some variation there or some resolution to do.

365
00:31:50,700 --> 00:31:54,120
But to me, it's like people need to understand metric better.

366
00:31:54,620 --> 00:31:58,380
They need to understand the kinds of things they should be measuring.

367
00:31:58,900 --> 00:32:02,640
And it's not just because it's a better alternative.

368
00:32:02,840 --> 00:32:08,400
It's a more compacted alternative to trying to analyze logs, which is what we usually do.

369
00:32:10,680 --> 00:32:13,100
I think that was like a long-winded, not very smart answer.

370
00:32:13,200 --> 00:32:15,400
But that's why I'm interested in the topic.

371
00:32:15,520 --> 00:32:20,480
I know it's hard for people to conceptualize or to figure out what they should be measuring.

372
00:32:20,960 --> 00:32:22,380
I wanted to give some examples.

373
00:32:22,560 --> 00:32:23,600
Here's what you should be measuring.

374
00:32:23,740 --> 00:32:24,460
Here's why it's important.

375
00:32:24,760 --> 00:32:27,280
Here's how you do analysis based on the stuff that you're collecting.

376
00:32:27,940 --> 00:32:29,000
And micrometers.

377
00:32:29,340 --> 00:32:30,280
I find it fascinating.

378
00:32:30,700 --> 00:32:38,860
And I want to help people understand what they should measure and be interested in adding those measurements to their application.

379
00:32:40,640 --> 00:32:41,980
Yeah, that makes perfect sense.

380
00:32:42,040 --> 00:32:54,940
And that was an absolutely brilliant answer because I think so many times when we arrive at a conclusion, when we say, oh, this is what we need to do and here's how we're going to do this, and then we share that with someone else, we overlook the why.

381
00:32:55,000 --> 00:32:57,000
Because we've gone through all that ourselves, right?

382
00:32:57,040 --> 00:33:02,840
We understand why we understand why this is important and what we're trying to accomplish with it, that we just kind of skip to the end.

383
00:33:02,920 --> 00:33:09,760
We jump to the last chapter in the book, and we say, here's the answer, and here's who did it, and here are all the wonderful things this is going to do for you.

384
00:33:10,180 --> 00:33:19,220
And if people don't understand why they would embrace that in the first place, why they would consider it, it's very easy for them to kind of like, well, you know, I'll look at that some other time.

385
00:33:19,220 --> 00:33:24,620
And they don't realize they're shortchanging themselves so badly by not understanding.

386
00:33:25,140 --> 00:33:30,660
Yeah, the measurement stuff, oh, it's cool, but, like, why would I use it directly is really the question, right?

387
00:33:30,660 --> 00:33:30,940
Exactly.

388
00:33:31,060 --> 00:33:46,920
Turning on metrics, turning on the actuator, you get a certain amount because the actuator, as with all things spring, right, it all automatically inserts itself in a bunch of places, so you get basic information about runtime behavior, and that part's great.

389
00:33:46,920 --> 00:34:04,040
It's easy, you don't have to think about it, but what I think people miss out on is some of the other nuance you can get if you add, if you use micrometers, interfaces to add additional measurements so you can understand the behavior of your system without having to go dig through log files.

390
00:34:05,600 --> 00:34:10,220
Like, I kind of feel like you need to use metrics to tell you when you need to go dig through the log files.

391
00:34:11,160 --> 00:34:11,560
Right.

392
00:34:12,740 --> 00:34:17,200
Well, I'm really glad you're going to be talking about this and presenting on this SpringOne platform.

393
00:34:17,740 --> 00:34:22,240
So, you know, yet another reason that people should come just for that, just for the one talk.

394
00:34:22,740 --> 00:34:28,020
If I could ask, since you are a veteran of SpringOne platform, what's your favorite thing?

395
00:34:28,080 --> 00:34:31,360
If you had to pick one or maybe just your top couple things?

396
00:34:31,500 --> 00:34:34,780
I know, obviously, just getting to chat with me has got to be one of the highlights, right?

397
00:34:35,040 --> 00:34:35,700
I'm kidding.

398
00:34:35,960 --> 00:34:36,060
I'm kidding.

399
00:34:36,260 --> 00:34:47,000
But no, actually, I mean, in all honesty, one of the things I like the most about attending SpringOne is all the people that you get to meet in a great community, right?

400
00:34:47,080 --> 00:34:51,080
Of people that are there to talk about Spring and to talk about other distributors.

401
00:34:51,560 --> 00:34:56,560
I mean, at this point, Spring is doing a lot in the distributed computing space, which is interesting to me.

402
00:34:57,260 --> 00:35:08,560
And I just find the engagement level with attendees, how interested they are in the technology, how interested they are in talking to each other and talking.

403
00:35:08,720 --> 00:35:10,720
Like, last year, I was there just as a vendor.

404
00:35:10,900 --> 00:35:12,560
I was there as a booth babe.

405
00:35:13,180 --> 00:35:17,300
But it's like, you know, the interest level you had, even just talking to people, which is great.

406
00:35:17,740 --> 00:35:18,260
It was fabulous.

407
00:35:18,860 --> 00:35:22,520
And that's one of the things I like best about SpringOne platform as a conference.

408
00:35:23,080 --> 00:35:26,840
Yeah, I think, again, I mean, you hit on some of my favorite things, too.

409
00:35:26,900 --> 00:35:33,300
The community, the chance to just exchange ideas and kind of, you know, percolate things that may have been tickling the back of your mind.

410
00:35:33,860 --> 00:35:38,420
And to be among other people who are just as committed and passionate about it is just awesome.

411
00:35:38,660 --> 00:35:48,320
So if someone is kind of on the fence, if they haven't been to SpringOne platform before, if they're kind of kicking around the idea, they're looking at Austin and thinking, wow, great barbecue.

412
00:35:48,580 --> 00:35:49,900
But maybe they're not into barbecue.

413
00:35:50,160 --> 00:35:50,720
I don't know.

414
00:35:50,720 --> 00:35:53,380
I mean, I can't understand that, but maybe they're not.

415
00:35:53,720 --> 00:35:59,680
What would you say to someone who's kind of giving it some thought, who's considering coming to SpringOne platform but just hasn't decided fully yet?

416
00:36:01,580 --> 00:36:04,820
I think, for me, it's how much you can learn.

417
00:36:05,220 --> 00:36:06,620
There's just, there's a lot of sessions.

418
00:36:06,800 --> 00:36:08,780
A lot of them are very, very deep.

419
00:36:08,960 --> 00:36:11,060
Some of them are still nice in general and broad.

420
00:36:12,500 --> 00:36:16,260
But between, I mean, we'll be there as a vendor again.

421
00:36:16,320 --> 00:36:17,460
IBM will be there with the booth.

422
00:36:17,680 --> 00:36:19,320
There's lots of other people that are there.

423
00:36:19,320 --> 00:36:33,580
So in addition to the technical talk where you learn all kinds of things about technology, you can also go to different companies and see how they're using Spring, which can give you a really good perspective on how this whole system is supposed to fit together.

424
00:36:33,980 --> 00:36:51,080
We're in an era right now where I feel like there's just so many options, there's so many pieces, there's so many choices about how, like, there's reactive, there's traditional web stuff, there's functions.

425
00:36:51,080 --> 00:37:02,520
And, like, we're just at a place where there's so many choices, being able to step back and see what, like, get the options into context can help you see it much bigger, if you get a better feel for the big picture.

426
00:37:03,440 --> 00:37:08,840
And for me, both the talks and then also the vendors, like, you can start to see how these pieces can fit.

427
00:37:09,640 --> 00:37:10,600
Maybe that's just me.

428
00:37:12,080 --> 00:37:12,900
Not at all.

429
00:37:13,080 --> 00:37:20,020
But you did leave out one really key, important reason that people should come to Springland Platform, and that's to meet Erin Schnabel.

430
00:37:21,000 --> 00:37:21,460
That's right.

431
00:37:21,540 --> 00:37:22,280
You should come see me.

432
00:37:22,480 --> 00:37:23,460
And I will be around.

433
00:37:23,660 --> 00:37:27,080
I mean, I have that one talk, but otherwise I will be around the IBM booth.

434
00:37:28,000 --> 00:37:29,140
Yeah, I'll be findable.

435
00:37:29,860 --> 00:37:31,460
And people should seek you out.

436
00:37:31,560 --> 00:37:46,520
I mean, I know you're too modest to say this, but we've been friends for a long time, and Erin is one of those folks who just really is an absolute joy to talk with, because every time I chat with you, I learn so much, as well as just having a great conversation.

437
00:37:46,520 --> 00:37:56,500
So if you haven't made your decision to go to Springland Platform yet, this is one of the arguably best reasons you can make that decision, is just to chat with Erin.

438
00:37:56,560 --> 00:38:04,500
Obviously, go to her talk, sit in on the Metrics for the Win talk, catch up with her, get a chance to pick her brain and to chat.

439
00:38:04,640 --> 00:38:06,040
That by itself ought to do it, right?

440
00:38:06,300 --> 00:38:07,380
The barbecue is just an extra.

441
00:38:07,540 --> 00:38:07,640
Yeah.

442
00:38:08,920 --> 00:38:10,220
But in the interim.

443
00:38:10,240 --> 00:38:10,780
Oh, and the bat.

444
00:38:11,140 --> 00:38:12,340
You can't forget about the bat.

445
00:38:12,640 --> 00:38:14,380
Oh, I wonder if it'll be the season for the bat.

446
00:38:15,000 --> 00:38:16,600
I don't know if it's the right season for the bat.

447
00:38:16,960 --> 00:38:23,960
There's a whole colony of bats that live under one of the bridges in Austin, and it's amazing when they take off at Dunk.

448
00:38:24,100 --> 00:38:26,200
It's absolutely, ridiculously amazing.

449
00:38:26,360 --> 00:38:27,020
It's so cool.

450
00:38:28,020 --> 00:38:29,940
So anyway, but I don't know if it's the right season.

451
00:38:30,020 --> 00:38:31,380
I forget if they're just over the summer.

452
00:38:32,180 --> 00:38:33,300
Well, I had no idea.

453
00:38:33,440 --> 00:38:34,720
Now I'm going to have to look that up.

454
00:38:34,940 --> 00:38:35,820
Oh, my gosh.

455
00:38:35,900 --> 00:38:36,120
Yeah.

456
00:38:36,820 --> 00:38:38,040
It's so cool.

457
00:38:38,200 --> 00:38:39,300
It is so cool.

458
00:38:39,900 --> 00:38:44,920
And they treat it as a, I mean, it is a kind of a protected habitat.

459
00:38:45,000 --> 00:38:52,460
But in a way, they do have some boats that go out on the river so that they can see all these bats coming out from under the bridge.

460
00:38:52,500 --> 00:38:54,060
It's a breeding area for the bats.

461
00:38:54,220 --> 00:38:55,880
It's just, it's so cool.

462
00:38:56,800 --> 00:38:56,940
Anyway.

463
00:38:57,800 --> 00:38:58,160
Wow.

464
00:38:58,340 --> 00:38:59,140
Had no idea.

465
00:38:59,260 --> 00:39:06,060
So that's just an extra, nice little extra, you know, in the evening when your brain is full and you need to go out and kind of get away and relax.

466
00:39:06,680 --> 00:39:06,920
Yeah.

467
00:39:07,360 --> 00:39:07,720
Awesome.

468
00:39:07,920 --> 00:39:10,280
Well, see, again, I learned so much from you.

469
00:39:10,320 --> 00:39:12,600
And it's not just in tech, but who knew?

470
00:39:12,940 --> 00:39:17,300
Erin, in the interim, between now and Springwind Platform, how can people get in touch with you?

471
00:39:17,360 --> 00:39:19,560
How can they follow you and keep up with what you're working on?

472
00:39:19,620 --> 00:39:25,420
I know Twitter is the best way, I think, because I'm partial to Twitter and because I love following your Twitter account.

473
00:39:25,520 --> 00:39:26,860
But if you would share with our listeners.

474
00:39:27,900 --> 00:39:29,800
I am Ebullient Works on Twitter.

475
00:39:30,220 --> 00:39:34,820
If anybody goes and looks up the word ebullient, all of those definitions apply to me.

476
00:39:35,300 --> 00:39:35,900
So, fair warning.

477
00:39:38,200 --> 00:39:39,820
All definitions of that word.

478
00:39:39,920 --> 00:39:40,940
That's me in a nutshell.

479
00:39:41,940 --> 00:39:42,420
Wonderful.

480
00:39:42,420 --> 00:39:44,860
Ebullient Works on Twitter is probably that.

481
00:39:45,540 --> 00:39:46,260
Okay, great.

482
00:39:46,660 --> 00:39:50,440
Well, between now and then, it just gives us so much more to look forward to.

483
00:39:50,620 --> 00:39:55,380
But thank you so much for your time, for taking time out of your busy day, and see you at Springwind Platform.

484
00:39:55,840 --> 00:39:57,100
Always great to talk to you, Mark.

485
00:39:57,300 --> 00:39:57,640
Likewise.

486
00:39:58,000 --> 00:39:58,300
Thanks.

487
00:39:58,960 --> 00:40:00,360
Well, I hope you enjoyed that interview.

488
00:40:00,860 --> 00:40:01,600
I sure did.

489
00:40:02,180 --> 00:40:12,000
Hey, and as a bonus for listening this far, if you want to register for Springwind Platform, the wonderful conference we have coming up October 7th to 10th in my hometown, Austin, Texas,

490
00:40:12,280 --> 00:40:19,940
when you go to springwind platform.io to register, you can use the code S1P200 underscore M Heckler.

491
00:40:20,060 --> 00:40:23,420
That's M-H-E-C-K-L-E-R.

492
00:40:23,700 --> 00:40:24,960
That's Mark's last name.

493
00:40:25,120 --> 00:40:37,960
You can find the discount code if you go to pivotal.io slash podcast as well, and that'll get you $200 off the registration fee, price, winning admission, however you want to think about it.

494
00:40:38,280 --> 00:40:43,020
Well, we've got several of these coming out, so if you enjoyed this one, you should check out the other ones.

495
00:40:43,340 --> 00:40:48,420
And otherwise, tune in to the regular Pivotal Conversations each week or so, and we'll see you next time.

496
00:40:48,620 --> 00:40:49,060
Bye-bye.
