WEBVTT

1
00:00:01.080 --> 00:00:03.000
<v Speaker 1>How'd you like to listen to dot net rocks with

2
00:00:03.040 --> 00:00:07.879
<v Speaker 1>no ads? Easy? Become a patron for just five dollars

3
00:00:07.919 --> 00:00:10.800
<v Speaker 1>a month. You get access to a private RSS feed

4
00:00:10.839 --> 00:00:14.240
<v Speaker 1>where all the shows have no ads. Twenty dollars a month,

5
00:00:14.279 --> 00:00:16.920
<v Speaker 1>we'll get you that and a special dot net Rocks

6
00:00:16.960 --> 00:00:21.000
<v Speaker 1>patron mug. Sign up now at Patreon dot dot NetRocks

7
00:00:21.120 --> 00:00:36.880
<v Speaker 1>dot com. Hey, welcome back to dot net rocks. I'm

8
00:00:36.920 --> 00:00:39.520
<v Speaker 1>Carl Franklin and I'm Richard Campbell, and we're here for

9
00:00:39.600 --> 00:00:43.799
<v Speaker 1>your geek out pleasure. Not yet, no official geekout, but

10
00:00:44.159 --> 00:00:46.640
<v Speaker 1>you know we're gonna there coming. We're gonna geek out

11
00:00:46.640 --> 00:00:47.119
<v Speaker 1>with our guests.

12
00:00:47.119 --> 00:00:49.560
<v Speaker 2>Now. There's so much to talk about. I can't even

13
00:00:49.600 --> 00:00:51.799
<v Speaker 2>tell you. I've been writing and writing and writing and writing.

14
00:00:51.840 --> 00:00:54.479
<v Speaker 2>They're gonna be long. Sorry, they're gonna be long.

15
00:00:54.719 --> 00:00:57.159
<v Speaker 1>Yeah, I think everybody looks forward to that at the

16
00:00:57.200 --> 00:00:58.600
<v Speaker 1>end of the year. Richard, I certainly do.

17
00:00:58.719 --> 00:01:01.240
<v Speaker 2>I appreciate that. I told you I've I've made a

18
00:01:01.240 --> 00:01:03.039
<v Speaker 2>new talk just on nuclear power.

19
00:01:03.200 --> 00:01:04.519
<v Speaker 1>Yeah, there's a lot of new stuff.

20
00:01:04.560 --> 00:01:07.879
<v Speaker 2>And then suddenly all attack giants are talking about nuclear power.

21
00:01:07.920 --> 00:01:12.680
<v Speaker 2>So everybody wants that talk. And it's a physics talk

22
00:01:12.840 --> 00:01:17.439
<v Speaker 2>like I start with I pull up a periodic table

23
00:01:17.519 --> 00:01:20.519
<v Speaker 2>and talk about the actinides and go through a decay

24
00:01:20.599 --> 00:01:23.040
<v Speaker 2>pattern of you two thirty eight like it's.

25
00:01:22.760 --> 00:01:24.840
<v Speaker 1>Okay, I'm going to have another sandwich.

26
00:01:25.200 --> 00:01:30.159
<v Speaker 2>And but you know, it all pulls the story together

27
00:01:30.239 --> 00:01:33.040
<v Speaker 2>and some interesting things happening in the space. But we'll

28
00:01:33.040 --> 00:01:35.239
<v Speaker 2>talk about that on the Energy Geek go yeap.

29
00:01:36.159 --> 00:01:39.120
<v Speaker 1>And first before we bring on Adam, let's do a

30
00:01:39.159 --> 00:01:41.480
<v Speaker 1>little thing called better no framework awesome?

31
00:01:49.319 --> 00:01:50.239
<v Speaker 2>All right man? What we got?

32
00:01:50.480 --> 00:01:52.439
<v Speaker 1>Well, I want you guys to go to Boston dot

33
00:01:52.599 --> 00:01:54.840
<v Speaker 1>Chef's makingwaves dot com.

34
00:01:55.000 --> 00:01:56.120
<v Speaker 2>Nice. What is this?

35
00:01:56.519 --> 00:01:59.920
<v Speaker 1>So this is a cruise and it's the same cruise

36
00:02:00.239 --> 00:02:02.400
<v Speaker 1>company that does the rock Boat. I don't know if

37
00:02:02.439 --> 00:02:04.959
<v Speaker 1>you've heard that no, but it's like you know, one

38
00:02:05.040 --> 00:02:08.840
<v Speaker 1>hundred bands, oh all on a cruise and you see

39
00:02:08.840 --> 00:02:13.159
<v Speaker 1>a different one like every different venues and stuff. But anyway,

40
00:02:13.280 --> 00:02:16.680
<v Speaker 1>so this is a cruise from all up in New

41
00:02:16.680 --> 00:02:20.400
<v Speaker 1>England Boston to Portland, Maine and Saint John, New Brunswick.

42
00:02:20.879 --> 00:02:25.520
<v Speaker 1>It's in October October twenty fourth through twenty eight in

43
00:02:25.599 --> 00:02:29.639
<v Speaker 1>twenty twenty five. And if you're a fan of you know,

44
00:02:29.719 --> 00:02:32.599
<v Speaker 1>Food Network and Celebrity chefs like I Am.

45
00:02:33.080 --> 00:02:35.039
<v Speaker 2>Back when Food Network actually talked about food.

46
00:02:35.639 --> 00:02:37.919
<v Speaker 1>Alton Brown is going to be on this cruise.

47
00:02:38.280 --> 00:02:40.840
<v Speaker 2>There you go, that's your ringer right there, right, Yep.

48
00:02:41.039 --> 00:02:43.319
<v Speaker 2>We love Alton Brown. He's our kind of geek.

49
00:02:43.439 --> 00:02:47.879
<v Speaker 1>And then as the Choi, Anne Burrell, Eric Adjepong, Roco

50
00:02:48.000 --> 00:02:55.159
<v Speaker 1>de Spirito, Alex Gerna Shelley, Mark Murphy, Jeff Morrow, and Andrew Zimmern,

51
00:02:56.360 --> 00:02:59.400
<v Speaker 1>Josh Capon, a couple other people that you may have

52
00:02:59.639 --> 00:03:05.120
<v Speaker 1>or may not have heard of. Gabe Bertaccini, who does

53
00:03:05.120 --> 00:03:08.520
<v Speaker 1>a show called chow House with Alex Cornishelly, it's just

54
00:03:08.639 --> 00:03:11.199
<v Speaker 1>going to be great. And so you know, it's a

55
00:03:11.199 --> 00:03:18.199
<v Speaker 1>cruise you have cooking demonstrations and dinners and food cooked

56
00:03:18.319 --> 00:03:22.319
<v Speaker 1>in person by these people and reading the comments from

57
00:03:22.400 --> 00:03:25.319
<v Speaker 1>last year. Some of them like to be a little

58
00:03:25.599 --> 00:03:27.879
<v Speaker 1>more private than others and they don't really come out

59
00:03:27.919 --> 00:03:30.680
<v Speaker 1>and greet and talk, but others will hang out with

60
00:03:30.719 --> 00:03:34.080
<v Speaker 1>you like the whole time. Wow. So I'm just really

61
00:03:34.280 --> 00:03:37.479
<v Speaker 1>really excited to go on this. I've actually bought a ticket,

62
00:03:37.599 --> 00:03:40.719
<v Speaker 1>so oh you're going, I'm going. So if you want

63
00:03:40.719 --> 00:03:43.919
<v Speaker 1>to go on this cruise with me, just get a ticket.

64
00:03:44.080 --> 00:03:45.599
<v Speaker 2>Let me know that's really fun.

65
00:03:45.759 --> 00:03:48.039
<v Speaker 1>So that's what I got. Who's talking to us today, Richard?

66
00:03:48.199 --> 00:03:50.840
<v Speaker 2>I grabbed a comment Taver Show nineteen twelve, which is

67
00:03:50.879 --> 00:03:53.120
<v Speaker 2>just back in August when we talked to Anita Vam

68
00:03:53.759 --> 00:03:56.479
<v Speaker 2>about demain driven design and events sourcing, which I think

69
00:03:56.479 --> 00:03:59.479
<v Speaker 2>will be somewhat orthogonal to the things you were talking about.

70
00:04:00.120 --> 00:04:02.400
<v Speaker 2>Jaye Debauer had this comedy. He says, I've listened to

71
00:04:02.439 --> 00:04:06.240
<v Speaker 2>every episode since sometime in twenty ten. Wow, so that

72
00:04:06.280 --> 00:04:11.120
<v Speaker 2>would be you know, Got the Morning a thousand episodes easy,

73
00:04:11.759 --> 00:04:13.599
<v Speaker 2>And you guys have had a huge impact on my career.

74
00:04:13.639 --> 00:04:15.560
<v Speaker 2>So thanks. I have a reputation for coming into work

75
00:04:15.599 --> 00:04:19.199
<v Speaker 2>and saying I was listening to dot at rocks And anyway,

76
00:04:19.199 --> 00:04:22.079
<v Speaker 2>onto the real meat. We've been using aka dot net

77
00:04:22.160 --> 00:04:24.439
<v Speaker 2>and event sourcing ideas that I need to talk about

78
00:04:24.519 --> 00:04:27.519
<v Speaker 2>and it's a match made in heaven. All the positive

79
00:04:27.560 --> 00:04:28.839
<v Speaker 2>things that I need to had to say, but wanted

80
00:04:28.879 --> 00:04:31.639
<v Speaker 2>to point out one other benefit that's been very interesting.

81
00:04:32.120 --> 00:04:35.000
<v Speaker 2>When you have an event store and an unexpected question arises,

82
00:04:35.040 --> 00:04:37.120
<v Speaker 2>you can always write a bit of code to reprocess

83
00:04:37.120 --> 00:04:40.160
<v Speaker 2>that event streamer streams to calculate the answer to a

84
00:04:40.199 --> 00:04:43.720
<v Speaker 2>new question. I believe Anita mentioned the time travel or

85
00:04:43.720 --> 00:04:46.399
<v Speaker 2>something like that, the events can always be replayed up

86
00:04:46.399 --> 00:04:48.160
<v Speaker 2>to a desired time and allowing you to view the

87
00:04:48.199 --> 00:04:51.439
<v Speaker 2>state as it was at the time. In my experience,

88
00:04:51.480 --> 00:04:54.439
<v Speaker 2>the business is delighted when you can perform magic tricks

89
00:04:54.519 --> 00:04:56.360
<v Speaker 2>like this. Thanks so much for the great show.

90
00:04:56.439 --> 00:04:57.000
<v Speaker 1>Fantastic.

91
00:04:57.079 --> 00:04:59.439
<v Speaker 2>Yeah, no, it's great. It is a great point about

92
00:04:59.519 --> 00:05:03.319
<v Speaker 2>this different way of thinking about software that having event

93
00:05:03.439 --> 00:05:06.920
<v Speaker 2>streams that you can store and replay just gives you

94
00:05:07.000 --> 00:05:09.560
<v Speaker 2>all kinds of possibilities for tackling problems. It's certainly been

95
00:05:09.600 --> 00:05:13.199
<v Speaker 2>something I've used when doing profiling for performance problems, where

96
00:05:13.279 --> 00:05:15.839
<v Speaker 2>the fact that we could replay the workload and make

97
00:05:15.879 --> 00:05:18.160
<v Speaker 2>some alterations replay the workload a n it taught us

98
00:05:18.199 --> 00:05:20.120
<v Speaker 2>a lot. So Jay, thank you so much for your

99
00:05:20.120 --> 00:05:21.800
<v Speaker 2>comment and a copy of music Cobi. It's on its

100
00:05:21.839 --> 00:05:23.040
<v Speaker 2>way to you. And if you'd like a copy of

101
00:05:23.079 --> 00:05:24.839
<v Speaker 2>music code by, I write a comment on the website

102
00:05:24.839 --> 00:05:26.879
<v Speaker 2>at dot at Rocks dot com or on the Facebook

103
00:05:26.959 --> 00:05:28.560
<v Speaker 2>to publish every show there. And if you comment there

104
00:05:28.560 --> 00:05:30.360
<v Speaker 2>and I reading on the show, we'll send you copy

105
00:05:30.360 --> 00:05:30.920
<v Speaker 2>of music Coba.

106
00:05:31.040 --> 00:05:33.759
<v Speaker 1>Music to Koba of course still cranking and people love it.

107
00:05:33.920 --> 00:05:36.759
<v Speaker 1>And yes, I do plan on coming out with another

108
00:05:36.800 --> 00:05:39.800
<v Speaker 1>track taking next year. Yeah, I'm still tankling.

109
00:05:40.040 --> 00:05:40.639
<v Speaker 2>That's all of that.

110
00:05:41.439 --> 00:05:44.560
<v Speaker 1>But as for social media, Richard and I have been

111
00:05:44.600 --> 00:05:47.600
<v Speaker 1>on ex Twitter for a long time. Maybe not for long,

112
00:05:47.720 --> 00:05:50.519
<v Speaker 1>I'm not sure. But you can also Rea Stress on

113
00:05:50.600 --> 00:05:54.759
<v Speaker 1>blue Sky, I'm Carl Franklin dot bsky dot social.

114
00:05:54.519 --> 00:05:56.560
<v Speaker 2>And I'm rich Campbell dot bsky dot social.

115
00:05:56.759 --> 00:06:00.920
<v Speaker 1>And also on Masterson I'm at Carl Franklin tech hub

116
00:06:01.000 --> 00:06:01.920
<v Speaker 1>dot social.

117
00:06:01.639 --> 00:06:04.360
<v Speaker 2>And I'm Rich Campbell at Masterdon dot social.

118
00:06:04.480 --> 00:06:07.319
<v Speaker 1>Yeah. All right, well send us a toot a teat

119
00:06:07.480 --> 00:06:09.639
<v Speaker 1>a suite or whatever the heck you call it. And

120
00:06:10.439 --> 00:06:12.680
<v Speaker 1>that's another way that you could win some music to

121
00:06:12.720 --> 00:06:16.680
<v Speaker 1>code by Skeat, I think is what they call.

122
00:06:16.720 --> 00:06:19.480
<v Speaker 2>It's a skeet yep, it's I don't know if that's

123
00:06:19.480 --> 00:06:20.879
<v Speaker 2>a great name, but it is what it is.

124
00:06:21.360 --> 00:06:23.920
<v Speaker 1>John Skeet can't really take credit for that. That's like

125
00:06:23.959 --> 00:06:25.959
<v Speaker 1>one thing that he can't take credit for. He's done

126
00:06:25.959 --> 00:06:29.639
<v Speaker 1>everything else exactly. Okay, let's bring on Adam. Adam Dimitrik

127
00:06:29.800 --> 00:06:32.160
<v Speaker 1>is the CEO of Adaptec Group and the creator of

128
00:06:32.279 --> 00:06:36.759
<v Speaker 1>event Modeling, with over three decades experience in software development

129
00:06:36.759 --> 00:06:40.279
<v Speaker 1>and architecture. Adam is an expert in event driven systems

130
00:06:40.279 --> 00:06:44.680
<v Speaker 1>and event sourcing. He has been instrumental in advancing these methodologies,

131
00:06:44.680 --> 00:06:48.800
<v Speaker 1>particularly through his work on event modeling, which we'll talk

132
00:06:48.839 --> 00:06:52.759
<v Speaker 1>about today, and that provides a transparent, inclusive and collaborative

133
00:06:52.800 --> 00:06:56.079
<v Speaker 1>approach to system design. Adam is a frequent speaker at

134
00:06:56.079 --> 00:07:02.120
<v Speaker 1>international conferences and has contributed significantly to the responsible, efficient

135
00:07:02.199 --> 00:07:07.480
<v Speaker 1>system design and implementation in software industry. Welcome Adam, and

136
00:07:07.759 --> 00:07:10.000
<v Speaker 1>apologies that you haven't been on this show before.

137
00:07:10.600 --> 00:07:15.199
<v Speaker 3>No worries, I've been busy, so you know, finally our

138
00:07:15.519 --> 00:07:19.079
<v Speaker 3>paths cross and thank you for having me. What a

139
00:07:19.120 --> 00:07:20.839
<v Speaker 3>wonderful intro to the topic as well.

140
00:07:20.959 --> 00:07:23.199
<v Speaker 2>We've always been in an adjacent thread to each other,

141
00:07:23.279 --> 00:07:25.120
<v Speaker 2>right often at the same shows. I think we've done

142
00:07:25.120 --> 00:07:28.600
<v Speaker 2>a little drinking together now and again. But yeah, long overdue, Adam.

143
00:07:28.639 --> 00:07:30.120
<v Speaker 2>I apologize. You shouldn't it taken it?

144
00:07:30.240 --> 00:07:32.680
<v Speaker 3>Yeah, twelve years ago is now? And then yeah, yeah now,

145
00:07:32.720 --> 00:07:34.040
<v Speaker 3>and then yeah as you do.

146
00:07:34.439 --> 00:07:34.920
<v Speaker 1>Sure.

147
00:07:36.120 --> 00:07:36.319
<v Speaker 2>Yeah.

148
00:07:36.319 --> 00:07:41.279
<v Speaker 3>We met. Last time I think was NBC OSLO in

149
00:07:41.360 --> 00:07:45.560
<v Speaker 3>Norway twenty twelve, so I was still giving talks back

150
00:07:45.600 --> 00:07:48.439
<v Speaker 3>then on GET which was kind of fairly new and

151
00:07:49.600 --> 00:07:53.879
<v Speaker 3>in a lot of circles and I think patterns Microsoft

152
00:07:53.920 --> 00:07:57.360
<v Speaker 3>Patterns and Practices, the Seacaarras Journey Book. I was involved

153
00:07:57.360 --> 00:07:57.959
<v Speaker 3>in that project.

154
00:07:58.000 --> 00:07:58.839
<v Speaker 2>Ye yeah, right.

155
00:07:59.040 --> 00:08:02.079
<v Speaker 3>Exactly that time, and that was I was really doing

156
00:08:02.120 --> 00:08:05.160
<v Speaker 3>a lot of that good stuff getting that going for

