WEBVTT

1
00:00:04.260 --> 00:00:09.980
Welkom bij de tweede aflevering van CodeKlets. Ik ben Saber Karmous. En ik ben Kishen Simbhoedatpanday.

2
00:00:10.220 --> 00:00:14.400
Ja, dit is de tweede aflevering. Het was wel, de eerste was best, vond ik best spannend.

3
00:00:14.560 --> 00:00:19.860
Was ook heel gaaf, was met Pauline. Nee, maar dat was echt wel gaaf. Dit heeft me best wel verrast,

4
00:00:19.940 --> 00:00:25.260
want je weet natuurlijk nooit wat voor persoon je aan tafel hebt. En dit was leuk.

5
00:00:25.620 --> 00:00:29.780
Ja, het was heel gezellig. Een hele leuke, spontane meid ook. Veel gelachen.

6
00:00:30.520 --> 00:00:35.440
Veel ook inhoudelijke, facking-inhoudelijke dingen ook met haar gesproken. Ja, het was echt goed.

7
00:00:36.020 --> 00:00:39.920
Ja, dat vond ik ook. Maar goed, ik zat daarna. Ik wilde nog één opnemen.

8
00:00:40.600 --> 00:00:43.760
En ja, dan zit je te wachten, te wachten en dan hopen dat je weer een gast kunt vinden.

9
00:00:44.080 --> 00:00:48.500
Gelukkig hebben we best wel een lijst met hele interessante gasten die we binnenkort hopelijk kunnen op gaan nemen.

10
00:00:48.680 --> 00:00:54.020
Dus daar kan ik niet op wachten. Die gast van vandaag, Klapper Zoel, die is ook heel erg gaaf.

11
00:00:54.180 --> 00:00:57.520
Maar het viel mij op dat ik echt wel zin had om weer een nieuwe op te nemen.

12
00:00:57.640 --> 00:00:58.880
Dus ik vind het echt wel gaaf om te doen.

13
00:00:58.880 --> 00:01:01.300
Elke week gaan we gewoon tijd maken.

14
00:01:01.580 --> 00:01:05.840
Ja, precies. Oké, maar deze keer hebben we een gast die voor mij heel bekend is.

15
00:01:05.960 --> 00:01:11.280
Dat is een collega van mij. Die werkt ook bij Alviva Solutions en dat is Dennis Domen.

16
00:01:12.920 --> 00:01:18.100
We zijn heel blij dat hij aanschuift bij ons. Dennis werkt dus bij Alviva Solutions.

17
00:01:18.260 --> 00:01:20.400
Zit al ruim twee decennia in het vak.

18
00:01:21.380 --> 00:01:24.520
Ik weet niet hoe je dit doet, man. Na tien jaar was ik afgeraakt.

19
00:01:24.660 --> 00:01:25.520
Hoe hou je je in het volk?

20
00:01:26.280 --> 00:01:27.040
23 jaar.

21
00:01:27.040 --> 00:01:34.040
23 ook. Hij heeft zich inmiddels gespecialiseerd in het verbeteren van het hele software ontwikkeltrekken

22
00:01:34.760 --> 00:01:38.020
bij organisaties die software bouwen op basis van .NET technologie.

23
00:01:38.380 --> 00:01:39.840
Dan doe je gewoon alleen maar .NET.

24
00:01:40.080 --> 00:01:43.120
Ik kan mezelf fullstack noemen, maar dat is een beetje een hype term.

25
00:01:43.520 --> 00:01:48.020
Natuurlijk kan ik JavaScript en TypeScript, maar mijn hart ligt nog steeds bij .NET.

26
00:01:48.620 --> 00:01:50.440
Heb je ook een tattoo ergens met .NET?

27
00:01:50.760 --> 00:01:51.820
Nee, dat doe ik niet aan.

28
00:01:51.820 --> 00:01:55.920
Nou, dat is maar goed, want dat vind ik altijd een beetje vreemd.

29
00:01:58.240 --> 00:01:59.360
Ik ben er ook de scheidrecht voor.

30
00:01:59.480 --> 00:02:02.900
Ja, precies. Maar goed, het gaat over allerlei facetten.

31
00:02:03.860 --> 00:02:09.640
Dus architectuur, teams, mensen, infrastructuur, tools en de processen die daar allemaal mee te maken hebben.

32
00:02:10.040 --> 00:02:11.800
Dat is een redelijk breed inzet bij die jongen.

33
00:02:11.840 --> 00:02:15.980
Dat is wel handig. Hij heeft twee kinderen en nog een vrouw.

34
00:02:16.160 --> 00:02:18.340
En hij heeft ook handbaltraining. Dat is wel een verrassing voor mij.

35
00:02:18.380 --> 00:02:18.940
Dat wist ik dus niet.

36
00:02:19.020 --> 00:02:21.020
Ja, voor mij ook wel. En ook voor mijn familie.

37
00:02:21.580 --> 00:02:23.300
Maar mijn vrouw is een handbalfanaat.

38
00:02:23.500 --> 00:02:24.880
En mijn kinderen zijn op handbal gegaan.

39
00:02:25.620 --> 00:02:27.460
En in een gegeven moment word je een soort van vrijwilliger.

40
00:02:28.360 --> 00:02:29.080
En ja, waarom niet?

41
00:02:29.320 --> 00:02:30.680
Het is leuk. Je staat buiten.

42
00:02:30.880 --> 00:02:31.480
Frisse lucht.

43
00:02:31.960 --> 00:02:33.500
Hij schrijft verder ook nog blogs.

44
00:02:33.920 --> 00:02:35.540
Nou, ik weet niet, waar had hij de tijd vandaan?

45
00:02:37.940 --> 00:02:38.740
Internationale conferenties.

46
00:02:38.980 --> 00:02:41.420
En hij onderhoudt meerdere open source projecten.

47
00:02:41.420 --> 00:02:42.760
Dat komen we later denk ik nog wel op terug.

48
00:02:43.520 --> 00:02:45.700
En hij schijnt ook nog iets met C-Shop te doen.

49
00:02:45.880 --> 00:02:49.200
Dat is eigenlijk wel best wel logisch, maar ook wel handig.

50
00:02:49.200 --> 00:02:52.440
Het zou wel een beetje lullig zijn als je .net deed en alleen maar Javascript kon.

51
00:02:53.060 --> 00:02:54.280
Dat is niet zo handig, denk ik.

52
00:02:55.300 --> 00:02:56.020
Maar goed.

53
00:02:56.640 --> 00:02:58.040
Dit komt meteen bij het eerste onderwerp,

54
00:02:58.080 --> 00:02:59.540
zodat we meteen met de deur in huis vallen.

55
00:03:00.380 --> 00:03:03.880
Dat is een project waar hij denk ik best wel trots op is.

56
00:03:03.960 --> 00:03:05.140
Nou, we gaan niet alleen over dat project hebben,

57
00:03:05.240 --> 00:03:08.140
maar ook een aantal verwante zaken.

58
00:03:08.400 --> 00:03:10.180
Dat is Fluid Assertions.

59
00:03:10.840 --> 00:03:13.640
Dat is een library om assertions mee te schrijven.

60
00:03:13.640 --> 00:03:17.900
Dat is bij unit testen, dus TDD of BDD.

61
00:03:18.640 --> 00:03:19.100
Als ik het goed heb.

62
00:03:20.520 --> 00:03:22.620
En dat doet hij al een tijdje.

63
00:03:22.740 --> 00:03:23.420
Hoe lang eigenlijk?

64
00:03:23.620 --> 00:03:24.160
Tien jaar.

65
00:03:24.840 --> 00:03:25.200
Tien jaar.

66
00:03:25.200 --> 00:03:26.280
Toen vallen zag ik het vandaag.

67
00:03:26.380 --> 00:03:30.060
Ik zat te kijken naar de aantekeningen voor een komende presentatie.

68
00:03:30.560 --> 00:03:33.140
Toen zag ik dat ik het samen met collega Martin Opdam,

69
00:03:33.360 --> 00:03:38.020
ook bij Aviva werkend, in 2009 het idee al zijn we eigenlijk mee gestart.

70
00:03:39.060 --> 00:03:41.420
En volgens mij pas in 2010 kwam het op CodeKlets.

71
00:03:41.420 --> 00:03:43.880
Maar goed, in 2009 zijn we er al mee begonnen.

72
00:03:44.000 --> 00:03:45.700
Toen heette het nog Custom Assertions ofzo.

73
00:03:46.100 --> 00:03:47.620
Het was meer een hobbyprojectje.

74
00:03:47.800 --> 00:03:49.080
Niet echt serieus bedoeld.

75
00:03:49.300 --> 00:03:51.680
Die Fluid Assertions is wel een betere naam.

76
00:03:51.880 --> 00:03:52.620
Moet ik eerlijk zeggen.

77
00:03:52.820 --> 00:03:53.920
Ja, dat loopt wat lekkerder.

78
00:03:53.940 --> 00:03:54.740
Wat vloeiender.

79
00:03:57.560 --> 00:03:59.120
Dit is echt een nerd-talk dit.

80
00:03:59.700 --> 00:04:00.740
Ja, precies.

81
00:04:02.480 --> 00:04:04.500
Ik hoop dat mensen daar mogen luisteren.

82
00:04:06.080 --> 00:04:07.340
Maar hoe ben je eigenlijk geïnspireerd?

83
00:04:07.340 --> 00:04:09.860
Hoe oud ben je Fluid Assertions gaan doen?

84
00:04:09.960 --> 00:04:11.000
Is dat toevallig omdat je dacht.

85
00:04:11.140 --> 00:04:13.720
Nou ja, dit probleem lopen we nu samen met Martin, zei je.

86
00:04:13.860 --> 00:04:14.000
Ja.

87
00:04:14.240 --> 00:04:15.780
We lopen iedere keer een beetje tegen dezelfde problemen aan.

88
00:04:15.920 --> 00:04:16.620
Ja, dat is zeker zo.

89
00:04:16.700 --> 00:04:21.960
Ik ben niet iemand die gewoon puur uit een hobby sfeer iets gaat bedenken, iets gaat bouwen.

90
00:04:22.080 --> 00:04:25.400
Ik ben niet iemand die bijvoorbeeld, weet ik veel, als er iets nieuws uitkomt.

91
00:04:25.440 --> 00:04:27.660
Een nieuwe .netversie of een nieuw framework ofzo.

92
00:04:28.200 --> 00:04:30.360
Dat ik dan in de avonduren gewoon eens iets in elkaar ga zetten.

93
00:04:30.380 --> 00:04:31.000
Pure voor de lol.

94
00:04:31.720 --> 00:04:32.380
Het zit niet in me.

95
00:04:32.380 --> 00:04:34.620
Ik moet echt een probleem willen oplossen.

96
00:04:35.640 --> 00:04:37.560
En volgens mij hadden we toen het probleem.

97
00:04:37.700 --> 00:04:40.520
Ik ben ook weer iemand die houdt van leesbare code.

98
00:04:40.620 --> 00:04:43.060
Ik wil graag dat mijn code zelfbeschrijvend is.

99
00:04:43.220 --> 00:04:46.600
Dat is misschien een beetje een ideologische insteek.

100
00:04:46.900 --> 00:04:49.120
Maar ik vind het belangrijk dat het duidelijk is.

101
00:04:49.140 --> 00:04:50.620
Dat het de intentie laat zien.

102
00:04:51.500 --> 00:04:54.740
En ik kan me nog wel vaak herinneren dat we toen met bestaande toolingen daar

103
00:04:54.740 --> 00:04:56.120
niet echt uit de voeten kwamen.

104
00:04:57.320 --> 00:04:58.480
En dat we gegeven met zijn experimenteren.

105
00:04:58.600 --> 00:04:59.700
En voor mij had het ook ergens gezien.

106
00:04:59.720 --> 00:05:01.900
Een soort gelijk project in een andere platform.

107
00:05:02.660 --> 00:05:03.800
En dat is eigenlijk zo gegroeid.

108
00:05:03.800 --> 00:05:05.820
En we hadden ook nooit bedacht dat het zo groot zou zijn.

109
00:05:06.240 --> 00:05:11.120
Ik zag vanmiddag dat we volgens mij richting de 28 miljoen downloads gaan.

110
00:05:12.160 --> 00:05:14.760
Nou, ik wou dat ik daar een cent per download van kreeg.

111
00:05:15.040 --> 00:05:15.960
Of bitcoins.

112
00:05:16.340 --> 00:05:17.200
Ja, precies.

113
00:05:18.120 --> 00:05:20.480
Maar dat is eigenlijk zo gegroeid op een of andere manier.

114
00:05:21.280 --> 00:05:24.880
En wat was de onderscheidende factor volgens jou?

115
00:05:25.240 --> 00:05:29.020
Wat je beschrijft dat je ergens een soort gelijk framework had gevonden.

116
00:05:29.400 --> 00:05:30.440
Ja, dat is een hele goede vraag.

117
00:05:30.960 --> 00:05:32.380
En eerlijk gezegd weet ik het antwoord daar niet op.

118
00:05:32.380 --> 00:05:34.120
Want er zijn een soortgelijke frameworks.

119
00:05:34.820 --> 00:05:36.960
Maar die zijn op een of andere manier nooit zo populair geworden.

120
00:05:38.520 --> 00:05:42.540
Waar denk je dan als je zelf zou mogen?

121
00:05:42.540 --> 00:05:44.260
Misschien de presentatie die ik erover gedaan heb.

122
00:05:44.640 --> 00:05:46.980
Misschien de blogs die ik erover geschreven heb.

123
00:05:47.460 --> 00:05:48.860
Het laten zien aan andere mensen.

124
00:05:50.940 --> 00:05:53.300
Het is gebaseerd op een fluent API.

125
00:05:53.960 --> 00:05:55.460
En dat betekent het leest lekker makkelijk.

126
00:05:55.740 --> 00:05:57.180
Je hebt een variabele.

127
00:05:57.340 --> 00:05:59.740
Je gaat in je whatever IDA je wil gebruiken.

128
00:05:59.820 --> 00:06:00.600
Visual Studio Rider.

129
00:06:00.880 --> 00:06:01.540
Je doet een dot.

130
00:06:01.540 --> 00:06:02.940
En je ziet shoot staan.

131
00:06:03.540 --> 00:06:04.320
En je doet nog een keer een dot.

132
00:06:04.400 --> 00:06:05.740
En je ziet precies alle opties die je hebt.

133
00:06:05.840 --> 00:06:06.900
En het leest ook heel erg duidelijk.

134
00:06:07.080 --> 00:06:11.520
En een van de dingen waarvan ik zelf denk dat het wel vrij uniek is opzich van andere frameworks.

135
00:06:11.620 --> 00:06:12.860
Als een unit test faalt.

136
00:06:12.940 --> 00:06:15.800
Dan vind ik het heel belangrijk dat het heel duidelijk is waarom die faalt.

137
00:06:16.040 --> 00:06:19.240
Ik heb dus een hekel aan van expected, false en found true.

138
00:06:19.840 --> 00:06:21.280
Dat zegt helemaal niks.

139
00:06:21.380 --> 00:06:24.460
Dus ik heb het altijd een onderdeel gemaakt om het proberen heel explic te maken.

140
00:06:24.500 --> 00:06:28.080
Dat je meteen ziet zonder dat je een code krijgt van oh dat is de reden waarom het faalt.

141
00:06:28.080 --> 00:06:33.580
Ja, je probeert ontwikkelaars net zoals je zelf zegt mooie code.

142
00:06:33.760 --> 00:06:35.260
Het is duidelijke code te schrijven.

143
00:06:35.360 --> 00:06:36.500
Het moet lezen als een boek.

144
00:06:37.040 --> 00:06:37.700
Ja, absoluut.

145
00:06:38.320 --> 00:06:38.720
Absoluut.

146
00:06:38.720 --> 00:06:39.120
Oké.

147
00:06:39.180 --> 00:06:39.740
Ja, dat is wel.

148
00:06:39.940 --> 00:06:40.820
Kijk, want het grappige is.

149
00:06:40.880 --> 00:06:42.340
Ik heb het best vaak.

150
00:06:42.520 --> 00:06:45.160
Trouwens eigenlijk altijd als ik unit test schrijf dan gebruik ik het voortaan.

151
00:06:45.480 --> 00:06:46.480
Het lijkt wel een reclameblok.

152
00:06:46.540 --> 00:06:48.140
Maar dat is ook feitelijk echt zo.

153
00:06:49.740 --> 00:06:51.100
Nogmaals, ik verdien er niks mee.

154
00:06:51.300 --> 00:06:52.400
Nee, nee, nee.

155
00:06:52.920 --> 00:06:53.300
Maar goed.

156
00:06:54.700 --> 00:06:56.640
Maar het grappige is als je het leest.

157
00:06:56.640 --> 00:06:57.520
Je denkt, ja, het zijn een search.

158
00:06:57.600 --> 00:06:59.880
Je denkt, ja, een big deal zeg maar.

159
00:07:00.640 --> 00:07:01.980
Hoe kan dit nou zo veel impact hebben?

160
00:07:02.240 --> 00:07:03.600
Maar het grappige is als je het niet gebruikt.

161
00:07:03.620 --> 00:07:04.460
Dan denk je, shit, ik mis het.

162
00:07:04.520 --> 00:07:11.480
Dus het is al heel snel dat ik dan via de Visual Studio Package Manager, als ik het niet heb, dat ik het meteen installeer.

163
00:07:11.560 --> 00:07:16.480
Dus als het in de package niet gebruikt wordt, dan sneak ik altijd die package erbij in.

164
00:07:16.960 --> 00:07:20.920
Maar het is steeds vaker zo dat als ik ergens kom en ze hebben unit test geschreven, dat het in de search gebruikt wordt.

165
00:07:20.940 --> 00:07:21.700
Dus dat is wel echt opvallend.

166
00:07:22.720 --> 00:07:22.760
Ja.

167
00:07:22.760 --> 00:07:23.760
Dus dat is al wel een...

168
00:07:23.760 --> 00:07:25.160
En dat is ook echt kick om te zien hoor.

169
00:07:25.400 --> 00:07:28.540
Want ik zeg al, ik had het zelf niet verwacht dat het zo ver zou gaan.

170
00:07:29.100 --> 00:07:30.780
Maar op een gegeven moment ontdek je je eerste blogpost.

171
00:07:30.880 --> 00:07:33.180
Dat iemand een blogpost schrijft over je open source library.

172
00:07:35.120 --> 00:07:37.420
En vorig jaar zag ik voor het eerst een Pluralsight Training.

173
00:07:37.500 --> 00:07:39.560
En toen denk je wel van, wow, dat is toch wel kicken.

174
00:07:39.820 --> 00:07:41.100
Dat vind ik eigenlijk wel bijzonder, ja.

175
00:07:41.140 --> 00:07:44.960
Dat iemand alles dan een cursus verzint met spullen die jij verzond hebt.

176
00:07:45.000 --> 00:07:46.920
Dan heb je wel, ja, dan ben jij gewoon klaar.

177
00:07:46.920 --> 00:07:47.380
Dat denk ik wel.

178
00:07:47.500 --> 00:07:50.420
Ik zag een open source vereniging van een collega.

179
00:07:50.420 --> 00:07:54.500
Ik zag ook voor het eerst een blogpost over voorbij komen van iemand anders die het gewoon gebruikt.

180
00:07:54.640 --> 00:07:57.980
Ik denk dat je dan een punt hebt bereikt dat je dat dan gaat spelen.

181
00:07:58.160 --> 00:08:01.700
Als andere mensen gaan praten, gaan schrijven over iets wat je gemaakt hebt.

182
00:08:01.900 --> 00:08:05.760
Dan heb je denk ik, misschien is dat wel een beetje dat kantelpunt voor een library.

183
00:08:06.220 --> 00:08:06.880
Ja, ja, ja.

184
00:08:06.940 --> 00:08:08.040
Ja, het lijkt me wel heel erg gaaf.

185
00:08:08.140 --> 00:08:11.580
Ik heb het helaas niet mogen meemaken, maar goed, dat is wel heel gaaf.

186
00:08:13.100 --> 00:08:17.120
En zijn er ook negatieve zaken geweest waarvan je dacht van nou,

187
00:08:17.260 --> 00:08:18.740
want het is een open source project.

188
00:08:18.740 --> 00:08:20.880
Heb jij bad stories?

189
00:08:21.280 --> 00:08:22.020
Oh, joh.

190
00:08:23.520 --> 00:08:25.500
Ja, weet je, het is net een echt software project.

191
00:08:25.660 --> 00:08:27.800
Je hebt te maken met mensen die bepaalde wensen hebben,

192
00:08:27.860 --> 00:08:30.540
dingen die niet passen, die niet in de filosofie passen.

193
00:08:30.780 --> 00:08:33.260
Je hebt mensen die kritiek leveren,

194
00:08:33.460 --> 00:08:35.520
dat ze bijvoorbeeld een bepaalde featje niet mooi vinden.

195
00:08:35.940 --> 00:08:39.060
Je hebt zelfs mensen die hele vloeiend APIs afsweren.

196
00:08:39.360 --> 00:08:41.920
Waarschijnlijk zijn dat de mensen die misschien een keer een slecht ervaring hebben gehad.

197
00:08:42.020 --> 00:08:43.700
Die zitten de verkeerde kant van de hype cycle.

198
00:08:45.120 --> 00:08:48.020
Maar in het algemeen, ja, weet je, het is software.

199
00:08:48.020 --> 00:08:50.700
Dus je moet gaan nadenken over breaking changes.

200
00:08:51.640 --> 00:08:54.320
In tien jaar tijd is er heel veel veranderd in de .NET wereld.

201
00:08:54.540 --> 00:08:57.820
Allerlei frameworks zijn bedacht en constructies om meerdere platformen

202
00:08:57.820 --> 00:09:00.560
of meerdere verschillende frameworks te ondersteunen.

203
00:09:00.620 --> 00:09:03.060
We moesten met Mono ondersteunen, Xamarin.

204
00:09:03.560 --> 00:09:05.800
We hebben .NET Core, veranderen ook weer van alles.

205
00:09:06.500 --> 00:09:09.380
Dus je bent continu bezig geweest om het weer compatible te maken,

206
00:09:09.520 --> 00:09:12.440
nieuwe features te ondersteunen en, net als een echt software project,

207
00:09:12.500 --> 00:09:14.760
je maakt ook keuzes, keuzes waar je later spijt van hebt.

208
00:09:15.340 --> 00:09:17.180
Je hebt een bepaalde constructie bedacht,

209
00:09:17.180 --> 00:09:20.220
een bepaalde API en later ontdek je van ja,

210
00:09:20.780 --> 00:09:22.040
dat zit niet helemaal lekker in elkaar.

211
00:09:22.220 --> 00:09:25.060
Mensen snappen het niet, dat is niet intuïtief genoeg.

212
00:09:25.140 --> 00:09:26.380
Maar je kunt het niet zomaar aanpassen,

213
00:09:26.820 --> 00:09:28.520
want je wilt geen breaking changes centraliseren.

214
00:09:28.600 --> 00:09:30.900
En dat is nog steeds zo, zeker met het aantal downloads,

215
00:09:31.400 --> 00:09:34.340
zie je ook dat mensen dingen gaan gebruiken op een manier die je niet verwacht had.

216
00:09:35.040 --> 00:09:38.180
Of dat ze een bepaalde functie tijd willen toevoegen die gewoon niet past in het idee.

217
00:09:38.300 --> 00:09:39.460
Je wilt dingen recht trekken.

218
00:09:40.140 --> 00:09:42.940
Een heel mooi voorbeeld is, iemand voegt een nieuwe functie toe.

219
00:09:43.420 --> 00:09:46.140
Ik wil een regular expression match methode hebben.

220
00:09:46.800 --> 00:09:49.160
Als je dat wilt toevoegen, bijvoorbeeld voor strings,

221
00:09:49.320 --> 00:09:52.840
misschien wil je die ook wel hebben voor collecties of zo.

222
00:09:53.420 --> 00:09:56.720
Maar wat de contributors vaak doen, is alleen maar die ene feature toevoegen.

223
00:09:57.040 --> 00:09:57.860
En als je als feedback geeft,

224
00:09:57.960 --> 00:09:59.400
ja, het is niet helemaal consistent,

225
00:09:59.560 --> 00:10:01.800
zou je diezelfde methode ook op die andere klas kunnen zetten,

226
00:10:02.020 --> 00:10:03.460
dan hebben ze er vaak geen zin meer in.