157
00:08:05.279 --> 00:08:08.800
<v Speaker 3>that team, which was really fun and engaging way to

158
00:08:08.839 --> 00:08:09.519
<v Speaker 3>help out with.

159
00:08:09.720 --> 00:08:13.519
<v Speaker 1>Was before I started looking like heat miser. So that's how.

160
00:08:15.959 --> 00:08:18.720
<v Speaker 2>Wow, look at the Exploring c QRS and Events Sourcing

161
00:08:18.720 --> 00:08:21.240
<v Speaker 2>book is still on the Microsoft side, included the show notes.

162
00:08:21.240 --> 00:08:23.439
<v Speaker 2>Everyone wants to look at it. It's two years old.

163
00:08:23.480 --> 00:08:24.480
<v Speaker 2>But it's not wrong.

164
00:08:24.959 --> 00:08:27.240
<v Speaker 3>No, no, it's actually it's one of the first fouries

165
00:08:27.279 --> 00:08:29.000
<v Speaker 3>I think into using Azure. So we have a lot

166
00:08:29.040 --> 00:08:32.679
<v Speaker 3>of clients that use Azure for you know, the different

167
00:08:32.720 --> 00:08:35.519
<v Speaker 3>technologies they are cosmos, et cetera, for storing the event streams,

168
00:08:35.559 --> 00:08:38.480
<v Speaker 3>et cetera. So if you're on a very dot net

169
00:08:38.519 --> 00:08:42.440
<v Speaker 3>focused textac you know, this is what I'm going to

170
00:08:42.440 --> 00:08:46.080
<v Speaker 3>be talking about is highly technology agnostic. It's talking about

171
00:08:46.120 --> 00:08:50.039
<v Speaker 3>being responsible with your information system. So sure, really the

172
00:08:50.080 --> 00:08:53.240
<v Speaker 3>whole kind of background of how our parallel lives kind

173
00:08:53.240 --> 00:08:53.960
<v Speaker 3>of weave in and out.

174
00:08:54.519 --> 00:08:58.320
<v Speaker 1>Yeah, yeah, So the the comment Richard read was a

175
00:08:58.320 --> 00:09:02.000
<v Speaker 1>pretty good introduction to events sourcing if you don't know

176
00:09:02.039 --> 00:09:05.200
<v Speaker 1>what that is. And the whole idea is that instead

177
00:09:05.200 --> 00:09:09.399
<v Speaker 1>of mutating a field and a table, you add a

178
00:09:09.399 --> 00:09:13.759
<v Speaker 1>new record and whatever changed and who changed it, so

179
00:09:13.799 --> 00:09:16.080
<v Speaker 1>that it does become sort of like a time machine

180
00:09:16.080 --> 00:09:21.960
<v Speaker 1>that you can step back and every record is a state. Essentially.

181
00:09:22.360 --> 00:09:27.519
<v Speaker 3>Yeah, it's like it's like accounting, but for information. That's

182
00:09:27.559 --> 00:09:29.559
<v Speaker 3>how I like to think of it, because accountants don't

183
00:09:29.559 --> 00:09:32.519
<v Speaker 3>have erasers, as the stereotypical thing goes.

184
00:09:32.559 --> 00:09:35.600
<v Speaker 1>And so interesting you said accountants, because that was the

185
00:09:35.639 --> 00:09:39.039
<v Speaker 1>first introduction to that that I had back in the nineties.

186
00:09:39.080 --> 00:09:43.879
<v Speaker 1>We were building an accounting module for some software I

187
00:09:43.879 --> 00:09:47.120
<v Speaker 1>was building or helping to build, and that was a requirement,

188
00:09:47.320 --> 00:09:50.440
<v Speaker 1>like you could not modify field, you had to write

189
00:09:51.279 --> 00:09:52.440
<v Speaker 1>a diff Essentially.

190
00:09:52.639 --> 00:09:54.679
<v Speaker 3>What's interesting about the history of this whole idea of

191
00:09:54.759 --> 00:09:59.000
<v Speaker 3>event sourcing is that many kind of credit event sourcing

192
00:09:59.000 --> 00:10:03.279
<v Speaker 3>to Martin Fowlers areticle in December two thousand and five. However,

193
00:10:03.320 --> 00:10:05.919
<v Speaker 3>if you kind of look at information systems in general,

194
00:10:06.399 --> 00:10:11.320
<v Speaker 3>the approach has really been the way you create information

195
00:10:11.440 --> 00:10:15.440
<v Speaker 3>systems throughout thousands of years. Most of the organizations and

196
00:10:15.480 --> 00:10:19.879
<v Speaker 3>systems that happened before computing were literally record keeping and

197
00:10:20.120 --> 00:10:23.919
<v Speaker 3>you needed those carbon copies to know where the heck

198
00:10:23.960 --> 00:10:26.840
<v Speaker 3>things are people filing cabinets by their desks to you know,

199
00:10:26.919 --> 00:10:29.159
<v Speaker 3>to have the old copies there. So events sourcing is

200
00:10:29.159 --> 00:10:30.879
<v Speaker 3>actually quite natural for human beings.

201
00:10:30.919 --> 00:10:32.799
<v Speaker 1>And I think I always know, if you think about it,

202
00:10:32.759 --> 00:10:34.919
<v Speaker 1>are you taking the eraser away? You know?

203
00:10:35.559 --> 00:10:39.279
<v Speaker 2>Yeah, for a good reason, guys, get serious talking. You

204
00:10:39.360 --> 00:10:43.000
<v Speaker 2>go all the way back to writing with quills on clay,

205
00:10:43.240 --> 00:10:47.000
<v Speaker 2>right and Kadian, where you can't erase anything, You've got

206
00:10:47.000 --> 00:10:47.720
<v Speaker 2>to throw it out.

207
00:10:47.879 --> 00:10:48.080
<v Speaker 1>Yeah.

208
00:10:48.360 --> 00:10:52.159
<v Speaker 2>And that whole markup system was designed for counting an inventory.

209
00:10:52.720 --> 00:10:55.080
<v Speaker 2>It was an entry only system exactly.

210
00:10:55.080 --> 00:10:57.960
<v Speaker 1>Wow, Richard, that's awesome. What a way to tie this

211
00:10:58.120 --> 00:11:01.240
<v Speaker 1>back to history. Great, it's so cool.

212
00:11:02.559 --> 00:11:05.240
<v Speaker 3>I think another problem that people have it's a little

213
00:11:05.240 --> 00:11:07.519
<v Speaker 3>bit different than what they're used to. So I have

214
00:11:07.519 --> 00:11:09.759
<v Speaker 3>to say there's a bit of a baby duck syndrome

215
00:11:09.799 --> 00:11:11.320
<v Speaker 3>at play when people are looking at this way of

216
00:11:11.360 --> 00:11:14.679
<v Speaker 3>working a lot of times. But once you're familiar with

217
00:11:14.720 --> 00:11:17.360
<v Speaker 3>both ways of working, either the mutable state way that

218
00:11:17.399 --> 00:11:19.360
<v Speaker 3>we kind of have forms over data a lot of times,

219
00:11:19.399 --> 00:11:23.840
<v Speaker 3>crowd systems or whatever, and these behavior based ledger based approaches.

220
00:11:25.519 --> 00:11:27.200
<v Speaker 3>One of the simplest things about it is that you

221
00:11:27.240 --> 00:11:29.000
<v Speaker 3>really don't have to think about you know, am I

222
00:11:29.039 --> 00:11:32.600
<v Speaker 3>going to have to follow a whole bunch of relationships

223
00:11:32.600 --> 00:11:34.559
<v Speaker 3>between tables right away? When I have a form and

224
00:11:34.600 --> 00:11:37.639
<v Speaker 3>I press submit, it's like, the only thing I need

225
00:11:37.679 --> 00:11:40.480
<v Speaker 3>to do is just store that that was submitted. It's

226
00:11:40.480 --> 00:11:44.000
<v Speaker 3>almost like the systems thinking boundary and capturing things at

227
00:11:44.039 --> 00:11:47.200
<v Speaker 3>the ingress and the outgress, like and that is your

228
00:11:47.200 --> 00:11:49.639
<v Speaker 3>source of truth. So there's very little subjectivity about it.

229
00:11:50.039 --> 00:11:52.639
<v Speaker 3>When you know that your business requires this information that

230
00:11:52.720 --> 00:11:55.120
<v Speaker 3>user is going to be adding something, it really takes

231
00:11:55.159 --> 00:11:57.519
<v Speaker 3>away that subjective kind of discussion of like how am

232
00:11:57.519 --> 00:12:00.519
<v Speaker 3>I going to design this? And oftentimes in this event way,

233
00:12:01.559 --> 00:12:05.840
<v Speaker 3>the event modeling is not really modeling the events themselves.

234
00:12:06.240 --> 00:12:10.759
<v Speaker 3>It's modeling using the building blocks that the events provide

235
00:12:11.039 --> 00:12:15.639
<v Speaker 3>because they're kind of dictated to you, like the business

236
00:12:15.639 --> 00:12:17.759
<v Speaker 3>says this has to happen at this time, so you

237
00:12:17.840 --> 00:12:21.120
<v Speaker 3>have no choice but to capture that information. The subjective

238
00:12:21.159 --> 00:12:24.879
<v Speaker 3>stuff is left how you interpret it later. But the

239
00:12:24.919 --> 00:12:27.559
<v Speaker 3>other good thing about that is is that you are

240
00:12:27.600 --> 00:12:32.120
<v Speaker 3>not really restricted to one way to abstract that projection.

241
00:12:32.519 --> 00:12:35.559
<v Speaker 3>You're free to really do a lot of different projections

242
00:12:35.559 --> 00:12:38.200
<v Speaker 3>for different purposes, so that same information can be used

243
00:12:38.240 --> 00:12:40.799
<v Speaker 3>in an entirely different way further along in the workflow.

244
00:12:40.840 --> 00:12:44.120
<v Speaker 3>And so there's this natural sort of fanning out into

245
00:12:44.639 --> 00:12:48.440
<v Speaker 3>purpose built abstractions, which really gives a lot of awesome

246
00:12:48.480 --> 00:12:51.480
<v Speaker 3>capabilities for people working on the projects. That's also have

247
00:12:51.519 --> 00:12:54.320
<v Speaker 3>a list of one hundred benefits of this approach, and

248
00:12:54.360 --> 00:12:57.480
<v Speaker 3>one of them is this really good autonomy so that

249
00:12:57.480 --> 00:12:59.360
<v Speaker 3>people don't step on each other's toes and so that

250
00:12:59.399 --> 00:13:03.360
<v Speaker 3>you're free to build the abstraction that fits that particular

251
00:13:03.360 --> 00:13:06.799
<v Speaker 3>step in a workflow one percent. Right, You're not make

252
00:13:06.840 --> 00:13:10.000
<v Speaker 3>one abstraction that tries to make all the different pieces happy,

253
00:13:10.039 --> 00:13:12.159
<v Speaker 3>because you're never going to make everyone happy all the time.

254
00:13:12.240 --> 00:13:14.240
<v Speaker 3>So that's kind of one of the really benefits of that.

255
00:13:14.279 --> 00:13:16.639
<v Speaker 1>Can we just jump back a little bit and yeah,

256
00:13:16.679 --> 00:13:18.679
<v Speaker 1>I mean you kind of jumped into the benefits of

257
00:13:18.679 --> 00:13:22.639
<v Speaker 1>event modeling without really talking about the fundamentals of what

258
00:13:22.759 --> 00:13:25.240
<v Speaker 1>it is. Oh yeah, sure, so elevator pitch.

259
00:13:25.480 --> 00:13:27.399
<v Speaker 3>Yeah, event modeling is kind of a I mean, you

260
00:13:27.399 --> 00:13:31.480
<v Speaker 3>guys kind of gave a short kind of intro winter this,

261
00:13:31.519 --> 00:13:36.759
<v Speaker 3>but it's really about having a clear and understandable documentation

262
00:13:37.080 --> 00:13:39.840
<v Speaker 3>of what the system is doing, and it really is

263
00:13:39.879 --> 00:13:43.720
<v Speaker 3>a storyboard for for your system, much like you would

264
00:13:43.759 --> 00:13:46.159
<v Speaker 3>have a storyboard for a movie where you have the

265
00:13:46.200 --> 00:13:49.279
<v Speaker 3>scenes at the top row of what's happening visually, but

266
00:13:49.399 --> 00:13:53.440
<v Speaker 3>at the bottom you have notes about you have notes

267
00:13:53.480 --> 00:13:55.799
<v Speaker 3>about the plots to make sure that the movie still

268
00:13:55.799 --> 00:13:57.600
<v Speaker 3>makes sense. So you need to have both, or you

269
00:13:57.679 --> 00:13:59.320
<v Speaker 3>end up with water World. You know, if it looks

270
00:13:59.360 --> 00:14:02.799
<v Speaker 3>really good, you don't want you don't want a water World.

271
00:14:04.840 --> 00:14:07.519
<v Speaker 3>So that's and vice versa, right, I mean you can

272
00:14:07.600 --> 00:14:10.840
<v Speaker 3>have the really you know, a really good story and

273
00:14:11.039 --> 00:14:14.120
<v Speaker 3>you hear about this an excellent book with a horrible

274
00:14:14.120 --> 00:14:16.799
<v Speaker 3>movie adaptation, right, so you don't want the opposite either,

275
00:14:17.279 --> 00:14:19.080
<v Speaker 3>or something is a visual to just you don't.

276
00:14:18.919 --> 00:14:21.519
<v Speaker 1>Want to be drinking your own urine.

277
00:14:22.399 --> 00:14:28.200
<v Speaker 3>Yes, yeah, so it's it's kind of it's it's really

278
00:14:28.240 --> 00:14:30.960
<v Speaker 3>about I would have I would like an event modeling

279
00:14:31.000 --> 00:14:34.200
<v Speaker 3>to like, let's say, Richard, you have a you have

280
00:14:34.240 --> 00:14:36.159
<v Speaker 3>a system, and I don't know how it works, and

281
00:14:36.519 --> 00:14:39.360
<v Speaker 3>you could hand me a pile of specifications and documentation

282
00:14:39.559 --> 00:14:41.799
<v Speaker 3>and hope that I'm bored enough over the weekend to

283
00:14:41.799 --> 00:14:44.639
<v Speaker 3>go through it all, or we could sit down side

284
00:14:44.679 --> 00:14:46.879
<v Speaker 3>by side and you can say, hey, Adam, let me

285
00:14:46.919 --> 00:14:50.360
<v Speaker 3>walk you through some examples of how I use this system. Right,

286
00:14:50.759 --> 00:14:52.200
<v Speaker 3>I go, okay, so what do you do now after

287
00:14:52.200 --> 00:14:54.360
<v Speaker 3>you log in? Okay, you press this Okay, I understand.

288
00:14:54.399 --> 00:14:55.960
<v Speaker 3>You set it up, and now I can put things

289
00:14:55.960 --> 00:14:58.159
<v Speaker 3>in the cart and my customers can pay for things.

290
00:14:57.960 --> 00:14:58.320
<v Speaker 2>Et cetera.

291
00:14:58.360 --> 00:15:01.960
<v Speaker 3>It's like, very cool, Richard, thank you. I totally understand

292
00:15:02.440 --> 00:15:05.279
<v Speaker 3>how the system works. It wasn't that way more effective

293
00:15:05.279 --> 00:15:07.200
<v Speaker 3>than a bunch of papers sitting at my desk waiting

294
00:15:07.240 --> 00:15:07.639
<v Speaker 3>to be read.

295
00:15:08.080 --> 00:15:12.080
<v Speaker 1>Right, So essentially taking from the user story down into

296
00:15:12.120 --> 00:15:18.000
<v Speaker 1>the system, what gets written, what doesn't get written about? Yeah?

297
00:15:18.159 --> 00:15:20.279
<v Speaker 3>Yeah, so it's sort of like the closest thing I

298
00:15:20.320 --> 00:15:23.360
<v Speaker 3>would say that. It's like is sequence diagrams from UML,

299
00:15:23.519 --> 00:15:26.080
<v Speaker 3>except we take the middle pieces out and we really

300
00:15:26.080 --> 00:15:28.399
<v Speaker 3>talk about state the kind of the object on the

301
00:15:28.440 --> 00:15:31.039
<v Speaker 3>very far right in the sequence diagram and the user

302
00:15:31.080 --> 00:15:33.639
<v Speaker 3>interaction on the very far left, and this is kind

303
00:15:33.639 --> 00:15:37.639
<v Speaker 3>of the right size block for units of work. Those

304
00:15:37.679 --> 00:15:40.519
<v Speaker 3>state transitions we don't want to talk about get into

305
00:15:40.559 --> 00:15:42.960
<v Speaker 3>the weeds of like is this class a good abstraction

306
00:15:43.120 --> 00:15:46.120
<v Speaker 3>or not? That's highly subjective and also silos a lot

307
00:15:46.120 --> 00:15:49.240
<v Speaker 3>of the conversations into just the dev circles, so it

308
00:15:49.240 --> 00:15:52.279
<v Speaker 3>doesn't really have a good collaborative platform for talking with

309
00:15:52.320 --> 00:15:56.240
<v Speaker 3>your business users. Now State. I sometimes explain this as

310
00:15:56.320 --> 00:15:58.279
<v Speaker 3>like this, you know the pyramid you have in an

311
00:15:58.360 --> 00:16:01.320
<v Speaker 3>organization where we have your you know, boss, CEO, whatever,

312
00:16:01.320 --> 00:16:03.519
<v Speaker 3>they have a vision statement. That vision statement gets broken

313
00:16:03.559 --> 00:16:06.039
<v Speaker 3>down into a set of goals or whatever, and then

314
00:16:06.080 --> 00:16:08.879
<v Speaker 3>it gets keeps getting broken down into requirements, into actual

315
00:16:09.320 --> 00:16:12.799
<v Speaker 3>you know, implementation and tests. So it really fans out.

316
00:16:12.960 --> 00:16:15.639
<v Speaker 3>But there's that really good common area in the middle