227
00:10:03.960 --> 00:10:06.200
Dat is een lastige. En ook kwaliteit van de code.

228
00:10:06.840 --> 00:10:09.220
Ik wil ook, Flunt is voor mij niet alleen een library,

229
00:10:09.320 --> 00:10:11.720
maar het is ook een soort van, hoe zou je het zeggen,

230
00:10:13.200 --> 00:10:15.200
een voorbeeld van hoe ik vind hoe je code moet schrijven.

231
00:10:15.840 --> 00:10:17.660
Ik heb daar een vrij sterke mening over.

232
00:10:18.280 --> 00:10:19.200
En als iemand eens iets aanlevert,

233
00:10:20.020 --> 00:10:21.420
wat hij in ieder geval doet, ja, wat doe je dan?

234
00:10:21.520 --> 00:10:24.220
Ga je dan een review geven van, ja, ik wil geen far gebruiken,

235
00:10:25.040 --> 00:10:26.460
of er moet betere documentatie op,

236
00:10:27.320 --> 00:10:29.340
of zeg je van, ja, die persoon heeft wel zijn best gedaan,

237
00:10:30.040 --> 00:10:32.240
laat ik het maar gewoon het werk voor hem doen of voor haar doen.

238
00:10:32.960 --> 00:10:35.260
Ja, ja, dat kan ik me wel eens bevoorstellen,

239
00:10:35.320 --> 00:10:37.180
want het is natuurlijk, ja, het is open source, het is gratis,

240
00:10:37.260 --> 00:10:39.920
maar goed, iemand steekt daar gewoon heel veel tijd en effort in.

241
00:10:41.020 --> 00:10:42.920
Andere zijn er tegelijkertijd ook afhankelijk van.

242
00:10:43.020 --> 00:10:44.040
Dus ik snap ook wel dat je bijvoorbeeld,

243
00:10:44.040 --> 00:10:48.800
als je vrijdagmiddag moet je nog even snel een test goed aan de praat krijgen,

244
00:10:48.860 --> 00:10:50.580
dan blijkt er een issue te zijn.

245
00:10:50.920 --> 00:10:52.260
Of is het niet helemaal duidelijk, zeg maar,

246
00:10:52.860 --> 00:10:54.920
hoe een bepaald iets werkt met de Flute Assertions?

247
00:10:55.080 --> 00:10:55.720
Dat kan ik me voorstellen.

248
00:10:55.880 --> 00:10:58.580
Ik denk, nou, ik moet nu deze bug, die moet voor mij nu opgelost worden.

249
00:10:58.660 --> 00:11:00.740
Maar ja, dat kun je niet verwachten van iemand.

250
00:11:00.960 --> 00:11:02.760
Aan de andere kant van jou bijvoorbeeld, van, ja,

251
00:11:03.120 --> 00:11:04.640
je gaat niet stil op sprong denken van nou,

252
00:11:04.700 --> 00:11:07.780
ik ga nu voor hem en voor iedereen die dat op vrijdagmiddag doet,

253
00:11:08.020 --> 00:11:08.600
dat probleem oplossen.

254
00:11:08.760 --> 00:11:11.240
Dus dat, dus je van de gebruikers is te begrijpen,

255
00:11:11.240 --> 00:11:13.280
maar van de maintainer of de eigenaar,

256
00:11:13.640 --> 00:11:16.280
of de oprichter van het project.

257
00:11:16.440 --> 00:11:18.920
Ja, kun je niet verwachten dat hij ook alles voor je doet.

258
00:11:19.460 --> 00:11:21.660
Dus dat is wel, ja, wel.

259
00:11:21.700 --> 00:11:23.640
Dat is een lastige balans soms.

260
00:11:23.880 --> 00:11:24.900
Ja, ja, ja.

261
00:11:24.900 --> 00:11:28.440
Je hoort echt best wel mensen die gewoon best wel populaire open source

262
00:11:28.440 --> 00:11:29.900
project hebben, die gewoon echt denken van nou,

263
00:11:29.900 --> 00:11:32.100
ik stop je gewoon mee, want ik krijg zoveel, ja,

264
00:11:32.140 --> 00:11:32.420
hoe zeg je dat?

265
00:11:32.520 --> 00:11:34.600
Negatieve feedback is vooral op github dan,

266
00:11:34.640 --> 00:11:39.700
dat er echt een complete rant in zo'n github issue plaatsvindt.

267
00:11:39.700 --> 00:11:42.380
Kijk, het voordeel van dit is een library.

268
00:11:42.460 --> 00:11:44.700
Het is een library die je alleen maar in unit tests gebruikt.

269
00:11:45.260 --> 00:11:47.920
Het wordt bijvoorbeeld een ander verhaal als jij een framework

270
00:11:47.920 --> 00:11:48.400
bouwt.

271
00:11:48.860 --> 00:11:51.040
In .NET space heb je best wel frameworks om bijvoorbeeld

272
00:11:51.040 --> 00:11:54.260
beeld scripts te maken, cake, sake, nuke.

273
00:11:54.560 --> 00:11:56.880
En daar zie je dat er vaak wat mensen achter zitten die vrij

274
00:11:58.280 --> 00:11:59.240
specifieke mening hebben.

275
00:11:59.940 --> 00:12:00.640
En dat betekent ook,

276
00:12:00.640 --> 00:12:01.980
als het niet voldoet aan hun mening,

277
00:12:02.080 --> 00:12:04.640
dat het ook heel lastig is om te overtuigen dat wat ze hebben

278
00:12:04.640 --> 00:12:07.480
gebouwd bijvoorbeeld niet goed te gebruiken is in een groot

279
00:12:07.480 --> 00:12:08.520
complex systeem.

280
00:12:08.520 --> 00:12:10.720
Misschien omdat ze het zelf dat die ervaring niet hebben of

281
00:12:10.720 --> 00:12:12.240
dat ze toch een bepaalde filosofie hebben.

282
00:12:12.860 --> 00:12:14.960
En dat is ook heel lastig om het gewoon in tekst,

283
00:12:15.080 --> 00:12:16.980
weet je wel, in een discussie op github,

284
00:12:17.160 --> 00:12:19.780
op Slack, wat dan ook, uit te vechten om het zo maar even

285
00:12:19.780 --> 00:12:20.120
te zeggen.

286
00:12:20.400 --> 00:12:20.980
Ja, ja, precies.

287
00:12:21.020 --> 00:12:22.520
Het is eigenlijk ook een beetje zoals, ja,

288
00:12:22.540 --> 00:12:24.700
als je boos bent dat je eigenlijk niet verstandig is om dan

289
00:12:24.700 --> 00:12:25.660
een mail te sturen naar iemand.

290
00:12:25.900 --> 00:12:28.460
Het is eigenlijk een beetje hetzelfde medium, zeg maar.

291
00:12:28.660 --> 00:12:30.120
En ja, er zijn eerlijk is eerlijk, zeg maar,

292
00:12:30.180 --> 00:12:31.420
onder software ontwikkelaars zijn er wel een aantal

293
00:12:31.420 --> 00:12:34.740
mensen die zijn redelijk, ja, direct of ja,

294
00:12:34.780 --> 00:12:36.060
noem het misschien lomp, zeg maar.

295
00:12:37.060 --> 00:12:37.460
Takloos.

296
00:12:37.740 --> 00:12:38.120
Ja, precies.

297
00:12:38.680 --> 00:12:39.480
Dus dat is nu eenmaal zo.

298
00:12:39.560 --> 00:12:41.100
En die willen ja gewoon heel specifiek,

299
00:12:41.120 --> 00:12:43.340
altijd op een heel specifieke vraag,

300
00:12:43.380 --> 00:12:45.120
terwijl er best wel wat context bij komt kijken.

301
00:12:45.240 --> 00:12:45.660
Ja, dat klopt.

302
00:12:45.720 --> 00:12:48.140
Dus dat is wel een ding.

303
00:12:48.560 --> 00:12:51.080
Ja, achteraf gezien zijn er echt zaken die jij

304
00:12:51.080 --> 00:12:53.960
misschien in het begin anders had willen doen.

305
00:12:55.400 --> 00:12:56.860
Ja, achteraf is altijd een beetje...

306
00:12:56.860 --> 00:12:57.300
Ja, natuurlijk.

307
00:12:57.500 --> 00:13:00.240
Ja, daarom is het een beetje een lastige vraag.

308
00:13:00.580 --> 00:13:01.320
Of een beetje koffiedik kijken,

309
00:13:02.600 --> 00:13:05.500
maar nee, ik ben eigenlijk wel tevreden

310
00:13:05.500 --> 00:13:06.540
Weet je, het is...

311
00:13:06.540 --> 00:13:07.440
Je hebt keuzes gemaakt,

312
00:13:07.620 --> 00:13:08.020
maar het is...

313
00:13:08.020 --> 00:13:09.000
Weet je, de keuzes die je maakt

314
00:13:09.000 --> 00:13:12.560
zijn ook weer niet zo kritisch voor wie dan ook.

315
00:13:13.700 --> 00:13:16.040
Nieuw releases maak je dingen weer wat netter.

316
00:13:16.720 --> 00:13:20.100
Ja, je krijgt nu wel een beetje een soort van feature bloot.

317
00:13:20.360 --> 00:13:21.940
Er zitten nu zoveel dingen in.

318
00:13:22.400 --> 00:13:23.840
Ja, is het eigenlijk niet gewoon complete?

319
00:13:23.980 --> 00:13:25.840
Maar goed, ik krijg nog steeds verzoek om dingen toe te voegen.

320
00:13:27.460 --> 00:13:29.700
Nee, ik heb dat zeker niet.

321
00:13:29.860 --> 00:13:31.040
Het is gewoon zo gebouwd.

322
00:13:31.160 --> 00:13:31.760
Zou ik het anders doen?

323
00:13:31.820 --> 00:13:32.080
Nee.

324
00:13:32.520 --> 00:13:34.120
Het is ook geen architectuur die je neerzet.

325
00:13:34.120 --> 00:13:37.180
Kijk, bij architectuur en complexe systemen,

326
00:13:37.240 --> 00:13:39.780
daar heb je veel eerder de neiging om van, ja, ships.

327
00:13:40.380 --> 00:13:41.520
Ik heb een bepaalde keuze gemaakt.

328
00:13:41.620 --> 00:13:43.400
Achteraf was dat misschien een beetje naïef.

329
00:13:43.580 --> 00:13:46.160
Maar ja, met een library zoals dit heb je daar helemaal geen last van.

330
00:13:46.820 --> 00:13:47.640
Het is geen framework.

331
00:13:47.680 --> 00:13:48.460
Dat scheelt al.

332
00:13:49.540 --> 00:13:52.960
Heb je ook voor de luisteraars thuis een gouden tip

333
00:13:52.960 --> 00:13:56.180
voor het opzetten van zo'n project?

334
00:13:57.280 --> 00:13:57.720
Poeh.

335
00:13:58.120 --> 00:13:59.020
Dat is wel een lastige.

336
00:13:59.140 --> 00:14:00.480
Als ik daarover na had kunnen denken.

337
00:14:01.880 --> 00:14:02.200
Nee.

338
00:14:02.200 --> 00:14:05.160
Een open source project populair maken.

339
00:14:06.760 --> 00:14:07.840
Ja, weet je, het is gewoon...

340
00:14:07.840 --> 00:14:10.520
Ook al heb je een mooie oplossing voor een probleem,

341
00:14:10.520 --> 00:14:12.100
dan is nog de vraag hoe uniek is dit?

342
00:14:12.540 --> 00:14:13.500
En vinden mensen het?

343
00:14:13.880 --> 00:14:17.680
Ja, ik denk uiteindelijk Twitter en een blog en dat soort zaken,

344
00:14:17.820 --> 00:14:19.560
dat helpt heel erg.

345
00:14:20.680 --> 00:14:23.280
Maar uiteindelijk is het ook maar gewoon gelukt dat iemand het ziet.

346
00:14:23.820 --> 00:14:24.060
Weet je?

347
00:14:24.540 --> 00:14:26.440
Het is in het algemeen wel mond-to-mond reclame.

348
00:14:26.480 --> 00:14:27.720
Dat denk ik wel, grotendeels.

349
00:14:28.340 --> 00:14:28.840
Dat zie je ook wel.

350
00:14:28.900 --> 00:14:29.940
Heb je dat veel gedaan?

351
00:14:30.740 --> 00:14:31.380
Nou ja, goed.

352
00:14:31.380 --> 00:14:34.380
Kijk, ik kom af en toe wel eens op conferenties

353
00:14:35.300 --> 00:14:37.300
en ik help best wel wat klanten natuurlijk.

354
00:14:37.400 --> 00:14:38.640
Dus ik kom weleens hier en daar wat.

355
00:14:39.040 --> 00:14:40.360
En je laat het gewoon zien, weet je.

356
00:14:41.540 --> 00:14:43.660
In dit geval is het een heel laagdrempelige library.

357
00:14:43.780 --> 00:14:45.660
Dus je voegt het toe en je kunt er aan het slag mee.

358
00:14:46.040 --> 00:14:47.960
Je hebt geen learning curve, weet je.

359
00:14:48.120 --> 00:14:50.060
Je hebt geen documenten die je moet lezen.

360
00:14:50.140 --> 00:14:51.260
Dat helpt natuurlijk allemaal.

361
00:14:51.920 --> 00:14:53.460
Maar het is meestal als mensen het dan zien.

362
00:14:53.980 --> 00:14:55.600
Oh ja, dat helpt wel inderdaad.

363
00:14:56.100 --> 00:14:57.480
En het is ook geen investment die je doet.

364
00:14:57.620 --> 00:14:59.800
Het is niet van ja, maar nu gaan we een framework adopteren.

365
00:14:59.800 --> 00:15:01.400
Ja, wat betekent dat voor ons?

366
00:15:01.640 --> 00:15:03.360
Weet je, wat voor impact heeft dat op de lange termijn?

367
00:15:03.380 --> 00:15:04.580
Dat is helemaal niet van belang.

368
00:15:04.940 --> 00:15:06.980
Ja, je kunt het ook een doer, zeg maar.

369
00:15:07.020 --> 00:15:07.680
Dat is een stap terug.

370
00:15:07.800 --> 00:15:09.320
Dat is zonder dat in één keer alles instopt.

371
00:15:09.560 --> 00:15:13.640
Dus dat is op zich het risico is redelijk klein om dit te gaan gebruiken.

372
00:15:13.800 --> 00:15:16.760
Als je in de JavaScript wereld zit en je moet in één keer een keuze gaan maken tussen

373
00:15:16.760 --> 00:15:21.240
we gaan Angular doen, we gaan React doen, we gaan Vue.js doen.

374
00:15:21.380 --> 00:15:22.520
Ja, dat is een hele andere keuze.

375
00:15:22.580 --> 00:15:24.340
Dat is een veel fundamentalere keuze.

376
00:15:25.300 --> 00:15:27.120
Architectuur gaat over de keuzes die je maakt

377
00:15:27.120 --> 00:15:29.940
en naar hoeverre die keuzes teruggedraaid kunnen worden.

378
00:15:30.160 --> 00:15:31.700
Bij dit soort dingen is het natuurlijk gewoon een no-deal.

379
00:15:32.120 --> 00:15:32.960
Ja, precies.

380
00:15:32.960 --> 00:15:33.600
Een non-issue.

381
00:15:33.600 --> 00:15:34.560
Non-issue, ja, precies.

382
00:15:34.620 --> 00:15:36.740
Een no-deal, het zal wel...

383
00:15:36.740 --> 00:15:37.320
Nee.

384
00:15:38.120 --> 00:15:40.180
Oh ja, jij zet er ook andere kanten aan.

385
00:15:40.460 --> 00:15:43.980
Dat is op zich gewoon een bijzonder verhaal, als ik dat zo kan zeggen.

386
00:15:44.460 --> 00:15:46.180
Kijk, het project bestaat tien jaar.

387
00:15:46.260 --> 00:15:50.060
Dat betekent dat je over die tien jaar hier en daar toch wel periodes had

388
00:15:50.060 --> 00:15:53.000
dat je dezelfde mensen die jou hielpen, contributors,

389
00:15:53.620 --> 00:15:55.640
die jou hielpen om het project verder te brengen.

390
00:15:55.640 --> 00:16:00.700
En ik heb nu een gozer uit Zweden, Jonas Nierup, die heel erg actief erin is.

391
00:16:01.060 --> 00:16:02.840
Maar die gozer, die is 3,24.

392
00:16:02.960 --> 00:16:05.620
Dus toen ik begon met het project, zat hij nog waarschijnlijk nog niet eens...

393
00:16:05.620 --> 00:16:06.680
was hij nog niet eens aan het studeren.

394
00:16:07.340 --> 00:16:10.880
Maar er is ook een jongen geweest uit de Verenigde Staten

395
00:16:11.580 --> 00:16:13.160
die jaren geholpen heeft.

396
00:16:13.380 --> 00:16:16.640
Die is gegeven moment ook in het Vreemde Legion gegaan.

397
00:16:17.800 --> 00:16:20.580
Omdat in een bepaalde fase van zijn leven heb ik zelfs nog een referentie geschreven.

398
00:16:21.360 --> 00:16:25.260
En vorig jaar kreeg ik een keer een reactie op een pull request in GitHub

399
00:16:25.260 --> 00:16:26.260
van zijn vader.

400
00:16:27.000 --> 00:16:27.500
Oh, wauw.

401
00:16:27.740 --> 00:16:28.380
Ja, echt.

402
00:16:29.040 --> 00:16:31.220
Van dit is de vader van die en die.

403
00:16:31.680 --> 00:16:35.160
En ik ben zijn accountant sluiten, want mijn zoon is overleden.

404
00:16:35.240 --> 00:16:35.560
Oh.

405
00:16:35.740 --> 00:16:36.020
Ja.

406
00:16:36.400 --> 00:16:37.200
Oh, en hij was...

407
00:16:37.200 --> 00:16:39.780
Natuurlijk, omdat hij in het Vreemde Legion is gegaan.

408
00:16:40.260 --> 00:16:41.180
Of daar niet mee te maken?

409
00:16:41.200 --> 00:16:41.380
Nee.

410
00:16:41.380 --> 00:16:41.760
Oh, oké.

411
00:16:41.840 --> 00:16:44.620
Nee, hij was depressief en heeft bepaalde keuzes gemaakt.

412
00:16:45.440 --> 00:16:46.660
Ja, moet ik toegeven.

413
00:16:47.080 --> 00:16:47.740
Ik ken hem nooit.

414
00:16:47.740 --> 00:16:49.100
Ik heb hem nooit persoonlijk gezien.

415
00:16:49.380 --> 00:16:50.360
Ik heb hem nooit gesproken.

416
00:16:51.540 --> 00:16:53.100
Ik heb hem nooit op video gehad.

417
00:16:53.100 --> 00:16:56.540
Maar ik heb wel jaren met hem toen nog op Flowdoc discussies gehad.

418
00:16:56.660 --> 00:16:58.980
Ja, dat is toch wel even dat je denkt van even slikken.

419
00:16:59.000 --> 00:16:59.820
Ja, dat hakte wel even in.

420
00:16:59.880 --> 00:17:00.760
Dat lijkt me wel, ja.

421
00:17:00.960 --> 00:17:02.140
En zijn naam is gewoon...

422
00:17:02.140 --> 00:17:05.380
Ja, die is gewoon tot het einde den dagen onderdeel van mijn code base geworden.

423
00:17:05.540 --> 00:17:09.340
Die zie je gewoon terug in commits en pull requests en issues.

424
00:17:09.900 --> 00:17:10.020
Ja, precies.

425
00:17:10.020 --> 00:17:11.160
Dan denk je toch eventjes van wauw.

426
00:17:11.900 --> 00:17:12.180
Sjongejonge.

427
00:17:12.220 --> 00:17:12.800
Ja, dat is wel waar.

428
00:17:12.940 --> 00:17:14.480
Ja, want het hoort altijd wel...

429
00:17:14.480 --> 00:17:16.380
Het komt wel wat dichterbij, zeg maar, als dit soort dingen gebeuren.

430
00:17:16.460 --> 00:17:17.960
Maar goed, het heeft natuurlijk ook wel met leven te maken.

431
00:17:18.140 --> 00:17:20.520
Dus ja, dat gebeurt dus wel.

432
00:17:21.180 --> 00:17:21.200
Ja.

433
00:17:21.200 --> 00:17:22.600
Ik vond het toch wel even de moeite waard om dat te doen.

434
00:17:22.700 --> 00:17:23.020
Ja, ja.

435
00:17:23.180 --> 00:17:24.060
Nee, dat is het zeker zo.

436
00:17:24.120 --> 00:17:26.760
Ja, ik bedoelde dat mensen die staan niet stil bij dit soort dingen.

437
00:17:26.780 --> 00:17:28.800
Had ik ook niet kunnen voorspellen, zeg maar.

438
00:17:29.080 --> 00:17:33.840
En er zijn altijd mensen die hebben natuurlijk altijd wat vraagtekens over TDD of BDD.

439
00:17:34.000 --> 00:17:35.780
Ja, dat moet je helemaal niet doen, want ja, stom.

440
00:17:35.960 --> 00:17:37.120
En mijn code, die werkt toch wel.

441
00:17:37.360 --> 00:17:40.000
Dat is wel een veel minder discussie dan voorheen.

442
00:17:40.100 --> 00:17:41.560
Maar je merkt af en toe komt er weer zo'n golf.

443
00:17:41.680 --> 00:17:43.280
Van ah, hoeft niet, weet je wel.

444
00:17:43.880 --> 00:17:44.940
Nee, dat is allemaal niet zo heel belangrijk.

445
00:17:45.120 --> 00:17:47.280
Ik weet niet hoe jij erin staat, zeg maar.

446
00:17:47.420 --> 00:17:48.920
Nou ja, ik kijk.

447
00:17:48.920 --> 00:17:53.820
Unit testen, TDD, ik doe dat nu denk ik bijna 15 jaar.

448
00:17:54.160 --> 00:17:58.200
En eigenlijk, het is jammer dat we geen visueel aspect hebben in deze podcast.

449
00:17:58.780 --> 00:18:01.340
Maar je hebt gewoon de hype cycle en daar heb je gewoon mee te maken.

450
00:18:01.520 --> 00:18:04.420
Je ziet gewoon dat, en daar ben ik zelf ook onderdeel van geweest,

451
00:18:04.620 --> 00:18:07.420
eigenlijk elke principe, elk concept waar we het over hebben,

452
00:18:07.720 --> 00:18:08.740
daar zie je gewoon een facering.

453
00:18:08.820 --> 00:18:11.300
Je ziet dat iemand het eens een keer hoort op een conferentie

454
00:18:11.300 --> 00:18:12.700
of een collega die erover vertelt.

455
00:18:12.760 --> 00:18:14.700
En dan zie je in het algemeen dat mensen zoiets hebben van,

456
00:18:14.700 --> 00:18:16.660
nou, weet je, daar moet ik hier mee,

457
00:18:16.860 --> 00:18:19.000
allemaal extra werk, weet je wel, dat hebben we niet nodig,

458
00:18:19.080 --> 00:18:20.100
ik ben goed genoeg erin.

459
00:18:20.220 --> 00:18:20.740
En dan worden ze enthousiast,

460
00:18:21.400 --> 00:18:22.700
dit vertel ik ook al eens op mijn presentaties,

461
00:18:23.560 --> 00:18:24.760
worden ze enthousiast, gaan ze toepassen,

462
00:18:25.620 --> 00:18:27.980
worden ze heel erg enthousiast, enthousiast,

463
00:18:28.140 --> 00:18:30.560
gaan ze helemaal los, gaan ze er misschien wel presentaties over geven,

464
00:18:31.060 --> 00:18:33.040
gaan ze blogs over schrijven.

465
00:18:33.760 --> 00:18:37.320
En dan ontdekken ze op een gegeven moment de keerzijde van zoiets.

466
00:18:37.640 --> 00:18:40.960
Want geen enkele tool is, ja, ik geloof niet een silver bullet.

467
00:18:41.100 --> 00:18:42.280
Dus wat je in dat gegeven moment ziet ontstaan,

468
00:18:42.280 --> 00:18:45.080
is dat mensen eigenlijk een beetje last van de keuze die ze krijgen.

469
00:18:46.200 --> 00:18:49.620
En daar een soort van mentaal een ombeslager gaan maken,

470
00:18:49.740 --> 00:18:52.340
waarin ze zeggen van, ja, nee, maar TDD, dat is gewoon,

471
00:18:52.540 --> 00:18:54.900
ik weet niet of je het mag zeggen, maar kut.

472
00:18:54.900 --> 00:18:57.000
Ja, dat was waarschijnlijk, ja.

473
00:18:57.000 --> 00:18:58.740
Ja, de vorige aflevering was ook redelijk...

474
00:18:58.740 --> 00:18:59.980
Ja, dat was redelijk direct, ja.

475
00:19:00.340 --> 00:19:00.520
Ja.

476
00:19:00.520 --> 00:19:04.420
Het is helemaal shit en het leidt naar koppeling

477
00:19:04.900 --> 00:19:07.260
en het zorgt ervoor dat je niks meer kan refactoreren

478
00:19:07.260 --> 00:19:08.440
en dat soort argumenten.

479
00:19:09.300 --> 00:19:10.320
En dan wordt het aan de kant geschoven.

480
00:19:10.360 --> 00:19:11.580
Dat zie je eigenlijk met heel veel technieken.

481
00:19:11.580 --> 00:19:14.340
Dat zie je met dependency injection containers,

482
00:19:14.620 --> 00:19:17.780
dat zie je met event sourcing als een architectuurstijl,

483
00:19:18.620 --> 00:19:20.680
coding standard, hetzelfde verhaal.

484
00:19:20.880 --> 00:19:21.700
En wat je dan eigenlijk ziet,

485
00:19:21.760 --> 00:19:23.380
is dat je heel veel van die senior developers hebben,

486
00:19:23.400 --> 00:19:24.540
die dat dan hebben afgesworen,

487
00:19:24.640 --> 00:19:27.740
want zij hebben namelijk gezien dat het niet werkt.

488
00:19:28.640 --> 00:19:32.280
Ik ben zelf heel erg bewust van die hype cycle.

489
00:19:33.100 --> 00:19:35.280
Ik heb zelf het idee dat ik wel redelijk ontdekt heb

490
00:19:35.280 --> 00:19:37.680
van wanneer dingen niet werken, wanneer ze wel werken,

491
00:19:37.880 --> 00:19:38.340
dat gaat alles.

492
00:19:39.320 --> 00:19:40.760
En TDD is precies zo'n voorbeeld.

493
00:19:40.760 --> 00:19:43.040
Ik ben ervan overtuigd dat het echt goed werkt,

494
00:19:43.180 --> 00:19:44.180
maar je moet het goed toepassen.

495
00:19:44.220 --> 00:19:45.000
Dat is nogal lastig.

496
00:19:45.080 --> 00:19:46.380
Je moet een goede testscope hebben

497
00:19:46.380 --> 00:19:48.940
en je moet het begrijpen wanneer je het wel of niet toepast.

498
00:19:49.040 --> 00:19:50.780
Je moet niet gewoon alles op die manier doen.

499
00:19:51.020 --> 00:19:53.060
Software ontwikkeling is gewoon best wel een creatief proces.

500
00:19:53.380 --> 00:19:55.960
En soms moet je gewoon een stukje code gewoon eventjes schrijven

501
00:19:55.960 --> 00:19:57.580
zonder te veel na te denken over testen.

502
00:19:57.640 --> 00:19:59.860
En als het werkt, als je een beetje de structure intact hebt,

503
00:20:00.240 --> 00:20:02.200
dan kun je alsnog de switch maken naar TDD.

504
00:20:02.540 --> 00:20:03.120
Ja, precies.

505
00:20:03.600 --> 00:20:05.680
Dus dat is eigenlijk gewoon een redelijk pragmatisch aanpak.

506
00:20:05.940 --> 00:20:06.480
Eigenlijk wel.

507
00:20:07.160 --> 00:20:10.200
Ja, dat is vaak wel de goede aanpak.

508
00:20:10.200 --> 00:20:12.600
Maar ja, je hebt natuurlijk altijd te maken met iemand die bijvoorbeeld

509
00:20:12.600 --> 00:20:14.400
dan net de boek opengeslagen heeft en die denkt,

510
00:20:14.500 --> 00:20:16.180
oh, ik heb een hammer en overal liggen spijkers.

511
00:20:16.720 --> 00:20:18.220
En dan slaat hij helemaal door.

512
00:20:19.180 --> 00:20:22.100
Dus het is die discussies, zeg maar, die zijn soms wel eens lastig.

513
00:20:22.220 --> 00:20:25.060
Ik vind het, ik vind ook, er is gewoon echt, of niet,

514
00:20:25.280 --> 00:20:28.680
ik vind zeker dat je wel TDD in je rugzak moet hebben.

515
00:20:29.060 --> 00:20:31.580
En ja, je moet het gewoon soms gewoon inzetten.

516
00:20:31.880 --> 00:20:33.660
Het helpt echt om de kwaliteit, nou ja,

517
00:20:33.660 --> 00:20:34.640
niet alleen de kwaliteit van de code,

518
00:20:34.700 --> 00:20:37.500
maar ook gewoon je design, zeg maar, of je structure.

519
00:20:38.420 --> 00:20:40.480
En ook, het is ook een beetje documentatie,

520
00:20:40.540 --> 00:20:42.000
dat werd weleens gezegd in het boek.

521
00:20:42.220 --> 00:20:43.680
Ik heb dat echt gewoon gezien.

522
00:20:43.940 --> 00:20:45.940
Weet je, als ik, een heel mooi voorbeeld, Fluent Assertions.

523
00:20:46.020 --> 00:20:49.780
Als ik wil weten hoe een bepaalde API hoort te werken,

524
00:20:50.000 --> 00:20:51.860
dan ga ik 9 van 10 keer gewoon naar de unit test.

525
00:20:52.200 --> 00:20:54.080
Want daar zie ik precies het specifiek scenario

526
00:20:54.080 --> 00:20:55.920
op een functionele manier beschreven,

527
00:20:56.040 --> 00:20:58.080
van dit is het gedrag wat dit stuk moet doen.

528
00:20:58.220 --> 00:21:01.440
En zeker als je wat complexere systemen bouwt,

529
00:21:01.540 --> 00:21:03.900
waarin je interne soort van architectuur boundaries hebt,

530
00:21:04.020 --> 00:21:06.120
die dan ook test, waar je test schrijft,

531
00:21:06.220 --> 00:21:07.220
die de hele boundary testen.

532
00:21:07.220 --> 00:21:09.280
Dus niet alleen maar één class, maar het hele ding.

533
00:21:09.340 --> 00:21:11.100
Dan geeft dat een heel mooi beeld over

534
00:21:11.100 --> 00:21:14.040
wat is nou het gedrag wat de code zou moeten laten zien.

535
00:21:14.800 --> 00:21:18.860
En dat is ook natuurlijk een van de belangrijkste dingen

536
00:21:18.860 --> 00:21:21.380
die je moet leren denk ik in TDD en BDD land.

537
00:21:22.060 --> 00:21:24.320
Zodra je dat niet onder de knie hebt en ook niet begrijpt,

538
00:21:24.680 --> 00:21:27.320
dan is alles inderdaad gewoon een spiker.

539
00:21:27.820 --> 00:21:30.120
En dan wordt het een soort van mechaniekje van

540
00:21:30.120 --> 00:21:32.460
ja, ik schrijf een test eerst en de rest geloof ik al.

541
00:21:32.540 --> 00:21:34.720
Maar het gaat echt over het hele ontwerpproces.

542
00:21:34.940 --> 00:21:36.200
Weet je, het is geen testtechniek.

543
00:21:36.200 --> 00:21:38.240
Het is echt een design techniek.

544
00:21:38.420 --> 00:21:41.100
Het dwingt je na te denken over de seams in je architectuur.

545
00:21:41.520 --> 00:21:42.640
Het dwingt je na te denken over

546
00:21:42.640 --> 00:21:43.880
wat zijn mijn interne boundaries.

547
00:21:44.660 --> 00:21:45.540
Hoe zeg je dat?

548
00:21:45.540 --> 00:21:49.400
Stukken van de architectuur die je los kan zien en los kan testen.

549
00:21:49.840 --> 00:21:52.160
Het dwingt je om na te denken over alle edge cases

550
00:21:52.160 --> 00:21:54.660
en de functionaliteiten van een stuk van je systeem.

551
00:21:55.040 --> 00:21:57.220
Het is echt gewoon een design techniek.

552
00:21:58.080 --> 00:21:59.320
En dat wordt al jaren geroepen natuurlijk.

553
00:21:59.440 --> 00:22:01.240
Maar goed, je moet dat zelf een keer ervaren hebben.

554
00:22:01.720 --> 00:22:02.320
Ja, precies.

555
00:22:02.740 --> 00:22:04.020
Het boek zelf, dat is het één,

556
00:22:04.020 --> 00:22:05.800
maar het is heel vaak met programma's.

557
00:22:05.880 --> 00:22:07.600
Je moet gewoon het doen, zeg maar.

558
00:22:07.860 --> 00:22:09.580
En je stoot een keer je hoofd en je maakt een fout.

559
00:22:09.840 --> 00:22:11.220
En daar krijg je natuurlijk die ervaring mee.

560
00:22:11.700 --> 00:22:12.460
Dat is natuurlijk een inkoppen,

561
00:22:12.480 --> 00:22:15.820
maar dat is niet voor iedereen per se heel logisch.

562
00:22:17.280 --> 00:22:20.240
Dus ja, wat voor vragen hebben we nog meer over vloer?

563
00:22:20.340 --> 00:22:27.820
Je ging er een presentatie over het runnen van een open source project.

564
00:22:27.920 --> 00:22:31.760
Ja, eigenlijk gaat het over alle aspecten die ermee te maken hebben.

565
00:22:31.760 --> 00:22:34.880
Het gaat over hoe ga je daar met documentatie om?

566
00:22:35.260 --> 00:22:36.520
Hoe doe je een stukje marketing?

567
00:22:37.900 --> 00:22:39.000
Hoe ga je er geld mee verdienen?

568
00:22:39.160 --> 00:22:40.780
Nou, dat stukje, daar ben ik nog niet helemaal uit.

569
00:22:41.020 --> 00:22:41.640
Nee, lijkt maar.

570
00:22:41.640 --> 00:22:42.080
Dat is niet gelukt.

571
00:22:42.800 --> 00:22:46.800
Ik heb natuurlijk een landing page gemaakt met behulp van Jackal en Githubpages.

572
00:22:47.420 --> 00:22:49.860
Dat is op zich wel een mooie stap geweest die we ooit gemaakt hebben.

573
00:22:50.560 --> 00:22:52.600
En daar zitten wat Google Ads op.

574
00:22:52.720 --> 00:22:57.220
Nou ja, dat is net genoeg om de DNS'en de domeinnaam te kunnen betalen.

575
00:22:58.640 --> 00:23:00.680
Maar het gaat inderdaad over het verhaal

576
00:23:00.680 --> 00:23:02.840
dat ik net ook vertelde over de ene jongen.

577
00:23:03.220 --> 00:23:04.720
Over hoe ga je nou om met contributions.

578
00:23:05.020 --> 00:23:06.260
De verschillende, ook heel specifiek.

579
00:23:06.400 --> 00:23:08.420
Ik doe dat dan op een .NET-conferentie.

580
00:23:08.680 --> 00:23:11.820
De stappen die we gemaakt over de jaren van de verschillende .NET-versies

581
00:23:11.820 --> 00:23:12.880
en het supporten ervan.

582
00:23:13.300 --> 00:23:16.560
En hoe ga je nou iets bouwen wat meerdere .NET-versies ondersteunt.

583
00:23:17.200 --> 00:23:18.860
Dat gaat dan een beetje ver.

584
00:23:19.000 --> 00:23:21.820
Maar Portable Class Libraries en .NET Standard en dat soort aspecten.

585
00:23:22.520 --> 00:23:23.500
Dat is best wel breed eigenlijk.

586
00:23:23.800 --> 00:23:25.960
Het is gewoon echt een softwareproject dat lang loopt.

587
00:23:26.240 --> 00:23:27.380
Alles wat daarbij komt kijken.

588
00:23:27.460 --> 00:23:28.460
Ja, interessant ja.

589
00:23:28.460 --> 00:23:30.460
Maar goed, je bent zelf eigenlijk de...

590
00:23:31.600 --> 00:23:32.500
Ja, ben je dan ook...

591
00:23:32.500 --> 00:23:33.600
Ja, in skrum term.

592
00:23:33.660 --> 00:23:34.960
Ben je dan eigenlijk de product owner ook?

593
00:23:35.080 --> 00:23:37.740
Of ja, goed, het is wel jouw ding, zeg maar.

594
00:23:38.840 --> 00:23:41.180
Dus dat is natuurlijk al best wel anders aan een open source project.

595
00:23:41.500 --> 00:23:42.220
Ja, ik ben de architect.

596
00:23:42.640 --> 00:23:43.620
Ik ben de product owner.

597
00:23:43.640 --> 00:23:44.240
Ja, precies.

598
00:23:44.360 --> 00:23:46.980
Ik ben misschien wel de QA-engineer.

599
00:23:48.380 --> 00:23:50.060
Dokvoeden doe ik natuurlijk ook gewoon zelf.

600
00:23:51.700 --> 00:23:53.560
Hoewel dat wat makkelijker is.

601
00:23:54.780 --> 00:23:57.460
Ja, en het is ook wel een soort hobby of een experimenteerdingetje.

602
00:23:58.300 --> 00:23:59.100
Als je...

603
00:23:59.100 --> 00:24:04.480
Kijk bijvoorbeeld in de .NET space is er nu een transitie ontstaan waarbij we onze beeldscripts in C-Sharp schrijven.

604
00:24:05.440 --> 00:24:06.960
Nou, Keek was daar de eerste versie van.

605
00:24:07.400 --> 00:24:08.640
Nu gaan we naar Nuke.

606
00:24:09.000 --> 00:24:09.520
Maar ook een oplossingsdingetje.

607
00:24:10.240 --> 00:24:12.040
Is dat geschikt voor een enterprise oplossing?

608
00:24:12.100 --> 00:24:16.800
Weet ik niet, maar we laten gewoon eens beginnen met het projectje om te zetten.

609
00:24:17.320 --> 00:24:18.120
Straks C-Sharp 8.

610
00:24:18.220 --> 00:24:20.100
Ik zie al mensen naar nullable types gaan kijken.

611
00:24:20.260 --> 00:24:21.700
Hoe kunnen we dat nou op zo'n project toepassen?

612
00:24:22.060 --> 00:24:24.460
Dus het is ook een beetje een proeftuin.

613
00:24:24.820 --> 00:24:25.280
Ja, precies.

614
00:24:25.380 --> 00:24:25.940
Maar wel gecontroleerd.

615
00:24:26.600 --> 00:24:27.340
Ja, ja, tuurlijk.

616
00:24:27.340 --> 00:24:27.740
Ja, goed.

617
00:24:28.080 --> 00:24:29.220
Dat is wel...

618
00:24:29.220 --> 00:24:32.640
Ook bij een assertion library is wel handig.

619
00:24:33.000 --> 00:24:35.420
Dat kwaliteit en testen, zeg maar, dat ook gebeurt.

620
00:24:35.540 --> 00:24:36.540
Dus dat lijkt me wel toepassing.

621
00:24:36.740 --> 00:24:37.860
En dat doe ik echt tegen de delen.

622
00:24:38.120 --> 00:24:39.820
Dat hele project is helemaal tegen de delen gebouwd.

623
00:24:40.100 --> 00:24:40.500
Absoluut.

624
00:24:40.540 --> 00:24:41.120
Zonder twijfel.

625
00:24:43.300 --> 00:24:43.700
Oké.

626
00:24:44.600 --> 00:24:45.780
Ja, we hebben...

627
00:24:45.780 --> 00:24:49.740
Ja, we proberen altijd een beetje zo ongeveer drie onderwerpen te doen.

628
00:24:51.740 --> 00:24:55.500
En dus we wissen van floor to assertion dat en de presentatie en het runnen van

629
00:24:55.500 --> 00:24:57.060
open source project, dat vinden we interessant.

630
00:24:57.060 --> 00:24:57.960
Dat vind ik zeker interessant.

631
00:24:58.100 --> 00:25:02.040
Dat ik denk, nou ja, misschien een idee om er altijd een keer met meerdere projectjes

632
00:25:02.040 --> 00:25:02.560
te bespreken.

633
00:25:02.700 --> 00:25:04.140
Ja, in een soort van panel.

634
00:25:04.260 --> 00:25:07.320
Maar goed, dat is echt, ja, toekomstmuziek.

635
00:25:07.440 --> 00:25:09.380
Dan moet je kijken hoe dat gaat.

636
00:25:10.640 --> 00:25:11.320
Dat is een ander onderwerp.

637
00:25:11.440 --> 00:25:11.820
Daar weet ik van.

638
00:25:12.240 --> 00:25:14.680
Ja, daar heb je wel wat verstand van.

639
00:25:15.080 --> 00:25:15.600
Denk ik.

640
00:25:16.760 --> 00:25:18.960
En ik noem dat wel eens developers porn.

641
00:25:20.200 --> 00:25:21.680
Omdat het eigenlijk heel...

642
00:25:21.680 --> 00:25:22.940
Ik vind het gaaf om te doen.

643
00:25:23.780 --> 00:25:26.420
Maar ja, mijn ervaring is, maar goed, daar moeten we het over hebben.

644
00:25:26.420 --> 00:25:29.360
Dat projecten kunnen best wel complex worden daardoor.

645
00:25:29.680 --> 00:25:32.120
Maar op een of andere manier geeft het best wel een kick.

646
00:25:32.360 --> 00:25:33.280
Je maakt het wel heel spannend.

647
00:25:33.620 --> 00:25:34.280
Ja, precies.

648
00:25:34.320 --> 00:25:37.420
Een intro die mensen prikkelt.

649
00:25:38.340 --> 00:25:40.920
Nou goed, het gaat eigenlijk over secretes en event sourcing.

650
00:25:41.420 --> 00:25:44.720
Nou ga ik dus niet meteen zeggen, ja, wat nou wat is en zo.

651
00:25:44.780 --> 00:25:46.620
Dus laten we daar gewoon eens even over hebben.

652
00:25:46.760 --> 00:25:49.860
En dat vooral de luisteraar een beetje een beeld krijgt.

653
00:25:49.960 --> 00:25:51.520
En ik begrijp dat je daar iets mee hebt.

654
00:25:53.280 --> 00:25:54.720
Nou ja, goed, kijk.

655
00:25:54.720 --> 00:25:58.880
Ik heb de fase dat ik het supergaaf en enthousiast was, heb ik inmiddels gehad.

656
00:25:59.840 --> 00:26:03.720
Ik heb ook de fase gehad dat, het gaat hier over architectuurpatronen,

657
00:26:03.800 --> 00:26:08.840
of een aantal architectuurpatronen, dat het ook minder goed kan werken.

658
00:26:09.020 --> 00:26:13.900
Dus ook hier heb ik inmiddels zelf het idee dat ik wel een beetje de balans heb gevonden.

659
00:26:15.000 --> 00:26:19.360
Maar ja, dit zijn twee eigenlijk architectuurstijlen, zou je ze kunnen noemen.

660
00:26:20.120 --> 00:26:23.740
CQS, Command Query Responsibility Segregation,

661
00:26:25.260 --> 00:26:29.360
is eigenlijk een soort van oplossing voor het feit dat in complex systemen

662
00:26:29.900 --> 00:26:34.240
er soms een soort vrijfing ontstaat tussen de verantwoordelijkheden van een domein,

663
00:26:34.300 --> 00:26:38.560
waar het over bedrijfsregels gaat en het bewaken van die bedrijfsregels,

664
00:26:39.080 --> 00:26:41.700
en het heel efficiënt data uit een database te krijgen.

665
00:26:42.200 --> 00:26:47.440
Als hier echt een DBA in tafel zou zitten, die zou meteen zeggen dat het laatste is geen probleem.

666
00:26:47.440 --> 00:26:51.700
Een database die snel kan alle problemen aan, is oneindig schaalbaar.

667
00:26:52.400 --> 00:26:54.700
Als je een beetje ervaren bent, dan weet je dat het zeker niet zo is.

668
00:26:56.740 --> 00:26:59.440
En een paar jaar geleden, misschien wel tien jaar geleden, was het heel populair

669
00:27:00.140 --> 00:27:03.320
om bijvoorbeeld je domein in een objector-orienteerde taal te bouwen,

670
00:27:03.420 --> 00:27:06.160
zoals .net, C-Sharp of Java of iets dergelijks,

671
00:27:06.300 --> 00:27:10.900
en dan gebruikte een object-relational mapper om dat dan in een database op te slaan.

672
00:27:11.540 --> 00:27:15.200
Die object-relational mapper zegt dan een beetje, probeert een beetje discrepantie

673
00:27:15.200 --> 00:27:19.340
op de vrijving op te lossen tussen een objector-orienteerde taal

674
00:27:19.340 --> 00:27:21.660
en de onderliggende relationele database model.

675
00:27:22.160 --> 00:27:25.080
En dat werkte goed voor een tijdje, maar wat je toch al in het algemeen zag,

676
00:27:26.040 --> 00:27:30.260
is dat je soms queries wilde uitvoeren die niet performden,

677
00:27:30.660 --> 00:27:33.480
omdat de datamodel niet geoptimiseerd is voor queries.

678
00:27:34.320 --> 00:27:36.460
Dan kon je oplossingen verzinnen als views en dergelijke.

679
00:27:36.480 --> 00:27:40.180
Ja, klopt. Daar heb ik nu de laatste tijd een beetje visie mee. Maar goed, ja, goed.

680
00:27:40.700 --> 00:27:43.260
Ja, maar dat is een probleem wat al heel lang bestond.

681
00:27:45.200 --> 00:27:49.720
Wat CQRS eigenlijk zegt, is van we accepteren dat dat toch wel een beetje

682
00:27:49.720 --> 00:27:52.420
twee verschillende problemen zijn, twee verschillende belangen.

683
00:27:52.640 --> 00:27:55.900
En dat gaan we omarmen door te zeggen van we hebben één kant van het systeem,

684
00:27:55.920 --> 00:27:59.240
en dat is een architectuuraspect, van die echt gaat over het domein

685
00:27:59.240 --> 00:28:01.640
en het bewaken van de business rules.

686
00:28:01.720 --> 00:28:03.760
En dat wordt vaak commands genoemd, business commands.

687
00:28:04.380 --> 00:28:09.560
En een andere kant gaat over geoptimiseerd om data zo snel mogelijk aan het systeem te krijgen.

688
00:28:10.060 --> 00:28:11.160
Geoptimiseerd voor het querien.

689
00:28:11.160 --> 00:28:16.780
Het is in feite het CQS-pattern, wat eigenlijk in Petra Maya komt.

690
00:28:16.780 --> 00:28:19.620
Ja, heel oud. Heel, heel, heel oud.

691
00:28:20.400 --> 00:28:23.200
Maar dan op architectuurniveau, om die verschillen te onderkennen.

692
00:28:23.720 --> 00:28:25.100
Ja, dat is eigenlijk een heel los pattern.

693
00:28:25.140 --> 00:28:27.700
Dat kun je ook toepassen met een relationeer model.

694
00:28:28.320 --> 00:28:32.180
Je kunt misschien views bouwen, materialized views, achteren constructies.

695
00:28:33.640 --> 00:28:36.620
En dat is een vrij gebruikelijke architectuuroplossing.

696
00:28:36.620 --> 00:28:39.080
Ik gebruik dat nu al best wel, ik denk zeker twaalf jaar.

697
00:28:39.080 --> 00:28:41.160
Nou, dan heb je daarnaast nog een ander patroon.

698
00:28:41.220 --> 00:28:47.940
En dat gaat meer over van, hoe sla ik nou eigenlijk de data die in het domein staat op een efficiënte manier op?

699
00:28:48.280 --> 00:28:51.960
Kijk, wat je met een ORM doet is, je legt een mapping tussen een object.

700
00:28:52.620 --> 00:28:55.180
Bijvoorbeeld een product of een order of iets dergelijks.

701
00:28:55.800 --> 00:28:58.220
En die sla je gewoon rechtstreeks in een tabel op.

702
00:28:58.620 --> 00:29:02.860
Waarin bijvoorbeeld producten staan of orders of iets dergelijks.

703
00:29:03.040 --> 00:29:05.780
Maar wat je ook kunt doen, is event sourcing toepassen.