317
00:16:15.679 --> 00:16:18.600
<v Speaker 3>of that triangle called understanding state. And as I go

318
00:16:18.679 --> 00:16:22.919
<v Speaker 3>through this, you know, storyboard of what what people see,

319
00:16:23.000 --> 00:16:25.279
<v Speaker 3>what gets stored in the system as the time moves on.

320
00:16:25.399 --> 00:16:27.879
<v Speaker 3>By example, you know, no branching, nothing like that, just

321
00:16:27.960 --> 00:16:29.879
<v Speaker 3>like no no flow charts. Is not a flow chart.

322
00:16:30.759 --> 00:16:34.320
<v Speaker 3>You really understand, you know what happens, and people can

323
00:16:34.360 --> 00:16:36.919
<v Speaker 3>work together using this. It's kind of like a blueprint.

324
00:16:37.799 --> 00:16:39.519
<v Speaker 3>If you go to a construction site, there's a big

325
00:16:39.519 --> 00:16:42.519
<v Speaker 3>blueprint on a big table. The carpenters and the and

326
00:16:42.600 --> 00:16:45.559
<v Speaker 3>the and the plumbers can can look at it. And

327
00:16:45.679 --> 00:16:48.679
<v Speaker 3>so the key there is that the carpenter knows exactly

328
00:16:48.720 --> 00:16:52.440
<v Speaker 3>where to cut the holes in the walls so that

329
00:16:52.480 --> 00:16:55.039
<v Speaker 3>the plumber can put the pipes through where they need

330
00:16:55.080 --> 00:16:55.360
<v Speaker 3>to go.

331
00:16:55.840 --> 00:16:56.039
<v Speaker 2>Right.

332
00:16:56.080 --> 00:16:58.799
<v Speaker 3>So there's that. I guess what we've kind of been

333
00:16:58.840 --> 00:17:01.399
<v Speaker 3>trying to do in this after industry ever since agile

334
00:17:02.279 --> 00:17:04.200
<v Speaker 3>is to do the small design up front, which was

335
00:17:04.279 --> 00:17:06.200
<v Speaker 3>kind of always the premise we'll get rid of big

336
00:17:06.279 --> 00:17:08.079
<v Speaker 3>design upfront because we don't want to We don't want

337
00:17:08.079 --> 00:17:12.319
<v Speaker 3>to be, you know, being kind of armchair architects for

338
00:17:12.359 --> 00:17:16.079
<v Speaker 3>a whole year planning these great goals and you know,

339
00:17:16.200 --> 00:17:17.960
<v Speaker 3>things that will never see the light of day because

340
00:17:18.000 --> 00:17:20.559
<v Speaker 3>we've never actually practiced them. So this, you know, this

341
00:17:20.680 --> 00:17:23.680
<v Speaker 3>event modeling can actually be done as little as an afternoon,

342
00:17:24.200 --> 00:17:26.680
<v Speaker 3>and it can also be done and often is done

343
00:17:26.759 --> 00:17:29.200
<v Speaker 3>as a way to maintain the system because you upgrade

344
00:17:29.240 --> 00:17:31.240
<v Speaker 3>your schematic of what's happening. So you know, if I

345
00:17:31.279 --> 00:17:32.880
<v Speaker 3>come back to a system four years later and we

346
00:17:32.960 --> 00:17:35.599
<v Speaker 3>do this often you kind of roll out the schematic

347
00:17:35.640 --> 00:17:38.119
<v Speaker 3>and say, hey, someone needs a feature and it requires

348
00:17:38.200 --> 00:17:40.359
<v Speaker 3>you know, this extra workflow to be at it, so

349
00:17:40.440 --> 00:17:42.960
<v Speaker 3>we'll make space on it. Plunk in what needs to

350
00:17:42.960 --> 00:17:47.039
<v Speaker 3>be done, do what's called information completeness check, which is

351
00:17:47.079 --> 00:17:49.599
<v Speaker 3>a real fancy way of saying, do I have a

352
00:17:49.640 --> 00:17:52.039
<v Speaker 3>source for that piece of information somewhere? And if the

353
00:17:52.160 --> 00:17:54.640
<v Speaker 3>arrow's doing add up, we know we're missing something and

354
00:17:54.680 --> 00:17:56.160
<v Speaker 3>so we're going to have to you know, this is

355
00:17:56.200 --> 00:17:58.680
<v Speaker 3>where we really understand the coupling in a system. We

356
00:17:58.759 --> 00:18:03.559
<v Speaker 3>start to actually see where you know, that field value

357
00:18:03.640 --> 00:18:05.599
<v Speaker 3>must come from. Okay, we probably need to add date

358
00:18:05.599 --> 00:18:09.000
<v Speaker 3>of birth on the registration page because we're obviously using

359
00:18:09.079 --> 00:18:11.759
<v Speaker 3>date of birth and the thing that we just imagined

360
00:18:11.799 --> 00:18:14.440
<v Speaker 3>we want to have in the next release. So that's

361
00:18:14.519 --> 00:18:17.640
<v Speaker 3>kind of how it works. I also think of old

362
00:18:17.720 --> 00:18:20.119
<v Speaker 3>history of when you had a vacuum tube television and

363
00:18:20.160 --> 00:18:23.400
<v Speaker 3>you opened up the back panel, you'd have the entire

364
00:18:23.519 --> 00:18:26.559
<v Speaker 3>schematic with the where each wire goes to which vacuum tube,

365
00:18:26.559 --> 00:18:28.839
<v Speaker 3>so that if something went wrong with your TV, you know,

366
00:18:28.880 --> 00:18:31.079
<v Speaker 3>it's not today's throwaway society where you go back to

367
00:18:31.119 --> 00:18:33.680
<v Speaker 3>Costco and return it. You actually, you know, had a

368
00:18:33.759 --> 00:18:36.759
<v Speaker 3>TV repairman and go and you know find that too.

369
00:18:36.839 --> 00:18:39.880
<v Speaker 3>And you know, I think someone mentioned that there's at

370
00:18:39.920 --> 00:18:42.960
<v Speaker 3>stores there used to be vacuum tube testers. We'd plug

371
00:18:42.960 --> 00:18:45.640
<v Speaker 3>in your vacuum tube and click and then see which

372
00:18:45.680 --> 00:18:48.519
<v Speaker 3>ones work or whatever. So we kind of want to

373
00:18:48.559 --> 00:18:52.119
<v Speaker 3>have that responsible way of maintaining our software systems. And

374
00:18:52.200 --> 00:18:54.680
<v Speaker 3>so an event model is a is a really human

375
00:18:54.720 --> 00:18:58.799
<v Speaker 3>friendly diagram of what the system's doing. And I also

376
00:18:58.920 --> 00:19:01.920
<v Speaker 3>call it inform architecture, which is really the backbone of

377
00:19:01.960 --> 00:19:05.119
<v Speaker 3>all architecture because no matter what cool stuff we're doing

378
00:19:05.119 --> 00:19:08.200
<v Speaker 3>in tech, it all serves the purpose of getting information

379
00:19:08.279 --> 00:19:10.839
<v Speaker 3>to people, right. And the reason that the screens and

380
00:19:10.880 --> 00:19:14.240
<v Speaker 3>the UX is in event modeling is because all systems

381
00:19:14.279 --> 00:19:16.559
<v Speaker 3>we build are for humans, and so we need that

382
00:19:16.680 --> 00:19:20.279
<v Speaker 3>human face to it. And so where previous attempts to

383
00:19:20.279 --> 00:19:24.640
<v Speaker 3>do even like business specific things like BPMN, oftentimes this

384
00:19:24.680 --> 00:19:27.839
<v Speaker 3>is more of an extra feature or a benefit that

385
00:19:27.880 --> 00:19:30.400
<v Speaker 3>you can or can't use, event modeling says, no, you've

386
00:19:30.400 --> 00:19:32.359
<v Speaker 3>got to have these things in here because humans are

387
00:19:32.440 --> 00:19:35.079
<v Speaker 3>using it. So I really want to know if my

388
00:19:35.240 --> 00:19:38.759
<v Speaker 3>process is at fifty percent, you know, with these steps,

389
00:19:39.000 --> 00:19:41.680
<v Speaker 3>if I navigate to this web page, what would I

390
00:19:41.720 --> 00:19:45.200
<v Speaker 3>see right? And on those relevant things, we kind of

391
00:19:45.200 --> 00:19:47.440
<v Speaker 3>do that, and so an event model is organized as well,

392
00:19:47.440 --> 00:19:49.440
<v Speaker 3>so you have your subsystems and swim lanes below, and

393
00:19:49.480 --> 00:19:51.720
<v Speaker 3>you also have the different users that are interacting with

394
00:19:51.720 --> 00:19:54.160
<v Speaker 3>the system at the top in their own swim lanes.

395
00:19:54.319 --> 00:19:56.440
<v Speaker 3>And the middle part is really like the watermark of

396
00:19:56.480 --> 00:19:58.519
<v Speaker 3>like the input and output, Like where does the information

397
00:19:58.599 --> 00:20:00.319
<v Speaker 3>come in? And then how is it project it out

398
00:20:00.319 --> 00:20:02.119
<v Speaker 3>to a particular screen, And you can connect all those

399
00:20:02.119 --> 00:20:04.680
<v Speaker 3>things together and it's a real fun, fast way to

400
00:20:04.720 --> 00:20:07.640
<v Speaker 3>get going, but also a really responsible way of maintaining

401
00:20:07.680 --> 00:20:10.400
<v Speaker 3>really crazy large systems. So we had these event models

402
00:20:10.400 --> 00:20:13.720
<v Speaker 3>that you know, span giant projects worth millions of dollars,

403
00:20:13.759 --> 00:20:16.559
<v Speaker 3>and so it ends up scaling from you know, startup

404
00:20:16.599 --> 00:20:20.400
<v Speaker 3>to giant enterprise. And it's kind of like skills like

405
00:20:20.480 --> 00:20:22.640
<v Speaker 3>this I kind of see as carpentry, right, Like if

406
00:20:22.680 --> 00:20:24.839
<v Speaker 3>you know the shape of wood, you can build a

407
00:20:24.839 --> 00:20:27.079
<v Speaker 3>really good chair, you can build a really good house. Right.

408
00:20:27.119 --> 00:20:29.519
<v Speaker 3>How does a good carpenter work at all these levels, Well,

409
00:20:29.519 --> 00:20:32.920
<v Speaker 3>they really understand the nature of what they're working with, right,

410
00:20:33.359 --> 00:20:36.359
<v Speaker 3>And so understanding information is kind of like the backbone

411
00:20:36.400 --> 00:20:39.240
<v Speaker 3>of being able to you know, build small systems or

412
00:20:39.240 --> 00:20:40.119
<v Speaker 3>build large systems.

413
00:20:40.200 --> 00:20:40.319
<v Speaker 2>Right.

414
00:20:40.359 --> 00:20:43.039
<v Speaker 3>You kind of a good system will have this no

415
00:20:43.200 --> 00:20:46.240
<v Speaker 3>artificial ceilings of how far they can go. So yeah,

416
00:20:46.240 --> 00:20:48.799
<v Speaker 3>that's kind of I get too excited talking about event model.

417
00:20:48.799 --> 00:20:50.359
<v Speaker 3>I can talk about it all day. So I hope

418
00:20:50.400 --> 00:20:53.519
<v Speaker 3>that was a succinct enough explanation kind of what's on

419
00:20:53.559 --> 00:20:55.519
<v Speaker 3>top of my mind after you guys introduced it.

420
00:20:57.799 --> 00:20:59.839
<v Speaker 2>Does a tooling matter much here? Like it sounds like

421
00:21:00.559 --> 00:21:03.480
<v Speaker 2>a way of thinking about data, But I think about

422
00:21:03.559 --> 00:21:07.519
<v Speaker 2>the comment and using aka dot net for example, it's like,

423
00:21:08.119 --> 00:21:10.240
<v Speaker 2>is that help you lead to go the right way?

424
00:21:10.359 --> 00:21:13.279
<v Speaker 3>It could, and it certainly was very important in earlier days.

425
00:21:13.319 --> 00:21:16.400
<v Speaker 3>I think now with the focus on how important information is,

426
00:21:16.480 --> 00:21:19.960
<v Speaker 3>especially with AI and all that, you really want the

427
00:21:19.960 --> 00:21:22.440
<v Speaker 3>maximum amount of things, So why not capture all of this?

428
00:21:22.519 --> 00:21:24.880
<v Speaker 3>And we're kind of blending to topics you're event sourcing

429
00:21:24.880 --> 00:21:27.319
<v Speaker 3>and event modeling because event modeling works for traditional systems.

430
00:21:27.799 --> 00:21:30.920
<v Speaker 3>We've had lots of people that love the notation and say,

431
00:21:30.960 --> 00:21:32.960
<v Speaker 3>you know, our company is just not ready for event sourcing.

432
00:21:32.960 --> 00:21:35.640
<v Speaker 3>We don't have the ability to shift the culture to

433
00:21:35.680 --> 00:21:38.319
<v Speaker 3>do it that way, but they still use event modeling

434
00:21:38.359 --> 00:21:40.519
<v Speaker 3>for that. So your question, Richard, is about kind of

435
00:21:40.519 --> 00:21:44.640
<v Speaker 3>two areas. So yeah, underlying technology, there's tooling there to

436
00:21:44.799 --> 00:21:47.279
<v Speaker 3>support event sourcing if you want, but you can use

437
00:21:47.319 --> 00:21:51.000
<v Speaker 3>it with traditional stuff, right, doesn't make it any harder.

438
00:21:51.000 --> 00:21:54.160
<v Speaker 3>But there's also the what do you use especially around COVID.

439
00:21:54.200 --> 00:21:56.000
<v Speaker 3>A lot of this stuff used to be done in

440
00:21:56.039 --> 00:21:58.599
<v Speaker 3>person before COVID, on whiteboards where you would use sticky

441
00:21:58.599 --> 00:22:00.839
<v Speaker 3>notes to kind of elaborate what's our workflow, you know,

442
00:22:00.839 --> 00:22:02.799
<v Speaker 3>what are we going to be capturing. Let's put up

443
00:22:02.880 --> 00:22:06.400
<v Speaker 3>some you know, mockups that we drew with with felt

444
00:22:06.400 --> 00:22:08.359
<v Speaker 3>markers on white pages and just put them across and

445
00:22:08.440 --> 00:22:10.559
<v Speaker 3>kind of say, yeah, that looks like a really cool system.

446
00:22:10.640 --> 00:22:12.200
<v Speaker 3>I can see this working, and I can.

447
00:22:13.599 --> 00:22:15.880
<v Speaker 2>Yeah, And the tech is secondary the point there, right,

448
00:22:16.000 --> 00:22:18.160
<v Speaker 2>the system stands alone.

449
00:22:17.799 --> 00:22:21.279
<v Speaker 3>Yeah, exactly, So that the cool thing about that is that, yeah,

450
00:22:21.319 --> 00:22:24.720
<v Speaker 3>it's an back of the napkin sticky note process that

451
00:22:25.319 --> 00:22:27.880
<v Speaker 3>kind of conveys the same information. But obviously since COVID

452
00:22:27.920 --> 00:22:30.920
<v Speaker 3>everything's gone online. Nothing beats in person kind of interaction,

453
00:22:31.000 --> 00:22:33.119
<v Speaker 3>especially when you're collaborating. But a lot of things were

454
00:22:33.160 --> 00:22:35.960
<v Speaker 3>brought online. So there's the advent of well real time

455
00:22:36.000 --> 00:22:38.079
<v Speaker 3>board changed to MIRO, and then of course Microsoft has

456
00:22:38.079 --> 00:22:42.240
<v Speaker 3>its own whiteboarding technologies and teams, and many others are

457
00:22:42.279 --> 00:22:44.759
<v Speaker 3>out there. There's open source ones like Diagrams, dot net

458
00:22:44.799 --> 00:22:48.640
<v Speaker 3>and on and on, Lucid, chart Excala draw. All of

459
00:22:48.640 --> 00:22:51.640
<v Speaker 3>those work as long as we can draw a rectangle

460
00:22:51.640 --> 00:22:53.680
<v Speaker 3>and connect them with arrows. You pretty much got all

461
00:22:53.720 --> 00:22:56.559
<v Speaker 3>you need for event modeling and you can get started

462
00:22:56.599 --> 00:22:59.720
<v Speaker 3>right away. And so the other thing that makes this

463
00:23:00.079 --> 00:23:03.119
<v Speaker 3>tech agnostic on the front end of actually designing it

464
00:23:03.160 --> 00:23:05.839
<v Speaker 3>is that it's really synonymous to what a lot of

465
00:23:05.839 --> 00:23:08.640
<v Speaker 3>people are happy with already. Most systems that you have

466
00:23:08.720 --> 00:23:11.799
<v Speaker 3>that people want to design, people are quite familiar with

467
00:23:12.319 --> 00:23:15.279
<v Speaker 3>mockups and they want, you know, mockups of the screens

468
00:23:15.279 --> 00:23:17.240
<v Speaker 3>that a user will see in generally, so a lot

469
00:23:17.240 --> 00:23:21.279
<v Speaker 3>of places already have kind of the basics in their

470
00:23:21.359 --> 00:23:23.519
<v Speaker 3>muscle memory to go through this kind of process. So

471
00:23:23.559 --> 00:23:26.039
<v Speaker 3>that's why it's getting quite a lot of traction.

472
00:23:26.240 --> 00:23:28.480
<v Speaker 2>Yeah, it feels like you're just putting language around stuff

473
00:23:28.480 --> 00:23:29.599
<v Speaker 2>we were doing instinctually.

474
00:23:29.920 --> 00:23:32.799
<v Speaker 3>Yeah, but there's some important caveats because a lot of times,

475
00:23:32.799 --> 00:23:34.839
<v Speaker 3>you know, one of our clients was plenty of Fish

476
00:23:34.880 --> 00:23:36.559
<v Speaker 3>and you know, to send a message from one user