704
00:29:05.880 --> 00:29:07.800
Event sourcing, het zit al een beetje in de naam.

705
00:29:08.520 --> 00:29:12.420
Source, de bron van je data, zijn de events.

706
00:29:12.600 --> 00:29:15.780
De events zijn eigenlijk, het zijn de dingen die gebeuren in het domein.

707
00:29:16.180 --> 00:29:23.480
En dat zijn niet zomaar events, dat zijn ook echt het werkelijk business acties of gebeurtenissen vanuit het domein.

708
00:29:23.720 --> 00:29:27.720
Ook benoemd, vaak wordt ook die taal gebruikt, die je opslaat in je database.

709
00:29:28.820 --> 00:29:34.460
Dus in plaats van dat je een product opslaat in een tabel met genaamd producten, sla je eigenlijk alleen maar een soort van historie op.

710
00:29:34.540 --> 00:29:35.840
Wat is er met het product gebeurd?

711
00:29:35.840 --> 00:29:37.840
Het product is in de katalige scherm traduceerd.

712
00:29:39.260 --> 00:29:42.460
De productprijs is aangepast, de productleverancier is aangepast.

713
00:29:42.620 --> 00:29:44.840
Dat soort informatie kun je gewoon terugvinden.

714
00:29:45.700 --> 00:29:51.300
Het gave ervan is dat je eigenlijk toch al een soort van, ja, je hebt eigenlijk een compleet audit log.

715
00:29:51.700 --> 00:29:54.100
Je kunt compleet terugzien vanaf dag 1 wat er in je systeem gebeurt.

716
00:29:54.140 --> 00:29:55.260
Ik krijg eigenlijk gratis, zeg maar.

717
00:29:55.500 --> 00:29:56.340
Bijna voor niets.

718
00:29:56.640 --> 00:29:59.660
Is ook fantastisch voor socks compliance en dat soort soort systemen.

719
00:29:59.800 --> 00:30:03.360
Wat je dan doet met die event, kijk, uiteindelijk wat je dan ziet is dat je een hele platte tabel hebt.

720
00:30:03.960 --> 00:30:05.300
Je kunt er ook eigenlijk niet meer op queryen.

721
00:30:05.300 --> 00:30:10.680
Het enige wat je kunt doen is van voor dit specifieke product, product X, Y, Z, wat is er gebeurd?

722
00:30:10.740 --> 00:30:15.780
Maar je kunt niet zeggen geef mij alle producten waarvan de prijs hoger is dan duizend euro of zoiets dergelijks.

723
00:30:15.800 --> 00:30:18.060
Dat gaat niet meer. Die informatie is er niet.

724
00:30:18.780 --> 00:30:21.560
Het voordeel ervan is dat je database heel simpel kan zijn.

725
00:30:21.840 --> 00:30:23.440
Je hebt geen relationele database meer.

726
00:30:23.560 --> 00:30:32.200
Een NoSQL oplossing of misschien voor de Azure fanaten onder ons en Azure, table storage ofzo kun je daarvoor gebruiken.

727
00:30:32.340 --> 00:30:34.100
Want je hebt helemaal geen eisen meer aan een relationeel model.

728
00:30:34.100 --> 00:30:36.920
Maar je hebt toch iets nodig om te kunnen queryen.

729
00:30:37.620 --> 00:30:38.900
Dat is het leuke ervan.

730
00:30:39.320 --> 00:30:44.600
Omdat je precies weet wat er gebeurd is in je domein, welke veranderingen zijn doorgevoerd.

731
00:30:44.880 --> 00:30:49.580
Want je hebt eigenlijk gewoon een stroom van events waarin het precies staat dit zijn de gebeurtenissen geweest.

732
00:30:49.720 --> 00:30:55.080
Kun je die data gebruiken om eigenlijk een querybaar model te bouwen?

733
00:30:55.320 --> 00:31:01.340
En de meest voor de handliggende oplossing is je bouwt gewoon eigenlijk een soort van relationeel model op basis van die events.

734
00:31:01.720 --> 00:31:05.080
Die je zo kunt construeren dat je heel snel op kunt queryen.

735
00:31:05.180 --> 00:31:11.140
Je kunt bijvoorbeeld bij wijze van spreken al een lijst bijhouden waar alleen maar de producten in zitten die meer dan duizend euro waard zijn.

736
00:31:11.700 --> 00:31:13.600
En alle producten die minder zijn die sla je niet eens op.

737
00:31:13.700 --> 00:31:14.920
Want dat heb je die informatie.

738
00:31:15.340 --> 00:31:16.620
En dat is een hele kleine tabel.

739
00:31:17.220 --> 00:31:19.080
Dat noemen we ook wel projecteren.

740
00:31:19.940 --> 00:31:21.900
Event storage komt met allerlei nadelen trouwens.

741
00:31:22.540 --> 00:31:23.980
Maar dit is wel een van de grote voordelen.

742
00:31:24.600 --> 00:31:26.000
Want die tabellen zijn allemaal onafhankelijk.

743
00:31:26.040 --> 00:31:28.760
Je kunt je hele database structuur bijna oneindig schalen.

744
00:31:28.760 --> 00:31:30.840
Er zitten geen relaties meer tussen de tabellen.

745
00:31:31.580 --> 00:31:32.140
Je bouwt gewoon...

746
00:31:32.140 --> 00:31:36.660
Je kunt zelfs, en dat is ook wel cool, je zou zelfs al een HTML pagina kunnen produceren.

747
00:31:36.840 --> 00:31:37.220
Ja, precies.

748
00:31:37.320 --> 00:31:41.640
Dus eigenlijk je genereert iets wat geoptimaliseerd is voor een specifiek doel.

749
00:31:42.080 --> 00:31:42.600
Ja, precies.

750
00:31:43.420 --> 00:31:44.700
En dat hoeft allemaal niet sigoon te gebeuren.

751
00:31:44.740 --> 00:31:46.120
Dat kan ook acingoon gebeuren.

752
00:31:46.480 --> 00:31:49.680
Maar het maakt het dus gewoon mogelijk om de querykant bijna onbeperkte schalen.

753
00:31:50.140 --> 00:31:51.560
En dat is een hele krachtige techniek.

754
00:31:52.240 --> 00:31:54.880
En wanneer zou je het niet willen gebruiken?

755
00:31:55.580 --> 00:31:55.700
Absoluut niet.

756
00:31:55.700 --> 00:31:56.560
Ja, dat is een lastige.

757
00:31:56.880 --> 00:31:57.600
Want weet je wat het is?

758
00:31:57.800 --> 00:31:58.700
Op het moment dat je ergens...

759
00:31:59.380 --> 00:32:03.780
Als je heel behendig wordt om iets te gebruiken, dan gaat het heel erg voor de hand leegend

760
00:32:03.780 --> 00:32:04.960
om het by default te gebruiken.

761
00:32:05.000 --> 00:32:06.960
Dat is wel gevaarlijk, hoor, trouwens.

762
00:32:07.200 --> 00:32:10.880
Ik heb wel geleerd dat event sourcing en Greg Jong, die dat een beetje bedacht heeft

763
00:32:10.880 --> 00:32:15.800
en dat ook populair heeft gemaakt tien jaar geleden, zegt ook...

764
00:32:15.800 --> 00:32:18.140
Het is eigenlijk geen, wat ze noemen, top-level architectuur.

765
00:32:18.180 --> 00:32:23.460
Het is geen architectuur die je gewoon by default op je hele systeem moet leer neerleggen.

766
00:32:23.460 --> 00:32:27.640
Het is eigenlijk een stijl die van toepassing is op een stuk van je systeem.

767
00:32:27.860 --> 00:32:32.820
Ze zeggen ook het algemeen, event sourcing is heel erg nuttig op het moment dat je of

768
00:32:32.820 --> 00:32:37.240
wel een heel erg high-performance systeem moet bouwen of als bijvoorbeeld heel veel

769
00:32:37.240 --> 00:32:40.360
gebruikers dezelfde data moeten bewerken.

770
00:32:40.740 --> 00:32:41.700
Dus als er heel veel...

771
00:32:41.700 --> 00:32:42.680
Hoe zeg je dat?

772
00:32:44.160 --> 00:32:45.700
Nederlands en Engels is contention.

773
00:32:47.580 --> 00:32:51.560
Normaal gesproken, als jij een document bewerkt, dan ben je negen van tien keer

774
00:32:51.560 --> 00:32:53.900
de enige persoon die je bewerkt.

775
00:32:54.120 --> 00:32:56.640
Maar op het moment dat je documenten bij heel veel mensen tegelijkertijd aan gaan

776
00:32:56.640 --> 00:32:58.360
werken, dan wordt het heel erg interessant.

777
00:32:58.500 --> 00:33:00.220
Want dan kun je die events, die kun je namelijk ook merger.

778
00:33:00.520 --> 00:33:01.220
Ja, precies.

779
00:33:01.300 --> 00:33:05.580
Je kunt zien dat iemand aanpassingen heeft gedaan in een bepaald tijdsbestek.

780
00:33:05.680 --> 00:33:07.780
Iemand anders heeft ook aanpassingen gedaan.

781
00:33:08.540 --> 00:33:12.240
En dan kun je heel erg functioneel met de business owner bepalen van, hey, als

782
00:33:12.240 --> 00:33:15.600
twee personen allebei de titel van het document hebben aangepast in hetzelfde

783
00:33:16.000 --> 00:33:17.420
tijdsplaatje, wie gaat er dan voor?

784
00:33:17.880 --> 00:33:18.520
Ja, precies.

785
00:33:18.520 --> 00:33:21.840
En dan zegt de product owner, ja, misschien die laatste die gewonnen heeft.

786
00:33:22.480 --> 00:33:26.120
Maar als de ene persoon de titel van het document aanpast en de andere persoon de

787
00:33:26.120 --> 00:33:30.460
beschrijving aanpast, is dat in het traditionele systeem, is dat vaak een

788
00:33:30.460 --> 00:33:30.740
probleem.

789
00:33:30.860 --> 00:33:32.580
Dan krijg je een soort optimistic concurrency fault.

790
00:33:33.080 --> 00:33:35.980
Maar hier kun je wel zeggen, ja, het zijn twee verschillende aspecten van het

791
00:33:35.980 --> 00:33:36.280
document.

792
00:33:36.740 --> 00:33:37.780
We accepteren ze allebei.

793
00:33:38.020 --> 00:33:38.600
Ja, precies.

794
00:33:38.720 --> 00:33:42.480
Dat kan niet met een traditioneel CRUD of ORM gebaseerd systeem.

795
00:33:42.680 --> 00:33:45.680
Ja, want in principe zit dat in het CRUD systeem.

796
00:33:45.980 --> 00:33:46.520
Ja, dat hoeft niet.

797
00:33:46.520 --> 00:33:50.560
Normaal sproken zit dat heel erg impliciet in het model van laserschrijven en

798
00:33:50.560 --> 00:33:51.420
tegelijk een concurrency.

799
00:33:51.580 --> 00:33:52.600
Dus dat nemen we dan maar voor lief.

800
00:33:53.500 --> 00:33:55.940
En dan als iemand dan, toen is het mijne van, als mensen horen over

801
00:33:55.940 --> 00:33:58.280
CRUD, dan denken ze, ja, maar waarom moet het allemaal zo expliciet en zo.

802
00:33:58.420 --> 00:33:59.320
Maar ja, dat zit eigenlijk ook.

803
00:33:59.320 --> 00:34:00.060
Dat is zo ingewikkeld ook vaak.

804
00:34:00.080 --> 00:34:00.600
Ja, precies.

805
00:34:00.660 --> 00:34:01.580
Maar hoe moet het zo ingewikkeld?

806
00:34:02.120 --> 00:34:05.340
Ja, en het is ook best wel een pittig patroon, zeg maar.

807
00:34:05.420 --> 00:34:07.220
Maar het is wel heel gaaf om te doen.

808
00:34:07.440 --> 00:34:07.900
Dat is mijn.

809
00:34:08.540 --> 00:34:10.340
Ja, het is nog niet mainstream genoeg.

810
00:34:10.860 --> 00:34:13.860
Zou het ook niet moeten zijn eigenlijk, want als het mainstream is, dat slaat

811
00:34:13.860 --> 00:34:14.540
natuurlijk nergens op.

812
00:34:14.540 --> 00:34:17.700
Ieder architectuurprobleem is uniek en je moet gewoon de beste oplossing ervoor

813
00:34:18.300 --> 00:34:18.700
gebruiken.

814
00:34:19.240 --> 00:34:23.620
Het voordeel van CRUD en ORM oplossingen is dat er al zoveel tooling voor beschikbaar

815
00:34:23.620 --> 00:34:25.320
is en zoveel documentatie.

816
00:34:25.400 --> 00:34:30.280
Maar ik moet zeggen, ik volg ook op Twitter elke dag alles wat met event sourcing

817
00:34:30.280 --> 00:34:31.480
te maken heeft.

818
00:34:31.580 --> 00:34:34.540
En je ziet echt wel de laatste twee jaar dat er enorme spurt is doorgemaakt.

819
00:34:35.300 --> 00:34:36.340
Dat het populairder is geworden?

820
00:34:36.560 --> 00:34:36.960
Populairder.

821
00:34:36.980 --> 00:34:37.400
Ja, ja, oké.

822
00:34:37.480 --> 00:34:38.260
Zeker ook buiten.

823
00:34:38.340 --> 00:34:40.960
Ik weet nog een paar jaar geleden dat ik op Qcon in San Francisco was.

824
00:34:41.380 --> 00:34:43.340
Toen hoorde ik voor het eerst het woord event sourcing vallen.

825
00:34:43.340 --> 00:34:45.500
En het was dan toevallig ook echt schaap.

826
00:34:45.600 --> 00:34:46.300
Dus weer tot net.

827
00:34:46.840 --> 00:34:48.620
Maar nu is het zo gebruikelijk.

828
00:34:48.720 --> 00:34:50.680
Je ziet het op elk platform en wordt het gewoon toegepast.

829
00:34:51.000 --> 00:34:51.480
Ja, ja, precies.

830
00:34:51.720 --> 00:34:53.480
Maar het is zelf volgens mij ook een noodje eerst.

831
00:34:53.640 --> 00:34:54.560
Ja, dat is overal.

832
00:34:54.980 --> 00:34:57.380
Ik bedoel, je zou een JavaScript of maakt niet uit.

833
00:34:57.440 --> 00:34:57.720
Zeker.

834
00:34:57.740 --> 00:35:00.300
Ik zie het wel eens langskomen en dan denk ik, oh ja, that makes sense.

835
00:35:00.580 --> 00:35:05.080
Sterker nog, volgens mij is het, als ik het goed heb, Pauline had via Twitter

836
00:35:05.080 --> 00:35:07.480
als ze een vraag gesteld over event sourcing, dacht ik.

837
00:35:08.200 --> 00:35:09.760
Dus van, ja, je kan niemand mij daarmee helpen ofzo.

838
00:35:09.960 --> 00:35:11.400
Nou, verder heb ik de inhoudelijk weet ik niet eens.

839
00:35:11.460 --> 00:35:12.820
Heb ik ook niet gevraagd de vorige keer.

840
00:35:12.820 --> 00:35:14.300
Maar dat was wel toevallig.

841
00:35:14.320 --> 00:35:14.920
En zij doet PHP.

842
00:35:15.100 --> 00:35:16.160
Dus dat wil niet zeggen dat het niet kan,

843
00:35:16.160 --> 00:35:19.080
maar dat is ook, bij PHP komt het wel eens voor, zeg maar.

844
00:35:19.340 --> 00:35:21.260
Nou ja, kan je zeggen dat de Domain Driven Design,

845
00:35:21.340 --> 00:35:22.720
wat ook al gerelateerd erin is,

846
00:35:23.280 --> 00:35:25.020
erg populair in de PHP wereld is.

847
00:35:25.460 --> 00:35:29.060
De organisator van de DDD Europe Conferentie,

848
00:35:29.200 --> 00:35:33.020
de grootste DDD Conferentie in Europa, is een PHP ontwikkeler.

849
00:35:33.140 --> 00:35:33.300
Ja, ja.

850
00:35:33.540 --> 00:35:34.480
Dat zegt al wat.

851
00:35:35.100 --> 00:35:36.860
Was ik ook echt verbaasd over trouwens, hoor.

852
00:35:36.960 --> 00:35:42.760
Ja, nee, we hebben volgens mij, volgens mij,

853
00:35:42.760 --> 00:35:46.640
en dat ging over hexagonal architectuur of opzet, ja.

854
00:35:47.760 --> 00:35:49.520
En ja, goed, hij maakt er zelf wel grap over.

855
00:35:49.780 --> 00:35:50.640
Ja, ja, PHP en zo.

856
00:35:50.660 --> 00:35:51.440
En die maakt er best wel lucht in.

857
00:35:51.520 --> 00:35:53.460
En op zich zijn sommige dingen makkelijker, zeg maar,

858
00:35:53.620 --> 00:35:54.720
in PHP te doen dan in .NET.

859
00:35:54.760 --> 00:35:56.060
Dus dat viel me dan ook wel weer op.

860
00:35:56.240 --> 00:35:58.920
Dat is voor mij dan, ja, was wel een eye-opener op dat moment.

861
00:35:59.500 --> 00:36:02.400
Dus ja, je neerkijken op PHP is een beetje, ja,

862
00:36:02.560 --> 00:36:06.080
als je er geen ervaring mee hebt, is dat een beetje, ja, flauw.

863
00:36:06.240 --> 00:36:07.780
Maar goed, aan de andere kant, ja,

864
00:36:07.840 --> 00:36:09.320
mensen hebben gewoon een mening over PHP.

865
00:36:09.480 --> 00:36:10.720
Dat is al misschien een kern van waar het is.

866
00:36:10.820 --> 00:36:12.380
Maar ja, er zijn natuurlijk ook mensen

867
00:36:12.380 --> 00:36:13.760
die heel slecht JavaScript schrijven.

868
00:36:13.860 --> 00:36:15.360
Je kunt ook heel goede JavaScript schrijven.

869
00:36:15.680 --> 00:36:16.560
Dat is ook wel...

870
00:36:16.560 --> 00:36:18.020
Ja, je kunt heel slecht JavaScript schrijven.

871
00:36:18.140 --> 00:36:19.480
Ja, heel snel en heel makkelijk.

872
00:36:19.600 --> 00:36:20.680
Dat is me ook opgevallen.

873
00:36:21.280 --> 00:36:21.360
Ja.

874
00:36:21.380 --> 00:36:23.720
Je kan ook heel slecht .NET-code schrijven.

875
00:36:24.080 --> 00:36:25.100
Ja, ja, dat ben ik gewend.

876
00:36:25.120 --> 00:36:25.980
Dat is gewoon mijn norm.

877
00:36:27.960 --> 00:36:28.780
En dat had ik af en toe.

878
00:36:29.100 --> 00:36:30.720
Ik denk, ik denk dat dat soort talen, ja,

879
00:36:30.740 --> 00:36:33.060
weet je, ik associëer het gewoon met mijn history.

880
00:36:33.320 --> 00:36:36.360
Ik gebruikte het gewoon als hobby-taaltje, weet je wel.

881
00:36:36.400 --> 00:36:37.280
Gewoon de eerste keer.

882
00:36:37.780 --> 00:36:40.340
Oh, ik kan nu een code uitvoeren, weet je wel.

883
00:36:40.340 --> 00:36:41.360
Of PHP bedoel je?

884
00:36:41.760 --> 00:36:43.840
Ja, PHP of JavaScript in een browser, weet je wel.

885
00:36:44.020 --> 00:36:44.540
Oh, wauw.

886
00:36:44.860 --> 00:36:45.860
Ik kan koden.

887
00:36:45.980 --> 00:36:48.360
Ik kan iets in de browser dynamisch laten werken.

888
00:36:48.700 --> 00:36:48.940
Precies.

889
00:36:49.340 --> 00:36:52.220
Het was gewoon een beetje een hobby-tooltje.

890
00:36:52.520 --> 00:36:54.760
Sommige mensen maken daar een werk van en krijgen ervoor betaald.

891
00:36:55.320 --> 00:36:56.460
Ja, ja, precies.

892
00:36:56.980 --> 00:37:03.160
En op een gegeven moment kom je dan bij wat enterprise-achtige bedrijven te werken.

893
00:37:03.260 --> 00:37:07.660
Ja, en dan leer je echte programmeertalen zoals Java of Totnet.

894
00:37:07.660 --> 00:37:11.160
Nou ja, ik moet wel zeggen dat die wereld wel aan het veranderen is.

895
00:37:11.400 --> 00:37:14.280
Kijk maar hoeveel JavaScript op de backend tegenwoordig geschreven wordt met Node.js.

896
00:37:14.300 --> 00:37:14.980
Dat is ook weer zo, ja.

897
00:37:15.020 --> 00:37:16.080
Dat zijn hele stromingen.

898
00:37:16.900 --> 00:37:20.660
Ja, we hadden het de vorige keer ook over Go, Rust en een aantal andere talen.

899
00:37:20.960 --> 00:37:21.240
Kotlin.

900
00:37:21.560 --> 00:37:22.020
Ja, Kotlin.

901
00:37:22.020 --> 00:37:22.400
Ja, Kotlin.

902
00:37:22.560 --> 00:37:23.840
Daar hebben we ook wel heel goede dingen over.

903
00:37:23.940 --> 00:37:25.280
Dat is wel de Java-platform toch ook?

904
00:37:25.780 --> 00:37:26.980
Volgens mij is dat op de Java runtime.

905
00:37:27.080 --> 00:37:28.000
Ja, op de runtime, ja.

906
00:37:28.300 --> 00:37:34.660
Ja, dat Java runtime, dat heeft wel een soort van katalysator geweest voor allerlei talen die ontstaan zijn daarna.

907
00:37:34.680 --> 00:37:36.360
Ja, dat viel me wel op.

908
00:37:36.360 --> 00:37:38.960
Ja, in principe is dat ook best wel logisch.

909
00:37:39.960 --> 00:37:41.820
Ja, er is iets en dat was een tijdje geleden.

910
00:37:42.320 --> 00:37:43.040
Nou ja, een tijdje geleden.

911
00:37:43.060 --> 00:37:45.440
Volgens mij is de AVG, vorig jaar of zo, twee jaar geleden.

912
00:37:45.480 --> 00:37:46.760
Ik weet niet eens wanneer dat ingegaan is.

913
00:37:46.760 --> 00:37:47.420
Ja, ja.

914
00:37:48.420 --> 00:37:51.980
En dat kan wel impact hebben op een event sourcing project, toch?

915
00:37:52.060 --> 00:37:52.460
Ja, dat klopt.

916
00:37:52.520 --> 00:37:53.820
Maar dat is wel een opgelost probleem.

917
00:37:54.500 --> 00:37:56.960
Er zijn al verschillende artikelen over hoe je dat zou kunnen oplossen.

918
00:37:57.140 --> 00:38:01.680
Maar stel dat ik dus nu, stel dat we als bedrijf zijn dat je een, nou ja, je doet een event sourcing.

919
00:38:01.760 --> 00:38:06.340
Je bent de laatste, weet ik veel, vijf, zes jaar heb je een mooie event stream opgeslagen.

920
00:38:06.840 --> 00:38:07.200
Ja.

921
00:38:07.200 --> 00:38:10.180
En nou, dat zijn allemaal, nou noem maar eens iets, klantgegevens.

922
00:38:10.340 --> 00:38:11.620
Ja, dat is denk ik het meest relevante.

923
00:38:12.300 --> 00:38:14.080
En ja, dan komt er een jaantje die denkt, nee, leuk.

924
00:38:14.220 --> 00:38:15.900
Nou, ik wil vergeten worden.

925
00:38:15.920 --> 00:38:16.280
Ja.

926
00:38:16.280 --> 00:38:16.920
En wat dan?

927
00:38:17.420 --> 00:38:22.120
Ja, ik weet niet of je show notes hebt of iets dergelijks.

928
00:38:22.200 --> 00:38:23.580
Ja, die kunnen we sowieso maken.

929
00:38:23.580 --> 00:38:31.980
Een van die oplossingen die ik een keer heb voorbij zien komen, wat op zich wel leuker is, is dat je al je events encrypt met een public-private key.

930
00:38:32.300 --> 00:38:35.620
Dat je die keys associeert met intervallere personen in je systeem, dus gebruikers.

931
00:38:35.620 --> 00:38:35.940
Ja, ja.

932
00:38:36.380 --> 00:38:42.380
En op het moment dat die persoon vergeten worden, gooi je ook de key weg, waardoor je die events nooit meer kunt encrypten.

933
00:38:42.580 --> 00:38:43.220
Oh ja, dat is slim.

934
00:38:43.520 --> 00:38:47.140
Dan heb je eigenlijk, kijk, dan kun je natuurlijk ook fysiek de data gewoon weggooien.

935
00:38:47.220 --> 00:38:47.780
Ja, ja, ja.

936
00:38:47.780 --> 00:38:49.220
Dat is natuurlijk ook gewoon, ja.

937
00:38:49.400 --> 00:38:53.160
Maar je moet, maar moet je niet alles dan compleet opnieuw afspelen, of is dat?

938
00:38:53.900 --> 00:38:55.460
Ja, dat ligt een beetje aan hoe je het gebouwd hebt.

939
00:38:55.560 --> 00:39:00.040
Kijk, je hebt natuurlijk het probleem is dat je dan een stukje van je waarheid ongedaagd gaat maken.

940
00:39:00.080 --> 00:39:00.680
Ja, ja.

941
00:39:00.760 --> 00:39:05.080
En dat ligt ook een beetje aan hoe kritisch het systeem is en hoe dogmatisch je dat wilt toepassen.

942
00:39:05.080 --> 00:39:05.700
Ja.

943
00:39:05.700 --> 00:39:10.060
Als je dat, als je het intact wilt laten, als je in ieder geval intact wilt laten dat er iets geweest is.

944
00:39:10.060 --> 00:39:10.260
Ja.

945
00:39:10.660 --> 00:39:14.480
Ja, dan zou je dat trucje kunnen uithalen door gewoon alles te encrypten en dan die key weg te gooien.

946
00:39:14.660 --> 00:39:15.980
Dan is dat event er nog wel.

947
00:39:16.020 --> 00:39:16.380
Ja.

948
00:39:16.380 --> 00:39:18.880
En je kunt ook zien wanneer het event gecreëerd is en dergelijke.

949
00:39:18.940 --> 00:39:20.360
Maar de inhoud ervan is gewoon weg.

950
00:39:20.360 --> 00:39:20.920
Ja, precies.

951
00:39:20.920 --> 00:39:21.420
Daar kun je niks mee.

952
00:39:21.620 --> 00:39:23.400
Nou goed, maar kun je dat achteraf doen?

953
00:39:23.560 --> 00:39:24.140
Is dat, is dat bedoeld?

954
00:39:24.140 --> 00:39:24.660
Ja, dat kun je achteraf doen.

955
00:39:24.680 --> 00:39:25.300
Oh ja, oké.

956
00:39:25.300 --> 00:39:25.760
Kun je zeker.

957
00:39:25.960 --> 00:39:26.740
Ja, dat lost wel op.

958
00:39:26.960 --> 00:39:28.060
Of dat is wel praktisch.

959
00:39:28.060 --> 00:39:32.180
Als je, als je accepteert dat je achteraf jouw event store gaat bewerken.

960
00:39:36.480 --> 00:39:37.480
Dat is wel waar.

961
00:39:37.620 --> 00:39:41.080
Je zou ook een nieuwe event store op kunnen bouwen opnieuw ernaast.

962
00:39:41.800 --> 00:39:42.540
Die origineel laten staan.

963
00:39:42.700 --> 00:39:44.380
Maar goed, dat is met AVG natuurlijk juist.

964
00:39:44.760 --> 00:39:46.020
Dat stukje data moet gewoon weg.

965
00:39:46.100 --> 00:39:47.180
Ze willen gewoon zien dat het weg is.

966
00:39:47.240 --> 00:39:47.860
Ja, precies.

967
00:39:48.220 --> 00:39:48.960
Dus dat is daar natuurlijk niet.

968
00:39:48.960 --> 00:39:50.020
Dus er zijn meerdere oplossingen voor.

969
00:39:50.140 --> 00:39:51.020
Je moet het gewoon weg gooien.

970
00:39:51.360 --> 00:39:54.560
Maar dan moet je wel een mechanisme hebben om te zeggen van, kijk, je hebt dat

971
00:39:54.560 --> 00:39:56.160
CQS aspect bij event sourcing.

972
00:39:56.540 --> 00:39:58.860
Die event store ga je events weg gooien.

973
00:39:59.240 --> 00:40:00.900
Maar je hebt nog wel wat we dan projecties noemen.

974
00:40:01.180 --> 00:40:03.320
Dus tabellen die daar op gebaseerd zijn.

975
00:40:03.320 --> 00:40:05.840
En je moet er dan wel weten dat de data is weggegooid.

976
00:40:06.020 --> 00:40:09.720
En vaak wat je dan doet, is daar weer een apart event voor introduceren.

977
00:40:09.880 --> 00:40:13.920
Waarin je zegt van, hey, we hebben iemand uit het systeem verwijderd, vanwege AVG

978
00:40:13.920 --> 00:40:14.280
bijvoorbeeld.

979
00:40:14.960 --> 00:40:17.340
En dat zelfde event wordt dan gebruikt om al die projectie tabellen op te schoenen.

980
00:40:17.380 --> 00:40:18.000
Ja, precies.

981
00:40:18.320 --> 00:40:19.240
Dat kun je op die manier oplossen.

982
00:40:19.680 --> 00:40:20.760
En dat maakt het ook heel zichtbaar.

983
00:40:20.800 --> 00:40:24.460
Dan kun je ook achteraf zien van, hey, er is iemand uit het systeem verwijderd

984
00:40:24.460 --> 00:40:26.600
vanwege een AVG-verzoek.

985
00:40:26.600 --> 00:40:27.320
Ja, precies.

986
00:40:27.580 --> 00:40:27.820
Ja, oké.

987
00:40:27.820 --> 00:40:29.860
En dat maakt het weer voor al dat ding heel erg nuttig.

988
00:40:30.100 --> 00:40:32.440
Ja, want er wordt altijd een relationeel data.

989
00:40:32.440 --> 00:40:33.000
Ja, dat is heel makkelijk.

990
00:40:33.140 --> 00:40:33.520
Dan ga ik kijken.

991
00:40:33.580 --> 00:40:35.640
Doe ik even een selectje, een awaretje.

992
00:40:35.660 --> 00:40:36.400
Hoe vaak gaat dat goed?

993
00:40:36.800 --> 00:40:37.480
Ja, nee, precies.

994
00:40:37.560 --> 00:40:39.280
Dan weet je misschien niet helemaal wat de implicatie is.

995
00:40:39.320 --> 00:40:41.320
En je weet ook niet waarom die data uitvalt.

996
00:40:41.320 --> 00:40:44.420
Die context heb je in principe niet normaal gesproken in een relationeel database.

997
00:40:44.640 --> 00:40:45.700
Je hebt alleen maar de huidige state.

998
00:40:45.820 --> 00:40:46.220
Ja, precies.

999
00:40:46.520 --> 00:40:49.140
Je weet niet waarom, tot hoe je door tot die informatie bent gekomen.

1000
00:40:49.400 --> 00:40:50.640
Dat is zo nuttig.

1001
00:40:51.100 --> 00:40:54.060
Ik heb zo'n voorbeeld gezien dat een collega van mij een productieprobleem

1002
00:40:54.060 --> 00:40:59.280
had, waarin een aantal objecten in het systeem in een bepaalde state terecht

1003
00:40:59.280 --> 00:41:01.440
kwamen, waardoor het systeem vast zat.

1004
00:41:01.840 --> 00:41:04.520
Het document kon niet meer gesloten worden of iets dergelijks.

1005
00:41:04.640 --> 00:41:05.360
Het was daar heel domeinspecifiek.

1006
00:41:06.400 --> 00:41:10.760
Het coole eraan is, hij kon dus aan die eventstop precies zien wie wat had gedaan

1007
00:41:10.760 --> 00:41:13.080
in de weken daarvoor, hoe die daar gekomen was.

1008
00:41:13.140 --> 00:41:16.780
En op basis van die informatie, kon hij uiteindelijk een hypothese opstellen

1009
00:41:16.780 --> 00:41:18.540
van hoe die bug ontstaan was.

1010
00:41:18.660 --> 00:41:18.880
Oh ja.

1011
00:41:18.940 --> 00:41:21.400
Anders had hij dat nooit van zijn leven boven water gekregen.

1012
00:41:21.420 --> 00:41:22.240
Nooit kunnen achterhalen.

1013
00:41:22.320 --> 00:41:23.940
Maar goed, ja, ik heb daar heel veel over geblogd.

1014
00:41:24.100 --> 00:41:27.240
Er zijn ook heel veel nadelen, net zoals elke oplossing.

1015
00:41:27.580 --> 00:41:28.500
Dat kun je daar allemaal vinden.

1016
00:41:28.500 --> 00:41:31.500
Ja, het is ook best wel een pattern, zeker in...

1017
00:41:32.240 --> 00:41:34.300
Ja, wat nu steeds meer is, zeker als je cloud oplossingen hebt,

1018
00:41:35.260 --> 00:41:37.920
dan moet je al wat meer over gedistribueerde systemen nadenken.

1019
00:41:38.120 --> 00:41:40.320
Ja, dat wil niet per se zeggen dat CQS daarbij helpt,

1020
00:41:40.820 --> 00:41:41.640
maar nou, dat kan het helpen.

1021
00:41:41.740 --> 00:41:42.820
Dat is misschien wel een vraag.

1022
00:41:43.120 --> 00:41:43.440
Ja, ja.

1023
00:41:43.540 --> 00:41:46.680
Kijk, wat je ook doet, als je database met groot genoeg wordt,

1024
00:41:47.700 --> 00:41:49.840
zit daar een schaalbaarheidslimiet.

1025
00:41:50.340 --> 00:41:52.660
Want je applicatieservice kun je er gewoon bij schrijven.

1026
00:41:52.880 --> 00:41:56.900
En zeker met moderne spa, single-page applications, react en dergelijke.

1027
00:41:56.900 --> 00:42:00.100
Wat allemaal stateless is, kun je natuurlijk je applicatieserver heel erg uitschalen.

1028
00:42:00.320 --> 00:42:05.020
In AWS, Amazons platform kun je gewoon een autoscalinggroep opzetten

1029
00:42:05.020 --> 00:42:08.040
en dan zet je die op zes en dan worden er gewoon zes applicatieservice gestart.

1030
00:42:08.340 --> 00:42:12.060
Maar je database blijft uiteindelijk in beperking, hoe groot die ook is.

1031
00:42:12.240 --> 00:42:14.220
En helemaal als je ook nog eens een keertje regionaal

1032
00:42:14.220 --> 00:42:16.940
of hoe noem je dat, geografisch gedistribueerd wil zijn,

1033
00:42:17.180 --> 00:42:19.000
ja, vaak zit er dan een soort transactie omheen.

1034
00:42:19.360 --> 00:42:21.840
Op het moment dat je event sourcing met CQS toepast,

1035
00:42:21.940 --> 00:42:24.180
dan is het veel makkelijker om data te partitioneren,

1036
00:42:24.240 --> 00:42:26.600
omdat er geen directe relatie meer is tussen al die tabellen.

1037
00:42:27.380 --> 00:42:30.540
Dus je kunt dat veel verder uitschalen, op een hele makkelijke manier.

1038
00:42:30.800 --> 00:42:32.640
Er zitten heel veel mogelijkheden achter.

1039
00:42:33.900 --> 00:42:37.420
Ik kan me voorstellen dat je ook makkelijk je hoofd stoot.

1040
00:42:37.600 --> 00:42:38.400
Oh, heel erg makkelijk.

1041
00:42:39.380 --> 00:42:42.560
Ik heb wel als een presentatie van jou meegemaakt, online zie je dat,

1042
00:42:42.620 --> 00:42:46.020
en dan merk je wel dat het wordt, ik weet niet of het nu volwassen zijn,

1043
00:42:46.100 --> 00:42:47.440
maar je merkt altijd wel een soort van volwassenheid.

1044
00:42:47.780 --> 00:42:51.180
Dus hoe CQS en event sourcing misschien tien jaar geleden gedaan werd,

1045
00:42:51.820 --> 00:42:55.080
of de presentatie die ik hoorde, dat is misschien wel anders dan nu.

1046
00:42:55.080 --> 00:42:58.760
Mensen zullen nu wat pragmatisch zijn, ze hebben wat meer ervaring opgedaan.

1047
00:42:58.860 --> 00:43:00.520
Er is ook heel veel materiaal nu.

1048
00:43:00.820 --> 00:43:05.900
Vond Fernon heeft al inmiddels al twee boeken geschreven over het toepas van event sourcing.

1049
00:43:06.240 --> 00:43:13.060
Greg Young heeft net een boek afgeschreven over de fascineringsaspecten die te maken hebben.

1050
00:43:13.840 --> 00:43:16.000
Maar hij ziet ook weer een hele nieuwe stroom van mensen,

1051
00:43:16.540 --> 00:43:18.500
die nu ook eens in een keer voor het eerst event sourcing horen,

1052
00:43:18.620 --> 00:43:19.720
en daar weer over bloggen zijn.

1053
00:43:20.440 --> 00:43:24.360
Dus het wordt nu zo mainstream dat er heel veel mensen er nu over gaan praten,

1054
00:43:24.360 --> 00:43:28.760
in allerlei verschillende platformen en, hoe zeg je dat, vakgebieden,

1055
00:43:28.780 --> 00:43:30.840
die waarschijnlijk weer tegen dezelfde problemen aan gaan lopen.

1056
00:43:31.040 --> 00:43:33.240
Dus ik ben ook elke dag bijna weer een tweet aan het plaatsen van,

1057
00:43:33.420 --> 00:43:34.460
je moet even mijn blogpost lezen,

1058
00:43:35.100 --> 00:43:38.040
want al je problemen die je tegenaan gaat lopen, die heb ik al eens een keertje beschreven.

1059
00:43:38.120 --> 00:43:43.500
Ik ben ook altijd benieuwd hoe event sourcing met integratietesten,

1060
00:43:43.500 --> 00:43:46.320
hoe je dat nou echt doet op een goede manier.

1061
00:43:46.540 --> 00:43:48.020
Op dezelfde manier als met alles.

1062
00:43:48.360 --> 00:43:51.000
Net als elke functionele requirement.

1063
00:43:51.000 --> 00:43:56.780
Het leuke van CQS is dat je eigenlijk al onderkent dat er twee werelden zijn.

1064
00:43:57.160 --> 00:44:00.300
Je domein en de query kant.

1065
00:44:00.480 --> 00:44:04.140
En omdat dat eigenlijk ook twee werelden zijn die onafhankelijk van elkaar evalueren.

1066
00:44:04.760 --> 00:44:07.520
Er zijn, als er een nieuwe functionele requirement zijn over business rules,

1067
00:44:07.580 --> 00:44:08.960
dan verander je je domein kant.

1068
00:44:09.060 --> 00:44:11.240
Als je informatie op een andere manier wil presenteren,

1069
00:44:11.340 --> 00:44:12.360
dat is puur een query kant.

1070
00:44:12.440 --> 00:44:16.700
Dat zijn ook vaak onafhankelijke requirements die je op een ander tempo ontwikkelen.

1071
00:44:17.100 --> 00:44:20.980
Als je dat nou onderkent, dan weet je al dat je eigenlijk nooit testen zou moeten schrijven,

1072
00:44:21.720 --> 00:44:23.000
die end-to-end zijn.

1073
00:44:23.220 --> 00:44:26.120
Althans, je moet ook testen schrijven die end-to-end zijn, maar niet alleen maar dat.

1074
00:44:26.680 --> 00:44:31.420
De boundary, de scope van je test, zou eigenlijk in principe voor unit test zeker niet meer moeten zijn

1075
00:44:31.420 --> 00:44:34.780
dan ik voer een commando uit of ik voer een actie uit op mijn domein

1076
00:44:34.780 --> 00:44:36.720
en ik verifieer dat er een event is uitgekomen.

1077
00:44:36.840 --> 00:44:41.300
En een van de textbook examples die ik ooit van Greg Jong heb gehad in 2009 of 2008 zelfs,

1078
00:44:41.400 --> 00:44:44.100
toen ik met training voor het eerst hoorde bijwoner,

1079
00:44:44.260 --> 00:44:48.980
is dat heel veel mensen testen nooit of het uitvoeren van een actie op het domein een side effect veroorzaakt.

1080
00:44:49.480 --> 00:44:53.360
Een andere woord, op het moment dat ik een actie uitvoer op mijn domein,

1081
00:44:53.440 --> 00:44:55.260
een product bijvoorbeeld aan een order toevoeg,

1082
00:44:55.400 --> 00:44:57.720
dan kijken we wel vaak van, is dat dan op een goede manier gelukt?

1083
00:44:57.880 --> 00:44:59.860
Maar we kijken nooit of er andere dingen gebeurd zijn.

1084
00:45:00.140 --> 00:45:05.260
Ja, want dat is meestal, vind ik altijd, heel fijn aan quality engineers in teams.

1085
00:45:05.380 --> 00:45:09.100
Die gaan altijd vanuit het negatieve iets aanvallen.

1086
00:45:09.120 --> 00:45:10.200
Een ontwikkelaar is vaak niet.

1087
00:45:10.220 --> 00:45:14.460
Ja, die bedenkt, als ik ze zou vragen van, en bedoel ik een ontwikkelaar dus,

1088
00:45:14.560 --> 00:45:16.680
als ik zou vragen van, joh, werkt dit?

1089
00:45:16.680 --> 00:45:19.420
Ja, want het komt erin en het komt eruit.

1090
00:45:19.920 --> 00:45:21.100
Oké, maar wat als?

1091
00:45:21.440 --> 00:45:21.700
Ja, precies.

1092
00:45:21.740 --> 00:45:22.880
En die wat als, dat wordt wel...

1093
00:45:22.880 --> 00:45:25.140
Nou ja, dat gaat hand in hand met TDD natuurlijk.

1094
00:45:25.480 --> 00:45:28.380
Als je dat op die manier insteekt, dan ga je ook nadenken over die edge cases.

1095
00:45:29.200 --> 00:45:30.760
Maar event sourcing maakt het ook vrij makkelijk,

1096
00:45:30.780 --> 00:45:33.760
want ja, als het moment dat er een actie uitkomt, dan moet er één event uitkomen.

1097
00:45:34.040 --> 00:45:35.560
Er zou niks anders uit kunnen komen.

1098
00:45:35.680 --> 00:45:36.200
Ja, dat is waar.

1099
00:45:36.200 --> 00:45:37.360
En dat karandeer je eigenlijk daarmee.

1100
00:45:37.440 --> 00:45:37.800
Ja.

1101
00:45:37.820 --> 00:45:39.540
Dat is een voordeel hoor.

1102
00:45:39.960 --> 00:45:42.880
Het is niet zo'n heel sterk voordeel, maar het werkt wel op die manier.

1103
00:45:42.980 --> 00:45:45.160
En op dezelfde manier kun je ook testen schrijven,

1104
00:45:45.160 --> 00:45:49.080
die bijvoorbeeld zeggen van nou, vanuit gaan dat er een aantal events zijn gebeurd.

1105
00:45:49.160 --> 00:45:53.880
Hoe zou mijn HTTP API moeten, wat voor informatie zou je moeten teruggeven?

1106
00:45:54.000 --> 00:45:55.320
Dus je kunt dat ook als een scope zien.

1107
00:45:55.340 --> 00:45:57.440
Testen die eigenlijk de kwere kant verreveren.

1108
00:45:58.200 --> 00:45:58.560
Nee, nee.

1109
00:45:58.860 --> 00:46:00.140
Het is inderdaad duidelijk.

1110
00:46:00.620 --> 00:46:04.600
Dus ja, wat dat betreft geen andere strategie wat dat betreft.

1111
00:46:04.680 --> 00:46:08.860
Het is nog steeds een requirement die je zou moeten valideren.

1112
00:46:08.960 --> 00:46:13.460
Maar ook om hem te falsifyen.

1113
00:46:13.460 --> 00:46:17.300
Dus ook falsifying test zou je daarin ook moeten opnemen.

1114
00:46:17.780 --> 00:46:18.320
Ja, zeker.

1115
00:46:19.100 --> 00:46:22.400
En dit is natuurlijk, we hebben nu eigenlijk twee hele technische patterns genoemd.

1116
00:46:22.580 --> 00:46:25.180
Domain driven design zie je eigenlijk ook hand in hand gaan.

1117
00:46:25.900 --> 00:46:30.120
Omdat, en dat zeggen ze ook, events zijn niet zomaar technische dingen die gebeuren in je domein.

1118
00:46:30.220 --> 00:46:33.200
Die moeten ook echt representeren wat er functioneel gebeurd is.

1119
00:46:33.780 --> 00:46:36.880
Dus negen van tien keer wordt er ook gezegd, en eigenlijk zou je dat ook moeten volgen,

1120
00:46:37.160 --> 00:46:40.520
wordt de term, misschien heb je het wel eens gehoord, de ubiquitous language gebruikt.

1121
00:46:40.940 --> 00:46:42.280
De taal van de business.

1122
00:46:42.280 --> 00:46:45.880
Dus die events zijn ook eigenlijk altijd beschreven in de taal van de business.

1123
00:46:45.980 --> 00:46:47.800
Want dan kun je ook het onderscheid maken van,

1124
00:46:48.240 --> 00:46:51.020
is het adres van een persona veranderd omdat er een foutje in zat?

1125
00:46:51.240 --> 00:46:53.300
Of is het adres veranderd omdat die verhuisd is?

1126
00:46:53.640 --> 00:46:53.880
Ja, precies.

1127
00:46:53.880 --> 00:46:57.060
Dus tegen verschillen kun je een relationeel model eigenlijk niet vangen.

1128
00:46:57.140 --> 00:46:57.300
Nee.

1129
00:46:57.380 --> 00:47:00.320
Maar in een event store, of een event source, een gebaseerde systeem,

1130
00:47:00.460 --> 00:47:03.080
zeker als je ook het hele domain driven design aspect meeneemt,

1131
00:47:03.160 --> 00:47:04.980
kun je dat best wel goed meenemen in het systeem.

1132
00:47:05.040 --> 00:47:06.340
Kun je dat vastleggen en terughalen?

1133
00:47:06.460 --> 00:47:08.440
Ja, precies. Want het is ook een beetje een voorbeeld,

1134
00:47:08.440 --> 00:47:13.160
want ik was tegen klanten en dan probeer je een taakgedreven UI, zeg maar,

1135
00:47:13.320 --> 00:47:17.200
zodat je echt weet van, kijk, de oude wedstrijdschermen waren heel erg,

1136
00:47:17.200 --> 00:47:20.100
bijna één op één geënd op de database tabellen, zeg maar.

1137
00:47:20.120 --> 00:47:21.860
Dus je had gewoon alle velden die in de database stonden,

1138
00:47:22.000 --> 00:47:24.420
en dan had je een save-knop en een cancel-knop, en dat was het.

1139
00:47:24.440 --> 00:47:27.940
En je sloeg gewoon data op en dan wist je, je had geen context, zeg maar.

1140
00:47:28.000 --> 00:47:30.220
Je wist dus niet van, oh, hij heeft nu zijn adres gebeurd,

1141
00:47:30.320 --> 00:47:32.340
want hij is verhuisd. Dat weet je niet.

1142
00:47:32.900 --> 00:47:33.800
De intentie was je...

1143
00:47:33.800 --> 00:47:36.220
Exact, precies. En dat vind ik dan heel gaaf.

1144
00:47:36.220 --> 00:47:39.100
Dus als je dus wel die taak of de intentie van de actie die je doet,

1145
00:47:39.200 --> 00:47:42.940
dus je wijzigt een adres of je zegt van, kijk, ik wil nu een verhuizing doen,

1146
00:47:43.360 --> 00:47:46.220
geef nu het nieuwe adres, dat wordt doorgegeven naar de backend

1147
00:47:46.220 --> 00:47:48.360
en dan wordt een command en dan komen je fans uit,

1148
00:47:48.440 --> 00:47:49.820
dan weet je ook waarom dat gebeurd is.

1149
00:47:49.900 --> 00:47:52.560
Dus dan is het niet zo'n droge data-verhaal, zeg maar.

1150
00:47:52.720 --> 00:47:54.280
En dat vind ik ook heel erg gaaf,

1151
00:47:54.380 --> 00:47:56.680
alleen dat kost best wel wat effort om dat bij mensen, zeg maar,