477
00:23:36.599 --> 00:23:38.240
<v Speaker 3>to another. And for those that don't know, plenty of

478
00:23:38.240 --> 00:23:41.200
<v Speaker 3>Fish is a free dating site, so there's a lot

479
00:23:41.200 --> 00:23:43.839
<v Speaker 3>of like a free profile, so you could be talking

480
00:23:43.880 --> 00:23:46.720
<v Speaker 3>to a random stranger, could be someone that's not necessarily

481
00:23:46.759 --> 00:23:49.799
<v Speaker 3>been vetted as much as with another platform. So you know,

482
00:23:50.079 --> 00:23:52.599
<v Speaker 3>if you were to do a wireframe mockup of sending

483
00:23:52.640 --> 00:23:55.480
<v Speaker 3>a message from one user to another on a wireframe,

484
00:23:55.480 --> 00:23:57.160
<v Speaker 3>that would look like, oh, that's just two steps. There's

485
00:23:57.200 --> 00:23:59.200
<v Speaker 3>a send message and that oh this person's receiving it,

486
00:23:59.319 --> 00:24:02.039
<v Speaker 3>great specs, right, But like in the middle is about

487
00:24:02.079 --> 00:24:05.079
<v Speaker 3>twelve steps of we got to spam check, we got

488
00:24:05.119 --> 00:24:08.279
<v Speaker 3>to translate it, and you know, replace dollar signs for

489
00:24:08.440 --> 00:24:11.079
<v Speaker 3>essays and all sorts of tricks that people play to

490
00:24:11.160 --> 00:24:13.079
<v Speaker 3>do that. So you know, when we actually did this

491
00:24:13.200 --> 00:24:18.559
<v Speaker 3>with them, event modeling elaborates this to make this complexity

492
00:24:19.599 --> 00:24:23.039
<v Speaker 3>drawn out horizontally to actually see the size. So where

493
00:24:23.039 --> 00:24:25.240
<v Speaker 3>this makes an impact is in your agile estimation, so

494
00:24:25.359 --> 00:24:27.880
<v Speaker 3>or you have extra L T shirt sizes or whatever.

495
00:24:28.160 --> 00:24:30.279
<v Speaker 3>We kind of don't want to be subjective saying like, hey, Adam,

496
00:24:30.480 --> 00:24:31.799
<v Speaker 3>how hard do you think this is?

497
00:24:31.799 --> 00:24:31.960
<v Speaker 2>Oh?

498
00:24:32.000 --> 00:24:34.119
<v Speaker 3>I think that's an extra large or a medium T

499
00:24:34.200 --> 00:24:38.279
<v Speaker 3>shirt size? Highly subjective, right, Like does Adam really have

500
00:24:38.359 --> 00:24:40.079
<v Speaker 3>the good experience to answer this?

501
00:24:40.160 --> 00:24:40.920
<v Speaker 2>You know, maybe this.

502
00:24:40.920 --> 00:24:43.880
<v Speaker 3>Other person will give me a large or a small

503
00:24:43.960 --> 00:24:46.559
<v Speaker 3>depending on their experience. So we kind of want to

504
00:24:46.599 --> 00:24:49.519
<v Speaker 3>remove the subjectivity and rather than saying, you know, how

505
00:24:49.559 --> 00:24:51.119
<v Speaker 3>long is it going to take to send this to

506
00:24:51.680 --> 00:24:53.559
<v Speaker 3>get the work done to send this message to this

507
00:24:53.599 --> 00:24:57.119
<v Speaker 3>other person on this platform. I need to then see

508
00:24:57.680 --> 00:25:01.160
<v Speaker 3>and illustrate to the business in a human friendly way

509
00:25:01.440 --> 00:25:04.680
<v Speaker 3>that this is going to take twelve steps along the

510
00:25:04.720 --> 00:25:07.759
<v Speaker 3>way to transform the information and filter the information along

511
00:25:07.759 --> 00:25:09.480
<v Speaker 3>the way, and we can label those things such as

512
00:25:09.799 --> 00:25:14.759
<v Speaker 3>bad word filter and spam filter and you know alternate

513
00:25:14.839 --> 00:25:18.640
<v Speaker 3>character Unicode filter where people are trying to well, you know,

514
00:25:18.680 --> 00:25:21.799
<v Speaker 3>the old hack with a semicolon being replaced with the

515
00:25:22.559 --> 00:25:25.119
<v Speaker 3>Unicode version from I forget what it is. I think

516
00:25:25.160 --> 00:25:27.799
<v Speaker 3>it's an an Indian language of some sort, but it

517
00:25:27.799 --> 00:25:29.960
<v Speaker 3>looks like a semi colon, but your thing doesn't compile

518
00:25:30.240 --> 00:25:32.240
<v Speaker 3>because it's not actually a semi place.

519
00:25:32.400 --> 00:25:36.200
<v Speaker 2>Some Unicode character tas like, why is that failing?

520
00:25:36.440 --> 00:25:38.319
<v Speaker 3>I've watched three Days of Sleep and.

521
00:25:39.079 --> 00:25:41.799
<v Speaker 1>We just did a Blazer puzzle on that where an

522
00:25:41.839 --> 00:25:46.240
<v Speaker 1>E looked like an E but it wasn't an E

523
00:25:46.359 --> 00:25:51.279
<v Speaker 1>and it was a cyrillic yeah something. Yeah, yeah, it's

524
00:25:51.319 --> 00:25:56.079
<v Speaker 1>not an E and everything compiled because we were instantiating

525
00:25:56.200 --> 00:25:59.160
<v Speaker 1>a new class name in the class name that we

526
00:25:59.160 --> 00:26:02.960
<v Speaker 1>were instantiating had that crazy E in it, and it

527
00:26:03.000 --> 00:26:03.559
<v Speaker 1>didn't work.

528
00:26:04.240 --> 00:26:08.240
<v Speaker 3>Yeah, yeah, yeah, so anyway, I mean, this kind of

529
00:26:08.240 --> 00:26:11.880
<v Speaker 3>stuff was really pertinent to these guys and if they

530
00:26:11.880 --> 00:26:14.160
<v Speaker 3>didn't get you know, I think it's a lot better.

531
00:26:14.440 --> 00:26:15.880
<v Speaker 3>First of all, I think it kind of removes a

532
00:26:15.880 --> 00:26:19.000
<v Speaker 3>lot of the problems with imposter syndrome and gatekeeping in

533
00:26:19.319 --> 00:26:23.839
<v Speaker 3>organizations because if you remove subjectivity, you're really not putting

534
00:26:23.839 --> 00:26:26.559
<v Speaker 3>someone in a spot to be the judge of someone else.

535
00:26:27.319 --> 00:26:30.400
<v Speaker 3>And if you systematize things that like, can we just

536
00:26:30.440 --> 00:26:33.119
<v Speaker 3>work together shoulder shoulder looking at the system and kind

537
00:26:33.160 --> 00:26:36.960
<v Speaker 3>of you know, spread out this highly complex unit of

538
00:26:37.000 --> 00:26:40.720
<v Speaker 3>sending a message on this platform that's got these vulnerabilities

539
00:26:41.119 --> 00:26:45.240
<v Speaker 3>and explain how that actually works instead. But the trick

540
00:26:45.359 --> 00:26:47.680
<v Speaker 3>was always that that was always looked at as a

541
00:26:47.680 --> 00:26:50.400
<v Speaker 3>technical thing and always got chucked over the fence to

542
00:26:50.440 --> 00:26:50.920
<v Speaker 3>the devs.

543
00:26:51.319 --> 00:26:51.480
<v Speaker 1>Right.

544
00:26:51.519 --> 00:26:53.720
<v Speaker 3>But if we bring into the conversation a way of

545
00:26:54.359 --> 00:26:57.480
<v Speaker 3>describing these problems and solutions in a set of state

546
00:26:57.559 --> 00:27:01.119
<v Speaker 3>changes that's understandable by both side, and that's where we win.

547
00:27:01.279 --> 00:27:05.039
<v Speaker 3>Where we have this really collaborative environment now where we're

548
00:27:05.079 --> 00:27:08.960
<v Speaker 3>talking about everything that everyone cares about. And so you

549
00:27:08.960 --> 00:27:12.039
<v Speaker 3>know that goes to how we do specification. So we

550
00:27:12.079 --> 00:27:15.440
<v Speaker 3>do a lot of spec a specification by example from

551
00:27:15.480 --> 00:27:19.799
<v Speaker 3>the behavior driven design stuff with guys like Joshua Kariewski

552
00:27:19.880 --> 00:27:22.480
<v Speaker 3>and Dan North and others that have really pushed this.

553
00:27:22.839 --> 00:27:27.200
<v Speaker 3>Goyko is another one, so growing software with Objura, I

554
00:27:27.240 --> 00:27:29.680
<v Speaker 3>forget what it is. There's a there's a growing software book,

555
00:27:29.680 --> 00:27:31.839
<v Speaker 3>the Goose Book I think it's called that also talks

556
00:27:31.839 --> 00:27:34.799
<v Speaker 3>about a lot of this stuff. But really it's going

557
00:27:34.839 --> 00:27:37.519
<v Speaker 3>back to that human friendly thing. And the reason that

558
00:27:37.519 --> 00:27:40.559
<v Speaker 3>event modeling is a story like thing is because humanity

559
00:27:40.640 --> 00:27:42.160
<v Speaker 3>kind of built on stories.

560
00:27:41.920 --> 00:27:44.079
<v Speaker 2>Right, yeah, how it's how humans work?

561
00:27:44.160 --> 00:27:46.680
<v Speaker 3>Yeah, yeah, exactly like everything like you go to sales,

562
00:27:46.680 --> 00:27:49.920
<v Speaker 3>you go to any kind of domain. A story is

563
00:27:50.000 --> 00:27:52.960
<v Speaker 3>how we retain the most. Right, We'll never remember a

564
00:27:53.000 --> 00:27:55.039
<v Speaker 3>graph like we have a really cool graph about how

565
00:27:55.079 --> 00:27:58.599
<v Speaker 3>your system's done. Cool, but I'm always going to have

566
00:27:58.680 --> 00:28:01.200
<v Speaker 3>to refer to the graph to actually use it. Where's

567
00:28:01.200 --> 00:28:03.319
<v Speaker 3>the story really sticks in your head? So when I'm

568
00:28:03.359 --> 00:28:06.880
<v Speaker 3>done with the event modeling workshop or a meeting about

569
00:28:06.880 --> 00:28:09.160
<v Speaker 3>it and I was looking at it, actually retain at

570
00:28:09.440 --> 00:28:12.519
<v Speaker 3>much higher percentage of what was discussed because it sticks

571
00:28:12.519 --> 00:28:14.680
<v Speaker 3>in my head. As in a story format.

572
00:28:14.680 --> 00:28:16.880
<v Speaker 1>And if you sing the story to the Barney song,

573
00:28:17.400 --> 00:28:18.559
<v Speaker 1>you'll have even more.

574
00:28:19.079 --> 00:28:23.680
<v Speaker 3>Mind Yeah, I mean, do what you like on your team.

575
00:28:23.799 --> 00:28:28.359
<v Speaker 1>Right, it becomes an earworm. Now you can't get it

576
00:28:28.359 --> 00:28:30.440
<v Speaker 1>out of your head, go to bed singing it every night.

577
00:28:30.720 --> 00:28:34.960
<v Speaker 3>Now you're trapped exactly. Definitely, definitely. Oh that is really good.

578
00:28:35.039 --> 00:28:36.599
<v Speaker 3>I'm gonna I'm gonna have to use that.

579
00:28:36.720 --> 00:28:38.480
<v Speaker 1>I'll be here for the rest of the show, folks, I.

580
00:28:38.440 --> 00:28:40.359
<v Speaker 3>Know I'm taking notes.

581
00:28:41.960 --> 00:28:44.920
<v Speaker 1>For more tips follow me and media.

582
00:28:45.079 --> 00:28:47.279
<v Speaker 3>Can I hire you, Carl, I'm gonna We're gonna like,

583
00:28:47.480 --> 00:28:50.000
<v Speaker 3>we're gonna bring you on onto some of these difficult projects.

584
00:28:50.200 --> 00:28:53.799
<v Speaker 3>Can you play tub something that's kind of repetitive, right, nice.

585
00:28:55.359 --> 00:28:55.920
<v Speaker 2>To you.

586
00:28:56.480 --> 00:28:59.319
<v Speaker 3>It just goes on and on ends.

587
00:29:00.079 --> 00:29:04.279
<v Speaker 1>But barbaro, no, no, no, I'm sorry.

588
00:29:06.400 --> 00:29:10.240
<v Speaker 2>Anyway, we should take a break, Yeah, we should.

589
00:29:10.440 --> 00:29:12.119
<v Speaker 1>It feels like a great place to take a break.

590
00:29:12.119 --> 00:29:15.119
<v Speaker 1>And we'll be right back after these very important messages.

591
00:29:15.160 --> 00:29:16.480
<v Speaker 1>And by the way, if you don't want to hear

592
00:29:16.519 --> 00:29:20.599
<v Speaker 1>these messages, you can get an ad free feed by

593
00:29:20.599 --> 00:29:23.680
<v Speaker 1>becoming a five dollars month patron at Patreon dot dot

594
00:29:23.680 --> 00:29:28.359
<v Speaker 1>NetRocks dot com. We'll be right back. You know. Dot

595
00:29:28.440 --> 00:29:31.359
<v Speaker 1>net six has officially reached the end of support, and

596
00:29:31.440 --> 00:29:34.400
<v Speaker 1>now is the time to upgrade. Dot Net eight is

597
00:29:34.440 --> 00:29:38.839
<v Speaker 1>well supported on AWS. Learn more at aws dot Amazon

598
00:29:38.920 --> 00:29:43.960
<v Speaker 1>dot com, slash dot net. And we're back. It's dot

599
00:29:44.000 --> 00:29:46.640
<v Speaker 1>net rocks. I'm Carl Franklin. That's my friend Richard Campbell. Hey,

600
00:29:46.839 --> 00:29:50.039
<v Speaker 1>and Adam Dimitrek is here. And we were just about

601
00:29:50.079 --> 00:29:51.519
<v Speaker 1>to sing tub thumping songs.

602
00:29:51.559 --> 00:29:55.680
<v Speaker 3>So can we get the tub thumping as the ultro.

603
00:29:55.599 --> 00:29:58.160
<v Speaker 2>Music days get knocked down.

604
00:30:01.799 --> 00:30:03.240
<v Speaker 3>A camp, it just goes on and on.

605
00:30:03.359 --> 00:30:07.000
<v Speaker 1>Yeah, and again I apologize for not going to sun track.

606
00:30:07.079 --> 00:30:09.759
<v Speaker 3>Well, that's totally fine. Actually it's it's on track. Is

607
00:30:09.839 --> 00:30:12.720
<v Speaker 3>we're exploring why this kind of stuff works and the

608
00:30:12.759 --> 00:30:16.119
<v Speaker 3>way why my stories highly connected, you know, are if

609
00:30:16.160 --> 00:30:19.240
<v Speaker 3>we if we design our systems using tools that are

610
00:30:19.240 --> 00:30:20.920
<v Speaker 3>friendly to the human brain, I think we will be

611
00:30:20.960 --> 00:30:24.920
<v Speaker 3>way more successfully. So I think that's kind of the part.

612
00:30:24.960 --> 00:30:26.759
<v Speaker 3>And you know, if if em moling really didn't come

613
00:30:26.799 --> 00:30:32.599
<v Speaker 3>up as an idea, it actually was formulation of many

614
00:30:32.599 --> 00:30:35.240
<v Speaker 3>different things that worked in the industry. So one of

615
00:30:35.279 --> 00:30:39.640
<v Speaker 3>the things that worked was a workshop type of environment

616
00:30:39.720 --> 00:30:42.319
<v Speaker 3>versus a meeting, so that there's constructive things going on

617
00:30:42.359 --> 00:30:44.680
<v Speaker 3>and you're actually collaborating. There's no I just have action

618
00:30:44.759 --> 00:30:46.960
<v Speaker 3>items at the end. Of a meeting, like we actually

619
00:30:46.960 --> 00:30:51.039
<v Speaker 3>did stuff during the meeting, which is much better the yeah,

620
00:30:51.119 --> 00:30:53.079
<v Speaker 3>exactly like my meeting.

621
00:30:53.200 --> 00:30:53.359
<v Speaker 2>Right.

622
00:30:53.400 --> 00:30:55.640
<v Speaker 3>We've been in those places where like I just want

623
00:30:55.640 --> 00:30:57.559
<v Speaker 3>to go back to my desk and get something done,

624
00:30:57.559 --> 00:30:59.680
<v Speaker 3>but I've been sitting in meetings all day, right, So

625
00:31:00.039 --> 00:31:02.000
<v Speaker 3>we definitely have no meetings now, and.

626
00:31:01.920 --> 00:31:03.440
<v Speaker 1>We're going to have a meeting to find out why

627
00:31:03.480 --> 00:31:05.160
<v Speaker 1>you have been not so productive.

628
00:31:05.880 --> 00:31:09.400
<v Speaker 3>Yeh, exactly, Maybe a meeting about the meetings to see

629
00:31:09.400 --> 00:31:14.279
<v Speaker 3>what's meaning old cliche jokes at this point, I'm sure,

630
00:31:15.160 --> 00:31:17.440
<v Speaker 3>but yeah, so you know, one of those things was

631
00:31:17.960 --> 00:31:21.440
<v Speaker 3>the collaborative approach and having in person stuff. The other

632
00:31:21.440 --> 00:31:24.079
<v Speaker 3>thing was I already mentioned was the specification by example,

633
00:31:24.160 --> 00:31:27.559
<v Speaker 3>seeing actual examples to the system as a specification that's

634
00:31:27.599 --> 00:31:30.559
<v Speaker 3>a little bit more friendly to the human brain and

635
00:31:30.640 --> 00:31:34.440
<v Speaker 3>all that. We have obviously this idea of multiple models

636
00:31:34.480 --> 00:31:37.200
<v Speaker 3>to make sure that we can express what a specific