1152
00:47:56.840 --> 00:47:58.900
tussen de oren te krijgen, omdat best heel veel mensen,

1153
00:47:58.960 --> 00:48:01.940
en ook zelfs opdrachtgevers, productoners, eindgebruikers,

1154
00:48:02.000 --> 00:48:04.300
die denken, die zijn gewoon geconditioneerd

1155
00:48:04.300 --> 00:48:06.300
en dat is er gewend geraakt om in data te denken,

1156
00:48:06.580 --> 00:48:07.800
oké, dat staat nu in de database,

1157
00:48:07.880 --> 00:48:10.320
dus dat is één op één en die vracht er gewoon een safe-knop,

1158
00:48:10.420 --> 00:48:12.460
heel veel mensen zijn dat gewoon gewend.

1159
00:48:13.320 --> 00:48:16.460
En wat wij vanuit software ontwikkeling kunnen doen,

1160
00:48:16.740 --> 00:48:19.100
is constant vragen, ja, welk doel wil je hiermee bereiken?

1161
00:48:19.220 --> 00:48:21.640
En dan kom je ineens op een veel flexibere,

1162
00:48:21.700 --> 00:48:23.380
of misschien wel een makkelijkere oplossing.

1163
00:48:23.980 --> 00:48:26.180
Betrokkenheid van je product owner of business analyst,

1164
00:48:26.260 --> 00:48:28.720
wat dan ook, wordt heel erg belangrijk om dit te doen,

1165
00:48:28.920 --> 00:48:29.940
anders gaat het gewoon niet werken.

1166
00:48:30.220 --> 00:48:32.640
Maar goed, ik heb ook ervaren,

1167
00:48:32.640 --> 00:48:35.000
software ontwikkelaars gesproken die zoiets hebben van,

1168
00:48:35.000 --> 00:48:36.400
ja, allemaal complexiteit,

1169
00:48:36.480 --> 00:48:38.340
en dit kan ik ook gewoon met een relationele tabel doen,

1170
00:48:38.460 --> 00:48:41.220
een DBA'er of een database georienteerde ontwikkelaar,

1171
00:48:41.320 --> 00:48:43.640
zal zeggen, ja, ik zet gewoon change tracking op die tabel,

1172
00:48:43.680 --> 00:48:44.740
dan heb ik hetzelfde effect.

1173
00:48:46.840 --> 00:48:48.160
Meestal geef ik het allemaal gelijk op,

1174
00:48:48.580 --> 00:48:50.940
dan zit je toch op een andere golflengte te praten.

1175
00:48:52.820 --> 00:48:54.460
Kijk, dat is ook met software ontwikkeling.

1176
00:48:54.800 --> 00:48:56.120
Je kunt in principe alles doen.

1177
00:48:56.620 --> 00:48:57.980
Je kunt ook met iemand, een ontwikkelaar,

1178
00:48:58.080 --> 00:48:59.980
kan heel makkelijk het tegendeel bewijzen.

1179
00:48:59.980 --> 00:49:01.700
Als iemand zegt, ik kan met change tracking,

1180
00:49:01.740 --> 00:49:03.060
dan kan ik blijven programmeren,

1181
00:49:03.120 --> 00:49:06.140
en ik ga bewijzen dat ik het op die manier ook goed kan doen.

1182
00:49:06.240 --> 00:49:07.740
Ik kan ook business rules bouwen,

1183
00:49:09.000 --> 00:49:10.000
en het stort precies.

1184
00:49:10.020 --> 00:49:10.680
Ja, precies.

1185
00:49:13.040 --> 00:49:14.100
Het gebeurde vaak.

1186
00:49:14.400 --> 00:49:15.680
Sterker nog, het gebeurt nog steeds.

1187
00:49:16.160 --> 00:49:17.720
Dat voel ik wel een beetje zorgelijk altijd.

1188
00:49:17.960 --> 00:49:20.020
Hele conferenties heb ik bij gewoond waarin dat gebeurde.

1189
00:49:20.200 --> 00:49:21.480
Je ziet geluk niet meer zo veel gebeuren.

1190
00:49:21.860 --> 00:49:23.260
Of programmeren in Excel.

1191
00:49:24.440 --> 00:49:25.560
Je moet ergens beginnen.

1192
00:49:26.040 --> 00:49:26.740
Ja, dat is waar.

1193
00:49:28.580 --> 00:49:30.300
Het is wel een lage drempel, toch?

1194
00:49:30.660 --> 00:49:31.760
Ik kan een grapje vertellen,

1195
00:49:31.940 --> 00:49:33.500
maar mijn eerste programma ooit

1196
00:49:33.500 --> 00:49:34.840
was eigenlijk op mijn komende 64.

1197
00:49:35.580 --> 00:49:36.780
Zo oud ben ik.

1198
00:49:37.440 --> 00:49:38.640
Volgens mij enig wat ik deed,

1199
00:49:38.980 --> 00:49:40.880
is een programma schrijven van twee regels.

1200
00:49:41.140 --> 00:49:42.080
De eerste regel was 10,

1201
00:49:42.800 --> 00:49:44.160
en dan stond er gewoon een stukje tekst.

1202
00:49:44.420 --> 00:49:46.240
En wat ik dan kon doen is list, en dan zag ik output.

1203
00:49:46.400 --> 00:49:47.600
En toen dacht ik dat ik het programmeerde.

1204
00:49:47.680 --> 00:49:49.540
Echt list, liet me de code zien,

1205
00:49:49.680 --> 00:49:50.380
en dat dacht ik dat was.

1206
00:49:50.620 --> 00:49:51.760
Totdat je het boek gaat lezen,

1207
00:49:51.760 --> 00:49:53.580
en dan ontdek je ervan dat je zegt 10,

1208
00:49:53.660 --> 00:49:55.620
print, hallo, 20, code 10.

1209
00:49:55.800 --> 00:49:56.340
Ja, dat herinner ik.

1210
00:49:57.080 --> 00:49:59.060
Ik heb ook geprogrammeerd op komende 64,

1211
00:49:59.120 --> 00:50:00.000
ik heb er nooit één gehad.

1212
00:50:00.160 --> 00:50:03.040
We hadden ergens heel lang geleden in Tilburg,

1213
00:50:03.120 --> 00:50:03.840
want daar kom ik vandaan.

1214
00:50:03.880 --> 00:50:04.560
Dat was niet te horen?

1215
00:50:05.360 --> 00:50:05.640
Nee hoor.

1216
00:50:06.820 --> 00:50:07.940
Alles bij de barts vanmiddag,

1217
00:50:09.660 --> 00:50:10.600
2 komendoor staan,

1218
00:50:11.160 --> 00:50:12.760
een Vic 20, zeg je ook wel iets,

1219
00:50:14.720 --> 00:50:15.980
en een 64.

1220
00:50:16.900 --> 00:50:17.480
En dan stonden er 2.

1221
00:50:17.480 --> 00:50:19.460
De donkerbruine was de 64,

1222
00:50:19.620 --> 00:50:21.720
en licht cremeachtig.

1223
00:50:22.240 --> 00:50:23.140
Ja, precies.

1224
00:50:23.860 --> 00:50:25.280
Net geen gebroken, whatever.

1225
00:50:27.200 --> 00:50:28.240
En dan was het altijd een strijd,

1226
00:50:28.360 --> 00:50:29.260
als ik diegene niet als eerste was,

1227
00:50:29.300 --> 00:50:30.380
die had natuurlijk de komende 64,

1228
00:50:30.420 --> 00:50:31.220
want je had meer geheugen,

1229
00:50:31.320 --> 00:50:32.760
niet dat ik dat nodig had met mijn programma.

1230
00:50:35.380 --> 00:50:37.920
Het is niet alsof ik die 64 kilobyte nodig had,

1231
00:50:37.940 --> 00:50:39.900
want ik schreef dus echt 10,

1232
00:50:40.020 --> 00:50:41.460
print dat, 20, code 10.

1233
00:50:42.100 --> 00:50:44.480
En soms had je een programma met je snake,

1234
00:50:45.880 --> 00:50:46.840
het was niet de echte snake,

1235
00:50:46.840 --> 00:50:49.360
maar als je bleef printen,

1236
00:50:49.360 --> 00:50:50.580
dat is het scrollen natuurlijk,

1237
00:50:50.760 --> 00:50:51.780
en dan kon je een slang maken,

1238
00:50:52.120 --> 00:50:53.840
dus dat hoefde je alleen maar van links naar rechts.

1239
00:50:54.600 --> 00:50:55.920
Dat was heel makkelijk te programmeren.

1240
00:50:56.700 --> 00:50:58.360
Je dacht echt dat je de koning was,

1241
00:50:58.660 --> 00:51:01.380
dat was allemaal bij de bar smitten,

1242
00:51:01.520 --> 00:51:02.300
dat had ik echt,

1243
00:51:02.740 --> 00:51:04.100
ik wil een computer, nou,

1244
00:51:04.200 --> 00:51:05.340
het is een beetje duur, zeg maar.

1245
00:51:05.480 --> 00:51:08.820
Dus dat duurde even voordat ik thuis een homecomputer had.

1246
00:51:08.960 --> 00:51:09.840
Maar ja, die komende 64,

1247
00:51:10.420 --> 00:51:12.100
volgens mij is dat echt voor mij in ieder geval

1248
00:51:12.100 --> 00:51:14.680
de eerste computer waar ik een soort van had programmeren.

1249
00:51:15.960 --> 00:51:17.500
Dus misschien is dat een...

1250
00:51:17.500 --> 00:51:19.100
Ik kan me nog heel goed erin dat ik me ontdekte

1251
00:51:19.100 --> 00:51:21.100
dat er ook een soort van demos waren

1252
00:51:21.100 --> 00:51:23.520
met muziek, muziek in beelden,

1253
00:51:23.560 --> 00:51:24.680
en dat vond ik zo machtig,

1254
00:51:25.600 --> 00:51:27.140
weet je, dan had je Axel F,

1255
00:51:27.340 --> 00:51:28.260
dat oude nummer, weet je,

1256
00:51:28.700 --> 00:51:30.880
van Beverly Hillscope,

1257
00:51:31.880 --> 00:51:32.440
Axel Foley,

1258
00:51:32.620 --> 00:51:34.580
en Axel Foley, dat kwam gewoon uit een computertje,

1259
00:51:34.740 --> 00:51:36.040
weet je wel, het was een sitproces,

1260
00:51:36.560 --> 00:51:38.620
ik heb niet eens meer waar het voor stond,

1261
00:51:38.740 --> 00:51:39.920
waarschijnlijk iets van sound,

1262
00:51:41.040 --> 00:51:42.540
Ja, want je had die, hoe noemen ze die dingen?

1263
00:51:42.540 --> 00:51:43.540
Chiptunes volgens mij.

1264
00:51:44.320 --> 00:51:46.060
Zo klopt dat, maar het was machtig

1265
00:51:46.060 --> 00:51:48.360
dat je gewoon muziek eruit kwam in die tijd,

1266
00:51:48.420 --> 00:51:50.180
en op een gegeven moment had je ook samples erbij,

1267
00:51:50.660 --> 00:51:53.240
nou ja, weet je, de huidige generatie weet,

1268
00:51:53.360 --> 00:51:54.920
ja, fasttracken, dat kwam daarna nog,

1269
00:51:55.320 --> 00:51:56.500
dat is veel later nog, moet je nagaan,

1270
00:51:56.640 --> 00:51:57.440
ik heb het hier echt over,

1271
00:51:57.700 --> 00:52:00.040
ik heb mijn eigen fasttracker, soundtracker nog gebouwd ooit.

1272
00:52:00.640 --> 00:52:02.660
Nou, ik heb, na de eerste keer

1273
00:52:02.660 --> 00:52:04.540
dat ik ben begonnen met programmeren

1274
00:52:04.540 --> 00:52:06.400
was op een, met een dos

1275
00:52:06.400 --> 00:52:08.460
batch script, want ik had

1276
00:52:08.460 --> 00:52:10.380
toen op een gegeven moment het commando beep

1277
00:52:10.380 --> 00:52:12.820
ontdekt, en die kon je

1278
00:52:12.820 --> 00:52:14.280
dus helemaal instellen, weet je wel,

1279
00:52:14.440 --> 00:52:16.340
in allerlei noten, hoe lang

1280
00:52:16.340 --> 00:52:18.180
en dat soort dingen, dus ik had echt een

1281
00:52:18.180 --> 00:52:20.580
liedje uiteindelijk, had ik daarin geprogrammeerd.

1282
00:52:21.020 --> 00:52:22.060
Dat is wel grappig, want er is nu

1283
00:52:22.060 --> 00:52:24.100
een ding waarmee je dat gewoon, waar je echt

1284
00:52:24.100 --> 00:52:26.500
muziek mee maakt, dat heet Sonic Pi,

1285
00:52:27.140 --> 00:52:28.300
en dat is helemaal gebaseerd op de

1286
00:52:28.300 --> 00:52:30.480
principe. Er is een Engelse gozer, Sam Aaron

1287
00:52:30.480 --> 00:52:32.780
heet hij volgens mij, die heb ik zien optreden

1288
00:52:32.780 --> 00:52:34.120
op een conferentie recentelijk,

1289
00:52:34.400 --> 00:52:36.400
die heeft gewoon, volgens mij

1290
00:52:36.400 --> 00:52:38.140
een Pearl ofzo gebouwd, of PHP,

1291
00:52:38.140 --> 00:52:40.280
het is PHP gebaseerd, waarin je gewoon met

1292
00:52:40.280 --> 00:52:42.240
biepjes en dergelijke en loopjes, gewoon

1293
00:52:42.240 --> 00:52:44.220
complete muziek bouwt. Het is zo geoffenseerd,

1294
00:52:44.360 --> 00:52:46.180
daar gebruik je ook om leerlingen

1295
00:52:46.180 --> 00:52:48.360
te leren programmeren, daar doet hij gewoon echt concerten

1296
00:52:48.360 --> 00:52:50.140
mee, optredens, echt ongelofelijk.

1297
00:52:51.120 --> 00:52:52.380
Nog steeds hetzelfde principe.

1298
00:52:53.120 --> 00:52:53.700
Ja, dat is wel cool.

1299
00:52:55.220 --> 00:52:56.260
Op naar het volgende

1300
00:52:56.260 --> 00:52:58.240
onderwerp? Ja, genoeg over, ik heb

1301
00:52:58.240 --> 00:53:00.100
verder geen vragen, het volgende onderwerp,

1302
00:53:00.160 --> 00:53:02.360
niet echt een onderwerp, zeggen we iedere keer, want we hebben er

1303
00:53:02.360 --> 00:53:04.120
niet goed over nagedacht. Nee, doen we nooit.

1304
00:53:04.280 --> 00:53:06.280
Dus we doen maar wat, en dan

1305
00:53:06.280 --> 00:53:07.920
vullen we de laatste, ja,

1306
00:53:08.040 --> 00:53:09.960
ik weet niet hoeveel minuten, vullen we nog even met

1307
00:53:10.360 --> 00:53:11.480
links en rechts wat dingetjes.

1308
00:53:11.680 --> 00:53:13.400
Het grappige is, je had het een paar keer over de hype cycle,

1309
00:53:13.840 --> 00:53:15.280
dus die hebben we hier in de voorbereiding,

1310
00:53:15.280 --> 00:53:17.360
de voorbereidingsnotes hebben we ook staan.

1311
00:53:17.740 --> 00:53:19.700
Daar op voorbedurend, zeg maar op die hype cycle,

1312
00:53:20.260 --> 00:53:21.640
nou, we zijn volgens mij

1313
00:53:21.640 --> 00:53:23.360
al best wel een poosje, je hebt door de Commodore 64

1314
00:53:23.360 --> 00:53:25.260
gehad, dus je bent niet pas vijf jaar

1315
00:53:25.260 --> 00:53:27.380
software ontwikkelaar, dus je hebt denk ik

1316
00:53:27.380 --> 00:53:29.480
in je carrière, want het is ook wel serieus

1317
00:53:29.480 --> 00:53:31.140
wel een carrière die je achter de rug hebt

1318
00:53:31.140 --> 00:53:33.260
en die nog doorloopt, dus even

1319
00:53:33.260 --> 00:53:36.220
Benny Pangja, precies, die

1320
00:53:36.220 --> 00:53:36.840
best wel wat

1321
00:53:36.840 --> 00:53:38.980
nieuwe technologie gezien en

1322
00:53:39.860 --> 00:53:40.740
golfbewegingen, et cetera.

1323
00:53:41.780 --> 00:53:43.260
Is er nu technologie, zeg maar,

1324
00:53:43.280 --> 00:53:45.400
waar jij nu echt super enthousiast

1325
00:53:45.400 --> 00:53:47.280
over wordt, dus die echt gewoon

1326
00:53:47.280 --> 00:53:49.200
op de peak of inflated

1327
00:53:49.200 --> 00:53:50.320
expectations zit.

1328
00:53:50.840 --> 00:53:53.340
Dat mag van alles zijn, het hoeft niet per se

1329
00:53:53.340 --> 00:53:55.580
tot net te zijn, het maakt me niet uit, het is gewoon

1330
00:53:55.580 --> 00:53:57.600
best wel een brede vraag, dus

1331
00:53:57.600 --> 00:53:58.520
vul hem in zoals je wilt.

1332
00:53:58.940 --> 00:54:01.180
Dat is wel een moeilijke vraag, want ik heb dat

1333
00:54:01.180 --> 00:54:02.820
algemeen sowieso niet zo snel.

1334
00:54:03.420 --> 00:54:05.360
Nee, maar ik bedoel,

1335
00:54:05.620 --> 00:54:07.320
tot net was wel gaaf, vooral

1336
00:54:07.320 --> 00:54:09.320
toen het nieuw was. We zijn nu inmiddels bijna

1337
00:54:09.320 --> 00:54:11.260
20 jaar verder volgens mij. Eind

1338
00:54:11.260 --> 00:54:13.220
2000 is de Nederland geïntroduceerd, het is

1339
00:54:13.220 --> 00:54:15.500
nu 2019, dat heeft zich wel bewezen.

1340
00:54:15.940 --> 00:54:17.320
De hele JavaScript wereld,

1341
00:54:17.460 --> 00:54:19.060
had ik dat verwacht? Nee, niet.

1342
00:54:19.360 --> 00:54:21.620
HTML, dat is al heel lang succes.

1343
00:54:21.840 --> 00:54:23.360
Ik ben daar niet zo goed in het algemeen.

1344
00:54:24.360 --> 00:54:25.620
Op dat vak volg ik

1345
00:54:25.620 --> 00:54:26.480
een beetje de mensen.

1346
00:54:27.820 --> 00:54:31.160
Ik zit niet in

1347
00:54:31.160 --> 00:54:33.340
een beetje erachter. Als ik iemand wat dingen erover hoorde,

1348
00:54:33.540 --> 00:54:35.040
ga ik er wel naar kijken of het iets mee kan.

1349
00:54:35.320 --> 00:54:37.220
Maar ik kijk ook altijd naar vanuit een pragmatische

1350
00:54:37.220 --> 00:54:39.220
insticht. Kan ik er echt iets mee? Ik vind bijvoorbeeld

1351
00:54:39.220 --> 00:54:41.140
Git, daar heb je al een hele sessie over

1352
00:54:41.140 --> 00:54:43.260
gehad, vind ik echt wel een disruptive technology.

1353
00:54:43.540 --> 00:54:45.060
Dat verandert, het is niet alleen maar

1354
00:54:45.060 --> 00:54:47.060
een source control systeem, het verandert gewoon de

1355
00:54:47.060 --> 00:54:49.140
manier hoe je software bouwt. Zeker in combinatie met

1356
00:54:49.140 --> 00:54:51.280
GitHub, het verandert echt hoe je je architectuur neerzet.

1357
00:54:51.400 --> 00:54:53.060
Het wordt veel makkelijk om dingen op te splitsen,

1358
00:54:53.060 --> 00:54:55.020
hoe je teams dan er abstract aan

1359
00:54:55.020 --> 00:54:56.940
sluit. Conway's Law gaat daar ook wel een beetje

1360
00:54:56.940 --> 00:54:59.160
over, maar dat is wel een dingetje wat ik vrij

1361
00:54:59.940 --> 00:55:01.660
speciaal vond en in het .NET space

1362
00:55:01.660 --> 00:55:03.080
hebben we Owen. Het feit dat je

1363
00:55:03.620 --> 00:55:06.020
je HTTP APIs op zo'n

1364
00:55:06.020 --> 00:55:07.400
manier kunt bouwen, dat je componenten kan

1365
00:55:07.400 --> 00:55:09.180
bouwen, die eigenlijk agnostisch zijn, die niet weten

1366
00:55:09.180 --> 00:55:11.380
hoe ze gehost worden. Ik weet eigenlijk niet zo goed,

1367
00:55:11.400 --> 00:55:13.220
ik heb daar nog niet echt een alternatief van gezien in

1368
00:55:13.220 --> 00:55:15.120
andere platformen, maar dat vond ik echt wel een technologie

1369
00:55:16.200 --> 00:55:17.260
die componenten gebaseerd

1370
00:55:17.260 --> 00:55:19.180
ontwikkelen, wat natuurlijk 30 jaar geleden ook een ding

1371
00:55:19.180 --> 00:55:21.400
was, wel heeft geholpen, maar voor de rest

1372
00:55:21.400 --> 00:55:22.960
ja, het komt en gaat.

1373
00:55:23.100 --> 00:55:25.240
Ik heb weinig met AI, ik heb weinig met

1374
00:55:26.020 --> 00:55:27.300
augmented reality en dat soort aspecten.

1375
00:55:28.320 --> 00:55:29.580
Heb ik te weinig toegevoegd,

1376
00:55:29.580 --> 00:55:31.460
zie ik te weinig pragmatiek in, kan ik niks mee

1377
00:55:31.460 --> 00:55:33.360
overdag? Nee, dat snap ik wel.

1378
00:55:33.940 --> 00:55:36.140
Nee, er is niet echt iets waar je op dit moment

1379
00:55:36.140 --> 00:55:36.860
warm vallen.

1380
00:55:37.560 --> 00:55:38.220
Ja, precies.

1381
00:55:39.560 --> 00:55:41.340
Ik zit heel vaak, zeg maar,

1382
00:55:41.480 --> 00:55:42.860
dat ik heel enthousiast ergens over word,

1383
00:55:43.460 --> 00:55:44.940
maar ik herken wel wat jij zegt,

1384
00:55:45.100 --> 00:55:46.960
dat je niet per se, hoe zeg je dat,

1385
00:55:47.100 --> 00:55:49.180
heel erg gehyped wordt door een technologie, want je denkt

1386
00:55:49.180 --> 00:55:51.400
nou, laat me eerst even kijken

1387
00:55:51.400 --> 00:55:53.380
als we over dat piekmoment zijn,

1388
00:55:53.840 --> 00:55:55.200
wat gaat het nu doen? En dan hou

1389
00:55:55.200 --> 00:55:57.400
ik het wel in de gaten, want ik wil er wel heel graag

1390
00:55:57.400 --> 00:55:59.340
even van proeven, dat ik een beetje een mening

1391
00:55:59.720 --> 00:56:01.480
heb, maar dan is het niet meteen

1392
00:56:01.480 --> 00:56:03.160
voor mij dat alles op die manier,

1393
00:56:03.680 --> 00:56:05.020
dat had ik bijvoorbeeld, nou die had

1394
00:56:05.020 --> 00:56:07.300
Dokken bijvoorbeeld, Dokken containers, was ik heel

1395
00:56:07.300 --> 00:56:09.280
enthousiast over, want ik had niet meteen zoiets van nou, we gaan

1396
00:56:09.280 --> 00:56:11.220
alles met Dokken containers doen, maar ik denk, dat

1397
00:56:11.220 --> 00:56:13.300
is wel iets waar heel veel potentie

1398
00:56:13.300 --> 00:56:15.440
in zit. Nou, het blijkt nu ook wel dat het echt wel

1399
00:56:15.440 --> 00:56:17.300
heel populair is, dat betekent niet dat ik een soort van

1400
00:56:17.300 --> 00:56:18.120
gelijk heb gehad, maar ja,

1401
00:56:18.800 --> 00:56:21.120
nu merk je wel dat dat wel, echt wel

1402
00:56:21.820 --> 00:56:22.920
alle platformen doen het, zeg maar.

1403
00:56:22.920 --> 00:56:24.280
Maar het is nooit een silver bullet.