637
00:31:37.279 --> 00:31:40.960
<v Speaker 3>part of a workflow needs based on a common source

638
00:31:41.000 --> 00:31:43.920
<v Speaker 3>of truth, which is very easily implement if you are

639
00:31:43.960 --> 00:31:46.039
<v Speaker 3>doing events sourcing. Back again, as I say, it's not

640
00:31:46.240 --> 00:31:50.960
<v Speaker 3>necessary to do event modeling, but oftentimes they're highly complementary.

641
00:31:51.000 --> 00:31:55.839
<v Speaker 3>So there's also this idea which we touched upon of immutability,

642
00:31:55.880 --> 00:31:59.400
<v Speaker 3>So everything in here in terms of the source of

643
00:31:59.400 --> 00:32:02.480
<v Speaker 3>truth is not utable, and so this additive only approach

644
00:32:02.559 --> 00:32:05.039
<v Speaker 3>is also it gives you, you know, caching is way

645
00:32:05.039 --> 00:32:07.079
<v Speaker 3>easier when you're dealing with additive only, like you're just

646
00:32:07.079 --> 00:32:09.240
<v Speaker 3>moving up point you're to validate cash and things like that,

647
00:32:09.359 --> 00:32:11.160
<v Speaker 3>or see how far you caught up to so a

648
00:32:11.160 --> 00:32:14.240
<v Speaker 3>lot of you know, technical things are are much better.

649
00:32:14.519 --> 00:32:17.000
<v Speaker 3>It also opens up the door to functional style programming.

650
00:32:17.000 --> 00:32:19.319
<v Speaker 3>You don't have to have a functional language. So all

651
00:32:19.319 --> 00:32:22.400
<v Speaker 3>the f sharp proponents really do like events sourcing because

652
00:32:22.400 --> 00:32:26.160
<v Speaker 3>of this immutability part, and like you know, growing ledger,

653
00:32:26.559 --> 00:32:28.880
<v Speaker 3>it's really easy to feed that into your functions and

654
00:32:29.359 --> 00:32:32.359
<v Speaker 3>do mathematical map produce on these things and all that

655
00:32:32.400 --> 00:32:35.119
<v Speaker 3>kind of stuff left folds and all sorts of you know,

656
00:32:35.559 --> 00:32:38.519
<v Speaker 3>functional paradigms. But you don't need that. You can actually

657
00:32:38.519 --> 00:32:42.039
<v Speaker 3>explain those benefits in human language to business that you

658
00:32:42.119 --> 00:32:45.759
<v Speaker 3>have a guarantee that anytime you've had this history, if

659
00:32:45.799 --> 00:32:47.319
<v Speaker 3>you try to do this, you're always going to end

660
00:32:47.400 --> 00:32:49.400
<v Speaker 3>up with this result. So this idea of a pure

661
00:32:49.400 --> 00:32:52.839
<v Speaker 3>function enters into the arena as well where things that

662
00:32:52.880 --> 00:32:56.200
<v Speaker 3>you test in your unit tests, etc. Are always going

663
00:32:56.240 --> 00:32:59.079
<v Speaker 3>to be deterministic, so given the same inputs, you're always

664
00:32:59.079 --> 00:33:00.759
<v Speaker 3>going to have the same output. That makes for really

665
00:33:00.799 --> 00:33:03.720
<v Speaker 3>really strong unit tests and you know, brings a lot

666
00:33:03.759 --> 00:33:07.640
<v Speaker 3>of benefits there. So that's you know, all of these

667
00:33:07.640 --> 00:33:10.440
<v Speaker 3>things are are kind of at play. So you know,

668
00:33:10.480 --> 00:33:14.720
<v Speaker 3>things like domain driven design with organizing things within bounded

669
00:33:14.799 --> 00:33:18.039
<v Speaker 3>context so that things are related using ubiicuous language to

670
00:33:18.079 --> 00:33:20.839
<v Speaker 3>make sure that the terminology is something that everyone understands

671
00:33:21.039 --> 00:33:24.720
<v Speaker 3>for a particular context that ends up being embedded in

672
00:33:24.759 --> 00:33:26.519
<v Speaker 3>the event names and the event model. So all of

673
00:33:26.519 --> 00:33:28.200
<v Speaker 3>the things that you're trying to do with all of

674
00:33:28.240 --> 00:33:30.440
<v Speaker 3>the kind of best practices that I've seen kind of

675
00:33:31.240 --> 00:33:33.599
<v Speaker 3>you know, when I started a company, it's that we

676
00:33:33.640 --> 00:33:37.039
<v Speaker 3>don't have people like I don't have money to spend

677
00:33:37.079 --> 00:33:39.920
<v Speaker 3>on project managers. I don't have money to spend on

678
00:33:39.920 --> 00:33:41.759
<v Speaker 3>product owners. I don't have money to spend on QA.

679
00:33:41.759 --> 00:33:43.440
<v Speaker 3>I don't have money to spend on any of these

680
00:33:43.519 --> 00:33:46.720
<v Speaker 3>How can we make a system that takes care of

681
00:33:46.720 --> 00:33:49.559
<v Speaker 3>what those jobs took care of, or at least scale

682
00:33:49.720 --> 00:33:53.160
<v Speaker 3>their efficiency so that I don't have to hire twelve pms.

683
00:33:53.200 --> 00:33:55.039
<v Speaker 3>I can just hire one to do that to take

684
00:33:55.079 --> 00:33:57.599
<v Speaker 3>care of these projects. And so if event modeling was

685
00:33:57.680 --> 00:34:00.799
<v Speaker 3>kind of born out of needing to fullfill all those goals.

686
00:34:01.200 --> 00:34:03.440
<v Speaker 1>I have a question for you about the back end

687
00:34:03.480 --> 00:34:07.039
<v Speaker 1>databases that uses your event store. Is it a typical

688
00:34:07.319 --> 00:34:09.119
<v Speaker 1>and Richard you might know the answer this too, is

689
00:34:09.159 --> 00:34:13.199
<v Speaker 1>a typical practice to sort of have a system running

690
00:34:13.239 --> 00:34:16.480
<v Speaker 1>in parallel or a database running in parallel that you

691
00:34:16.639 --> 00:34:19.400
<v Speaker 1>that is not online to the customers, but you know,

692
00:34:19.480 --> 00:34:22.840
<v Speaker 1>you keep a clone of it current all the time

693
00:34:22.960 --> 00:34:25.199
<v Speaker 1>so that you know when you do need to go

694
00:34:25.320 --> 00:34:28.159
<v Speaker 1>back in time and look at it from another perspective,

695
00:34:28.199 --> 00:34:30.320
<v Speaker 1>you don't have to spend you don't have to waste

696
00:34:30.360 --> 00:34:34.960
<v Speaker 1>time sort of dropping the you know, copying the database again.

697
00:34:36.320 --> 00:34:38.880
<v Speaker 1>Is that is that something that you do normally? Yeah?

698
00:34:38.960 --> 00:34:42.599
<v Speaker 3>Yeah, oh yeah, all the time. I mean it's so

699
00:34:42.679 --> 00:34:45.840
<v Speaker 3>I know, I think I know where my background and

700
00:34:46.239 --> 00:34:48.360
<v Speaker 3>nightmares come from when you ask that question, because I've

701
00:34:48.400 --> 00:34:50.719
<v Speaker 3>been in systems where it's really hard to find if

702
00:34:50.760 --> 00:34:54.079
<v Speaker 3>you need two gigabytes or four gigabytes of the production

703
00:34:54.199 --> 00:34:57.719
<v Speaker 3>database to debug something, and that's those are not fun times.

704
00:34:58.880 --> 00:35:02.119
<v Speaker 3>And so when usually when we run these things, yes,

705
00:35:02.119 --> 00:35:04.800
<v Speaker 3>there is an active and a backup database of following

706
00:35:04.880 --> 00:35:07.840
<v Speaker 3>database that can do that. A lot of times, technologies

707
00:35:07.840 --> 00:35:13.360
<v Speaker 3>that Kafka can have something that keeps track of x

708
00:35:13.400 --> 00:35:16.199
<v Speaker 3>amount of days or weeks worth of data to go

709
00:35:16.280 --> 00:35:19.280
<v Speaker 3>and interrogate as you wish on the side. Yeah, and

710
00:35:19.440 --> 00:35:20.679
<v Speaker 3>it's really easy with event source.

711
00:35:20.840 --> 00:35:24.039
<v Speaker 1>Is that usually something that happens in real time or

712
00:35:24.159 --> 00:35:25.599
<v Speaker 1>is it like an overnight Yeah?

713
00:35:25.679 --> 00:35:28.679
<v Speaker 3>Yeah, yeah live. You want a live system, So a

714
00:35:28.719 --> 00:35:30.480
<v Speaker 3>lot of times we will have that. A lot of

715
00:35:30.519 --> 00:35:32.840
<v Speaker 3>times with most events stores, they are just sitting as

716
00:35:32.880 --> 00:35:35.480
<v Speaker 3>flat files on discs, either as a giant chunks of

717
00:35:35.519 --> 00:35:38.840
<v Speaker 3>you know, two hundred and fifty megabyte files that have

718
00:35:38.960 --> 00:35:41.599
<v Speaker 3>the events serialized within them, and you can just literally

719
00:35:41.639 --> 00:35:44.840
<v Speaker 3>just pull them as copies and then you're really you

720
00:35:44.880 --> 00:35:48.760
<v Speaker 3>can really leverage you know, your infrastructure and the hard

721
00:35:48.840 --> 00:35:51.559
<v Speaker 3>drive tech that you have to kind of have that

722
00:35:51.599 --> 00:35:53.599
<v Speaker 3>work done for you if you're mirroring.

723
00:35:53.679 --> 00:35:56.960
<v Speaker 1>I imagine part of this calculus is you know, how

724
00:35:57.800 --> 00:36:00.920
<v Speaker 1>much time worth of events do we keep live? Yeah?

725
00:36:00.960 --> 00:36:03.280
<v Speaker 1>And when do they drop off and get backed up

726
00:36:03.360 --> 00:36:03.800
<v Speaker 1>or something?

727
00:36:03.920 --> 00:36:08.239
<v Speaker 3>Yeah. So most mature events stores will have a hot

728
00:36:08.239 --> 00:36:11.119
<v Speaker 3>and cold part where things go to a colder kind

729
00:36:11.159 --> 00:36:14.159
<v Speaker 3>of storage that's slower, but it's there just in case,

730
00:36:14.159 --> 00:36:16.239
<v Speaker 3>and it kind of makes sense to how businesses run.

731
00:36:16.480 --> 00:36:19.239
<v Speaker 3>An active order will be on the SSD currently and

732
00:36:19.280 --> 00:36:22.280
<v Speaker 3>it'll be very fast to work with those events, whereas

733
00:36:22.320 --> 00:36:24.320
<v Speaker 3>obviously if you're coming back to the website, you know,

734
00:36:24.360 --> 00:36:26.679
<v Speaker 3>a year later and your shopping carts still there, you're

735
00:36:26.719 --> 00:36:28.880
<v Speaker 3>kind of like, hey, welcome back. Let's take a second

736
00:36:28.880 --> 00:36:33.159
<v Speaker 3>here to see what the heck you were doing. So,

737
00:36:33.639 --> 00:36:37.639
<v Speaker 3>and there's other strategies such as snapshotting and and closing

738
00:36:37.679 --> 00:36:39.800
<v Speaker 3>the books, which is really making sure that the streams

739
00:36:39.800 --> 00:36:42.480
<v Speaker 3>of data don't live forever, because that's not how usual.

740
00:36:42.599 --> 00:36:45.000
<v Speaker 3>You know, businesses run like a trading at af your

741
00:36:45.039 --> 00:36:49.280
<v Speaker 3>if you go to a stock trading exchange or whatever,

742
00:36:49.320 --> 00:36:52.639
<v Speaker 3>they they end their day, right, a reconciliation, right, So

743
00:36:52.679 --> 00:36:56.280
<v Speaker 3>there's a natural seam in the timeline for different things.

744
00:36:56.320 --> 00:36:58.400
<v Speaker 3>And so you know, same thing. If we were doing

745
00:36:58.440 --> 00:37:00.760
<v Speaker 3>this on pen and paper, the end of the year,

746
00:37:00.800 --> 00:37:03.760
<v Speaker 3>you probably empty out your filing cabinet, put it in

747
00:37:03.880 --> 00:37:05.199
<v Speaker 3>archives or something like that.

748
00:37:05.280 --> 00:37:07.559
<v Speaker 2>Yeah, I mean, it's true that any retail store has

749
00:37:07.599 --> 00:37:10.280
<v Speaker 2>an end of day, Like you have to draw a

750
00:37:10.320 --> 00:37:13.679
<v Speaker 2>line somewhere to have measurable data, So you know, what's

751
00:37:13.679 --> 00:37:14.679
<v Speaker 2>the interval, Well.

752
00:37:15.039 --> 00:37:18.079
<v Speaker 3>It's just also about management of information. I mean, this

753
00:37:18.159 --> 00:37:20.679
<v Speaker 3>is not rocket science here. This is not trying to

754
00:37:20.719 --> 00:37:25.559
<v Speaker 3>figure out brand news storing mechanisms or technologies about organizing

755
00:37:25.559 --> 00:37:27.880
<v Speaker 3>your information, just like you would with pen and paper.

756
00:37:27.920 --> 00:37:31.480
<v Speaker 3>You really want to not be swamped with disorganization or

757
00:37:31.519 --> 00:37:34.599
<v Speaker 3>too much information. So you're going to have a filing system,

758
00:37:34.599 --> 00:37:37.559
<v Speaker 3>you're going to have an archiving methodology if you're in

759
00:37:37.599 --> 00:37:40.679
<v Speaker 3>a serious business. And that doesn't really change that much

760
00:37:40.719 --> 00:37:42.800
<v Speaker 3>when you think about it when you're going digital from

761
00:37:42.920 --> 00:37:43.639
<v Speaker 3>pen and paper.

762
00:37:44.039 --> 00:37:46.360
<v Speaker 2>Well, I would argue, usually you're not the one making

763
00:37:46.360 --> 00:37:49.119
<v Speaker 2>a decision that's a business decision. Yeah, there's probably even

764
00:37:49.159 --> 00:37:51.920
<v Speaker 2>general accounting practices that have to be followed for a

765
00:37:51.960 --> 00:37:52.360
<v Speaker 2>bunch of that.

766
00:37:52.480 --> 00:37:55.119
<v Speaker 3>Oh yeah, there's a lot of regulatory things as well.

767
00:37:55.280 --> 00:38:00.000
<v Speaker 3>So those things are really very interesting to think about

768
00:38:00.119 --> 00:38:02.840
<v Speaker 3>when you're thinking about the motivation for this. But having

769
00:38:02.840 --> 00:38:04.880
<v Speaker 3>these good disciplines does give you a lot of things.

770
00:38:04.920 --> 00:38:07.400
<v Speaker 3>So for example, I told you about spreading out you know,

771
00:38:07.480 --> 00:38:11.599
<v Speaker 3>complex things, horizontal steps. What we found is that those

772
00:38:11.599 --> 00:38:13.559
<v Speaker 3>steps end up being really good units of work. And

773
00:38:13.599 --> 00:38:17.239
<v Speaker 3>we've actually said that we're going to have a standard

774
00:38:17.280 --> 00:38:20.079
<v Speaker 3>price for each one. So when we do work. We

775
00:38:20.199 --> 00:38:22.719
<v Speaker 3>do fixed cost only and we fix bugs for free

776
00:38:22.800 --> 00:38:26.920
<v Speaker 3>because both the client and the subcontractors are happy with

777
00:38:27.000 --> 00:38:31.360
<v Speaker 3>that deal. In fact, it's something that drives quality with

778
00:38:31.400 --> 00:38:33.679
<v Speaker 3>the right carrots and sticks. If I go super fast

779
00:38:33.719 --> 00:38:35.320
<v Speaker 3>and like do twelve steps in a day, I'm going

780
00:38:35.360 --> 00:38:37.719
<v Speaker 3>to have a whole bunch of bugs. Well, our contract

781
00:38:37.800 --> 00:38:39.800
<v Speaker 3>says that you have to fix anything before you get

782
00:38:39.840 --> 00:38:41.679
<v Speaker 3>to work on new work, So you're not going to

783
00:38:41.679 --> 00:38:44.400
<v Speaker 3>be able to charge for any work. If you just blit,

784
00:38:44.559 --> 00:38:48.840
<v Speaker 3>you know, totally chat GPT way through twelve things and

785
00:38:48.960 --> 00:38:50.920
<v Speaker 3>think they're popping up all over the place next week,

786
00:38:51.199 --> 00:38:53.519
<v Speaker 3>you're not going to be having a good time for

787
00:38:53.599 --> 00:38:56.840
<v Speaker 3>the next three weeks of fixing them. The things that

788
00:38:56.880 --> 00:38:59.239
<v Speaker 3>you kind of went through pretty quickly, so it self

789
00:38:59.280 --> 00:39:02.320
<v Speaker 3>adjusts really well, and I think both the clients and

790
00:39:03.360 --> 00:39:06.760
<v Speaker 3>the contractors appreciate that. And also, those units of work

791
00:39:06.800 --> 00:39:09.679
<v Speaker 3>are highly autonomous because now, as I said, we have

792
00:39:09.679 --> 00:39:13.000
<v Speaker 3>different projections, different you know, abstractions for each piece. So

793
00:39:13.480 --> 00:39:16.199
<v Speaker 3>if I do a bad job, I'm not impacting the

794
00:39:16.199 --> 00:39:19.159
<v Speaker 3>person working on the on the piece of workflow right

795
00:39:19.199 --> 00:39:20.960
<v Speaker 3>next to me, right as long as we're adhering to

796
00:39:21.000 --> 00:39:24.559
<v Speaker 3>those pre and post conditions of every little workflow step,

797
00:39:24.920 --> 00:39:28.320
<v Speaker 3>we're good. And if I do a crappy job, I

798
00:39:28.360 --> 00:39:31.880
<v Speaker 3>can replace that entire workflow step and I don't really

799
00:39:31.880 --> 00:39:33.719
<v Speaker 3>have to coordinate with the others. So this is like

800
00:39:33.800 --> 00:39:36.320
<v Speaker 3>the pizza sized team for Agile kind of goes away.

801
00:39:36.599 --> 00:39:39.519
<v Speaker 3>We can start to really measure the size of teams

802
00:39:39.559 --> 00:39:43.800
<v Speaker 3>based on how mature our design is. That's the thing

803
00:39:43.840 --> 00:39:45.360
<v Speaker 3>that pulls back. If I don't have time to make

804
00:39:45.400 --> 00:39:48.159
<v Speaker 3>an event model, then I only have, you know, enough

805
00:39:48.519 --> 00:39:50.480
<v Speaker 3>work for a team of size five. But if I

806
00:39:50.519 --> 00:39:53.440
<v Speaker 3>actually take the time to build out and understand how

807
00:39:53.440 --> 00:39:55.960
<v Speaker 3>the system is going to treat information, how many work

808
00:39:56.239 --> 00:39:59.760
<v Speaker 3>workflow steps I have, then I can have the latitude too.

809
00:40:00.199 --> 00:40:02.199
<v Speaker 3>Ten fifteen people work on the same thing, and we

810
00:40:02.320 --> 00:40:05.119
<v Speaker 3>know that they're not gonna step on each other's toes

811
00:40:05.119 --> 00:40:07.639
<v Speaker 3>and and things will click like lego. And that's kind

812
00:40:07.639 --> 00:40:10.360
<v Speaker 3>of how other engineering disciplines work. You know, car manufacturing,

813
00:40:10.360 --> 00:40:13.719
<v Speaker 3>all these other things are they have standardized pieces now

814
00:40:13.800 --> 00:40:15.599
<v Speaker 3>where you know you don't have to You can get

815
00:40:15.599 --> 00:40:18.760
<v Speaker 3>a rebuilt alternator from an alternative you know, some other manufacturer,

816
00:40:18.760 --> 00:40:21.000
<v Speaker 3>and they work just fine. So we're trying to really

817
00:40:21.039 --> 00:40:24.440
<v Speaker 3>make if you know this type of approach bring software

818
00:40:24.480 --> 00:40:27.480
<v Speaker 3>development to be more of a true engineering practice rather

819
00:40:27.519 --> 00:40:29.840
<v Speaker 3>than you know, being a lot of experiments and just

820
00:40:29.880 --> 00:40:32.960
<v Speaker 3>feedback cycles as we really wanted to, like, oh, iterate, iterate,

821
00:40:32.960 --> 00:40:34.519
<v Speaker 3>that's going to solve everything. Well, you know, we look

822
00:40:34.559 --> 00:40:36.360
<v Speaker 3>at other industries, they kind of take time to design

823
00:40:36.360 --> 00:40:39.400
<v Speaker 3>things a little bit. So we're kind pushing the needle

824
00:40:39.440 --> 00:40:41.079
<v Speaker 3>back a little bit to the middle because you know,

825
00:40:41.119 --> 00:40:44.360
<v Speaker 3>we came up, we came up through this idea in

826
00:40:44.400 --> 00:40:46.400
<v Speaker 3>the eighties and nineties of this big design up front

827
00:40:46.440 --> 00:40:48.320
<v Speaker 3>and the waterfall method and all this kind of stuff,

828
00:40:48.320 --> 00:40:50.800
<v Speaker 3>and you know, take a whole year to plan something

829
00:40:50.880 --> 00:40:53.400
<v Speaker 3>and then you know, things don't go as well when

830
00:40:53.400 --> 00:40:56.159
<v Speaker 3>in reality, we one all the way to agile, right,

831
00:40:56.159 --> 00:41:00.360
<v Speaker 3>the to just iterate, yeah, because we hate planning. So

832
00:41:00.639 --> 00:41:03.079
<v Speaker 3>I think, you know, agile missed a chance to really

833
00:41:03.159 --> 00:41:05.280
<v Speaker 3>focus on that small design up front, which is a

834
00:41:05.280 --> 00:41:08.440
<v Speaker 3>big opportunity. And I think don't mean driven design specific example,

835
00:41:08.480 --> 00:41:10.440
<v Speaker 3>all of them kind of attacked that a little bit

836
00:41:10.480 --> 00:41:12.079
<v Speaker 3>and said, hey, that's a good way.

837
00:41:12.119 --> 00:41:14.639
<v Speaker 1>You iterate too fast and you're going to cause problems,

838
00:41:15.039 --> 00:41:15.280
<v Speaker 1>you know.

839
00:41:15.519 --> 00:41:18.719
<v Speaker 2>Yeah, yeah, but I mean agile also said the customer

840
00:41:18.800 --> 00:41:21.639
<v Speaker 2>sitting beside you, right, like, and that's hard to do. Yeah, yeah,

841
00:41:21.679 --> 00:41:24.119
<v Speaker 2>the real part. The point here was that you don't

842
00:41:24.119 --> 00:41:25.559
<v Speaker 2>do a whole lot of design up front because it

843
00:41:25.599 --> 00:41:28.000
<v Speaker 2>separates even the customer. Have the customer involved and in

844
00:41:28.039 --> 00:41:30.199
<v Speaker 2>reality they don't want to sit around with you.

845
00:41:30.320 --> 00:41:32.679
<v Speaker 3>Yeah, you get another person in the middle called the

846
00:41:32.760 --> 00:41:38.960
<v Speaker 3>product owners. Yeah, playing broken telephone. Yeah. So yeah, that's

847
00:41:39.039 --> 00:41:40.960
<v Speaker 3>that's a lot of a lot of good things have

848
00:41:41.079 --> 00:41:42.679
<v Speaker 3>come out out of it, and I think I think

849
00:41:42.679 --> 00:41:45.559
<v Speaker 3>a lot of them, as I said before, are human benefits.

850
00:41:45.599 --> 00:41:50.960
<v Speaker 3>Were gatekeeping and uh and and imposter syndrome go away.

851
00:41:51.000 --> 00:41:54.280
<v Speaker 3>Like we've had people that have worked on our projects

852
00:41:54.320 --> 00:41:57.320
<v Speaker 3>that are just fresh from another industry. There's a work

853
00:41:57.360 --> 00:41:59.880
<v Speaker 3>Safe BC. Someone got injured on the job and they

854
00:41:59.880 --> 00:42:03.519
<v Speaker 3>had to switch careers and work Safe BC augmented their

855
00:42:03.559 --> 00:42:06.119
<v Speaker 3>pay for us. But they were able to start this

856
00:42:06.280 --> 00:42:08.719
<v Speaker 3>because you know, each of these workflow steps, at least

857
00:42:08.719 --> 00:42:11.880
<v Speaker 3>in event sourcing, is identical. Like there's only two patterns.

858
00:42:11.880 --> 00:42:13.920
<v Speaker 3>So you're either working with a command handler or you're

859
00:42:13.960 --> 00:42:17.159
<v Speaker 3>working with a read model. And if I'm a new person,

860
00:42:17.199 --> 00:42:18.760
<v Speaker 3>all I have to do is like, hey, Tim, how

861
00:42:18.760 --> 00:42:21.519
<v Speaker 3>did you do that command handler? I copy their code

862
00:42:21.679 --> 00:42:25.880
<v Speaker 3>and just and all that. It's like the same pattern

863
00:42:25.920 --> 00:42:29.920
<v Speaker 3>over and over again. So this repeatability is highly valuable

864
00:42:29.920 --> 00:42:31.800
<v Speaker 3>because you get a lot of cadence. It also gives

865
00:42:31.800 --> 00:42:34.280
<v Speaker 3>the excellent you know, estimates because you're doing the same

866
00:42:34.320 --> 00:42:36.280
<v Speaker 3>thing over and over again. So you're sample sized growth,

867
00:42:36.559 --> 00:42:39.599
<v Speaker 3>you know, mathematically speaking, your sample size for how long

868
00:42:39.639 --> 00:42:41.960
<v Speaker 3>things take. You get a really good idea. Whereas if

869
00:42:42.000 --> 00:42:44.039
<v Speaker 3>you were to throw a whole bunch of patterns all

870
00:42:44.039 --> 00:42:46.239
<v Speaker 3>the time at every problem, you're going to have a

871
00:42:46.280 --> 00:42:50.480
<v Speaker 3>smattering of small amounts of statistics for each pattern, and

872
00:42:50.519 --> 00:42:53.679
<v Speaker 3>that's not going to be enough confidence to say that, yeah,

873
00:42:53.719 --> 00:42:56.239
<v Speaker 3>I can do that for X amount of money. You're

874
00:42:56.480 --> 00:42:58.599
<v Speaker 3>you're not going to have that amount of track record

875
00:42:58.599 --> 00:43:01.119
<v Speaker 3>with that. So by repeating you know, a few core

876
00:43:01.239 --> 00:43:03.360
<v Speaker 3>patterns over and over again, you really do that. And

877
00:43:03.400 --> 00:43:05.400
<v Speaker 3>after ten like we've been in business for about ten

878
00:43:05.480 --> 00:43:09.119
<v Speaker 3>years now, we've got like a ton of statistics to

879
00:43:09.199 --> 00:43:12.159
<v Speaker 3>go on. And so when you know, when we say

880
00:43:12.199 --> 00:43:15.119
<v Speaker 3>a project, will you know cost this much and take

881
00:43:15.159 --> 00:43:17.519
<v Speaker 3>this much time, it's pretty spot on, especially if the

882
00:43:17.519 --> 00:43:21.760
<v Speaker 3>client is there collaborating on the design saying yeah, these

883
00:43:21.760 --> 00:43:23.519
<v Speaker 3>are the screens we want, Yeah, these are the steps

884
00:43:23.519 --> 00:43:26.880
<v Speaker 3>that have to be taken to capture this information. From that,

885
00:43:26.920 --> 00:43:29.400
<v Speaker 3>we can say, yeah, everyone's happy to sign on for

886
00:43:29.559 --> 00:43:31.079
<v Speaker 3>you know, fixed costs and all that, and I think

887
00:43:31.559 --> 00:43:34.840
<v Speaker 3>something that's really worthwhile and you're confident and you should

888
00:43:34.840 --> 00:43:36.920
<v Speaker 3>be able to do for fixed costs. That I think

889
00:43:37.000 --> 00:43:40.239
<v Speaker 3>is a sign of like maturity to be able to

890
00:43:40.559 --> 00:43:43.519
<v Speaker 3>have you know, people take on that quote unquote risk

891
00:43:43.559 --> 00:43:46.480
<v Speaker 3>and it's actually de risking a lot for both sides.

892
00:43:46.760 --> 00:43:48.719
<v Speaker 3>And so back to that point, you know, someone that

893
00:43:49.159 --> 00:43:52.760
<v Speaker 3>you know came into to work in software for the

894
00:43:52.760 --> 00:43:55.000
<v Speaker 3>first time, they felt really at home because there was

895
00:43:55.280 --> 00:43:58.559
<v Speaker 3>really good guardrails of how a framework within which to

896
00:43:58.639 --> 00:44:00.960
<v Speaker 3>learn programming. So they can make all sorts of mistakes

897
00:44:01.000 --> 00:44:02.880
<v Speaker 3>when they're making a command handler or they're making a

898
00:44:02.920 --> 00:44:05.400
<v Speaker 3>read model, and they could iterate themselves to learn that.

899
00:44:05.519 --> 00:44:07.119
<v Speaker 3>And of course their throughput is not going to be

900
00:44:07.159 --> 00:44:09.079
<v Speaker 3>as much. They get paid the same amount for that

901
00:44:09.119 --> 00:44:11.360
<v Speaker 3>piece of work as someone that's senior, so it might

902
00:44:11.360 --> 00:44:13.320
<v Speaker 3>take them three weeks to do it. A senior person

903
00:44:13.360 --> 00:44:15.199
<v Speaker 3>might take three hours if they're really really good. So

904
00:44:15.400 --> 00:44:18.119
<v Speaker 3>we've seen a huge variance. It's also exposed a lot

905
00:44:18.119 --> 00:44:23.920
<v Speaker 3>of the inequality in the industry, like a staff engineer's

906
00:44:24.000 --> 00:44:26.880
<v Speaker 3>a senior engineer level one versus a level two, or

907
00:44:26.880 --> 00:44:29.719
<v Speaker 3>there's like a five thousand dollars difference in pay. Well,

908
00:44:29.760 --> 00:44:32.199
<v Speaker 3>the difference in pay for levels of skill we've seen

909
00:44:32.320 --> 00:44:35.119
<v Speaker 3>is insane. We've had people make as low as three

910
00:44:35.119 --> 00:44:37.639
<v Speaker 3>thousand dollars because they're new, to as high as seventy

911
00:44:37.679 --> 00:44:40.760
<v Speaker 3>thousand in a month because they're so good. It's insane.

912
00:44:40.840 --> 00:44:45.920
<v Speaker 3>How the variance of people's ability or incentive or devoting

913
00:44:45.960 --> 00:44:49.960
<v Speaker 3>themselves to the amount of time, it's been very enlightening,

914
00:44:50.039 --> 00:44:52.760
<v Speaker 3>and I just like the fact that you know, it

915
00:44:52.840 --> 00:44:55.800
<v Speaker 3>kind of manages itself because when you have these standards,

916
00:44:55.840 --> 00:44:57.679
<v Speaker 3>you have a system that kind of operates on its

917
00:44:57.679 --> 00:45:00.400
<v Speaker 3>way on its own. You don't need to fill a

918
00:45:00.440 --> 00:45:02.440
<v Speaker 3>whole bunch of other jobs to manage it, or at

919
00:45:02.519 --> 00:45:04.480
<v Speaker 3>least if you have those jobs, you can scale out

920
00:45:04.480 --> 00:45:06.920
<v Speaker 3>the amount of work under those jobs way further out.

921
00:45:07.000 --> 00:45:09.960
<v Speaker 3>So you know, we've been pretty much a flat organization

922
00:45:10.079 --> 00:45:12.920
<v Speaker 3>much like get hub started or Valve. It's just myself

923
00:45:12.960 --> 00:45:16.000
<v Speaker 3>and everyone else doing the works, about twenty thirty people

924
00:45:16.320 --> 00:45:20.119
<v Speaker 3>at peaks when we have larger projects, and there's really

925
00:45:20.639 --> 00:45:22.800
<v Speaker 3>very little need for any kind of management like these

926
00:45:22.840 --> 00:45:25.480
<v Speaker 3>event models kind of you know, we color them in

927
00:45:26.119 --> 00:45:29.760
<v Speaker 3>as the project moves on. There's no backlog, so as

928
00:45:30.400 --> 00:45:33.599
<v Speaker 3>we look at the schematic people just fill in the

929
00:45:34.000 --> 00:45:38.280
<v Speaker 3>rectangles that represent the slices of the workflows. You know,

930
00:45:38.519 --> 00:45:40.679
<v Speaker 3>they paint them yellow maybe if it's in progress, and

931
00:45:40.719 --> 00:45:42.920
<v Speaker 3>the pink them green when they're done. And we always

932
00:45:42.920 --> 00:45:44.320
<v Speaker 3>look at it and say, hey, this looks like it's

933
00:45:44.360 --> 00:45:48.400
<v Speaker 3>fifty percent done. And some have done automation of miuro,

934
00:45:48.480 --> 00:45:51.199
<v Speaker 3>for example the Whiteboard to kind of use its API

935
00:45:51.360 --> 00:45:53.360
<v Speaker 3>to give you like a burn down chart equivalent. Right,

936
00:45:53.360 --> 00:45:55.840
<v Speaker 3>they'll count how many of these slices are actually colored

937
00:45:55.840 --> 00:45:57.840
<v Speaker 3>in versus not, and then you can see how many

938
00:45:57.840 --> 00:45:59.519
<v Speaker 3>your own progress instead of have a nice little bar

939
00:45:59.559 --> 00:46:01.960
<v Speaker 3>graph shows you what's going on. So we've replaced all

940
00:46:02.000 --> 00:46:04.880
<v Speaker 3>the tooling with just an event model. But we're the extreme,

941
00:46:05.239 --> 00:46:07.800
<v Speaker 3>like we just want to show what's possible, and most

942
00:46:07.880 --> 00:46:09.239
<v Speaker 3>organizations are not going to be able to do that,

943
00:46:09.280 --> 00:46:11.840
<v Speaker 3>we understand, but at least we kind of show what's possible,

944
00:46:11.960 --> 00:46:14.159
<v Speaker 3>and then you know, for most people that's an answer

945
00:46:14.159 --> 00:46:15.840
<v Speaker 3>somewhere in the middle. So we've had to integrate with

946
00:46:15.920 --> 00:46:20.440
<v Speaker 3>Jira and other things for certain projects because that's what

947
00:46:20.480 --> 00:46:23.079
<v Speaker 3>they have in their organizations. That's fine. You can translate

948
00:46:23.079 --> 00:46:25.639
<v Speaker 3>these things and we're happy to do that so it's

949
00:46:25.920 --> 00:46:28.199
<v Speaker 3>compatible with other things. But we always want to just

950
00:46:28.199 --> 00:46:32.239
<v Speaker 3>push the envelope and and just show what can work

951
00:46:32.320 --> 00:46:34.199
<v Speaker 3>so that people have the confidence to pick something in

952
00:46:34.239 --> 00:46:34.559
<v Speaker 3>the middle.

953
00:46:34.599 --> 00:46:38.760
<v Speaker 1>Where can we find these tools in guidance from you

954
00:46:38.800 --> 00:46:39.320
<v Speaker 1>and yours?

955
00:46:39.480 --> 00:46:45.320
<v Speaker 3>Ah? Well, I just yesterday I finally got a paper

956
00:46:45.360 --> 00:46:51.920
<v Speaker 3>copy of Martin Dilger's Event Sourcing Understanding Event Sourcing Book.

957
00:46:52.159 --> 00:46:54.920
<v Speaker 3>I wrote the forward for it because it's the first