1404
00:56:25.400 --> 00:56:27.100
Het werkt net vaak niet lekker

1405
00:56:27.560 --> 00:56:29.020
genoeg, want je introduceert weer nieuwe

1406
00:56:29.380 --> 00:56:30.860
problemen, het is met alles, weet je wel,

1407
00:56:30.920 --> 00:56:33.100
een paar jaar geleden, ik weet nog exact van

1408
00:56:33.100 --> 00:56:35.040
voor mij was het in 2012, dat ze op

1409
00:56:35.040 --> 00:56:37.140
Qcon, dat voor het eerst over microservices

1410
00:56:37.140 --> 00:56:37.860
werd gesproken,

1411
00:56:38.940 --> 00:56:41.140
dat was me toch een partij, een hype. Ja, maar daar was ook wel

1412
00:56:41.140 --> 00:56:42.860
heel veel backlash, zeg maar van,

1413
00:56:43.220 --> 00:56:45.160
want wie heeft die term, Martin Fowler

1414
00:56:45.160 --> 00:56:46.620
heeft hem toch? Nou, dat weet ik niet,

1415
00:56:46.780 --> 00:56:48.920
volgens mij was dat een andere collega van ThoughtWorks.

1416
00:56:49.700 --> 00:56:51.080
Die heeft het een beetje gecoind

1417
00:56:51.080 --> 00:56:53.260
en die zegt ook, die heb ik gesproken vorig jaar

1418
00:56:53.260 --> 00:56:55.140
of dit jaar zelfs, op een conferentie, die zei ook

1419
00:56:55.140 --> 00:56:57.160
van het is compleet overhyped, weet je, dit

1420
00:56:57.160 --> 00:56:59.340
had ik niet bedoeld. Het is ook weer gewoon een patron

1421
00:56:59.340 --> 00:57:01.100
en het lost een specifiek probleem op

1422
00:57:01.100 --> 00:57:03.240
en je moet beseffen dat het ook weer nadelen

1423
00:57:03.240 --> 00:57:05.300
heeft. Toen al op die conferentie,

1424
00:57:05.300 --> 00:57:07.260
toen dat geïntroduceerd werd, had iedereen het al over

1425
00:57:07.260 --> 00:57:09.600
ja, maar ja, probeer maar eens een monolithe.

1426
00:57:09.780 --> 00:57:11.080
Het beheren van een monolithe is vaak

1427
00:57:11.080 --> 00:57:13.520
al voor veel bedrijven een probleem. Deployen

1428
00:57:13.520 --> 00:57:15.200
van een monolithe op een goede

1429
00:57:15.200 --> 00:57:17.340
manier is vaak al een probleem, het beheren ervan,

1430
00:57:17.480 --> 00:57:19.280
ga je nou je complexe monolithe

1431
00:57:19.280 --> 00:57:21.080
opsplitsen in 100 verschillende services,

1432
00:57:21.480 --> 00:57:23.260
dan ben je eigenlijk 100 kleine monolithes aan het

1433
00:57:23.260 --> 00:57:25.080
beheren. Dat kan toch helemaal niet?

1434
00:57:25.200 --> 00:57:27.280
Als je dat eerst al niet van elkaar krijgt,

1435
00:57:27.320 --> 00:57:29.140
je probeert één kind op te voeden, als dat niet lukt,

1436
00:57:29.300 --> 00:57:30.580
dan kun je wel vier kinderen nemen,

1437
00:57:30.900 --> 00:57:32.320
dus verder geen sneer naar...

1438
00:57:33.720 --> 00:57:35.740
Maar je moet eerst

1439
00:57:35.740 --> 00:57:37.360
het probleem onder de knie

1440
00:57:37.360 --> 00:57:38.540
hebben voordat je verder gaat ermee.

1441
00:57:38.900 --> 00:57:41.040
Dat vind ik wel een goed punt. Het is nu ook inmiddels

1442
00:57:41.040 --> 00:57:42.440
zo, dat was echt,

1443
00:57:42.820 --> 00:57:44.740
ik weet niet wanneer ongeveer microservices

1444
00:57:44.740 --> 00:57:46.440
best wel heel populair begonnen,

1445
00:57:46.440 --> 00:57:47.820
misschien drie, vier jaar geleden,

1446
00:57:47.880 --> 00:57:49.400
dat het een enorme hype was.

1447
00:57:50.060 --> 00:57:51.520
Alles moet een microservice worden,

1448
00:57:51.900 --> 00:57:53.100
en het was echt vies als iemand zei,

1449
00:57:53.400 --> 00:57:55.960
we gaan gewoon alles in één systeem stoppen,

1450
00:57:56.200 --> 00:57:58.200
en dat kunnen we, en dan zijn we meteen projectief

1451
00:57:58.200 --> 00:57:58.960
en dan gaat het gewoon werken.

1452
00:57:59.600 --> 00:58:03.000
En hoe ga je dat dan in de cloud doen,

1453
00:58:03.520 --> 00:58:04.520
en als we willen schalen,

1454
00:58:04.660 --> 00:58:06.320
blablabla, terwijl sommige projecten

1455
00:58:06.320 --> 00:58:07.740
hebben misschien helemaal geen schalingsprobleem,

1456
00:58:07.840 --> 00:58:09.840
want dat is afdoen om alles in één systeem

1457
00:58:09.840 --> 00:58:11.560
te stoppen, één database,

1458
00:58:12.220 --> 00:58:13.420
en voortal niet zo spannend te zijn.

1459
00:58:13.420 --> 00:58:15.640
Dus het is, ja, het is altijd

1460
00:58:15.640 --> 00:58:17.360
it depends, de architect zal altijd zeggen

1461
00:58:17.360 --> 00:58:18.800
it depends, en dat is ook echt zo,

1462
00:58:18.920 --> 00:58:21.160
maar ja, ik vind het ook wel leuk om een beetje

1463
00:58:21.160 --> 00:58:22.720
die stammerstrijd, of een beetje

1464
00:58:22.720 --> 00:58:25.000
mij is beter dan jou, dat vind ik wel leuk,

1465
00:58:25.020 --> 00:58:26.580
maar het moet wel een doel dienen, zeg maar.

1466
00:58:26.620 --> 00:58:28.640
Als je bij een opdrachtgever bent, of je moet een project doen,

1467
00:58:29.000 --> 00:58:31.160
dan moet je niet die stammerstrijd gaan,

1468
00:58:31.160 --> 00:58:32.760
nou dan moet je gewoon echt kijken welke oplossing

1469
00:58:32.760 --> 00:58:35.080
het beste past bij dat vraagstof.

1470
00:58:35.820 --> 00:58:37.840
Zijn er nou ook veel developers die

1471
00:58:37.840 --> 00:58:39.220
echt alleen maar

1472
00:58:39.220 --> 00:58:41.280
in projecten die microservices hebben

1473
00:58:41.280 --> 00:58:43.480
zouden willen zitten, die dan ook echt

1474
00:58:43.480 --> 00:58:45.360
nee zeggen tegen, weet je wel,

1475
00:58:45.700 --> 00:58:47.020
hele ingewikkelde problemen?

1476
00:58:47.600 --> 00:58:49.060
Ja, dat geloof ik zeker wel. Als ik

1477
00:58:49.060 --> 00:58:51.200
zie bij de projecten waar ik met event sourcing

1478
00:58:51.200 --> 00:58:53.440
bezig geweest ben, dan werd event sourcing

1479
00:58:53.440 --> 00:58:55.000
echt een magneet.

1480
00:58:55.140 --> 00:58:57.460
Er zijn best wat mensen die op die projecten gekomen zijn

1481
00:58:57.460 --> 00:58:59.440
die echt afkomen over het feit

1482
00:58:59.440 --> 00:59:01.220
dat we event sourcing gebruiken, en dat zal met

1483
00:59:01.220 --> 00:59:03.440
microservices precies zo zijn. Dat is eigenlijk met elke

1484
00:59:03.440 --> 00:59:05.100
technologie wel. Je hebt nu mensen van

1485
00:59:05.500 --> 00:59:07.460
engelen project, ik ga geen engelen mee doen hoor,

1486
00:59:07.820 --> 00:59:09.180
het is react, weet je wel,

1487
00:59:09.180 --> 00:59:11.140
of volgende generatie is van

1488
00:59:11.140 --> 00:59:12.940
react, nee joh, ik ga

1489
00:59:12.940 --> 00:59:15.140
Vue.js doen, dan blijf je toch houden.

1490
00:59:15.200 --> 00:59:17.100
Maar dat zijn wel de mensen die misschien, die

1491
00:59:17.100 --> 00:59:19.340
willen gewoon iets nieuws doen, iets

1492
00:59:19.340 --> 00:59:21.520
sketchy, maar wat ik wel merk, is

1493
00:59:21.520 --> 00:59:23.180
zeker als ik kijk naar mezelf,

1494
00:59:23.300 --> 00:59:25.060
dat je daar toch wat meer immuun voor wordt.

1495
00:59:25.200 --> 00:59:27.100
Je zou kunnen zeggen dat je misschien wat

1496
00:59:27.100 --> 00:59:29.120
minder flexibel bent, zou je ook kunnen zien,

1497
00:59:29.180 --> 00:59:30.960
maar ik heb al heel vaak zo de neiging van

1498
00:59:30.960 --> 00:59:32.740
ja, het zal wel die nieuwe technologie,

1499
00:59:33.100 --> 00:59:35.280
er zitten gewoon haken en ogen aan, dat kan niet anders.

1500
00:59:35.520 --> 00:59:36.900
Het gevaar ervan is dat je misschien

1501
00:59:38.120 --> 00:59:39.620
die innovatieve krachten kwijtraakt.

1502
00:59:39.700 --> 00:59:41.260
Ik ben geen strategisch architect.

1503
00:59:41.460 --> 00:59:43.120
Ik ben niet van, oh, we gaan op de lange

1504
00:59:43.120 --> 00:59:44.900
termijn dit doen. Ik ben meer van, oké, welk

1505
00:59:44.900 --> 00:59:47.360
probleem hebben we nu? Wat zijn de mogelijkheden, de oplossingsrichtingen

1506
00:59:47.360 --> 00:59:49.180
die we op dit moment hebben? Oké, laten we de volgende

1507
00:59:49.180 --> 00:59:50.300
stap nemen. Ja, precies.

1508
00:59:51.520 --> 00:59:52.900
Dat kan namelijk een beperking hebben.

1509
00:59:52.980 --> 00:59:54.900
Het kan zijn dat je daardoor minder risico

1510
00:59:54.900 --> 00:59:57.160
wilt nemen, waardoor je dus een keuze

1511
00:59:57.160 --> 00:59:59.020
iets heel innovatiefs niet voor

1512
00:59:59.020 --> 01:00:00.860
openstaat, omdat je iets hebt van ja, het is te veel

1513
01:00:00.860 --> 01:00:03.120
risico, geen inzichten, terwijl je misschien af en toe

1514
01:00:03.120 --> 01:00:05.160
wel eens een keertje heel erg out of the box moet denken.

1515
01:00:05.780 --> 01:00:07.580
En dan heb je die jonge honden misschien wel

1516
01:00:07.580 --> 01:00:09.260
nodig, af en toe eens iets heel...

1517
01:00:09.780 --> 01:00:11.580
Ja, dat is zeker zo. Je herkent

1518
01:00:11.580 --> 01:00:13.480
best wel dingen, zeg maar, als er een jonge

1519
01:00:13.480 --> 01:00:15.420
ontwikkelaar in, die is heel fris, of die doet

1520
01:00:15.420 --> 01:00:17.380
waarom niet, en die gaat je challengeen. Dat vind

1521
01:00:17.380 --> 01:00:19.540
ik op zich wel gaaf. Dat houd je wel scherp,

1522
01:00:19.580 --> 01:00:21.600
zeg maar, want anders word je echt een beetje

1523
01:00:21.600 --> 01:00:23.380
een Norse ouwe man.

1524
01:00:23.660 --> 01:00:25.080
En ik vind alles stom. Als ze

1525
01:00:25.080 --> 01:00:26.840
uiteindelijk maar doen wat ik zeg. Ja,

1526
01:00:27.140 --> 01:00:29.340
maar dat is sowieso wel een ding. Ik bedoel, thuis

1527
01:00:29.340 --> 01:00:30.620
werkt dat niet. Nee.

1528
01:00:30.820 --> 01:00:33.620
Dus op m'n werk doe je gewoon

1529
01:00:33.620 --> 01:00:35.900
nu dat. Ik heb maar één baas, die zit thuis.

1530
01:00:36.060 --> 01:00:37.640
Ja, precies. Nou ja, dat

1531
01:00:37.640 --> 01:00:39.500
en dan nog de kinderen. Oh ja.

1532
01:00:39.580 --> 01:00:41.560
En dan heb ik nog twee katten, dus ik heb gewoon echt niks,

1533
01:00:41.660 --> 01:00:43.600
jongen. Niks te zeggen. Dus echt niks. En op het werk

1534
01:00:43.600 --> 01:00:45.240
heeft hij ook al geen drol te zeggen, dus...

1535
01:00:45.240 --> 01:00:47.600
Nee joh, dat is echt gewoon zo frustrerend, dus ik denk

1536
01:00:47.600 --> 01:00:49.380
nou, weet je wat? Maar dit is wel een herkenbaar dingetje,

1537
01:00:49.480 --> 01:00:51.560
want als je event source noemt

1538
01:00:51.560 --> 01:00:53.460
en je praat met iemand die al 40 jaar aan het vak

1539
01:00:53.460 --> 01:00:55.600
zit, zeg je, ah, dat is gewoon event-gedreven

1540
01:00:57.000 --> 01:00:57.740
architecturen, what's new

1541
01:00:57.740 --> 01:00:59.440
in the game. Weet je, als je

1542
01:00:59.440 --> 01:01:01.980
over objectorienteerd programmeren, over microservices,

1543
01:01:01.980 --> 01:01:04.100
dan komt er iemand die zegt van, ja, maar

1544
01:01:04.100 --> 01:01:06.000
in Erlang of, weet je wel,

1545
01:01:06.940 --> 01:01:07.300
Smalltalk.

1546
01:01:08.360 --> 01:01:10.180
Je ziet heel veel conferenties, dan komt er

1547
01:01:10.180 --> 01:01:12.220
een of ander professor die in Smalltalk

1548
01:01:12.220 --> 01:01:14.100
en die gaat dan dingen vertellen en dan denk je, frek,

1549
01:01:14.220 --> 01:01:15.980
dat zijn de dingen die we nu aan het oplossen zijn, die hebben ze

1550
01:01:15.980 --> 01:01:18.060
Erlang een keer opgelost. History

1551
01:01:18.060 --> 01:01:19.800
repeats itself. Dat is wat

1552
01:01:19.800 --> 01:01:22.000
mij ook

1553
01:01:22.000 --> 01:01:24.100
inderdaad opvalt met elke ontwikkeld taal

1554
01:01:24.100 --> 01:01:26.100
die nieuw kon. Dan beginnen ze

1555
01:01:26.100 --> 01:01:27.780
weer met de beginners mistakes

1556
01:01:27.780 --> 01:01:29.620
en dan, voordat je het weet, zitten we in de shit

1557
01:01:29.620 --> 01:01:31.640
en dan denken we aan,

1558
01:01:31.820 --> 01:01:33.620
oh ja, weet je nog, Smalltalk, die had dat toen

1559
01:01:33.620 --> 01:01:35.660
opgelost. Nou ja, dat zie je met JavaScript.

1560
01:01:36.380 --> 01:01:38.020
Iedereen is enthousiast over JavaScript.

1561
01:01:38.260 --> 01:01:39.720
JavaScript, want je kunt makkelijk en snel

1562
01:01:39.720 --> 01:01:42.020
code aanpassen, maar als je een beetje een groot systeem mee

1563
01:01:42.020 --> 01:01:43.620
bouwt, dan krijg je precies dezelfde uitdagingen.

1564
01:01:44.740 --> 01:01:45.920
En daarom hebben we nu TypeScript,

1565
01:01:45.980 --> 01:01:47.720
dan weet ik van allemaal, om toch wel

1566
01:01:47.720 --> 01:01:49.560
meer controle te krijgen over de kwaliteit

1567
01:01:49.560 --> 01:01:51.740
van de code. Maar ik denk

1568
01:01:51.740 --> 01:01:53.700
wel dat we dat nodig hebben, anders blijven

1569
01:01:53.700 --> 01:01:55.220
we niet innoveren. Tuurlijk.

1570
01:01:56.400 --> 01:01:57.740
Dus ja, ik

1571
01:01:57.740 --> 01:01:58.900
vind het een beetje, wat is het?

1572
01:01:58.920 --> 01:02:01.000
Peak of inflated expectations,

1573
01:02:01.440 --> 01:02:02.600
is dat wat het is?

1574
01:02:03.260 --> 01:02:05.060
Ja, dat hoort er wel een beetje bij,

1575
01:02:05.180 --> 01:02:07.220
natuurlijk. Dus het begint ineens een hype te worden

1576
01:02:07.220 --> 01:02:09.180
en op een gegeven moment gaan we allemaal problemen ontdekken

1577
01:02:09.180 --> 01:02:10.300
en dan wordt het niet meer populair.

1578
01:02:10.440 --> 01:02:13.080
En dan op een gegeven moment, oh ja, shit, we hebben toch die

1579
01:02:13.080 --> 01:02:14.900
legacy gebouwd. We moeten er toch wel

1580
01:02:14.900 --> 01:02:17.420
wat mee. En dan wordt het weer stabiel,

1581
01:02:17.520 --> 01:02:19.100
als het ware. En dan word je weer oud.

1582
01:02:19.420 --> 01:02:21.240
Dan zijn wij de oude, grijze,

1583
01:02:21.860 --> 01:02:23.340
Javana of dotnetters.

1584
01:02:23.360 --> 01:02:25.160
Daar zijn we al hoor. Ja, daarom.

1585
01:02:25.160 --> 01:02:27.620
En dan, ja, dan zitten we huilend

1586
01:02:27.620 --> 01:02:29.180
op de bank en dan zien we al die

1587
01:02:29.180 --> 01:02:30.900
jonkies sneller gaan dan ons.

1588
01:02:32.100 --> 01:02:33.380
Dus ja, het is inderdaad wat je zegt,

1589
01:02:33.460 --> 01:02:35.080
history repeats. Absoluut.

1590
01:02:35.120 --> 01:02:37.320
Ja, dat klopt wel. Ja, dat is wel herkenbaar.

1591
01:02:37.460 --> 01:02:38.960
Maar goed, ja, dat is ervaring. Je wordt

1592
01:02:38.960 --> 01:02:40.600
met een oude rond en dan...

1593
01:02:40.600 --> 01:02:43.140
Ik had een, ik denk, een

1594
01:02:43.140 --> 01:02:45.080
interessant ding, zeg maar. Stel dat je nu

1595
01:02:46.340 --> 01:02:47.180
stopt bij je

1596
01:02:47.840 --> 01:02:48.680
huidige opdracht of

1597
01:02:49.400 --> 01:02:51.140
whatever en je zou nu een

1598
01:02:51.140 --> 01:02:52.620
nieuw project mogen maken.

1599
01:02:53.580 --> 01:02:55.220
Maakt het wel uit. Gaan we nu weer die KFC

1600
01:02:55.220 --> 01:02:56.120
erbij halen? Nee.

1601
01:02:57.620 --> 01:02:58.880
Een webshop voor KFC

1602
01:02:59.700 --> 01:03:00.700
en we gaan dus weer

1603
01:03:00.700 --> 01:03:03.200
kip verkopen, want dat is altijd herkenbaar voor ons.

1604
01:03:04.120 --> 01:03:05.000
Maakt me niet uit.

1605
01:03:05.060 --> 01:03:07.640
Cloud of on-premise, verzinbaar. Maar

1606
01:03:07.640 --> 01:03:09.000
zou je dan naar een andere

1607
01:03:09.000 --> 01:03:10.260
platform, en het mag dus niet...

1608
01:03:10.260 --> 01:03:12.660
Welk platform zou je kiezen? Het mag dus niet .net C-sharp zijn.

1609
01:03:13.020 --> 01:03:15.060
Waar zou je dan naar kijken? Ja, dat is even...

1610
01:03:15.060 --> 01:03:16.880
Oh, wow. Anders zou het te makkelijk

1611
01:03:16.880 --> 01:03:19.240
zijn, want ja, dan doe ik F-sharp of...

1612
01:03:19.240 --> 01:03:20.640
Zo. Ja, lastig, hè?

1613
01:03:20.640 --> 01:03:22.620
Als het echt niet in .net mag, dan

1614
01:03:22.620 --> 01:03:24.740
zal ik het misschien dan

1615
01:03:24.740 --> 01:03:26.600
een JavaScript, of een TypeScript

1616
01:03:26.600 --> 01:03:28.480
met Node.js doen. Oh ja, oké.

1617
01:03:28.520 --> 01:03:30.800
Dus een backend Node.js en dan front-end

1618
01:03:30.800 --> 01:03:32.820
ja, whatever. TypeScript. Ja.

1619
01:03:33.120 --> 01:03:34.500
Ja, oké. Dat is eigenlijk een soort van

1620
01:03:34.500 --> 01:03:36.700
ja, blijf dicht bij je huis, want

1621
01:03:36.700 --> 01:03:38.560
ja, TypeScript is... Dan lijkt het heel

1622
01:03:38.560 --> 01:03:40.580
weer op C-sharp. Ah, je speelt een beetje vals.

1623
01:03:41.040 --> 01:03:42.160
Ja, dat is wel... Dat denk ik wel.

1624
01:03:43.120 --> 01:03:44.500
Om eerlijk te zijn kijk ik eigenlijk niet

1625
01:03:44.500 --> 01:03:46.600
naar andere talen, simpelweg omdat mijn vakgebied

1626
01:03:46.600 --> 01:03:48.600
al zo omvangrijk is geworden over de jaren

1627
01:03:48.600 --> 01:03:50.660
dat ik mijn handen vol heb om dat bij te houden.

1628
01:03:51.340 --> 01:03:52.800
Ja, ik denk dat ik toch wel een beetje in die hoek

1629
01:03:52.800 --> 01:03:55.000
blijf. Java, ja.

1630
01:03:55.600 --> 01:03:56.620
Java staat ook wel een beetje

1631
01:03:56.620 --> 01:03:58.860
stil. Dus dan toch liever

1632
01:03:58.860 --> 01:04:00.600
ECMAScript slash TypeScript of

1633
01:04:00.600 --> 01:04:02.520
iets dergelijks. Ja, cool.

1634
01:04:02.980 --> 01:04:03.620
Of Pearl.

1635
01:04:05.040 --> 01:04:06.520
Ja, dat zou...

1636
01:04:06.520 --> 01:04:08.500
Dat is wel een goeie... Ik vraag me af hoeveel mensen

1637
01:04:08.500 --> 01:04:10.420
er nu, zeg maar, nu projecten zouden doen met

1638
01:04:10.420 --> 01:04:12.260
Pearl, want volgens mij is dat echt wel een beetje

1639
01:04:12.980 --> 01:04:14.800
echt weg, zeg maar. Ja, dat denk ik het ook

1640
01:04:14.800 --> 01:04:16.740
wel. PowerShell kan dat ook.

1641
01:04:18.120 --> 01:04:18.840
Nee, PowerShell.

1642
01:04:18.920 --> 01:04:20.700
Ja, trouwens, ik ben geen vriend met PowerShell.

1643
01:04:21.440 --> 01:04:22.640
Als je wil kan het. Ja,

1644
01:04:22.640 --> 01:04:24.380
maar dat is het. Als je wil kan alles.

1645
01:04:24.740 --> 01:04:26.600
Ja, dat zie je. Mensen schrijven

1646
01:04:26.600 --> 01:04:28.600
in de meest rare talen dingetjes. Maar ja,

1647
01:04:28.980 --> 01:04:30.760
ik persoonlijk, ik vind het... Ik wil

1648
01:04:30.760 --> 01:04:32.720
heel graag ieder jaar. Dat is zo'n

1649
01:04:32.720 --> 01:04:34.820
ideaal dat je denkt van, oké, ik ga ieder jaar

1650
01:04:34.820 --> 01:04:36.180
probeer ik een nieuwe taal te leren. Nou ja,

1651
01:04:36.380 --> 01:04:38.860
dat heb ik losgelaten. Dat zei ik. Programmer

1652
01:04:38.860 --> 01:04:40.860
aanpakken. Ja, maar dat lukt me gewoon niet,

1653
01:04:41.120 --> 01:04:42.920
want vorige keer zei ik ook al

1654
01:04:42.920 --> 01:04:44.640
van ja, heb ik hier dat niet rust,

1655
01:04:44.640 --> 01:04:46.700
maar het go-book, zeg maar, opengeslagen

1656
01:04:47.180 --> 01:04:48.820
en na vijf paren is het boek

1657
01:04:48.820 --> 01:04:50.080
weer dichtgeslagen. Dus ik had echt

1658
01:04:51.800 --> 01:04:52.860
het werkt niet meer.

1659
01:04:53.200 --> 01:04:54.900
Voorheen, ja, toen ik wat jonger was,

1660
01:04:54.920 --> 01:04:56.920
toen dacht ik, nou leuk, pak ik weer een ander taaltje

1661
01:04:56.920 --> 01:04:58.780
op, even kijken hoe dat werkt. Nou, er zitten best wel

1662
01:04:58.780 --> 01:05:00.740
leuke aspecten in. Dan blijf je wel bij

1663
01:05:00.740 --> 01:05:02.940
C-Sharp. Maar je hebt weleens iets van, oh ja, er zijn een aantal concepten

1664
01:05:02.940 --> 01:05:04.800
die in die andere talen zitten, die best wel interessant

1665
01:05:04.800 --> 01:05:06.640
kunnen zijn voor C-Sharp of voor anderen.

1666
01:05:07.020 --> 01:05:08.880
Dus om een beetje bij de buren te kijken

1667
01:05:08.880 --> 01:05:10.880
en te zien of daar gewoon

1668
01:05:10.880 --> 01:05:12.780
nuttige zaken in zijn.

1669
01:05:12.780 --> 01:05:15.180
Dat vind ik op zich wel tof. Maar dat wil niet

1670
01:05:15.180 --> 01:05:17.040
zeggen dat ik nou fullblown een andere platform

1671
01:05:17.040 --> 01:05:18.880
zou kiezen. Hoewel ik go spreek

1672
01:05:18.880 --> 01:05:20.920
me het best nog steeds wel aan. Elixer,

1673
01:05:20.960 --> 01:05:22.720
maar dat is echt maar zo'n soort van

1674
01:05:22.720 --> 01:05:24.900
Erlang-achtige, of gebaseerd op Erlang-taaltje

1675
01:05:25.360 --> 01:05:26.820
leek me ook wel gaaf. Daar heb ik ook heel

1676
01:05:26.820 --> 01:05:28.840
veel leuke dingen van gezien. Maar ja, ik heb gewoon geen tijd

1677
01:05:28.840 --> 01:05:31.060
meer om alles te doen. Ik denk dat als ik

1678
01:05:31.060 --> 01:05:32.880
niet die vier kinderen zou hebben, niet getrouwd

1679
01:05:32.880 --> 01:05:34.900
en lekker gewoon de lange nachten

1680
01:05:34.900 --> 01:05:36.820
doorzak proberen, dan zou ik het zeker wel

1681
01:05:36.820 --> 01:05:38.740
in mijn eigen tijd nog wat andere dingetjes doen. Maar

1682
01:05:38.740 --> 01:05:40.180
dat is voor mij niet meer echt.

1683
01:05:40.180 --> 01:05:42.320
Weet je, het is welk probleem los je dan op?

1684
01:05:42.500 --> 01:05:44.140
Weet je, het is een mooi

1685
01:05:44.140 --> 01:05:45.920
constraint, mag geen .NET C-Sharp zijn,

1686
01:05:46.060 --> 01:05:48.480
maar welk probleem los je op als je een ander platform kiest?

1687
01:05:49.120 --> 01:05:50.180
Nee, dat is ook niet eens. Nee,

1688
01:05:50.200 --> 01:05:52.440
in principe, ik denk dat je, dat zei je

1689
01:05:52.440 --> 01:05:53.800
vroeger, was er altijd een beetje zo'n battle

1690
01:05:53.800 --> 01:05:56.340
tussen Java en .NET. Wie is nou beter?

1691
01:05:56.420 --> 01:05:58.380
Ik zei, ik denk dat alle beide

1692
01:05:58.380 --> 01:06:00.480
kanten, dat 95% van je projecten

1693
01:06:00.480 --> 01:06:02.480
kun je met allebei oplossen.

1694
01:06:02.680 --> 01:06:04.640
En dan zullen 5% van de use-case

1695
01:06:04.640 --> 01:06:06.320
die zullen in Java echt veel beter

1696
01:06:06.320 --> 01:06:08.040
werken, want er is iets beschikbaar

1697
01:06:08.040 --> 01:06:10.300
in Java dat niet in .NET zit. En in .NET

1698
01:06:10.300 --> 01:06:12.060
kan zit er ook iets wat, zeg maar, niet

1699
01:06:12.060 --> 01:06:13.980
met Java kan. Dus in die zin had ik

1700
01:06:13.980 --> 01:06:15.800
altijd zoiets van ja, flip over coin.

1701
01:06:16.220 --> 01:06:17.800
Goed, ik ben geen Java-man, zeg maar.

1702
01:06:18.240 --> 01:06:19.880
Dus het is een beetje een strijd,

1703
01:06:19.940 --> 01:06:22.000
ik ben voor Feyenoord, iemand is voor Ajax. En dat is

1704
01:06:22.000 --> 01:06:24.540
het een beetje. Is dat helemaal op ratio gebaseerd?

1705
01:06:24.680 --> 01:06:25.860
Nee. Maar je kiest voor iets

1706
01:06:25.860 --> 01:06:27.260
en daar ga je voor vechten, zeg maar.

1707
01:06:27.900 --> 01:06:29.660
Weet je, dat is ook het punt. Het is niet,

1708
01:06:29.940 --> 01:06:31.700
de platform aan zich is niet het belangrijkste.

1709
01:06:31.900 --> 01:06:33.780
Kijk, op het moment dat je als bedrijf kiest voor een bepaalde

1710
01:06:33.780 --> 01:06:35.920
technologie of een platform stack, dan

1711
01:06:35.920 --> 01:06:38.020
speel je het ook mee van, wat voor mensen kun je daarvoor

1712
01:06:38.020 --> 01:06:40.520
krijgen? Wat voor mensen heb je al aan boord?

1713
01:06:40.880 --> 01:06:42.280
Hoeveel kennis is er beschikbaar?

1714
01:06:42.680 --> 01:06:44.220
Kijk, toen Java in de beginfase

1715
01:06:44.220 --> 01:06:45.880
was Java best wel

1716
01:06:45.880 --> 01:06:47.900
groot, ook in de open source wereld.

1717
01:06:48.220 --> 01:06:50.100
Heel veel van de open source libraries die

1718
01:06:50.100 --> 01:06:51.580
in .net nu populair zijn,

1719
01:06:52.000 --> 01:06:53.860
die komen oorspronkelijk uit de Java wereld.

1720
01:06:54.220 --> 01:06:56.400
En unit was oorspronkelijk JUnit.

1721
01:06:56.580 --> 01:06:58.000
En hibernate was hibernate.

1722
01:06:58.040 --> 01:07:00.080
Dat waren toen toch wel best wel significante dingen.

1723
01:07:00.840 --> 01:07:01.960
Inmiddels is .net denk ik

1724
01:07:01.960 --> 01:07:04.020
al wat breder geworden. En zeker nu met

1725
01:07:04.020 --> 01:07:05.780
dat ze helemaal open standaarden zijn.

1726
01:07:06.040 --> 01:07:07.920
Dat ze over alle platformen heen met .net core.

1727
01:07:08.500 --> 01:07:09.840
Het is nu zo mainstream.

1728
01:07:10.000 --> 01:07:12.520
En de taal anzicht heeft zich zo geontwikkeld.

1729
01:07:12.760 --> 01:07:14.440
Met AC gewoon programmeren.

1730
01:07:14.920 --> 01:07:16.020
Lambda's en dat soort aspecten

1731
01:07:16.020 --> 01:07:18.020
die in Java jaren later

1732
01:07:18.020 --> 01:07:20.160
pas kwamen. En ja, ik heb niet zoveel

1733
01:07:20.160 --> 01:07:22.140
met Oracle. Ik heb het idee dat alles wat Oracle

1734
01:07:22.140 --> 01:07:23.740
bouwt uiteindelijk een beetje een rommeltje wordt.

1735
01:07:24.240 --> 01:07:26.140
En dat zie je met Java nu ook wel een beetje gebeuren.

1736
01:07:26.940 --> 01:07:28.280
Ja. Ja, ik

1737
01:07:28.280 --> 01:07:29.940
heb te weinig nog met Java, dus ik kan er wel

1738
01:07:29.940 --> 01:07:31.960
iets van vinden. Ik kan er eigenlijk

1739
01:07:31.960 --> 01:07:34.140
niks van vinden, want ik weet niet precies wat de ontwikkelingen zijn

1740
01:07:34.700 --> 01:07:36.060
in Java land. Dus dat is gewoon

1741
01:07:36.060 --> 01:07:37.960
voor mij, ja, iets uit

1742
01:07:37.960 --> 01:07:39.300
of mij is koop, zeg maar, of

1743
01:07:39.880 --> 01:07:41.900
We kunnen hem een keer een leuke gast voor uitnodigen.

1744
01:07:42.120 --> 01:07:44.200
Ja, dat is sowieso wel het idee.

1745
01:07:44.560 --> 01:07:45.940
En die hebben volgens mij wel een paar.

1746
01:07:46.260 --> 01:07:48.260
Ja, dat is een Nederlander die best wel

1747
01:07:48.260 --> 01:07:49.700
veel doet in de Java community.

1748
01:07:50.000 --> 01:07:52.100
Ja, dat is een aantal tips in moet. Nou, goed.

1749
01:07:52.100 --> 01:07:54.340
Draag maar aan, dan gaan we die uitnodigen.

1750
01:07:55.780 --> 01:07:56.140
En sowieso

1751
01:07:56.140 --> 01:07:57.980
Android is natuurlijk ook Java ontwikkeling.

1752
01:07:58.040 --> 01:07:59.960
Dus dat zijn echt wel veel Java

1753
01:07:59.960 --> 01:08:01.960
ontwikkelaars. Dus dat is ook verder niet meer

1754
01:08:03.240 --> 01:08:04.200
van oh,

1755
01:08:04.220 --> 01:08:06.120
nou, de Java ontwikkelaars zijn stom

1756
01:08:06.120 --> 01:08:08.300
of dat is het achterhaal.

1757
01:08:08.680 --> 01:08:09.860
Nee, qua OO-principes is het

1758
01:08:09.860 --> 01:08:10.980
hetzelfde. Ja.

1759
01:08:11.360 --> 01:08:14.060
En Microsoft is vooral, kijk, doordat Oracle

1760
01:08:14.060 --> 01:08:16.300
Java heeft gekocht, is dat misschien wat

1761
01:08:16.300 --> 01:08:18.260
Oracle vind ik nog steeds een beetje een evil

1762
01:08:18.260 --> 01:08:20.340
company. Maar ja, goed, dat is

1763
01:08:20.340 --> 01:08:20.940
mening.

1764
01:08:22.300 --> 01:08:23.680
Ja, even kijken.

1765
01:08:23.980 --> 01:08:24.780
Heb ik hier nog.

1766
01:08:25.240 --> 01:08:27.620
Dat heb je zelfs mij wel goed behandeld. Ja, toch?

1767
01:08:27.620 --> 01:08:30.080
Volgens mij hebben we een keer

1768
01:08:30.080 --> 01:08:32.020
een beetje aan het script gehouden.

1769
01:08:33.020 --> 01:08:34.060
Het is pas de tweede keer, toch?

1770
01:08:34.380 --> 01:08:36.140
Ja, we worden steeds beter

1771
01:08:36.140 --> 01:08:37.940
in. Ja, we zijn echt goed.

1772
01:08:38.040 --> 01:08:40.180
Dit loopt gesmeerd. We vergeten ook geen

1773
01:08:40.180 --> 01:08:42.160
microfoon standaard ofzo. Nee.

1774
01:08:42.800 --> 01:08:44.100
Nee, het gebeurt niet.

1775
01:08:44.260 --> 01:08:45.600
Nou, dit keer werken de koptelefoons.

1776
01:08:45.660 --> 01:08:47.940
Dat is in ieder geval een positief iets.

1777
01:08:48.840 --> 01:08:49.720
Dus de vorige keer, de vorige keer

1778
01:08:49.720 --> 01:08:50.940
vergeet ik waarschijnlijk de recorder.

1779
01:08:53.420 --> 01:08:53.820
Oké.

1780
01:08:53.940 --> 01:08:55.780
Nou, wat ons betreft

1781
01:08:55.780 --> 01:08:58.100
was hem dat? Yes. Doen we nog even

1782
01:08:59.200 --> 01:09:00.420
een leuke outro.

1783
01:09:01.400 --> 01:09:01.760
Dus

1784
01:09:01.760 --> 01:09:04.020
Dennis, bedankt voor deze keer.

1785
01:09:04.160 --> 01:09:05.680
Ja, het was een eer. Ik vond het erg leuk.

1786
01:09:06.340 --> 01:09:07.380
Je bent ook een van de eerste.

1787
01:09:07.540 --> 01:09:09.320
Het idee was in eerste instantie dat je de eerste zou zijn.

1788
01:09:09.380 --> 01:09:12.080
Nou, dat was even niet helemaal zo gegaan vanwege de agenda's.

1789
01:09:12.260 --> 01:09:13.360
Oh, vergeten wij niet iets.

1790
01:09:13.480 --> 01:09:16.100
De vraag van de vorige. Ja, dat is een hele lastige.

1791
01:09:16.320 --> 01:09:18.020
Want dan moet ik eigenlijk een beetje

1792
01:09:19.640 --> 01:09:20.360
naar Pauline

1793
01:09:20.360 --> 01:09:22.080
kijken. Dit is live.

1794
01:09:22.260 --> 01:09:23.860
Ik kan nu live op m'n telefoon

1795
01:09:24.400 --> 01:09:24.760
kijken.

1796
01:09:26.260 --> 01:09:27.060
Ja, dat weet ik niet.

1797
01:09:27.380 --> 01:09:29.960
Ik heb het er nog gevraagd. Ze was heel druk aan het werk.

1798
01:09:30.420 --> 01:09:31.400
Ze zei, wie is die Dennis?

1799
01:09:31.500 --> 01:09:32.500
Hoe kan ik nou een vraag voor ze hebben?

1800
01:09:33.520 --> 01:09:34.640
Hoe kan dat nou?

1801
01:09:35.180 --> 01:09:36.140
Ik heb nog geen vragen.

1802
01:09:36.800 --> 01:09:38.760
Normaal gesproken wat we proberen te doen iedere keer

1803
01:09:38.760 --> 01:09:40.700
is dat een gast een vraag stelt

1804
01:09:40.700 --> 01:09:41.740
voor de volgende gast.

1805
01:09:42.980 --> 01:09:44.480
Dat heb jij eigenlijk de vorige keer gedaan.

1806
01:09:45.260 --> 01:09:46.520
Dat was een beetje raar, want jij bent

1807
01:09:46.520 --> 01:09:48.400
de gast die na Pauline kwam. Die vragen

1808
01:09:48.400 --> 01:09:50.500
hebben we de vorige keer besproken.

1809
01:09:51.220 --> 01:09:52.540
Dat waren ook

1810
01:09:52.540 --> 01:09:54.280
heel leuke antwoorden trouwens.

1811
01:09:54.520 --> 01:09:56.280
Die hebben we ook gepost via ons

1812
01:09:56.700 --> 01:09:58.380
Twitteraccount. Die moet je sowieso in de gaten houden.

1813
01:09:58.900 --> 01:10:00.200
Had je wat aan de vragen?

1814
01:10:00.540 --> 01:10:01.500
Of de antwoorden moet ik zeggen.

1815
01:10:01.660 --> 01:10:02.760
Heb je ze gehoord? Nee.

1816
01:10:04.940 --> 01:10:06.640
Je moet ons Twitteraccount in de gaten houden.

1817
01:10:06.860 --> 01:10:08.460
Ja, dat heb ik. Ik volg jullie Twitteraccount.

1818
01:10:08.720 --> 01:10:09.600
Dat was het ook alweer.

1819
01:10:11.280 --> 01:10:11.640
CodeKlets.

1820
01:10:12.560 --> 01:10:13.920
Op z'n Nederlands.

1821
01:10:14.280 --> 01:10:15.360
CodeChat zou een beetje gek zijn.

1822
01:10:16.520 --> 01:10:18.580
Misschien is dat voor als we ooit een keer

1823
01:10:18.580 --> 01:10:20.280
een idee hebben om internationaal te gaan.

1824
01:10:20.500 --> 01:10:22.020
En nu gaat iemand ons idee stelen.

1825
01:10:22.380 --> 01:10:23.200
Dus dat is te laat.

1826
01:10:24.280 --> 01:10:25.600
Die antwoorden waren heel leuk.

1827
01:10:26.120 --> 01:10:28.360
Helaas had zij dit keer geen

1828
01:10:28.360 --> 01:10:30.120
vragen. We hebben volgens mij heel veel behandeld.

1829
01:10:30.280 --> 01:10:31.880
Dus ik denk dat we best wel

1830
01:10:31.880 --> 01:10:34.220
heel breed en heel interessante zaken besproken zijn.

1831
01:10:34.920 --> 01:10:36.220
Misschien als je de volgende keer

1832
01:10:36.220 --> 01:10:38.580
te gast komt, dan gaat het ook nog een keer gebeuren.

1833
01:10:38.680 --> 01:10:40.240
Dat we dan wel echt vragen hebben

1834
01:10:40.240 --> 01:10:42.140
van een... Echt diepgaande vragen.

1835
01:10:42.600 --> 01:10:43.640
Heel moeilijke vragen.

1836
01:10:43.660 --> 01:10:44.780
Zin van het leven.

1837
01:10:45.580 --> 01:10:47.020
Weet je wel waarom

1838
01:10:47.020 --> 01:10:48.240
zit je nog in je vakgebied?

1839
01:10:48.440 --> 01:10:50.720
En hoe komt het zover dat je überhaupt

1840
01:10:50.720 --> 01:10:52.240
in het vak terechtgekomen bent?

1841
01:10:52.600 --> 01:10:53.540
Waarom deed je dit?

1842
01:10:54.380 --> 01:10:56.040
En is je vrouw nog steeds blij met je?

1843
01:10:56.040 --> 01:10:58.000
Ik heb op zich nog wel een belangrijke vraag.

1844
01:10:58.500 --> 01:11:00.640
Waar kunnen we je allemaal vinden online?

1845
01:11:01.440 --> 01:11:01.920
Online?

1846
01:11:03.380 --> 01:11:04.740
Uiteraard een Twitter account

1847
01:11:04.740 --> 01:11:06.060
at daydomen.

1848
01:11:06.660 --> 01:11:08.120
Ik heb een blog.

1849
01:11:08.480 --> 01:11:10.840
Die heet The Continuous Improver.

1850
01:11:10.980 --> 01:11:12.040
Gaan we de show notes opnemen?

1851
01:11:12.040 --> 01:11:12.740
Ja, top.

1852
01:11:13.520 --> 01:11:15.280
Dat gaat een beetje over het idee dat ik

1853
01:11:15.280 --> 01:11:17.080
toch altijd op zoek ben naar dingen die

1854
01:11:17.080 --> 01:11:18.760
wat ook al gezegd werd in het bio.

1855
01:11:19.200 --> 01:11:21.040
Betere technieken, betere methodieken,

1856
01:11:21.340 --> 01:11:23.720
betere architectuurprincipes, betere tools.

1857
01:11:24.380 --> 01:11:25.840
Eigenlijk alles waardoor ik mijn werk

1858
01:11:25.840 --> 01:11:27.320
elke dag weer een beetje beter kan doen.

1859
01:11:27.580 --> 01:11:29.220
Ik heb een github profiel natuurlijk,

1860
01:11:29.260 --> 01:11:29.880
Dennis Domen.

1861
01:11:30.640 --> 01:11:32.880
Daar vind je ook allemaal open source projecten.

1862
01:11:32.960 --> 01:11:35.400
Florida Surgeons, Liquid Projections,

1863
01:11:35.940 --> 01:11:37.760
projectielibrary voor eventsourcing.net.

1864
01:11:39.040 --> 01:11:40.420
The C-Sharp Coding Guidelines.

1865
01:11:40.420 --> 01:11:42.460
Als je dan gewoon op Google, dan kom je er vanzelf uit.

1866
01:11:42.800 --> 01:11:44.920
Die schrijf ik eigenlijk al sinds 2000.

1867
01:11:45.060 --> 01:11:46.200
Ooit een keer gestart bij Philips.

1868
01:11:46.360 --> 01:11:48.260
Hier in Eindhoven bij Best zijn we daarmee begonnen.

1869
01:11:49.760 --> 01:11:51.240
En die beheer ik nog steeds.

1870
01:11:51.640 --> 01:11:52.480
Volgens mij staan er een paar

1871
01:11:52.480 --> 01:11:54.520
YouTube-thingen, maar daar zou ik zelf ook niet naar kijken.

1872
01:11:55.340 --> 01:11:56.660
Van de conferences hier en daar.

1873
01:11:57.040 --> 01:11:57.740
Ja, precies.

1874
01:11:58.380 --> 01:12:01.120
Maar goed, we zetten zo in de show notes en dan kunnen mensen die sowieso vinden.

1875
01:12:02.000 --> 01:12:03.980
Nou goed, zoals Saber zei Dennis,

1876
01:12:04.120 --> 01:12:05.040
hartstikke bedankt voor je komst.

1877
01:12:06.500 --> 01:12:08.560
Onze volgende gast die moeten we nog bepalen.

1878
01:12:09.520 --> 01:12:11.160
We hebben wel een aantal leuke

1879
01:12:11.160 --> 01:12:12.220
gasten op de backlog staan.

1880
01:12:13.080 --> 01:12:14.820
Dus ik zou sowieso even

1881
01:12:14.820 --> 01:12:16.060
abonneren op onze podcast.

1882
01:12:16.360 --> 01:12:17.840
Maar dat zal je waarschijnlijk al gedaan hebben.

1883
01:12:18.080 --> 01:12:20.840
Vertel het vooral door aan je collega's, vrienden, familie.

1884
01:12:20.960 --> 01:12:22.880
Zelfs je buurman mag het weten wat mij u treft.

1885
01:12:23.080 --> 01:12:23.620
Of buurvrouw.

1886
01:12:25.220 --> 01:12:27.060
Ja, als je zelf ook een leuke gast

1887
01:12:27.060 --> 01:12:28.660
weet of vind je het leuk om een keer

1888
01:12:28.660 --> 01:12:30.680
iemand op onze show te horen.

1889
01:12:30.900 --> 01:12:32.460
Laat het even weten via Slack of Twitter.

1890
01:12:32.600 --> 01:12:34.460
We zijn als altijd op zoek naar

1891
01:12:34.460 --> 01:12:36.240
leuke gasten of dames.

1892
01:12:36.240 --> 01:12:37.520
Dat zijn natuurlijk die interessante dingen

1893
01:12:37.520 --> 01:12:39.440
doen in software ontwikkeland.

1894
01:12:39.780 --> 01:12:41.260
Hou ons gewoon in de gaten op

1895
01:12:42.030 --> 01:12:43.180
kodeklets Twitter account.

1896
01:12:43.600 --> 01:12:45.500
En we hebben ook een Instagram account waar je

1897
01:12:45.500 --> 01:12:47.440
behind the scene foto's kan bekijken.

1898
01:12:47.860 --> 01:12:50.680
Alle info is dus te vinden op kodeklets.nl.

1899
01:12:50.780 --> 01:12:52.160
Dus alle verplichte linkjes

1900
01:12:52.160 --> 01:12:53.920
om alle Apple podcast,

1901
01:12:54.000 --> 01:12:56.240
Google whatever, Pocketcast, Spotify,

1902
01:12:56.300 --> 01:12:56.880
ook Spotify?

1903
01:12:58.500 --> 01:13:00.380
Te abonneren op de podcast

1904
01:13:00.380 --> 01:13:01.460
kan je daar vinden.

1905
01:13:01.840 --> 01:13:02.880
Nou, dit was het weer.

1906
01:13:02.880 --> 01:13:04.220
Tot de volgende keer zou ik maar zeggen.

1907
01:13:04.720 --> 01:13:05.120
Later!