958
00:46:54.920 --> 00:46:57.960
<v Speaker 3>book that puts that writes about event modeling and event

959
00:46:58.000 --> 00:47:02.719
<v Speaker 3>sourcing together. So it has in it examples that you'll

960
00:47:02.719 --> 00:47:05.280
<v Speaker 3>find some of them online. I mean, I've been doing

961
00:47:05.360 --> 00:47:07.039
<v Speaker 3>a lot of If you want to learn anything in

962
00:47:07.039 --> 00:47:08.760
<v Speaker 3>a book, you can probably find it for free online.

963
00:47:08.760 --> 00:47:10.599
<v Speaker 3>But this is like a concise kind of way of

964
00:47:10.599 --> 00:47:12.039
<v Speaker 3>looking at it all in one place, and a lot

965
00:47:12.039 --> 00:47:14.719
<v Speaker 3>of people want that. But yeah, you can see. I

966
00:47:14.760 --> 00:47:16.960
<v Speaker 3>don't know if I can be legible or not, but

967
00:47:17.039 --> 00:47:18.840
<v Speaker 3>yeah you can see. I guess the people who are

968
00:47:18.840 --> 00:47:20.440
<v Speaker 3>listening to the radio they can't see what I'm showing.

969
00:47:20.480 --> 00:47:25.639
<v Speaker 1>But anyways, Okay, it looked like a page with a

970
00:47:25.760 --> 00:47:32.199
<v Speaker 1>white background, wait, hold on and black writing.

971
00:47:32.800 --> 00:47:38.880
<v Speaker 3>Yeah, so it goes from from zero to fully implemented system,

972
00:47:39.039 --> 00:47:41.440
<v Speaker 3>really good hands on book, and it's been on Lean pub.

973
00:47:41.920 --> 00:47:43.960
<v Speaker 3>This is the first It's just got released on Amazon,

974
00:47:44.000 --> 00:47:46.480
<v Speaker 3>so I just ordered as soon as I could. Cool,

975
00:47:46.519 --> 00:47:48.519
<v Speaker 3>but it was a It's been on lean pub for

976
00:47:48.519 --> 00:47:50.960
<v Speaker 3>about five weeks now and it's been holding the top

977
00:47:51.000 --> 00:47:54.719
<v Speaker 3>spot wow for weekly sales the whole time. It's it's

978
00:47:54.760 --> 00:47:56.639
<v Speaker 3>been something that a lot of the community has been

979
00:47:56.679 --> 00:47:58.679
<v Speaker 3>asking for because a lot of people have been doing

980
00:47:58.719 --> 00:48:01.639
<v Speaker 3>event modeling or trying to you know, promote it and

981
00:48:02.239 --> 00:48:03.800
<v Speaker 3>use it because they like it and they want to

982
00:48:03.840 --> 00:48:06.159
<v Speaker 3>carry it through to the rest of the organizations. So

983
00:48:07.199 --> 00:48:09.000
<v Speaker 3>you know, I've been threatening to write a book myself

984
00:48:09.039 --> 00:48:11.239
<v Speaker 3>on it, but running a business and doing that is

985
00:48:11.360 --> 00:48:13.679
<v Speaker 3>a little bit too much. But I'm glad that Martin

986
00:48:13.719 --> 00:48:14.719
<v Speaker 3>did it and included it.

987
00:48:15.400 --> 00:48:16.840
<v Speaker 2>So I wrote the forward.

988
00:48:17.440 --> 00:48:18.760
<v Speaker 3>I wrote the forward.

989
00:48:18.840 --> 00:48:23.280
<v Speaker 1>Yes, is there anything that is there anything that you

990
00:48:23.360 --> 00:48:26.039
<v Speaker 1>wish you would have written in there that you didn't

991
00:48:26.039 --> 00:48:27.400
<v Speaker 1>have no space to?

992
00:48:28.960 --> 00:48:33.480
<v Speaker 3>Martin's a kindred spirit. I met Martin in Munich in

993
00:48:34.320 --> 00:48:37.119
<v Speaker 3>last year about this time, maybe a little bit longer,

994
00:48:37.320 --> 00:48:40.119
<v Speaker 3>maybe an extra month, think the end of October something

995
00:48:40.159 --> 00:48:42.440
<v Speaker 3>like that. Anyway, I was giving an event modeling presentation

996
00:48:43.559 --> 00:48:46.760
<v Speaker 3>at their event driven meet up there and and he

997
00:48:47.039 --> 00:48:49.920
<v Speaker 3>drove in, you know, hundreds of kilometers from his small

998
00:48:49.960 --> 00:48:53.599
<v Speaker 3>town near Munich to meet me. And that's kind of

999
00:48:53.679 --> 00:48:55.760
<v Speaker 3>I think when he started to write the book, he

1000
00:48:55.840 --> 00:48:59.239
<v Speaker 3>was very inspired by a lot of the work that

1001
00:48:59.280 --> 00:49:02.159
<v Speaker 3>the community has been doing. And the original article that

1002
00:49:02.199 --> 00:49:05.519
<v Speaker 3>I wrote was from really twenty eighteen that kind of

1003
00:49:05.519 --> 00:49:08.599
<v Speaker 3>got pushed. I think I wrote it on Medium. I

1004
00:49:08.599 --> 00:49:10.920
<v Speaker 3>forget where I wrote it, but it went viral in

1005
00:49:11.119 --> 00:49:15.039
<v Speaker 3>the fall of twenty eighteen October, and I don't know

1006
00:49:15.079 --> 00:49:17.480
<v Speaker 3>what the heck was going on, why my phone's going off,

1007
00:49:17.480 --> 00:49:21.079
<v Speaker 3>but it got the top story on Hacker News, and

1008
00:49:21.480 --> 00:49:23.800
<v Speaker 3>I'm like, what the heck? Why is everyone so interested?

1009
00:49:23.800 --> 00:49:25.639
<v Speaker 3>And that kind of gave me like, Okay, this is

1010
00:49:25.639 --> 00:49:27.800
<v Speaker 3>not just how we were. People actually want the same

1011
00:49:27.840 --> 00:49:30.440
<v Speaker 3>things as we want. They want to do things this way.

1012
00:49:30.800 --> 00:49:33.760
<v Speaker 3>So I made a website for it, eventmodeling dot org,

1013
00:49:34.079 --> 00:49:36.159
<v Speaker 3>and I basically stick all the resources on there. I'm

1014
00:49:36.159 --> 00:49:39.119
<v Speaker 3>not very good at keeping it up to date as much,

1015
00:49:39.119 --> 00:49:41.000
<v Speaker 3>but I try to stick in like links to books

1016
00:49:41.000 --> 00:49:44.639
<v Speaker 3>and research and the videos, the YouTube channels of examples,

1017
00:49:44.639 --> 00:49:46.599
<v Speaker 3>it's all on there, link to that. But yeah, the

1018
00:49:46.639 --> 00:49:49.960
<v Speaker 3>history of how this whole thing evolved, it wasn't I

1019
00:49:50.000 --> 00:49:52.199
<v Speaker 3>did not intend to make event well, it was just

1020
00:49:52.559 --> 00:49:54.119
<v Speaker 3>you know, we found a really good way of working

1021
00:49:54.119 --> 00:49:57.559
<v Speaker 3>that's effective and then captured you know, how we worked

1022
00:49:58.320 --> 00:50:02.039
<v Speaker 3>into both a process and the notation that people could reuse.

1023
00:50:02.320 --> 00:50:06.239
<v Speaker 3>And so that's essentially what event modeling is and from it,

1024
00:50:06.320 --> 00:50:08.880
<v Speaker 3>you know, other people are writing books on it. There's

1025
00:50:08.920 --> 00:50:11.559
<v Speaker 3>a lot of tools also that kind of Martin has

1026
00:50:11.559 --> 00:50:13.639
<v Speaker 3>an ad in to MIRO that allows you to more

1027
00:50:13.679 --> 00:50:16.639
<v Speaker 3>easily manipulate things that are event modeling on a mirror

1028
00:50:16.679 --> 00:50:19.280
<v Speaker 3>board to what to mural you know, MIRO, the real

1029
00:50:19.320 --> 00:50:22.880
<v Speaker 3>time board. It's now called MIRO the Whuro Collaborative whiteboard.

1030
00:50:24.119 --> 00:50:27.079
<v Speaker 3>So a lot of companies use MIRO as a whiteboard.

1031
00:50:27.159 --> 00:50:30.480
<v Speaker 3>I mean same you know, just like maybe dot net

1032
00:50:30.679 --> 00:50:34.519
<v Speaker 3>teams use the white collaborative whiteboard. Yeah, exactly. Yeah, so

1033
00:50:34.559 --> 00:50:36.079
<v Speaker 3>it used to be called real time board. Like if

1034
00:50:36.119 --> 00:50:37.559
<v Speaker 3>you look back in the day, that was kind of

1035
00:50:37.559 --> 00:50:40.039
<v Speaker 3>a very popular thing in the startups, and I don't know,

1036
00:50:40.159 --> 00:50:44.039
<v Speaker 3>ten fifteen years ago, but they rebranded I forget exactly

1037
00:50:44.079 --> 00:50:47.360
<v Speaker 3>how long to Miro because maybe those copyright things are

1038
00:50:47.400 --> 00:50:49.320
<v Speaker 3>just they wanted a unique name. I don't know, you

1039
00:50:49.360 --> 00:50:54.960
<v Speaker 3>can ask them, but anyway, they Yeah, so Martin's written

1040
00:50:55.000 --> 00:50:57.960
<v Speaker 3>an ad in for that. Other people have written plugins

1041
00:50:57.960 --> 00:51:00.960
<v Speaker 3>that basically take an event model and they and it

1042
00:51:00.960 --> 00:51:04.519
<v Speaker 3>interrogates it and creates all your tests for it, I

1043
00:51:04.639 --> 00:51:07.400
<v Speaker 3>like for your solution, which is really cool because yeah,

1044
00:51:07.440 --> 00:51:09.480
<v Speaker 3>these given when ND tests in the style of a

1045
00:51:09.559 --> 00:51:12.639
<v Speaker 3>specification by example BDD style tests are really good with

1046
00:51:12.679 --> 00:51:15.920
<v Speaker 3>event solutions. You just say, what's my given You always say,

1047
00:51:16.280 --> 00:51:18.079
<v Speaker 3>you know, your setup is always a set of events

1048
00:51:18.119 --> 00:51:20.000
<v Speaker 3>that you can just pull directly from the event model,

1049
00:51:20.000 --> 00:51:22.400
<v Speaker 3>and then your when what you're testing is the command

1050
00:51:22.440 --> 00:51:25.079
<v Speaker 3>that you're trying to poke the system with, and then

1051
00:51:25.199 --> 00:51:27.239
<v Speaker 3>your assertion is always that you it spits out the

1052
00:51:27.280 --> 00:51:30.639
<v Speaker 3>event you expect. So it's really awesome and in fact,

1053
00:51:30.679 --> 00:51:33.679
<v Speaker 3>actually there's another benefit of this is that things like

1054
00:51:33.760 --> 00:51:36.800
<v Speaker 3>integration tests and acceptance tests, we've pushed them to be

1055
00:51:36.840 --> 00:51:40.159
<v Speaker 3>subcutaneous and then have the green boxes from an event

1056
00:51:40.199 --> 00:51:42.519
<v Speaker 3>model and kind of capture long running processes. So we've

1057
00:51:42.599 --> 00:51:46.400
<v Speaker 3>kind of shoved all integration testing to be just a

1058
00:51:46.519 --> 00:51:49.800
<v Speaker 3>unit test. So even if we have like a end

1059
00:51:49.840 --> 00:51:53.920
<v Speaker 3>to end test of some long process. The projections that

1060
00:51:53.960 --> 00:51:56.760
<v Speaker 3>we use encompass that. And because there are pure functions,

1061
00:51:56.760 --> 00:51:58.880
<v Speaker 3>these run within seconds, so we don't use any mocks

1062
00:51:59.480 --> 00:52:02.880
<v Speaker 3>anything like that. It's just all poco pojo, whatever your

1063
00:52:02.960 --> 00:52:07.280
<v Speaker 3>language is. There are all the property bags that sit

1064
00:52:07.360 --> 00:52:09.960
<v Speaker 3>there for setting things up, and in fact there's a

1065
00:52:10.039 --> 00:52:13.760
<v Speaker 3>highly kind of opinionated way of doing things, to the

1066
00:52:13.760 --> 00:52:16.760
<v Speaker 3>point where I'm thinking that most people will rewrite their

1067
00:52:16.800 --> 00:52:19.800
<v Speaker 3>own test harnesses for unit testing, because you're taking slices

1068
00:52:19.880 --> 00:52:22.159
<v Speaker 3>of a history that you can predefine as in the ray,

1069
00:52:22.519 --> 00:52:25.400
<v Speaker 3>and then you can take slice length of zero from

1070
00:52:25.440 --> 00:52:28.599
<v Speaker 3>the top to say, what's the default view of this window,

1071
00:52:28.880 --> 00:52:30.400
<v Speaker 3>and then you take the next one that's your next

1072
00:52:30.400 --> 00:52:32.719
<v Speaker 3>test case. Okay, what happens when this event's in there?

1073
00:52:32.760 --> 00:52:35.239
<v Speaker 3>Does it change anythink great like that you can assert

1074
00:52:35.320 --> 00:52:37.679
<v Speaker 3>on that. So it ends up being quite quite neat,

1075
00:52:37.719 --> 00:52:40.480
<v Speaker 3>and in fact, below each slice in the event model

1076
00:52:40.519 --> 00:52:43.760
<v Speaker 3>we do have like an alternate little timeline that points downwards,

1077
00:52:43.800 --> 00:52:47.559
<v Speaker 3>and there we have a different sample of events and

1078
00:52:47.639 --> 00:52:51.800
<v Speaker 3>happenings that are particular to that workflow. So an example

1079
00:52:51.800 --> 00:52:54.360
<v Speaker 3>will be an invoice. The event model kind of wants

1080
00:52:54.360 --> 00:52:56.480
<v Speaker 3>to show me the happy path of how the system works.

1081
00:52:56.599 --> 00:52:58.679
<v Speaker 3>So you don't want about twelve different steps to show

1082
00:52:58.760 --> 00:53:02.760
<v Speaker 3>just how differently the event the invoice can look. It's

1083
00:53:02.760 --> 00:53:05.480
<v Speaker 3>just gonna take up way too much real estate. So

1084
00:53:05.519 --> 00:53:07.840
<v Speaker 3>we kind of go downwards and say that, Okay, here's

1085
00:53:07.840 --> 00:53:11.679
<v Speaker 3>some scenarios of like if you have a discount code,

1086
00:53:11.960 --> 00:53:14.559
<v Speaker 3>you're shipping to a different country, et cetera, et cetera,

1087
00:53:14.920 --> 00:53:19.159
<v Speaker 3>all sorts of different things volume, discount, reward points, whatever.

1088
00:53:20.440 --> 00:53:22.760
<v Speaker 3>You can put those events to make different scenarios down below.

1089
00:53:22.880 --> 00:53:25.280
<v Speaker 3>So you're not kind of polluting the space of the

1090
00:53:25.760 --> 00:53:28.159
<v Speaker 3>general idea of what the system does with the event model,

1091
00:53:28.280 --> 00:53:31.760
<v Speaker 3>but you're diving into those nitty gritty specifications that you

1092
00:53:31.840 --> 00:53:34.639
<v Speaker 3>need to build a robust system. What's really interesting about

1093
00:53:34.639 --> 00:53:37.679
<v Speaker 3>this NAI is that when I did this on the

1094
00:53:37.679 --> 00:53:40.400
<v Speaker 3>stream just last week or two weeks ago, I took

1095
00:53:40.440 --> 00:53:44.320
<v Speaker 3>a screenshot of that set of events and on the side,

1096
00:53:44.440 --> 00:53:47.119
<v Speaker 3>what does that invoice look like? Along the way is

1097
00:53:47.159 --> 00:53:50.000
<v Speaker 3>an arrow down. I took a screenshot of this an

1098
00:53:50.000 --> 00:53:53.559
<v Speaker 3>incursor AYI, which is a fork of vs code, pasted

1099
00:53:53.599 --> 00:53:56.719
<v Speaker 3>that into the chat window and say finish the tests,

1100
00:53:56.920 --> 00:54:00.800
<v Speaker 3>and it did exactly that. It made an addition to

1101
00:54:01.079 --> 00:54:07.119
<v Speaker 3>the test correct first try. I'm not kidding. First try,

1102
00:54:07.320 --> 00:54:11.760
<v Speaker 3>I was blown away. So yes, AI hallucinates, but not

1103
00:54:11.840 --> 00:54:15.880
<v Speaker 3>when you give a good specs relation like yeah, and

1104
00:54:16.280 --> 00:54:19.440
<v Speaker 3>we know what's more interesting is that AI has been

1105
00:54:19.480 --> 00:54:22.400
<v Speaker 3>trained on human interactions. We talked about stories, we talked

1106
00:54:22.440 --> 00:54:26.400
<v Speaker 3>about timelines. Guess what happens when the thing that you

1107
00:54:26.480 --> 00:54:29.519
<v Speaker 3>show it or ask of it is following storylines the

1108
00:54:29.559 --> 00:54:32.280
<v Speaker 3>things that it's been trained on. It's been trained on conversations.

1109
00:54:32.280 --> 00:54:36.039
<v Speaker 3>Conversations are like stories. So I think that's why it

1110
00:54:36.079 --> 00:54:38.840
<v Speaker 3>got it spot on because the format of what I

1111
00:54:38.920 --> 00:54:41.480
<v Speaker 3>was giving it wasn't the mockup of a UI. It

1112
00:54:41.519 --> 00:54:46.079
<v Speaker 3>wasn't anything weird like UML diagram with entities connected in

1113
00:54:46.079 --> 00:54:50.480
<v Speaker 3>whichever way. It was a timeline, and we showed how

1114
00:54:50.840 --> 00:54:55.079
<v Speaker 3>information changed. It got that on the first try. I'm

1115
00:54:55.159 --> 00:54:58.119
<v Speaker 3>not kidding you. You should try this yourself. If you're

1116
00:54:58.639 --> 00:55:02.199
<v Speaker 3>wanting to test where AI hallucinates where it doesn't, I

1117
00:55:02.199 --> 00:55:03.760
<v Speaker 3>can give you an example of where it does not.

1118
00:55:04.400 --> 00:55:08.119
<v Speaker 3>And it's these things of these given win then specifications

1119
00:55:08.199 --> 00:55:10.159
<v Speaker 3>or in the case of state views like I just

1120
00:55:10.199 --> 00:55:12.559
<v Speaker 3>have given then because there's nothing to test like given

1121
00:55:12.599 --> 00:55:15.280
<v Speaker 3>some events. This invoice will look like this. There's no action,

1122
00:55:15.440 --> 00:55:20.079
<v Speaker 3>so slightly different take on it, but the main way

1123
00:55:20.079 --> 00:55:22.400
<v Speaker 3>that it works as the same. So I've been floored

1124
00:55:22.639 --> 00:55:25.440
<v Speaker 3>just by you know how much this helps in the

1125
00:55:25.480 --> 00:55:29.159
<v Speaker 3>whole AI thing, just by having a better structure in

1126
00:55:29.199 --> 00:55:31.800
<v Speaker 3>terms of how you think about your systems, Like you

1127
00:55:31.880 --> 00:55:35.840
<v Speaker 3>get way more help from these tools. So yeah, I

1128
00:55:35.920 --> 00:55:36.400
<v Speaker 3>don't mind.

1129
00:55:36.840 --> 00:55:40.239
<v Speaker 1>Yeah, Before before we stop here, I had I want

1130
00:55:40.239 --> 00:55:42.039
<v Speaker 1>to get in the way back machine for a second

1131
00:55:42.440 --> 00:55:45.159
<v Speaker 1>and ask you if you remember a technology called Windows

1132
00:55:45.159 --> 00:55:49.000
<v Speaker 1>Workflow Foundation. Yes, man, why are you laughing?

1133
00:55:49.199 --> 00:55:51.679
<v Speaker 3>I do remember bistock? Do you remember bisdoc?

1134
00:55:51.880 --> 00:55:57.320
<v Speaker 1>Yeah? So what what was your impression of workflow Foundation

1135
00:55:57.519 --> 00:56:01.360
<v Speaker 1>back then? And you know, why don't we even talk

1136
00:56:01.360 --> 00:56:02.159
<v Speaker 1>about it anymore?

1137
00:56:02.719 --> 00:56:05.320
<v Speaker 3>I think, Well, it's a more general question to me

1138
00:56:05.360 --> 00:56:09.360
<v Speaker 3>about case tools and having Dragon drop development and you know,

1139
00:56:09.880 --> 00:56:13.679
<v Speaker 3>human facing kind of way to automate systems. I think

1140
00:56:13.719 --> 00:56:16.320
<v Speaker 3>we always wanted this way of like why do I

1141
00:56:16.360 --> 00:56:19.119
<v Speaker 3>have to talk to a developer to like get things done?

1142
00:56:19.159 --> 00:56:21.480
<v Speaker 3>Why can't I just have something that's good enough framework

1143
00:56:21.880 --> 00:56:25.920
<v Speaker 3>so I can stick the screens on some kind of

1144
00:56:25.960 --> 00:56:28.599
<v Speaker 3>an interface and then press go and it'll do it

1145
00:56:28.639 --> 00:56:31.840
<v Speaker 3>for me. I think that's what we've secretly wanted, and

1146
00:56:31.880 --> 00:56:34.519
<v Speaker 3>I think that's kind of what fell out of event modeling.

1147
00:56:34.559 --> 00:56:37.400
<v Speaker 3>So just like UML, I mean I talked to Grady

1148
00:56:37.440 --> 00:56:41.519
<v Speaker 3>Butcha last year in Hawaii or was it the year before,

1149
00:56:41.519 --> 00:56:43.719
<v Speaker 3>I forget anyway, he lives in Maui. It does really

1150
00:56:43.719 --> 00:56:45.960
<v Speaker 3>good work with conservation of whales and all that. But

1151
00:56:47.039 --> 00:56:50.400
<v Speaker 3>he's he's really interested in how UMLGA kind of taken

1152
00:56:50.440 --> 00:56:53.360
<v Speaker 3>away to be a case tool to generate code instead

1153
00:56:53.360 --> 00:56:55.800
<v Speaker 3>of being a general notation to do that. And I

1154
00:56:55.800 --> 00:56:59.559
<v Speaker 3>think the UML two point zero folks kind of went

1155
00:56:59.840 --> 00:57:03.519
<v Speaker 3>and said, we can build a business around mL to

1156
00:57:03.559 --> 00:57:06.199
<v Speaker 3>create solutions kind of for free or buy the business.

1157
00:57:06.679 --> 00:57:08.920
<v Speaker 3>And I think, I think what you're taught talking about,

1158
00:57:08.960 --> 00:57:11.239
<v Speaker 3>Carl's kind of this this approach of like, hey, we

1159
00:57:11.280 --> 00:57:16.360
<v Speaker 3>can take you know, a human recognizable way to talk

1160
00:57:16.400 --> 00:57:19.480
<v Speaker 3>about a workflow of information and kind of press go

1161
00:57:19.599 --> 00:57:20.280
<v Speaker 3>and it'll do it.

1162
00:57:21.000 --> 00:57:23.679
<v Speaker 1>I think without this kind of an answer to rational rose,

1163
00:57:23.760 --> 00:57:24.559
<v Speaker 1>wasn't it. Yeah?

1164
00:57:24.639 --> 00:57:28.719
<v Speaker 3>Yeah, the rough process, all these all these different all

1165
00:57:28.719 --> 00:57:32.159
<v Speaker 3>these different things that we've gone through. I think with

1166
00:57:32.480 --> 00:57:36.519
<v Speaker 3>AI it's it's reopening that obviously as we see you know,

1167
00:57:37.159 --> 00:57:39.639
<v Speaker 3>I definitely think that the programming languages that we use

1168
00:57:39.679 --> 00:57:40.960
<v Speaker 3>in the future are not going to be the same

1169
00:57:40.960 --> 00:57:44.320
<v Speaker 3>programming languages that we do to use today, at least

1170
00:57:44.360 --> 00:57:48.519
<v Speaker 3>not for the same purposes anymore. That level of abstraction

1171
00:57:48.639 --> 00:57:51.280
<v Speaker 3>is being bumped very hard right now up again, right

1172
00:57:51.360 --> 00:57:54.000
<v Speaker 3>just like we had from you know, assembler to compiled

1173
00:57:54.079 --> 00:57:57.360
<v Speaker 3>languages to whatever interpreted languages, et cetera. So I think

1174
00:57:57.400 --> 00:58:01.119
<v Speaker 3>the same thing's again happening out of very rapid pace

1175
00:58:02.119 --> 00:58:05.239
<v Speaker 3>because in essence, I think AI right now has really

1176
00:58:05.320 --> 00:58:10.679
<v Speaker 3>just taken what we do with stack overflowing Google searching

1177
00:58:11.519 --> 00:58:14.480
<v Speaker 3>from four hours to be four minutes type of thing, right,

1178
00:58:15.400 --> 00:58:19.840
<v Speaker 3>So that is the affordance of the level of abstraction.

1179
00:58:20.039 --> 00:58:23.599
<v Speaker 3>So you know, when I'm when I'm taking a snapshot

1180
00:58:23.719 --> 00:58:27.599
<v Speaker 3>of you know, some sticky notes on a whiteboard and

1181
00:58:27.679 --> 00:58:30.480
<v Speaker 3>putting it into cursor AI, and it's giving me the code,

1182
00:58:31.400 --> 00:58:34.679
<v Speaker 3>that's you know, I can feel the change, right I can.

1183
00:58:34.880 --> 00:58:37.000
<v Speaker 3>I know that that would have taken me to write

1184
00:58:37.000 --> 00:58:39.960
<v Speaker 3>those things wouldn't have been you know, a second or

1185
00:58:39.960 --> 00:58:42.440
<v Speaker 3>two or three or however long it took the chat

1186
00:58:42.519 --> 00:58:44.920
<v Speaker 3>to produce. It would definitely be taking minutes, an hour

1187
00:58:45.000 --> 00:58:47.760
<v Speaker 3>or whatever. And it even caught something that I there's

1188
00:58:47.760 --> 00:58:49.559
<v Speaker 3>an assertion in there that I didn't think of. And

1189
00:58:49.880 --> 00:58:52.079
<v Speaker 3>when one of the events was uh, you know, this

1190
00:58:52.280 --> 00:58:55.400
<v Speaker 3>was for a conference organizing software, and it was I'm

1191
00:58:55.400 --> 00:58:57.159
<v Speaker 3>going to change the name of a room because I'm

1192
00:58:57.159 --> 00:59:00.800
<v Speaker 3>adding rooms to set up the conference. The assert that

1193
00:59:00.840 --> 00:59:04.360
<v Speaker 3>the AI ended up putting in there was make sure

1194
00:59:04.400 --> 00:59:06.920
<v Speaker 3>that the old name doesn't exist in the collection already.

1195
00:59:06.960 --> 00:59:09.760
<v Speaker 3>I missed that, Like I just wasn't thinking, and I'm like, oh, yeah, right,

1196
00:59:09.840 --> 00:59:11.960
<v Speaker 3>of course, Like I could definitely have a bug in

1197
00:59:12.000 --> 00:59:14.440
<v Speaker 3>there where instead of renaming, I just added another room

1198
00:59:14.480 --> 00:59:16.679
<v Speaker 3>and left the old one in there, right, or something

1199
00:59:16.719 --> 00:59:18.239
<v Speaker 3>like that. So that's a really good assert and it

1200
00:59:18.280 --> 00:59:21.679
<v Speaker 3>did it for me. Okay, that's really good. So we

1201
00:59:21.800 --> 00:59:24.639
<v Speaker 3>all have like spikes of being really good, but we

1202
00:59:24.679 --> 00:59:27.719
<v Speaker 3>also have things when we're not on and we'll miss things, right,

1203
00:59:27.920 --> 00:59:31.840
<v Speaker 3>And I think AI draws a kind of a safety

1204
00:59:31.880 --> 00:59:35.280
<v Speaker 3>net at the average, so if you ever make a mistake,

1205
00:59:35.320 --> 00:59:37.440
<v Speaker 3>you're obviously falling below average of what's out there, and

1206
00:59:37.480 --> 00:59:40.119
<v Speaker 3>the AI will catch it for you. So you know,

1207
00:59:40.519 --> 00:59:43.119
<v Speaker 3>if you're expressing things in a story like manner and

1208
00:59:43.159 --> 00:59:46.679
<v Speaker 3>you're really in tune with what AI has been trained on,

1209
00:59:46.760 --> 00:59:49.119
<v Speaker 3>I think event modeling because of its story like nature,

1210
00:59:49.719 --> 00:59:54.199
<v Speaker 3>the way that these things are specified, they have basically

1211
00:59:54.239 --> 00:59:58.440
<v Speaker 3>given a very low probability of hallucination with these things,

1212
00:59:58.480 --> 01:00:01.039
<v Speaker 3>so you could go incredibly fast asked with event modeling

1213
01:00:01.039 --> 01:00:04.320
<v Speaker 3>and event sourcing. Event sourcing for the point that you're

1214
01:00:04.360 --> 01:00:09.320
<v Speaker 3>working with, you know, multiple purpose built models for just

1215
01:00:09.440 --> 01:00:13.519
<v Speaker 3>that one workflow step, which is a very finite scope.

1216
01:00:13.519 --> 01:00:16.239
<v Speaker 3>And I think AI does a tremendous job when the

1217
01:00:16.280 --> 01:00:19.480
<v Speaker 3>scope is finite, Like really you know it? Yeah, if

1218
01:00:19.480 --> 01:00:21.360
<v Speaker 3>you say, hey, build me an online store, it will,

1219
01:00:21.519 --> 01:00:24.280
<v Speaker 3>but it's probably not what you're the one you're imagining, right.

1220
01:00:24.400 --> 01:00:26.239
<v Speaker 2>Right, Yeah, it's not the one you want.

1221
01:00:26.679 --> 01:00:29.599
<v Speaker 3>Yeah. If you say, like, hey, I want to like

1222
01:00:29.719 --> 01:00:32.800
<v Speaker 3>add this item to my shopping cart, and this is

1223
01:00:32.840 --> 01:00:35.840
<v Speaker 3>the screen and the specific you know, it'll give you

1224
01:00:35.880 --> 01:00:37.360
<v Speaker 3>exactly almost exactly what you mean.

1225
01:00:37.440 --> 01:00:37.719
<v Speaker 2>Yeah.

1226
01:00:37.760 --> 01:00:40.639
<v Speaker 1>Well, Adam has been wow, drinking from the fire hose

1227
01:00:40.639 --> 01:00:41.360
<v Speaker 1>for the last.

1228
01:00:42.280 --> 01:00:44.639
<v Speaker 3>I guessed about this, but full.

1229
01:00:44.519 --> 01:00:46.679
<v Speaker 1>Of meaty goodness. So thank you very much.

1230
01:00:46.960 --> 01:00:50.039
<v Speaker 3>Yeah, thank you guys for having me. And if anyone

1231
01:00:50.039 --> 01:00:52.239
<v Speaker 3>wants to find out more event modeling. Dot org has

1232
01:00:52.280 --> 01:00:55.199
<v Speaker 3>all the all the links search for event modeling. It's

1233
01:00:55.199 --> 01:00:57.840
<v Speaker 3>the top link and definitely get the book from Martin.

1234
01:00:57.960 --> 01:01:00.599
<v Speaker 3>He's done such a good job, working to irishly on

1235
01:01:00.639 --> 01:01:03.400
<v Speaker 3>so many chapters day in and day out, so he

1236
01:01:03.519 --> 01:01:08.840
<v Speaker 3>deserves all the credits there. And he's been a core

1237
01:01:08.920 --> 01:01:13.000
<v Speaker 3>member of the community over in Germany doing that, so

1238
01:01:13.559 --> 01:01:16.679
<v Speaker 3>you know, I'm really happy for his success and it

1239
01:01:16.760 --> 01:01:19.599
<v Speaker 3>helps our entire community. There's also a discord group that

1240
01:01:19.719 --> 01:01:23.519
<v Speaker 3>we have if you have questions about this. Martin, myself,

1241
01:01:23.599 --> 01:01:26.719
<v Speaker 3>all sorts of other people are there to answer questions.

1242
01:01:26.719 --> 01:01:29.960
<v Speaker 3>It's a highly active group. Is messages there every single

1243
01:01:30.039 --> 01:01:32.599
<v Speaker 3>day about this stuff. So if it's event sourcing or

1244
01:01:32.639 --> 01:01:36.119
<v Speaker 3>event modeling, even domain driven design topics pop up in there,

1245
01:01:36.159 --> 01:01:39.519
<v Speaker 3>anything around this whole way of working, you'll find good

1246
01:01:39.519 --> 01:01:41.719
<v Speaker 3>people there to help you. I'll be there to help

1247
01:01:41.719 --> 01:01:44.199
<v Speaker 3>you if I'm not. There's others, So thanks guys for

1248
01:01:44.239 --> 01:01:46.960
<v Speaker 3>having me. And yeah, we have workshops too, so all

1249
01:01:47.000 --> 01:01:49.320
<v Speaker 3>sorts of things on that site. I hopefully we will

1250
01:01:49.360 --> 01:01:52.599
<v Speaker 3>have a few. Actually, we also had our first event

1251
01:01:52.639 --> 01:01:56.280
<v Speaker 3>modeling conference in Vancouver and one in Germany this year,

1252
01:01:56.320 --> 01:01:59.719
<v Speaker 3>so starting to grow. So anyway, we'll have to have

1253
01:01:59.840 --> 01:02:01.960
<v Speaker 3>your booth that one of these when we grow big enough.

1254
01:02:01.840 --> 01:02:04.719
<v Speaker 2>To have you. Yeah, sure, Kevin do that.

1255
01:02:04.719 --> 01:02:07.199
<v Speaker 3>That'd be fun, that would be really awesome. So thank

1256
01:02:07.239 --> 01:02:09.679
<v Speaker 3>you long overdu and I thank you so much.

1257
01:02:09.800 --> 01:02:12.480
<v Speaker 1>Thank you, and we are again. I wish we had

1258
01:02:12.519 --> 01:02:16.159
<v Speaker 1>you on before, but wow, what a show. Thanks again

1259
01:02:16.719 --> 01:02:39.239
<v Speaker 1>and we'll talk to you next time on dot net rocks.

1260
01:02:40.519 --> 01:02:43.159
<v Speaker 1>Dot net Rocks is brought to you by Franklin's Net

1261
01:02:43.320 --> 01:02:47.280
<v Speaker 1>and produced by Pop Studios, a full service audio, video

1262
01:02:47.360 --> 01:02:51.440
<v Speaker 1>and post production facility located physically in New London, Connecticut,

1263
01:02:51.679 --> 01:02:56.119
<v Speaker 1>and of course in the cloud online at pwop dot com.

1264
01:02:56.679 --> 01:02:58.800
<v Speaker 1>Visit our website at d O T N E t

1265
01:02:59.039 --> 01:03:04.599
<v Speaker 1>R O c k S for RSS feeds, downloads, mobile apps, comments,

1266
01:03:04.920 --> 01:03:07.480
<v Speaker 1>and access to the full archives going back to show

1267
01:03:07.559 --> 01:03:11.280
<v Speaker 1>number one, recorded in September two thousand and two. And

1268
01:03:11.360 --> 01:03:13.760
<v Speaker 1>make sure you check out our sponsors. They keep us

1269
01:03:13.800 --> 01:03:17.280
<v Speaker 1>in business. Now go write some code, See you next time.

1270
01:03:18.199 --> 01:03:27.800
<v Speaker 3>You got jad Middle Vans
