WEBVTT

1
00:00:25.960 --> 00:00:32.720
Welkom bij aflevering 16 van CodeKlets. Vandaag zijn we weer de host Kishen en ik, zoals verhoudt.

2
00:00:32.820 --> 00:00:35.400
Dat is alweer een postje gelegen dat wij met z'n tweeën deden.

3
00:00:35.660 --> 00:00:36.060
Yes, sir.

4
00:00:36.300 --> 00:00:40.020
Ja, zeker. En we hebben vandaag weer een hele leuke en interessante gast.

5
00:00:40.340 --> 00:00:45.620
En dat is Raymond Roestenburg. Ja, welkom Raymond.

6
00:00:46.680 --> 00:00:47.160
Dankjewel.

7
00:00:47.480 --> 00:00:51.480
Oh, sorry. Nu zeg ik Raymond en niet Raymond. Maakt dat nog uit?

8
00:00:51.640 --> 00:00:55.620
Nee, dat maakt mij niet uit. Raymond, Raymond, dat maakt niet uit.

9
00:00:55.880 --> 00:00:58.180
Misschien moet ik gewoon Ray zeggen, dat is het makkelijkste.

10
00:00:59.340 --> 00:01:03.700
Maar goed, Ray Roestenburg werkt bij Lightband als tech lead in het Akka platform team.

11
00:01:04.100 --> 00:01:08.980
Ray werkt tegenwoordig aan cloud native initiatieven van Lightband met een focus op Akka en Kubernetes.

12
00:01:09.520 --> 00:01:15.920
Daarnaast werkt hij ook aan Cloudflow, een open source project voor distributed streaming applications op Kubernetes.

13
00:01:16.620 --> 00:01:21.400
Hij is de auteur van Akka in Action, daar komen we strakken natuurlijk ook op terug, voor Manning Publications.

14
00:01:21.760 --> 00:01:24.320
Manning is best populair, daar hebben we steeds gast van.

15
00:01:24.760 --> 00:01:27.080
Ja, zeker. De tweede, vorige was Meint.

16
00:01:27.260 --> 00:01:32.260
Ja, dat klopt. En hij is aan het coden sinds de Commodore 64 in de jaren tachtig.

17
00:01:32.880 --> 00:01:35.100
Kijk, dat is al een poos gedeen.

18
00:01:36.580 --> 00:01:38.340
Welkom, welkom Ray. Cool.

19
00:01:38.340 --> 00:01:39.080
Dank je wel.

20
00:01:42.140 --> 00:01:43.920
Ja, waar zou ons gaan beginnen?

21
00:01:45.120 --> 00:01:53.020
Want je zegt net, of jij zegt niet, in je bio staat mooi dat je bent begonnen met programmeren met de Commodore 64.

22
00:01:53.920 --> 00:01:58.040
Is dat ook echt de eerste programmerervaring of was er nog iets geks daarvoor?

23
00:01:58.620 --> 00:02:00.280
Nee, dat was wel de eerste programmerervaring.

24
00:02:00.440 --> 00:02:06.700
Ja, dat was echt, begon natuurlijk heel simpel zoals iedereen met je eigen naam op het beeld zetten.

25
00:02:06.700 --> 00:02:17.760
En dat soort dingen, weet je, loopjes maken en dat ging verder naar spelletjes aanpassen en wat met sprites sloten en dat soort dingen.

26
00:02:17.900 --> 00:02:19.380
Dat was wel heel leuk.

27
00:02:20.060 --> 00:02:22.060
Ja, dat klopt. Ja, dat klopt ja.

28
00:02:23.140 --> 00:02:26.700
En welke game heb je, kan je dat nog herinneren, welke games je hebt aangepast?

29
00:02:27.500 --> 00:02:34.400
Nou, die games aanpassen was pas later op de MSX. Ik had later een MSX, een andere homecomputer, als je het wilt kennen, denk ik.

30
00:02:34.740 --> 00:02:35.860
Nou, nu zijn we weer vrienden.

31
00:02:36.300 --> 00:02:36.660
Ja.

32
00:02:36.820 --> 00:02:41.000
Want je begon met de Commodore en dan denk je, ja, wacht eens even. Nee, nee, oké, cool.

33
00:02:41.400 --> 00:02:47.620
Ja, Commodore 64 was de eerste en toen vriendje van mij had een MSX en dat kwam op bepaalde spelletjes heel erg leuk.

34
00:02:47.780 --> 00:02:50.840
Dus toen MSX 2 uiteindelijk.

35
00:02:51.040 --> 00:03:00.180
En daar had je een aantal games die, ja, dat kon je redelijk eenvoudig, kon je teksten in aanpassen of je kon verschillende dingen uitproberen met peaks en pokes.

36
00:03:00.560 --> 00:03:04.220
En ik weet de helft wel niet meer van, maar dat was wel heel leuk om te doen.

37
00:03:05.780 --> 00:03:15.660
En ja, een spelletje heet The Feedback, maar ja, het lijkt een beetje op een spel van Sega, waar ik ook wel de naam meer van weet.

38
00:03:16.660 --> 00:03:18.280
Maar het is al een tijd geleden.

39
00:03:19.480 --> 00:03:26.380
Maar genoeg spelletjes die je het simpelweg aan kon passen in die tijd, omdat de code natuurlijk eenvoudiger was op dat moment.

40
00:03:28.420 --> 00:03:31.600
En kan je nog herinneren in wat voor programmeertal het was?

41
00:03:32.520 --> 00:03:36.540
Dat was in Basic. Ja, dat was voornamelijk in Basic.

42
00:03:36.660 --> 00:03:43.340
En er waren ook wel wat spelletjes die waren waarschijnlijk in december gemaakt.

43
00:03:44.480 --> 00:03:52.540
Maar daar kon je dus, daar verander je niet zozeer de source code, maar gewoon de, ja, ik neem aan dat het binary code was.

44
00:03:53.120 --> 00:03:57.380
Ik weet al helemaal niet meer hoe dat deden, maar je had ook bepaalde hex editors voor.

45
00:03:57.380 --> 00:03:59.760
Dan kon je hex editors, dan kon je gewoon dingen aanpassen.

46
00:04:00.040 --> 00:04:05.040
En dan veranderde er wat in het spel en dat vonden we wel heel gaaf om te doen.

47
00:04:05.320 --> 00:04:07.780
Als je jongen kiest van een jaar of 11, 12, zeg maar.

48
00:04:07.980 --> 00:04:11.680
Dus je moet er niet altijd veel bij voorstellen. Maar het was wel heel erg leuk.

49
00:04:13.040 --> 00:04:21.100
En ja, met de Commodore een aantal sprites gemaakt en te kijken van wanneer is het botsen, zeg maar, wat je dan moet doen.

50
00:04:22.800 --> 00:04:27.360
Dus dat was al heel snel, voor mij was het van, oh, dat lijkt me heel erg gaaf om een eigen spelletje te maken.

51
00:04:27.360 --> 00:04:30.140
Dat soort dingen. Daar was er nooit echt helemaal van gekomen.

52
00:04:30.240 --> 00:04:36.360
Ik heb wel wat gehobbyd met een aantal shoot-'em-ups van die ouderwetse shoot-'em-ups gebouwd.

53
00:04:37.760 --> 00:04:41.440
Game level designers gemaakt, dat soort dingen met DirectX en zo.

54
00:04:41.560 --> 00:04:43.400
Dat was al weer een tijdje verder natuurlijk in de tijd.

55
00:04:44.520 --> 00:04:47.360
Maar dat was meer zo van, oh, hoe zou het eigenlijk moeten?

56
00:04:48.420 --> 00:04:49.560
Wat heb je er eigenlijk allemaal voor nodig?

57
00:04:49.680 --> 00:04:54.880
En als het op een moment erachter kwam van, oh ja, dit werd ongeveer zo, dan hield het er vaak mee op.

58
00:04:55.460 --> 00:04:59.880
Dus ik heb een aantal halve games gemaakt, zeg maar, als hobby ooit.

59
00:05:02.460 --> 00:05:02.980
Gaaf, man.

60
00:05:03.860 --> 00:05:05.100
Leuk tijd ook, denk ik.

61
00:05:05.260 --> 00:05:08.120
Ja, het was super.

62
00:05:08.960 --> 00:05:13.900
Ik weet ook nog dat je een spelletje van de radio op kon nemen, weet je wel?

63
00:05:14.940 --> 00:05:16.220
Ja, dat is gewoon heel apart.

64
00:05:16.640 --> 00:05:18.820
Op de trost zat dat toch?

65
00:05:19.940 --> 00:05:21.200
Ik weet niet hoe het programma heet.

66
00:05:21.320 --> 00:05:21.880
Ja, dat klopt, ja.

67
00:05:22.320 --> 00:05:23.640
Dat is echt bijzonder, toch?

68
00:05:23.640 --> 00:05:29.440
Dat je een radio programma neem je op en dan kun je dat afspelen en dan laat je dat programma heen.

69
00:05:30.500 --> 00:05:33.440
Ja, dat was een hele interessante tijd inderdaad.

70
00:05:33.560 --> 00:05:35.700
Het was allemaal gewoon helemaal nieuw.

71
00:05:36.840 --> 00:05:41.860
En ja, je ging gewoon naar vrienden of naar andere mensen die je dan tegenkwam van, oh, weet je hoe dat moet?

72
00:05:42.980 --> 00:05:45.800
En had iemand weer een tooltje om wat te kopiëren of wat dan ook?

73
00:05:46.340 --> 00:05:47.200
En zo ging het verder.

74
00:05:48.440 --> 00:05:50.820
Ja, dat was nog echt innovatie.

75
00:05:50.820 --> 00:05:51.440
Ja.

76
00:05:53.020 --> 00:05:54.340
Ja, precies.

77
00:05:54.620 --> 00:05:58.820
Voor ons was, voor mij, ik zat ook een beetje in die tijd, want Conde64 was ook een beetje mijn...

78
00:06:00.180 --> 00:06:02.820
Die heb ik nooit gehad, maar daar ben ik wel door mee in aanraking gekomen met programmeren.

79
00:06:03.460 --> 00:06:04.740
En later ook de MSX 2 jaar.

80
00:06:05.860 --> 00:06:09.620
En alles was gewoon, dat hebben we eerder ook wel eens besproken, maar alles, je had geen internet.

81
00:06:09.740 --> 00:06:14.940
Dus je moest gewoon boeken en via andere mensen moest je aan informatie komen of zelf uitvinden.

82
00:06:15.940 --> 00:06:16.260
Precies.

83
00:06:16.560 --> 00:06:18.020
Ja, dat is wel bijzonder.

84
00:06:18.020 --> 00:06:20.060
Kun je je eigenlijk niet meer voorstellen dat je dat nu...

85
00:06:21.040 --> 00:06:23.600
Iedere drie regelscoden die ik schrijf hebben Google nodig.

86
00:06:24.800 --> 00:06:26.120
Dus dat is echt...

87
00:06:26.120 --> 00:06:27.040
Ja, ja, ja.

88
00:06:27.660 --> 00:06:33.220
Ja, ik weet ook nog, met mijn studie moesten we een soort van animatieprogramma maken.

89
00:06:33.260 --> 00:06:34.460
Dat was op de HTS.

90
00:06:35.800 --> 00:06:37.980
En dan moest je een paar momenten bitmaps inladen.

91
00:06:38.480 --> 00:06:43.460
Ik had een boek van Charles Petzold en dan ging ik echt gewoon pagina voor pagina overtypen, weet je wel.

92
00:06:43.700 --> 00:06:45.040
Die had gewoon niks.

93
00:06:45.200 --> 00:06:46.420
Nee, klopt, ja.

94
00:06:46.420 --> 00:06:47.140
Ja.

95
00:06:48.580 --> 00:06:52.460
Ja, en ik kan me ook nog herinneren op school over HTS gesproken.

96
00:06:53.280 --> 00:06:58.300
Dat ik ook een keer zo'n gameontwikkelvak had, een module of zoiets had gekozen.

97
00:06:58.540 --> 00:07:00.840
Dan was het inderdaad echt zo'n heel dik boek.

98
00:07:01.880 --> 00:07:05.240
Waar al die sprites ook in uitgelegd werd en zo.

99
00:07:05.760 --> 00:07:07.920
En dan was het inderdaad letterlijk gewoon...

100
00:07:07.920 --> 00:07:10.400
Het was volgens mij heel veel in C, dacht ik.

101
00:07:10.400 --> 00:07:11.020
Ja, ja.

102
00:07:12.000 --> 00:07:15.200
En ja, dat was inderdaad gewoon overtypen, weet je wel.

103
00:07:15.200 --> 00:07:17.160
En dan hopen dat het weer ging werken.

104
00:07:17.900 --> 00:07:19.300
Dus ja, dat was geen internet.

105
00:07:19.540 --> 00:07:25.400
Ik las trouwens ook een heel interessant artikel van Container Solutions.

106
00:07:26.000 --> 00:07:26.480
Een tijdje terug.

107
00:07:26.660 --> 00:07:27.740
Die ken je wel, hè.

108
00:07:27.800 --> 00:07:32.040
Dat is best wel een gaaf bedrijf ook.

109
00:07:32.320 --> 00:07:34.580
Wat heel erg gericht is op Container Solutions.

110
00:07:36.360 --> 00:07:43.420
En die vertelden dat er iemand was die allemaal Sega games, ook in docke containers...

111
00:07:43.420 --> 00:07:44.760
Ja, ik zal hem straks...

112
00:07:44.760 --> 00:07:47.420
Ik zal hem ook even in de notes delen.

113
00:07:48.100 --> 00:07:49.180
Ik vond dat ook wel bijzonder.

114
00:07:49.780 --> 00:07:51.140
Om het in een container te doen, ja.

115
00:07:51.140 --> 00:07:52.860
Ja joh, bizar, ja.

116
00:07:53.260 --> 00:07:55.400
En daarna ben je zeg maar...

117
00:07:55.400 --> 00:07:59.800
Nou goed, je zei net dat je op de ATS gezeten hebt, software ontwikkeling gedaan, bla bla.

118
00:08:00.240 --> 00:08:00.440
Ja, ja.

119
00:08:00.660 --> 00:08:02.800
En wat ben je daarna gaan doen?

120
00:08:02.960 --> 00:08:04.420
Ben je meteen...

121
00:08:05.160 --> 00:08:05.400
Whatever.

122
00:08:05.920 --> 00:08:08.500
Ik weet niet welk jaar hebben we het eigenlijk over.

123
00:08:09.220 --> 00:08:12.080
Ik ben begonnen met zijn werk in 97.

124
00:08:13.200 --> 00:08:18.520
En toen heb ik een tijdje Oracle gedaan, Oracle Development gedaan.

125
00:08:19.660 --> 00:08:21.800
Dat was op een bepaalde moment toch een beetje saai.

126
00:08:22.500 --> 00:08:27.120
Toen ben ik toch weer op meer Java gaan doen, want ik was op het ATS op het einde ook op het Java bezig.

127
00:08:29.500 --> 00:08:33.080
En een tijdje bij de telegraaf gezeten, bij de financiële telegraaf.

128
00:08:33.880 --> 00:08:34.960
Wel wat leuke dingen gedaan.

129
00:08:36.080 --> 00:08:39.040
En zo was het eigenlijk gewoon consultancy zeg maar.

130
00:08:39.040 --> 00:08:45.040
Java consultancy is dan voornamelijk het werk geweest voor best wel wat jaartjes eigenlijk.

131
00:08:47.540 --> 00:08:48.240
Even kijken hoor.

132
00:08:49.460 --> 00:08:54.040
Toen ben ik zo rond 2003 naar Zuid-Afrika verhuisd.

133
00:08:56.260 --> 00:08:57.120
Mijn vrouw komt daar vandaan.

134
00:08:57.520 --> 00:08:58.920
Dus ben ik daarheen gegaan om daar te gaan wonen.

135
00:08:59.000 --> 00:09:00.380
Toen heb ik daar vier jaar gewoond.

136
00:09:00.840 --> 00:09:03.300
Toen heb ik ook daar eerst wat Java gedaan.

137
00:09:03.300 --> 00:09:08.620
En toen .NET, het bedrijf switchte over van Java naar .NET.

138
00:09:09.140 --> 00:09:10.120
Dat heb ik een paar jaar gedaan.

139
00:09:11.320 --> 00:09:14.540
Toen heb ik naar Nederland gekomen met situaties.

140
00:09:15.820 --> 00:09:21.280
En toen heb ik daar ook weer .NET gedaan voor zo'n twee, drie jaar denk ik.

141
00:09:22.040 --> 00:09:24.800
En toen weer een opdracht gedaan in Java.

142
00:09:26.720 --> 00:09:33.140
En dat was een message broker voor wegverkeer in Nederland.

143
00:09:34.780 --> 00:09:41.100
En toen kwam ik erachter van, oké, dit is toch wel vervelend af en toe, de concurrency problemen.

144
00:09:41.500 --> 00:09:43.740
Het was best wel pittig.

145
00:09:46.240 --> 00:09:50.060
En toen had ik mijn eigen soort van herbruikbare dingen gebouwd.

146
00:09:50.940 --> 00:09:54.260
Maar ja, goed, natuurlijk niet helemaal volledig.

147
00:09:54.260 --> 00:09:56.880
Het moest ook wel in dienst zijn van het project.

148
00:09:57.660 --> 00:10:00.400
En toen kwam ik op een bepaald moment Akka tegen.

149
00:10:01.680 --> 00:10:03.340
Volg op dat moment Dean Wampler.

150
00:10:04.820 --> 00:10:06.700
Hij heeft ook wel het boek over scalen geschreven en dat soort dingen.

151
00:10:06.920 --> 00:10:09.220
En die heb ik later nog mee gewerkt bij LiveBait.

152
00:10:10.100 --> 00:10:15.540
En die zei ze van, oh, je moet Akka 0.7 uitproberen via Twitter.

153
00:10:15.620 --> 00:10:17.440
Ik denk, wat is dat nou, Akka? Weet je wel.

154
00:10:18.160 --> 00:10:20.380
Dus ik ben gaan kijken en dat ik, oh, dit is precies wat ik moet hebben.

155
00:10:20.380 --> 00:10:24.420
Het is gewoon helemaal, wat ik ook eerder eigenlijk zelf,

156
00:10:24.520 --> 00:10:27.300
maar ja, in een veel minimaalere zin natuurlijk,

157
00:10:27.300 --> 00:10:32.860
gemaakt heb met threads en mailbox en queues.

158
00:10:33.500 --> 00:10:35.020
Het handelen van exceptions.

159
00:10:36.900 --> 00:10:41.660
En toen heb ik dat gebruikt in een project bij bedrijf Wijktoenwerk de CSC.

160
00:10:42.780 --> 00:10:44.020
Voor de Konker commercial C.

161
00:10:44.900 --> 00:10:48.620
Dat is een systeem om bij de grens

162
00:10:50.860 --> 00:10:55.580
allerlei activiteiten in de gaten te houden via camera's en radars,

163
00:10:55.760 --> 00:10:59.220
maar ook via patrouille auto's die rondrijden.

164
00:10:59.880 --> 00:11:04.240
En dat was dus een gedistribueerd systeem met allerlei sensorlocaties.

165
00:11:05.960 --> 00:11:11.200
En ik zag daar al aankomen, al die verschillende sensoren,

166
00:11:12.740 --> 00:11:17.660
verschillende systemen, zowel in auto's gebouwd als boven de weg.

167
00:11:17.660 --> 00:11:20.760
Om al die informatie terug te brengen.

168
00:11:24.860 --> 00:11:32.740
Dat dat een hele uitdagende case zou zijn met de traditionele concurrency en distribution tools.

169
00:11:34.960 --> 00:11:36.880
En toen kwam ik Akka tegen.

170
00:11:38.760 --> 00:11:41.980
En toen zag ik al heel snel, het zag er vroeger anders uit die website,

171
00:11:42.560 --> 00:11:46.680
maar daar hadden ze een klein stukje code over,

172
00:11:46.680 --> 00:11:48.520
over wat een actor is, zeg maar.

173
00:11:49.260 --> 00:11:51.680
En dat sprak me meteen aan.

174
00:11:53.020 --> 00:11:56.880
En na even in de code te kijken en wie eraan gewerkt had, et cetera,

175
00:11:57.120 --> 00:12:01.280
was al weleens nou duidelijk van dit is niet zomaar een framework

176
00:12:01.280 --> 00:12:03.440
dat iemand eventjes open source heeft gezet.

177
00:12:03.640 --> 00:12:09.600
Het zijn gewoon een aantal vooraanstaande mensen die aan de internals van de JVM

178
00:12:09.600 --> 00:12:14.440
bij J-Rocket volgens mij hebben gewerkt.

179
00:12:15.640 --> 00:12:19.400
Dus ja, dat was ik wel meteen geïnteresseerd.

180
00:12:19.880 --> 00:12:25.720
En zo ben je daar terecht gekomen bij die Akka technologie, zeg maar.

181
00:12:27.400 --> 00:12:28.380
Ja, oké.

182
00:12:28.760 --> 00:12:30.840
Dus dat is wel grappig, want dat je dan eigenlijk,

183
00:12:31.280 --> 00:12:33.900
ten eerste de ideeën die je zelf ook al had,

184
00:12:34.700 --> 00:12:37.000
dat je die dan ergens anders, ja, op een grotere schaal misschien,

185
00:12:37.000 --> 00:12:39.540
dat je die dan weer terug ziet.

186
00:12:39.660 --> 00:12:42.620
Dat is wel een soort van bevestiging van, ik zie je wel, ik zat goed.

187
00:12:45.360 --> 00:12:49.240
Ja, het is heel lastig met threads.

188
00:12:49.520 --> 00:12:52.560
Als je, oké, ik wil iets concurrent doen, oké, dan start ik een thread.

189
00:12:53.280 --> 00:12:56.800
Oké, hoe communiceer ik nou met dat ding wat in die thread draait,

190
00:12:56.880 --> 00:12:58.500
in die run method, wat ga ik doen?

191
00:12:59.480 --> 00:13:02.640
En dan kom je de primitieve tegen, dan kom je de verschillende queues tegen.

192
00:13:02.800 --> 00:13:06.000
Oké, ik kan iets op een queue gooien en dan kan ik het daar weer afhalen.

193
00:13:06.420 --> 00:13:13.000
Nou, dan gebruik je de verkeerde queue een keer en dan loopt het helemaal mis, zeg maar.

194
00:13:14.720 --> 00:13:17.460
En daarnaast, er kunnen exceptions gegooid worden in die thread.

195
00:13:18.440 --> 00:13:20.520
Ja, wat doe je daar dan precies mee? Hoe communiceer je die?

196
00:13:20.740 --> 00:13:23.720
Nou, dan moet je eigenlijk weer een soort van queue voor hebben of iets anders,

197
00:13:25.100 --> 00:13:28.060
of een mechanisme dat je kan zeggen van, hey, dit ding is kapot,

198
00:13:28.120 --> 00:13:29.960
hij moet opnieuw beginnen.

199
00:13:31.480 --> 00:13:36.080
En daar had ik een hele gelimiteerde, of tenminste,

200
00:13:36.220 --> 00:13:41.800
ik had het, zeg maar, het probleem door mij en had ik gelimiteerd gezien in mijn applicatie.

201
00:13:42.680 --> 00:13:44.880
En dat ging toch ook niet altijd helemaal goed, zoals bij iedereen.

202
00:13:46.980 --> 00:13:53.880
En ja, dat was af en toe best wel pittig met de low-level primitives, zeg maar, van Java concurrency.

203
00:13:55.860 --> 00:13:59.540
Ja, dat is in Java toen, ja.

204
00:13:59.860 --> 00:14:04.820
Want ik, het enige wat ik, goed, Kishen zei toen van oké,

205
00:14:04.860 --> 00:14:06.960
we kunnen iemand uitnodigen die iets met Akko heeft gedaan.

206
00:14:07.100 --> 00:14:10.900
Toen dacht ik, ik ben een .NET ontwikkelaar, dus ik dacht, oh ja, dat is een .NET.

207
00:14:11.600 --> 00:14:14.980
En je weet gewoon, dat is bij heel veel van die projecten, zeg maar, opstorspecten,

208
00:14:15.380 --> 00:14:18.540
waar .NET achter staat, dan weet je, waarschijnlijk is er een project, zeg maar,

209
00:14:18.780 --> 00:14:20.080
wat eigenlijk van Java afkomt.

210
00:14:21.020 --> 00:14:23.120
En daar hebben ze een .NET variant van gemaakt.

211
00:14:23.120 --> 00:14:23.780
Ja.

212
00:14:24.100 --> 00:14:28.320
En dan komt Microsoft en die zegt van, hey, die open source shit moet je niet doen,

213
00:14:28.480 --> 00:14:29.540
joh, we gaan het voor je doen.

214
00:14:30.420 --> 00:14:32.360
En dan is de open source u weg.

215
00:14:32.720 --> 00:14:35.760
Ja, dat is wel waar, maar dat is me eerder als gelukkig,

216
00:14:35.800 --> 00:14:38.020
maar dat zul je misschien zelf ook wel een beetje mee hebben gekregen,

217
00:14:38.240 --> 00:14:43.780
dus de laatste vier, vijf jaar is dat wel heel erg omgeslagen, gelukkig,

218
00:14:43.840 --> 00:14:46.120
want Microsoft is gewoon open source all the way tegenwoordig.

219
00:14:46.640 --> 00:14:47.180
Ja, precies.

220
00:14:47.240 --> 00:14:50.080
Dat is wel veranderd, maar dat is wel zeker zo, zeker,

221
00:14:50.500 --> 00:14:53.600
onder Steve Ballmer was het wel een beetje evil,

222
00:14:53.800 --> 00:14:57.200
of ten eerste not done om iets over open source te roepen.

223
00:14:58.620 --> 00:15:00.660
Dus aka.net, ja, dat kende ik zeg maar.

224
00:15:01.460 --> 00:15:04.340
En ja, dat was een beetje het uitzoeken van hoe het nou zat.

225
00:15:04.740 --> 00:15:06.080
Ik heb eerlijk gezegd nog nooit met het,

226
00:15:07.000 --> 00:15:08.420
en dat is trouwens wel een vraag ook,

227
00:15:08.840 --> 00:15:10.180
het actor model heb ik niks mee gedaan,

228
00:15:10.260 --> 00:15:16.140
want ik heb wel iets in productie gezet met event sourcing en CKRS.

229
00:15:17.740 --> 00:15:18.820
En gedistribueerde systemen,

230
00:15:18.820 --> 00:15:22.420
dat is ook wat we voor de opname ook al een beetje zei,

231
00:15:22.560 --> 00:15:25.820
van ja, het is een beetje, hoe zeg je dat?

232
00:15:26.280 --> 00:15:30.120
Systemen worden steeds, ja, complexer misschien wel.

233
00:15:31.220 --> 00:15:32.740
Het is helemaal heel gangbaar.

234
00:15:32.920 --> 00:15:34.680
Nou ja, misschien worden bijna alle,

235
00:15:34.860 --> 00:15:35.720
nee, niet bijna alle systemen,

236
00:15:35.780 --> 00:15:38.180
maar heel veel systemen worden in de cloud geontwikkeld.

237
00:15:39.080 --> 00:15:42.040
En dan is het gewoon belangrijk om na te gaan denken over ja,

238
00:15:42.160 --> 00:15:43.900
hoe werken nou gedistribueerde systemen?

239
00:15:43.900 --> 00:15:46.840
Hoe zet je die goed op en hoe moet je met performance omgaan?

240
00:15:47.380 --> 00:15:49.660
Wat voor architectuur ga je gebruiken?

241
00:15:49.800 --> 00:15:54.520
Ga je een monolith gebruiken of neerzetten?

242
00:15:54.680 --> 00:15:56.040
Of wil je microservices gebruiken?

243
00:15:56.420 --> 00:16:00.600
En daar komen best wel allerlei vraagstukken naar boven.

244
00:16:00.800 --> 00:16:02.840
Want het is, ja,

245
00:16:03.160 --> 00:16:04.720
iemand die enorm veel ervaring heeft,

246
00:16:04.880 --> 00:16:06.660
zal nooit zeggen dat het ingewikkeld is of moeilijk,

247
00:16:06.660 --> 00:16:08.140
maar het is wel een complex verhaal.

248
00:16:08.200 --> 00:16:09.760
Je moet aan best veel dingen denken.

249
00:16:13.040 --> 00:16:16.380
Dus binnen die gedistribueerde systemen, zeg maar,

250
00:16:17.460 --> 00:16:20.400
is ACCA een van de manieren om, zeg maar,

251
00:16:21.280 --> 00:16:21.940
zoiets op te lossen?

252
00:16:22.800 --> 00:16:25.860
Zie je dat anders of kun je dat toelichten?

253
00:16:27.500 --> 00:16:31.200
Ja, ACCA is begonnen als een soort van toolkit,

254
00:16:31.820 --> 00:16:34.740
waarin je een aantal tools hebt,

255
00:16:35.420 --> 00:16:37.780
die voor dit soort situaties handig zijn.

256
00:16:40.240 --> 00:16:41.340
En daar is het mee begonnen.

257
00:16:41.340 --> 00:16:48.400
Dus initieel was het een actor-based library, zeg maar,

258
00:16:48.820 --> 00:16:51.460
en daar werd steeds meer bovenop gebouwd.

259
00:16:51.640 --> 00:16:53.600
Het was altijd wel vanuit het begin al bedoeld

260
00:16:54.200 --> 00:16:57.740
als actors zijn zowel lokaal als distributed.

261
00:16:58.800 --> 00:16:59.740
Dat was altijd de idee.

262
00:16:59.940 --> 00:17:04.300
En daar zijn over de jaren heen verschillende modellen voor gebruikt

263
00:17:04.300 --> 00:17:06.300
om dat te uiten, zeg maar.

264
00:17:06.680 --> 00:17:10.360
Dus initieel kon je twee actors met elkaar praten

265
00:17:10.360 --> 00:17:11.660
over een remote connection.

266
00:17:12.800 --> 00:17:22.540
En nu is dat uiteindelijk terechtgekomen in een cluster-technologie.

267
00:17:22.620 --> 00:17:25.300
Dus je kan actors in een cluster hebben.

268
00:17:27.080 --> 00:17:30.840
Maar dat is niet het totale beeld,

269
00:17:31.700 --> 00:17:36.880
want je kan alle dingen in de toolkit gebruiken

270
00:17:36.880 --> 00:17:38.440
of een klein gedeelte ervan.

271
00:17:38.440 --> 00:17:43.820
Dus daar zit best wel veel ruimte in.

272
00:17:43.980 --> 00:17:46.500
Je kan zeggen, die dingen wel, die dingen niet.

273
00:17:46.820 --> 00:17:50.740
Er zit bijvoorbeeld ook CRDT-support in

274
00:17:53.340 --> 00:17:57.440
voor de Conflict-replicator-data-types,

275
00:17:59.080 --> 00:18:02.540
om bijvoorbeeld zoiets als docs.google.com te maken,

276
00:18:02.580 --> 00:18:04.680
dat je tegelijkertijd schrijft in documents

277
00:18:04.680 --> 00:18:07.280
maar dat het wel uiteindelijk eventually klopt,

278
00:18:07.480 --> 00:18:08.440
wat je opgeschreven hebt.

279
00:18:12.300 --> 00:18:16.440
Maar er zitten dus ook bijvoorbeeld persistent actors in.

280
00:18:17.640 --> 00:18:22.420
En die kan je weer gebruiken voor een situatie

281
00:18:22.420 --> 00:18:26.700
waar je je systeem partitioneert of shard

282
00:18:26.700 --> 00:18:29.240
in verschillende entities,

283
00:18:30.080 --> 00:18:33.360
waarbij je heel erg hoog kan schalen

284
00:18:33.360 --> 00:18:38.540
in de zin van in-memory stateful processen.

285
00:18:38.960 --> 00:18:43.360
Dus het extra model bestaat eigenlijk uit

286
00:18:44.400 --> 00:18:48.360
een aantal onderdeeltjes of het bestaat uit een...

287
00:18:49.540 --> 00:18:51.480
of nee, dat is misschien niet de makkste manier om het uit te leggen.

288
00:18:53.700 --> 00:18:57.280
Wat het lastig maakt, zoals ik al eerder ook al zei met die threads,

289
00:18:57.280 --> 00:19:05.020
is dat het lastig is om te communiceren tussen threads

290
00:19:05.020 --> 00:19:10.000
of om ervoor te zorgen dat je niet enige andere fout maakt

291
00:19:10.000 --> 00:19:13.080
in concurrency, waardoor je race condition krijgt

292
00:19:13.080 --> 00:19:14.000
en al dat soort dingen.

293
00:19:15.080 --> 00:19:17.900
Dus het actor model is een ander soort model

294
00:19:17.900 --> 00:19:21.000
waarin je praat in vorm van actors.

295
00:19:21.740 --> 00:19:23.160
Een actor is een soort van object

296
00:19:23.160 --> 00:19:25.960
waar je berichten naar kan sturen.

297
00:19:27.480 --> 00:19:30.320
En je actor kan dan weer reageren met berichten.

298
00:19:30.500 --> 00:19:34.280
Dus het is heel erg berichtgedreven, als je dat zo kan nog kunnen zeggen.

299
00:19:36.140 --> 00:19:39.820
En een aantal garanties worden daarbij gesteld.

300
00:19:40.660 --> 00:19:42.860
En dat is dat als jij een actor schrijft

301
00:19:42.860 --> 00:19:46.560
en je krijgt een berichtje binnen, of je krijgt berichten binnen,

302
00:19:47.220 --> 00:19:49.160
dan krijg je die berichten altijd één voor één binnen.

303
00:19:49.540 --> 00:19:54.400
Dus je kan een soort van, ja, wat heet het, een receive kan je schrijven

304
00:19:55.060 --> 00:19:57.700
waarin verschillende soorten berichten binnen kunnen komen.

305
00:19:58.580 --> 00:20:00.380
Dus bijvoorbeeld een bericht heet ping

306
00:20:00.380 --> 00:20:02.820
en dan stuur jij een bericht terug pong.

307
00:20:04.540 --> 00:20:07.380
Dan maakt het niet uit van wie die berichten komen

308
00:20:07.380 --> 00:20:10.860
of hoe concurrent ze aankomen.

309
00:20:11.600 --> 00:20:16.260
Als actor zijn, dan kan je ze één voor één verwerken.

310
00:20:18.420 --> 00:20:20.500
Het sturen van de berichten en het ontvangen van de berichten

311
00:20:20.500 --> 00:20:23.920
is allemaal asyngroon. Dus je wacht eigenlijk nooit.

312
00:20:23.920 --> 00:20:26.380
Je bent nooit aan het blokken op iets.

313
00:20:26.720 --> 00:20:30.160
Dus je bent geen fret aan het vasthouden of wat dan ook.

314
00:20:32.360 --> 00:20:34.360
En alleen dat al, alleen dat principe al, zeg maar,

315
00:20:34.420 --> 00:20:38.260
dat je heel eenvoudig één voor één berichten kan afwerken,

316
00:20:38.620 --> 00:20:40.620
dat is een heel groot voordeel.

317
00:20:41.360 --> 00:20:43.360
Een actor kan ook andere actors maken.

318
00:20:43.760 --> 00:20:46.400
Dus je kan een soort van hiërarchie maken

319
00:20:47.100 --> 00:20:49.360
van parents and children, om het zo maar even te zeggen.

320
00:20:50.200 --> 00:20:52.280
En wat daar ook heel interessant aan maakt,

321
00:20:52.520 --> 00:20:55.880
is dat als een actor, als er wat fout gaat in een actor,

322
00:20:56.820 --> 00:21:00.020
dan is het standaardbordeel om er eigenlijk niet veel aan te doen

323
00:21:00.020 --> 00:21:03.360
en gewoon om die actor te laten crashen.

324
00:21:03.520 --> 00:21:06.140
Wat er dan gebeurt, is dat de parent van die actor

325
00:21:06.680 --> 00:21:08.540
doorheeft van oh, er is iets verkeerd gegaan

326
00:21:08.540 --> 00:21:10.560
en die kan dan bepalen wat er moet gebeuren.

327
00:21:10.780 --> 00:21:14.920
Dus in plaats van dat je alle problemen op moet lossen

328
00:21:14.920 --> 00:21:18.180
op het laagste niveau van je applicatie kan je zeggen,

329
00:21:18.620 --> 00:21:22.060
ik hou er gewoon mee op, ik geef het door naar boven.

330
00:21:22.580 --> 00:21:24.060
En dan kan op het hogere niveau,

331
00:21:24.180 --> 00:21:26.100
misschien ook wel op basis van meer informatie,

332
00:21:26.680 --> 00:21:29.180
want er kunnen meerdere actors zijn,

333
00:21:30.220 --> 00:21:31.800
kan dan een beslissing genomen worden.

334
00:21:34.700 --> 00:21:37.480
Dus dat is in zekere zin,

335
00:21:39.700 --> 00:21:41.620
als ik het zo heel snel uit probeert te leggen,

336
00:21:43.300 --> 00:21:45.620
je ontvangt berichten, je verstuurt berichten

337
00:21:47.340 --> 00:21:48.780
en alles wat je doet

338
00:21:48.780 --> 00:21:51.980
is eigenlijk in zekere zin single-threaded.

339
00:21:52.280 --> 00:21:54.700
In de zin van je elke keer heb je een berichtje.

340
00:21:55.820 --> 00:21:56.740
En wat nog belangrijker is,

341
00:21:57.400 --> 00:21:59.460
die actors daar kan je er miljoenen van hebben.

342
00:22:00.120 --> 00:22:02.380
Een thread is heel erg zwaar.

343
00:22:03.760 --> 00:22:07.180
Misschien heb je max 400 threads of 1000 threads,

344
00:22:07.440 --> 00:22:10.260
maar bij de actors kan je naar de miljoenen actors gaan

345
00:22:10.260 --> 00:22:11.060
als je dat wilt.

346
00:22:11.420 --> 00:22:14.180
Dus ze hebben sowieso veel minder geheugen nodig.

347
00:22:15.320 --> 00:22:17.880
En eigenlijk wat ze doen onder water,

348
00:22:18.300 --> 00:22:20.180
delen actors een threadpool.

349
00:22:21.120 --> 00:22:23.140
Dus al die actors die draaien op een threadpool,

350
00:22:23.740 --> 00:22:25.620
dat heet een dispatcher,

351
00:22:27.060 --> 00:22:30.380
en al die berichten die gaan op

352
00:22:30.380 --> 00:22:31.480
een soort van queue,

353
00:22:32.640 --> 00:22:34.320
elke actor heeft een mailbox.

354
00:22:35.100 --> 00:22:37.080
En die mailbox die wordt door

355
00:22:37.780 --> 00:22:40.060
de dispatcher heen geduwd

356
00:22:40.060 --> 00:22:43.500
naar de actors die die berichten

357
00:22:43.500 --> 00:22:46.260
kunnen verwerken. Dus daar zit een samenspel.

358
00:22:47.540 --> 00:22:49.740
Maar door die opzet

359
00:22:49.740 --> 00:22:52.320
kan je dus ook kiezen voor een andere dispatcher

360
00:22:53.740 --> 00:22:54.900
voor jouw toepassing.

361
00:22:54.980 --> 00:22:57.100
Als je zegt, ik wil gewoon een fixed thread dispatcher,

362
00:22:57.100 --> 00:23:00.260
ik wil gewoon 4 threads hebben, en daar ga ik al mijn actors op draaien.

363
00:23:00.260 --> 00:23:02.760
En dan gaan die actors die draaien dan boven op die 4 threads

364
00:23:03.700 --> 00:23:06.400
en die gaan dan automatisch, zeg maar, krijgen ze een bericht

365
00:23:06.400 --> 00:23:07.380
om het zo maar even te zeggen.

366
00:23:11.000 --> 00:23:12.760
Ja precies, dus je kunt aangeven

367
00:23:12.760 --> 00:23:15.320
van hoeveel resources mag dit systeem als het ware

368
00:23:15.320 --> 00:23:17.120
dus het volledige gebruiken

369
00:23:17.120 --> 00:23:21.200
door een restrictie uit te geven.

370
00:23:22.180 --> 00:23:23.060
Oké, ja.

371
00:23:23.420 --> 00:23:26.260
Nou hoor ik in ACCA

372
00:23:26.260 --> 00:23:29.200
dat de actor model een rol speelt.

373
00:23:29.500 --> 00:23:32.160
Zijn er ook andere dingen die een rol spelen binnen ACCA?

374
00:23:34.940 --> 00:23:36.100
Ja, er zijn best wel veel.

375
00:23:36.520 --> 00:23:38.020
Het heeft wel altijd

376
00:23:38.020 --> 00:23:41.080
qua concept te maken met actors.

377
00:23:42.040 --> 00:23:44.480
Er is nog iets anders en dat heet streams.

378
00:23:46.140 --> 00:23:47.320
En streams zijn eigenlijk

379
00:23:47.320 --> 00:23:49.860
een hoger level programmeer model

380
00:23:49.860 --> 00:23:53.260
bovenop actors. Dus daar kan ik misschien zo meteen

381
00:23:55.720 --> 00:23:57.160
het concept van actors

382
00:23:57.160 --> 00:23:59.920
staat wel heel erg centraal in ACCA.

383
00:24:00.760 --> 00:24:02.680
Daar is het wel zo dat er ook natuurlijk

384
00:24:02.680 --> 00:24:06.260
het ACCA team heeft ook allerlei dingen gemaakt met actors.

385
00:24:07.680 --> 00:24:09.260
Niet per se om

386
00:24:11.320 --> 00:24:12.700
de gebruiker te forceren

387
00:24:12.700 --> 00:24:14.600
om actors te laten gebruiken. Dus bijvoorbeeld

388
00:24:14.600 --> 00:24:17.120
er is een library ACCA Http.

389
00:24:17.720 --> 00:24:20.060
En daarmee kan je Http afhanden

390
00:24:20.060 --> 00:24:22.260
in ACCA GRPC is een andere.

391
00:24:22.780 --> 00:24:25.220
En die hebben allemaal api's

392
00:24:25.220 --> 00:24:28.560
of DSL's hoe je ze wil noemen. Die niet per se

393
00:24:28.560 --> 00:24:30.820
het noodzakelijk maken dat jij een actor maakt.

394
00:24:31.000 --> 00:24:34.280
Dus je kan dan gewoon zeggen van als het een get of een post

395
00:24:35.660 --> 00:24:37.320
complete met een ok,

396
00:24:37.880 --> 00:24:40.640
dan schrijf je geen actors. Maar

397
00:24:40.640 --> 00:24:44.120
ACCA Http is wel geschreven

398
00:24:44.120 --> 00:24:46.500
bovenop streams en streams zijn bovenop actors.

399
00:24:47.760 --> 00:24:49.900
Dus de actors zijn zeg maar

400
00:24:50.480 --> 00:24:51.860
de core primitive ofzo.

401
00:24:53.160 --> 00:24:54.740
De building block.

402
00:24:58.140 --> 00:24:59.420
Dus het is

403
00:25:00.260 --> 00:25:02.900
een manier van hoe je het gebruikt

404
00:25:02.900 --> 00:25:05.740
merk ik. En je kan het ook zonder actor

405
00:25:05.740 --> 00:25:07.480
models eventueel.

406
00:25:07.480 --> 00:25:11.640
Het is zeg maar de primaire building block van de toolkit.

407
00:25:13.120 --> 00:25:15.020
En in de toolkit zitten andere tools

408
00:25:15.020 --> 00:25:17.680
die het net een level hoger maken.

409
00:25:17.820 --> 00:25:20.600
Dus dan hoef je niet met de primitieve tool

410
00:25:20.600 --> 00:25:23.820
te werken, maar met een DSL.

411
00:25:24.420 --> 00:25:27.400
Maar in sommige gevallen is het heel erg handig

412
00:25:28.540 --> 00:25:30.060
om de manier van

413
00:25:30.060 --> 00:25:31.660
de actor model te gebruiken.

414
00:25:32.920 --> 00:25:36.220
Wat ook heel eenvoudig is in actors is state machines schrijven.

415
00:25:36.440 --> 00:25:37.140
Fijne state machines.

416
00:25:38.920 --> 00:25:43.240
Want je kan in die actor zeggen ik ben nu in state A.

417
00:25:43.240 --> 00:25:45.240
Dan krijg ik een berichtje. Oh, ik heb een berichtje gekregen.

418
00:25:45.480 --> 00:25:48.440
Ga nu naar state B. Dus dan verander je je

419
00:25:48.440 --> 00:25:50.440
receive method, zoals dat heet.

420
00:25:50.680 --> 00:25:52.600
Dan zeg je van nou, tenminste dat is de oude manier.

421
00:25:53.600 --> 00:25:56.560
Er is een aantal nieuwe APIs bijgekomen, maar

422
00:25:56.560 --> 00:25:59.760
je kan op basis van een bericht naar een andere state switchen.

423
00:26:00.660 --> 00:26:04.000
En die state switchings zijn ook weer

424
00:26:04.840 --> 00:26:06.920
per bericht. Dus je krijgt nooit het probleem

425
00:26:06.920 --> 00:26:10.720
dat je, oh ik heb in concurrently nog een bericht binnen gekregen.

426
00:26:10.720 --> 00:26:12.660
Nu zit ik ineens in het verkeerde state.

427
00:26:13.560 --> 00:26:17.080
Dus je kan heel netjes eigenlijk al die state machines

428
00:26:17.080 --> 00:26:19.180
maken. En dat kan je van hele simpele dingen doen

429
00:26:19.630 --> 00:26:21.260
of hele complexe dingen eigenlijk.

430
00:26:22.360 --> 00:26:24.880
Als ik het mag samenvatten, een state model

431
00:26:24.880 --> 00:26:28.810
zou je daarmee kunnen maken? Of zie ik dat verkeerd?

432
00:26:30.100 --> 00:26:32.060
Nou ja, ik weet niet wat je daar precies mee bedoelt.

433
00:26:32.820 --> 00:26:36.040
Nou, een model wat de

434
00:26:36.040 --> 00:26:38.200
staat van het systeem beschrijft.

435
00:26:38.200 --> 00:26:39.700
Ja, dat ga ik er zeker mee doen.

436
00:26:40.540 --> 00:26:42.800
En dat je dan akka, noem het maar even,

437
00:26:44.380 --> 00:26:46.820
gewoon al die details uitwerkt.

438
00:26:47.420 --> 00:26:50.080
Ja, dus een van de dingen

439
00:26:50.640 --> 00:26:52.860
die daarna vaak gebeurt, is

440
00:26:52.860 --> 00:26:53.880
iemand maakt bijvoorbeeld een actor,

441
00:26:54.700 --> 00:26:57.620
om een of andere businesslogica vast te leggen.

442
00:26:58.200 --> 00:27:01.240
Dat is heel erg handig, want je schrijft

443
00:27:01.240 --> 00:27:03.900
de API van de actor in vorm van berichtjes.

444
00:27:05.060 --> 00:27:07.080
Get article, put article, weet ik veel.

445
00:27:07.460 --> 00:27:09.180
Noem het maar op, ik ben al slecht in voorbeelden.

446
00:27:10.400 --> 00:27:12.900
Maar zeg maar een shopping basket, waar je

447
00:27:14.480 --> 00:27:15.920
een artikel terug toevoegt.

448
00:27:16.800 --> 00:27:18.440
En nog een artikel toevoegt, waar een paar mensen zegt

449
00:27:18.940 --> 00:27:21.960
ik ga dit spul kopen, dan ga ik naar een nieuw estate

450
00:27:21.960 --> 00:27:24.940
misschien wel. En zo verder en zo verder.

451
00:27:26.560 --> 00:27:28.240
En wat in ak ook mogelijk is,

452
00:27:28.280 --> 00:27:31.360
om te zeggen van nou, ik wil, want al die informatie

453
00:27:31.360 --> 00:27:33.480
die je een paar momentjes hebt, misschien wel een shopping basket

454
00:27:33.480 --> 00:27:35.540
niet zo heel relevant, omdat die,

455
00:27:36.620 --> 00:27:37.520
nee, gewoon een shopping basket.

456
00:27:39.260 --> 00:27:40.680
Ik wou gewoon zeggen,

457
00:27:42.260 --> 00:27:43.700
je wilt natuurlijk wel die blijk bestaan.

458
00:27:44.200 --> 00:27:46.320
Als er wat crasht of terugkomt.

459
00:27:46.780 --> 00:27:50.080
Als er even wat fout gaat, ok, maar je webbrowser refresh

460
00:27:50.080 --> 00:27:53.320
wil je gewoon dat je shopping basket er weer is en niet dat je

461
00:27:53.320 --> 00:27:56.740
20 artikelen bij de bijeenkomst, weet ik veel, dat die een keer weg zijn.

462
00:27:56.740 --> 00:27:57.540
Dus

463
00:27:59.840 --> 00:28:02.580
een techniek die bestaat in akka om

464
00:28:02.580 --> 00:28:06.060
die state in die actor, dat state model vast te houden en ook weer terug

465
00:28:06.060 --> 00:28:08.160
te krijgen na een crash.

466
00:28:08.620 --> 00:28:12.180
Dat is de akka persistence module.

467
00:28:12.700 --> 00:28:15.320
En dan kan je in een event sourced

468
00:28:15.320 --> 00:28:18.060
manier, kan je de

469
00:28:18.060 --> 00:28:21.060
dingen die gebeurd zijn met die actor, kan je vastleggen

470
00:28:21.060 --> 00:28:22.500
in een journal.

471
00:28:22.500 --> 00:28:24.120
Dus een event journal.

472
00:28:25.060 --> 00:28:28.440
En dan kan je ook weer na een crash of

473
00:28:29.160 --> 00:28:30.780
misschien gaat je shopping basket,

474
00:28:31.000 --> 00:28:33.040
wordt er voor even niet gebruikt als je passivereert hem.

475
00:28:33.440 --> 00:28:36.580
En dan na een tijdje komen we terug met shopping basket, dan wordt die weer

476
00:28:37.340 --> 00:28:39.900
gerehydrate of deserialized

477
00:28:39.900 --> 00:28:42.780
van de journal. En dat werkt gewoon

478
00:28:42.780 --> 00:28:46.160
volgens de principes van event sourcing, zoals je die wel kent, denk ik.

479
00:28:46.460 --> 00:28:48.080
Of wat je ook al even over zei.

480
00:28:48.080 --> 00:28:51.120
Ja, die events worden zeg maar opgeslagen

481
00:28:51.120 --> 00:28:53.500
en dan kun je eventueel, ten eerste bij

482
00:28:54.080 --> 00:28:56.740
event sourcing, database of

483
00:28:56.740 --> 00:28:59.540
whatever, je kunt dat snapshot eventueel, dan zou je ook

484
00:28:59.540 --> 00:29:01.200
heel snel naar een bepaalde moment kunnen.

485
00:29:01.580 --> 00:29:05.340
Ja, cool.

486
00:29:05.920 --> 00:29:08.000
Dat zit ook in Acca persistence inderdaad.

487
00:29:09.660 --> 00:29:11.200
Dus als ik het goed begrijp, zou je

488
00:29:11.200 --> 00:29:14.880
Acca kunnen gebruiken, of nee, je gebruikt het vooral om

489
00:29:14.880 --> 00:29:17.940
je applicatie zo robust en schaalbaar mogelijk te maken, toch?

490
00:29:18.240 --> 00:29:19.660
Klopt, ja.

491
00:29:20.140 --> 00:29:23.900
Zodat je de high performance kan

492
00:29:23.900 --> 00:29:26.780
garanderen. Ja, high performance en schaalbaarheid

493
00:29:26.780 --> 00:29:29.380
zijn wel de redenen waarom je Acca gebruikt.

494
00:29:29.500 --> 00:29:32.820
En ook de robustheid, zeg maar, dat je ervoor kan zorgen dat het blijft

495
00:29:32.820 --> 00:29:36.020
werken. En het geeft je een hele manier van werken

496
00:29:36.020 --> 00:29:38.340
voor het maken van robuste software.

497
00:29:40.160 --> 00:29:41.360
Door middel van

498
00:29:41.360 --> 00:29:44.640
het feit dat die actors elkaar dus ook

499
00:29:44.640 --> 00:29:47.360
kunnen opvangen, als het ware. Als zo'n probleem ontstaat.

500
00:29:51.240 --> 00:29:53.280
ja, die

501
00:29:53.280 --> 00:29:56.420
Acca persistence daarin

502
00:29:56.420 --> 00:29:59.480
is er ook een module die hoeft niet per se te gebruiken, want dat gaat al bijna iedereen.

503
00:29:59.540 --> 00:30:02.360
Dat heet cluster sharding. Dus dan kan je

504
00:30:03.200 --> 00:30:05.200
eigenlijk ook heel erg schalen.

505
00:30:06.540 --> 00:30:07.800
En cluster sharding,

506
00:30:08.320 --> 00:30:09.780
ik wil eigenlijk wat je opdraaien.

507
00:30:11.380 --> 00:30:13.780
In Acca heb je dus actors. Die actors kan je draaien

508
00:30:13.780 --> 00:30:14.840
in een actor system.

509
00:30:15.140 --> 00:30:20.160
Zo heet dat. Als je programmeert, dan zeg je, nieuw actor system, of actor system in schalen.

510
00:30:20.380 --> 00:30:21.820
En dan zeg je, oké, ik start

511
00:30:22.800 --> 00:30:25.460
mijn main actor. Dat is gewoon een hoofdactor.

512
00:30:26.080 --> 00:30:28.360
Een guardian, wat het vaak gaan noemt. En dan

513
00:30:29.200 --> 00:30:32.040
daaronder maak je meer en meer actors die het echte werk gaan doen.

514
00:30:32.900 --> 00:30:34.400
En dat is natuurlijk wel leuk, maar dan heb je

515
00:30:34.400 --> 00:30:38.560
maar één JVM die draait met een aantal actors erin.

516
00:30:39.780 --> 00:30:40.520
En Acca heeft

517
00:30:40.520 --> 00:30:43.220
daarnaast dus ook Acca Cluster. En Acca Cluster

518
00:30:43.220 --> 00:30:46.740
zorgt ervoor dat die actors die je in je actor system hebt,

519
00:30:46.820 --> 00:30:49.500
dat die over een cluster van nodes

520
00:30:50.820 --> 00:30:51.820
aanwezig zullen zijn.

521
00:30:53.540 --> 00:30:55.720
En dan in cluster heb je weer een aantal tools.

522
00:30:55.880 --> 00:30:58.480
En een van die is cluster sharding. En die zorgt ervoor

523
00:30:58.480 --> 00:31:01.400
dat als jij zegt van, ik moet

524
00:31:01.400 --> 00:31:04.660
shopping basket 1 hebben, dan weet Acca Cluster

525
00:31:04.660 --> 00:31:07.520
wacht even, er is nog geen 1, die ga ik aanmaken.

526
00:31:07.600 --> 00:31:10.100
Ik ga hem aanmaken op node 3 bijvoorbeeld.

527
00:31:11.320 --> 00:31:13.860
En dan houdt hij bij, qua partitioning

528
00:31:13.860 --> 00:31:16.880
als er berichten komen voor shopping basket 1,

529
00:31:17.120 --> 00:31:19.660
dan ga ik altijd naar node 3, want daar zit een region

530
00:31:19.660 --> 00:31:21.760
met allerlei actors erin,

531
00:31:22.700 --> 00:31:25.620
die daar worden gespawned, die daar worden gecreëerd.

532
00:31:26.640 --> 00:31:28.600
En zo kan je dus een heel schaalbaar systeem maken

533
00:31:29.700 --> 00:31:31.800
die over meerdere nodes heen

534
00:31:32.480 --> 00:31:34.860
al die state, al die actors

535
00:31:35.960 --> 00:31:36.480
verdeelt.

536
00:31:38.240 --> 00:31:40.120
Oké. Maar wat ik dan wel begrijp,

537
00:31:40.160 --> 00:31:42.340
als ik het goed begrijp, dan zijn er qua

538
00:31:44.440 --> 00:31:46.520
infrastructuur, voor lack of better word,

539
00:31:47.580 --> 00:31:49.720
infrastructuur, want er is iets waar

540
00:31:49.720 --> 00:31:52.640
al die actoren in leven, dus als je net

541
00:31:52.640 --> 00:31:55.440
ook aangaf, dat systeem start en dan maak je actoren

542
00:31:55.440 --> 00:31:58.440
daarin aan. En dan zijn er dus bepaalde

543
00:31:59.440 --> 00:32:01.620
ja, is daar iets, ja daar hoef je niet

544
00:32:01.620 --> 00:32:04.260
zelf te proberen, maar dat wordt door AKA aangeleverd

545
00:32:04.260 --> 00:32:07.740
om te zorgen dat dat dan kan plaatsvinden,

546
00:32:07.920 --> 00:32:10.460
zeg maar, dus dat ze eventueel messages

547
00:32:10.460 --> 00:32:13.900
met elkaar, aan elkaar doorgeven of

548
00:32:13.900 --> 00:32:15.100
hoe moet je daar zelf iets voor doen?

549
00:32:17.180 --> 00:32:19.320
Dus stel dat bijvoorbeeld actor 1 iets wil

550
00:32:19.320 --> 00:32:22.080
sturen naar actor 2, wordt dat dan voor jou

551
00:32:22.080 --> 00:32:25.080
gedaan of hoe? Dan wordt dat

552
00:32:25.620 --> 00:32:27.000
in zekere zin voor je gedaan.

553
00:32:28.940 --> 00:32:31.260
Dat is niet, als jij zeg maar van

554
00:32:31.260 --> 00:32:34.240
actor 1 met actor 2 wil praten, dan

555
00:32:34.240 --> 00:32:37.000
moet je van actor 2 de actor

556
00:32:37.000 --> 00:32:40.020
reference hebben. En die actor reference

557
00:32:40.020 --> 00:32:42.480
die kan je op verschillende manieren krijgen, je kan ook

558
00:32:42.900 --> 00:32:46.100
vragen aan het actorsysteem, heb jij

559
00:32:46.100 --> 00:32:48.660
een actor met dit pad, dus alle actors zitten

560
00:32:48.660 --> 00:32:51.620
achter een soort van uniek pad, als het ware.

561
00:32:52.480 --> 00:32:54.700
En actor references kunnen ook wijzen

562
00:32:54.700 --> 00:32:57.360
naar een remote machine of kunnen ook wijzen naar

563
00:32:57.360 --> 00:32:59.360
een actor op het cluster.

564
00:33:00.780 --> 00:33:03.240
Dus er zijn verschillende manieren daarvoor.

565
00:33:04.580 --> 00:33:07.060
Alleen in zo'n algemeenheid

566
00:33:07.060 --> 00:33:09.720
wat je normaal gesproken

567
00:33:09.720 --> 00:33:12.580
zou doen, is dat je zegt van nou, ik ga gewoon een aantal

568
00:33:12.580 --> 00:33:18.640
JVM processen opzetten. En die JVM

569
00:33:19.180 --> 00:33:21.620
als onderdeel zijnde van hetzelfde cluster, die hebben

570
00:33:21.620 --> 00:33:23.720
ook allemaal gebruiken dezelfde code.

571
00:33:25.560 --> 00:33:27.740
En bij het opstarten van zo'n cluster

572
00:33:28.460 --> 00:33:30.840
is er een bootstrap moment om het cluster

573
00:33:30.840 --> 00:33:32.760
aan elkaar te connecten als het ware.

574
00:33:33.600 --> 00:33:36.400
Dus die actorsystems die zien, oh, er is eentje up.

575
00:33:36.580 --> 00:33:39.700
Ik ga ook up. Dan is er een bepaalde leader, een soort van exchange

576
00:33:39.700 --> 00:33:42.670
en een soort van handshake die gewoon gebeurt. En op een bepaald moment

577
00:33:43.320 --> 00:33:45.770
worden die nodes, al die nodes worden onderdeel van dezelfde

578
00:33:45.770 --> 00:33:48.830
groep, krijgen dezelfde group membership, zoals het heet.

579
00:33:49.490 --> 00:33:52.010
En op dat moment kunnen de actors in de tusser met elkaar

580
00:33:52.750 --> 00:33:54.770
praten. En wat er vaker gebeurt

581
00:33:54.770 --> 00:33:57.950
is dat je gewoon zegt van nou, ik ga een cluster

582
00:33:57.950 --> 00:34:00.210
sharding systeem opzetten voor shopping baskets bijvoorbeeld.

583
00:34:00.750 --> 00:34:03.230
En de ene shopping basket praat niet met de andere shopping basket.

584
00:34:03.490 --> 00:34:06.870
Dat is niet zo snel iets wat er gebeurt. Maar het zou wel kunnen

585
00:34:06.870 --> 00:34:10.310
zijn dat je misschien een andere

586
00:34:10.310 --> 00:34:12.550
service of iets wat gedeeld is door

587
00:34:12.550 --> 00:34:16.290
verschillende actors aanspreekt via een bepaalde actor reference.

588
00:34:18.870 --> 00:34:19.230
Alleen

589
00:34:19.230 --> 00:34:20.590
ja, er zijn dan wel wat

590
00:34:23.810 --> 00:34:25.110
ja, er zijn heel verschillende

591
00:34:25.110 --> 00:34:27.630
manieren om het natuurlijk te doen. En wat wij nu proberen

592
00:34:27.630 --> 00:34:30.850
te doen bij Lightband is ook om op een platform guide

593
00:34:30.850 --> 00:34:33.710
of we proberen hem niet te hebben. We hebben een platform guide

594
00:34:34.370 --> 00:34:36.850
om je uit te leggen van hoe ga je dit nou allemaal doen?

595
00:34:36.890 --> 00:34:39.550
Want er zijn heel veel keuzes en ik weet nog van heel lang geleden

596
00:34:40.070 --> 00:34:43.490
dat ik als consultant akka overal ging

597
00:34:43.490 --> 00:34:45.550
doen zegmaar. Dan werden altijd

598
00:34:46.190 --> 00:34:48.810
veel dezelfde vragen gesteld van ja, hoe gaan we

599
00:34:48.810 --> 00:34:51.670
waarom moet ik hier nu een actor gebruiken? Of hoe gaan we ervoor zorgen dat

600
00:34:51.670 --> 00:34:54.990
ze allemaal in het cluster draaien? Of hoe zorgen we ervoor

601
00:34:55.570 --> 00:34:57.550
dat die altijd blijft bestaan? Of dat er

602
00:34:58.110 --> 00:35:00.750
van sommige dingen moet ik er altijd één hebben in plaats van

603
00:35:01.250 --> 00:35:03.630
één in het hele cluster, want er is één

604
00:35:03.630 --> 00:35:06.250
centraal ding hoe je zegt. Dus daar

605
00:35:07.250 --> 00:35:10.550
omdat het dus zo'n toolkit is waar je heel vrij uit kan kiezen

606
00:35:10.550 --> 00:35:13.250
is het ook voor veel mensen best wel een lastig

607
00:35:15.110 --> 00:35:16.450
ding om zomaar even

608
00:35:16.450 --> 00:35:19.250
mee te beginnen, want er zijn heel veel onderdelen.

609
00:35:19.750 --> 00:35:21.190
En daarom hebben wij

610
00:35:22.110 --> 00:35:25.250
ik weet niet hoe lang we dit al doen, in ieder geval wel een paar maanden

611
00:35:25.990 --> 00:35:28.990
hebben we de akka platform guide

612
00:35:28.990 --> 00:35:30.790
en die laat je zien

613
00:35:30.790 --> 00:35:35.310
hoe je microservices met akka schrijft op een

614
00:35:35.310 --> 00:35:38.690
terminatet manier, in de vorm van event sourcing

615
00:35:38.690 --> 00:35:41.450
in de vorm van events, in de vorm van

616
00:35:41.450 --> 00:35:43.930
views, we noemen dat projections

617
00:35:44.930 --> 00:35:47.250
en in de vorm van

618
00:35:47.250 --> 00:35:50.170
in de vorm van die

619
00:35:50.170 --> 00:35:52.370
persistent actors die ik net zei.

620
00:35:52.810 --> 00:35:55.630
En dat ook in combinatie met GRPC.

621
00:35:58.730 --> 00:35:59.610
En daar hebben we nu

622
00:35:59.610 --> 00:36:02.490
ook recentelijk hebben we daar een product voor gebouwd

623
00:36:02.490 --> 00:36:04.650
voor Amazon.

624
00:36:05.510 --> 00:36:07.930
Dus in Amazon kan je de

625
00:36:07.930 --> 00:36:10.310
akka cloud platform vinden.

626
00:36:12.490 --> 00:36:14.070
En daarmee kan je

627
00:36:14.070 --> 00:36:17.470
gemakkelijker op Kubernetes zo'n akka microservice

628
00:36:18.670 --> 00:36:19.210
deployen.

629
00:36:19.210 --> 00:36:22.930
Dus dat is wel een goede vraag, want er zit heel veel infrastructuur

630
00:36:22.930 --> 00:36:25.910
altijd bij, van hoe start ik nou het hele systeem.

631
00:36:26.390 --> 00:36:28.450
En dat is best wel een uitdaging voor veel mensen.

632
00:36:29.870 --> 00:36:31.690
En dat is ook een van de redenen

633
00:36:31.690 --> 00:36:33.930
waarom ik eerder aan Cloudflow gewerkt heb.

634
00:36:33.950 --> 00:36:37.270
Cloudflow is ook een project van lightband.

635
00:36:37.910 --> 00:36:40.390
Het doet iets vergelijkbaars, maar dan voor streaming applications.

636
00:36:40.770 --> 00:36:43.470
Dus voor realtime streaming applications en in combinatie met

637
00:36:44.290 --> 00:36:45.250
streaming platforms.

638
00:36:47.670 --> 00:36:50.010
Want er wordt gewoon altijd weer wat ergens draaien, weet je wel.

639
00:36:50.250 --> 00:36:52.510
En tegenwoordig is het bij altijd Kubernetes, dus

640
00:36:52.510 --> 00:36:55.450
daar heb je gewoon wat hulp bij nodig, vaak.

641
00:36:59.090 --> 00:37:01.490
En ja, je noemt net lightband.

642
00:37:02.730 --> 00:37:04.490
Kan je daar iets meer over vertellen voor

643
00:37:04.490 --> 00:37:06.070
mensen die het nog niet kennen?

644
00:37:07.090 --> 00:37:09.850
Ja, lightband is het bedrijf dat achter

645
00:37:10.310 --> 00:37:13.210
ACA zit eigenlijk. Het heet vroeger TypeSafe.

646
00:37:14.530 --> 00:37:16.270
Op een bepaalde manier hebben ze die

647
00:37:16.270 --> 00:37:18.810
namen veranderd, want ze werden elke keer verkeerd aangeschreven

648
00:37:18.810 --> 00:37:21.970
als Typeface of iets anders.

649
00:37:23.510 --> 00:37:25.490
En dat ging ook op een bepaalde manier.

650
00:37:25.490 --> 00:37:27.810
Het is meer dan alleen maar

651
00:37:27.810 --> 00:37:29.650
TypeSafe programming languages, weet je wel.

652
00:37:29.810 --> 00:37:33.350
Dat is ook een naam vanuit Scala.

653
00:37:35.570 --> 00:37:37.870
Dus de bedenker van ACA,

654
00:37:38.390 --> 00:37:40.650
Jonas Bonner, die heeft op een bepaalde moment

655
00:37:42.610 --> 00:37:43.950
begonnen met ACA,

656
00:37:44.230 --> 00:37:45.870
een bedrijf vormeentjes gestart, het heette

657
00:37:45.870 --> 00:37:48.930
Scalable Solutions. En uiteindelijk

658
00:37:48.930 --> 00:37:52.770
zijn ze gaan praten met Martin Odersky, de maker van Scala.

659
00:37:53.310 --> 00:37:55.770
En die hebben toen samen een bedrijf gestart

660
00:37:57.790 --> 00:37:59.390
10 jaar geleden denk ik.

661
00:37:59.530 --> 00:38:00.870
Ja, 10 jaar geleden ongeveer.

662
00:38:01.930 --> 00:38:03.950
En die zijn een bedrijf gestart, TypeSafe.

663
00:38:05.250 --> 00:38:07.810
En die wilden die combinatie van Scala

664
00:38:07.810 --> 00:38:09.370
en ACA aan de markt brengen.

665
00:38:09.890 --> 00:38:13.550
En uiteindelijk is Lightband de nieuwe naam van dat bedrijf al een hele tijd.

666
00:38:14.410 --> 00:38:16.410
Maar dat is het bedrijf dat

667
00:38:17.230 --> 00:38:19.890
achter Scala zit en achter

668
00:38:20.410 --> 00:38:22.890
ACA de toolkit. Maar we hebben ook

669
00:38:23.750 --> 00:38:26.090
we doen nu al iets minder mee, maar we hebben ook

670
00:38:26.090 --> 00:38:30.010
Play en Lightbombs, andere frameworks die we ook doen.

671
00:38:39.090 --> 00:38:39.950
Ja, vind ik zelf wel

672
00:38:39.950 --> 00:38:42.610
we zijn ook heel erg gefocust op de Java community.

673
00:38:43.150 --> 00:38:45.670
Want er zijn gewoon veel meer Java-programmeurs dan Scala-programmeurs.

674
00:38:47.270 --> 00:38:48.510
Ik vind het zelf

675
00:38:48.510 --> 00:38:50.750
ja, vele malen fijner in Scala.

676
00:38:53.050 --> 00:38:54.530
En ja, Java is natuurlijk

677
00:38:54.530 --> 00:38:57.530
wel heel erg gegroeid over de tijd en heel erg verbeterd.

678
00:38:58.350 --> 00:39:00.570
Het gaat ook steeds sneller nu met die

679
00:39:00.570 --> 00:39:03.310
nieuwe versies en zo. Maar ja, voor mij zelf

680
00:39:03.310 --> 00:39:06.890
persoonlijk is Scala nog steeds favoriet.

681
00:39:09.510 --> 00:39:10.890
Ja, voor je favoriete taal.

682
00:39:11.330 --> 00:39:15.030
Ja, nee, dat maakt niet uit. Het is voor mij, ik kijk van buiten

683
00:39:15.030 --> 00:39:18.410
zeg maar. Ik weet je, ik ben net ontwikkeld.

684
00:39:18.470 --> 00:39:20.710
Dus dat is echt precies het andere kant zeg maar.

685
00:39:20.710 --> 00:39:23.370
Maar dan hoor ik, ik hoorde wel heel vaak mensen

686
00:39:23.370 --> 00:39:26.330
over Scala spreken en heel positief zeggen oké,

687
00:39:26.510 --> 00:39:29.350
als ik in Scala doe, dan wil ik eigenlijk niet meer terug naar Java.

688
00:39:30.290 --> 00:39:32.070
Dat hoor ik wel vaker, dat sentiment.

689
00:39:32.950 --> 00:39:34.750
Nou, het is ook zo dat ik op een bepaald moment

690
00:39:34.750 --> 00:39:38.630
deed tot Java en toen ben ik in zekere zin geforceerd

691
00:39:38.630 --> 00:39:41.350
hem tot net te gaan doen. Dat maakte hem trouwens niet uit.

692
00:39:41.610 --> 00:39:43.790
Ik vind het gewoon allerlei tools die je gebruikt.

693
00:39:46.310 --> 00:39:47.370
Zo simpel is het.

694
00:39:47.370 --> 00:39:50.450
Maar toen kwam ik in C Sharp

695
00:39:50.450 --> 00:39:53.770
en dat was toen net framework 2.5

696
00:39:53.770 --> 00:39:56.370
en dan 3.5.

697
00:39:57.310 --> 00:39:59.670
Dus ze hadden een 2 codebase

698
00:39:59.670 --> 00:40:01.590
en toen zijn we naar 3.5 gegaan.

699
00:40:01.810 --> 00:40:04.650
En daar zag ik al heel veel voordelen van dingen als link

700
00:40:05.770 --> 00:40:08.770
en andere functional programming style

701
00:40:08.770 --> 00:40:10.770
kwam daar steeds meer naar voren.

702
00:40:11.350 --> 00:40:13.050
En first class functions en dat soort dingen.

703
00:40:13.050 --> 00:40:16.070
Dus dat vond ik eigenlijk wel heel erg gaaf.

704
00:40:16.710 --> 00:40:18.510
Toen kwam ik op een ander project van

705
00:40:18.940 --> 00:40:20.770
we moeten het in Java doen, oké.

706
00:40:20.870 --> 00:40:23.870
En toen, oh man, dit is toch wel even weer een stap terug.

707
00:40:24.930 --> 00:40:25.490
Op dat moment.

708
00:40:27.270 --> 00:40:30.770
Toen ik daarna Akra zag staan met een voorbeeld uit de scale

709
00:40:30.770 --> 00:40:32.910
dacht ik, wow, dit is precies wat ik wil.

710
00:40:32.950 --> 00:40:35.590
Dit is eigenlijk nog beter dan C Sharp

711
00:40:36.070 --> 00:40:37.490
in die functional programming zin.

712
00:40:38.810 --> 00:40:41.350
En wat het allemaal bood.

713
00:40:42.550 --> 00:40:43.230
Dus een soort van

714
00:40:46.290 --> 00:40:47.850
een style waar je

715
00:40:47.850 --> 00:40:49.790
veel minder hoeft te typen. Een concise

716
00:40:50.270 --> 00:40:52.190
af en toe ben ik Nederlands een beetje kwijt, maar

717
00:40:52.190 --> 00:40:54.890
een beknopte taal.

718
00:40:58.030 --> 00:40:59.630
En ja, een hele goede

719
00:41:00.050 --> 00:41:02.550
support voor collections en dat soort dingen

720
00:41:02.550 --> 00:41:05.130
en voor alle dingen die je normaal gesproken tegenkomt.

721
00:41:06.350 --> 00:41:08.310
Er is iets, er is niets, de option

722
00:41:12.070 --> 00:41:12.870
types en

723
00:41:12.870 --> 00:41:14.810
alle andere dingen die je zo tegenkomt.

724
00:41:15.890 --> 00:41:16.770
Dus ja, Scala is

725
00:41:16.770 --> 00:41:18.970
wel steeds een favoriet.

726
00:41:19.610 --> 00:41:22.030
Wat ik ook wel zorg voor mensen is, ja, dit is gewoon veel te moeilijk voor mij.

727
00:41:24.070 --> 00:41:25.910
En het komt

728
00:41:25.910 --> 00:41:29.130
ook omdat er zijn mensen ook bezig met Scala

729
00:41:29.730 --> 00:41:31.510
om die lat nog verder te leggen.

730
00:41:31.510 --> 00:41:34.910
Dus die doen research en die gaan hele

731
00:41:34.910 --> 00:41:37.350
complexe dingen proberen

732
00:41:37.790 --> 00:41:40.590
die voor iedereen, niet voor de meeste mensen

733
00:41:40.590 --> 00:41:43.430
te ver gaan of onnodig zijn, maar

734
00:41:43.430 --> 00:41:46.210
in Scala zelf zit ook een hele

735
00:41:47.870 --> 00:41:49.470
functionele, en dan bedoel ik niet

736
00:41:49.470 --> 00:41:52.150
functional programming, maar een hele functionele core van

737
00:41:52.150 --> 00:41:55.410
simpele dingen die heel goed werken. Dus je hoeft niet al die hele

738
00:41:55.410 --> 00:41:58.930
moeilijke dingen te gebruiken, maar daar worden mensen wel door afgeslikt.

739
00:42:00.970 --> 00:42:03.410
Dus dat wordt nu een beetje in de

740
00:42:03.410 --> 00:42:06.010
nieuwe versie, moet het getracht om het een beetje

741
00:42:06.010 --> 00:42:08.570
simpeler te maken voor iedereen.

742
00:42:09.110 --> 00:42:10.690
Want ja, wie wil nou iets zo complex?

743
00:42:12.230 --> 00:42:14.950
Ik zat laatst nog een artikel

744
00:42:14.950 --> 00:42:17.930
te lezen over Scala en

745
00:42:18.550 --> 00:42:21.090
het vinden van goede developers

746
00:42:21.090 --> 00:42:24.210
in Scala. Wat is jouw blik

747
00:42:24.210 --> 00:42:26.330
daarbij? Wat vind je daarvan?

748
00:42:26.330 --> 00:42:29.810
Heb je daar zelf ook een beetje ervaring mee, dat je

749
00:42:29.810 --> 00:42:32.330
echt denkt van nou, er zijn toch echt wel schaarse

750
00:42:33.030 --> 00:42:34.510
Scala developers out there?

751
00:42:36.050 --> 00:42:38.490
Ja, dat is een beetje een gek verhaal, want

752
00:42:39.290 --> 00:42:41.430
toen ik dat project begon, voor het eerst met

753
00:42:41.430 --> 00:42:44.110
Scala, toen waren er geen Scala mensen.

754
00:42:44.810 --> 00:42:47.450
En toen heb ik gewoon een aantal collega's gevraagd, wie wilde graag

755
00:42:47.450 --> 00:42:50.030
eens nieuws doen? Nou, er waren er genoeg.

756
00:42:50.370 --> 00:42:51.910
En toen ik mensen

757
00:42:52.730 --> 00:42:55.890
mee ging interviewen, een ervan was

758
00:42:55.890 --> 00:42:57.890
de jongen waar ik samen in het boek mee geschreven heb,

759
00:42:58.110 --> 00:43:01.110
Rob Bakker. Die was ook geen Scala programmer,

760
00:43:01.310 --> 00:43:03.090
maar dat was een hele ervaring Java-programmeur.

761
00:43:03.830 --> 00:43:06.130
En die zag het ook wel zitten om wat nieuws te gaan doen.

762
00:43:06.650 --> 00:43:09.710
En toen waren we als team, denk ik met een man of vier,

763
00:43:09.890 --> 00:43:12.910
initial, we waren binnen

764
00:43:12.910 --> 00:43:15.790
nou, misschien twee weken of zo waren we

765
00:43:15.790 --> 00:43:18.650
gewoon, twee weken misschien,

766
00:43:18.650 --> 00:43:21.730
waren we zeker gewoon goed bezig, zeg maar.

767
00:43:23.370 --> 00:43:24.910
Dus ik denk niet dat je

768
00:43:24.910 --> 00:43:27.650
per se iemand moet hebben die al

769
00:43:30.310 --> 00:43:32.750
jarenlang Scala doet of zo. Het is natuurlijk wel leuk, maar

770
00:43:33.330 --> 00:43:35.690
ik denk niet dat het heel ver weg is

771
00:43:35.690 --> 00:43:38.730
voor mensen om daarmee te beginnen. Alleen je moet wel

772
00:43:39.570 --> 00:43:42.150
naar die kleinere set, naar die simpele set

773
00:43:42.850 --> 00:43:44.010
van dingen kijken.

774
00:43:44.690 --> 00:43:47.650
Dus als je meteen gaat naar...

775
00:43:47.650 --> 00:43:50.790
Er zijn veel mensen die in de Scala wereld die

776
00:43:50.790 --> 00:43:52.930
veel meer geïnteresseerd zijn in de pure functional

777
00:43:52.930 --> 00:43:56.230
programming kant. En de pure functional programming

778
00:43:56.230 --> 00:43:58.110
kant in de zin van Haskell.

779
00:43:59.790 --> 00:44:02.650
Dus dan krijg je heel veel

780
00:44:04.290 --> 00:44:05.490
abstracte modellen, et cetera.

781
00:44:05.610 --> 00:44:06.770
En dat is gewoon niet voor iedereen,

782
00:44:07.430 --> 00:44:11.090
simpel gezegd. Dus als je dat soort mensen

783
00:44:11.090 --> 00:44:13.890
wil vinden, dan moet je of een Haskell persoon vinden,

784
00:44:13.890 --> 00:44:16.670
of iemand vinden die echt die hele

785
00:44:16.670 --> 00:44:20.270
manier van Scala in pure functional programming

786
00:44:20.270 --> 00:44:22.890
echt ziet zitten en ook goed begrijpt.

787
00:44:22.990 --> 00:44:27.450
Daar zijn zeker voor- en nadelen aan, maar...

788
00:44:27.450 --> 00:44:29.170
Ik denk dat goede programmeurs sowieso

789
00:44:29.170 --> 00:44:31.510
lastig te vinden zijn, die echt goed zijn.

790
00:44:32.590 --> 00:44:34.470
Maar tegelijkertijd denk ik ook dat

791
00:44:34.470 --> 00:44:38.270
een goede programmeur niet alleen maar door technische skill

792
00:44:39.370 --> 00:44:41.030
wordt bepaald, zeg maar.

793
00:44:42.130 --> 00:44:44.150
Ik heb ook weleens met mensen gewerkt die

794
00:44:44.150 --> 00:44:46.790
technisch heel goed waren, maar daar kwam

795
00:44:46.790 --> 00:44:49.250
toch eigenlijk niks uit, op wat voor manier dan ook.

796
00:44:51.050 --> 00:44:53.090
Dus ja, het is wel zo, als je puur

797
00:44:53.090 --> 00:44:55.510
kijkt naar, ik wil een Scala-programmeur hebben

798
00:44:56.030 --> 00:44:59.210
met vijf ervaring, of zoiets, dan wordt

799
00:44:59.210 --> 00:45:01.930
dat een lastige uitdaging inderdaad. Dat is

800
00:45:01.930 --> 00:45:04.250
wel zo, als je zegt, dat is mijn maatstaf.

801
00:45:04.370 --> 00:45:06.770
Als je zegt, ik wil gewoon een goede programmeur hebben.

802
00:45:08.810 --> 00:45:10.910
En iemand die graag Scala wil leren,

803
00:45:10.970 --> 00:45:13.150
dan is het weer heel anders, want wij hebben

804
00:45:13.150 --> 00:45:16.290
ook iemand in ons team, al heel lang,

805
00:45:16.990 --> 00:45:18.770
en die had wel wat Scala gespeeld,

806
00:45:19.610 --> 00:45:21.550
maar die was gewoon 20 jaar C++ programmer.

807
00:45:21.870 --> 00:45:24.930
Dat kan helemaal goed. Maar ja, er zit ook wel

808
00:45:24.930 --> 00:45:27.290
een risico aan als je alleen maar blijft bij wat je al kent.

809
00:45:28.130 --> 00:45:31.030
Want juist in deze business moet je blijven

810
00:45:31.030 --> 00:45:34.430
leren. Ik bedoel, ik heb nu denk ik

811
00:45:34.430 --> 00:45:37.650
zo'n 3 jaar met Kubernetes gewerkt.

812
00:45:37.850 --> 00:45:39.310
Ja, dat moet je toch allemaal gewoon oppakken.

813
00:45:39.490 --> 00:45:41.490
Dan kan het niet zeggen, dat wil ik alleen maar in Scala doen.

814
00:45:41.610 --> 00:45:44.910
Dat kan helemaal niet. Dus je moet ook

815
00:45:46.150 --> 00:45:47.950
wat HelmCharts en wat Golang

816
00:45:49.090 --> 00:45:51.290
en allerlei verschillende dingen komen langs.

817
00:45:51.570 --> 00:45:53.370
Bash Scripts, maakt niet uit, Makefiles.

818
00:45:54.550 --> 00:45:56.530
Je hebt gewoon heel veel verschillende dingen nodig

819
00:45:56.530 --> 00:45:57.710
om echt iets werkend te krijgen.

820
00:45:58.290 --> 00:46:00.890
Ik kijk altijd naar mensen van, kan jij iets werkend

821
00:46:00.890 --> 00:46:03.710
krijgen? Kan je iets voor elkaar maken? Dat is eigenlijk het belangrijkste.

822
00:46:05.370 --> 00:46:07.150
Ja, zeker, zeker.

823
00:46:07.930 --> 00:46:10.210
Ja, nee, maar ik begon even over dit onderwerp

824
00:46:10.210 --> 00:46:12.650
omdat, ja, we zijn toch ook wel

825
00:46:12.650 --> 00:46:15.430
het is best wel schaars om Scala developers

826
00:46:16.270 --> 00:46:18.810
en misschien ook wel de goede, hoe je ze ook

827
00:46:18.810 --> 00:46:21.370
wil noemen, zeg maar, om die te vinden.

828
00:46:22.790 --> 00:46:24.710
Dus ik was even nieuwsgierig naar hoe

829
00:46:24.710 --> 00:46:27.390
bijvoorbeeld Lightband daarna kijkt.

830
00:46:28.570 --> 00:46:30.630
Ja, dus wat ik aan jou hoor

831
00:46:30.630 --> 00:46:33.990
is dat het voornamelijk gaat om

832
00:46:34.910 --> 00:46:36.630
dat je waarschijnlijk ook gewoon

833
00:46:36.630 --> 00:46:38.610
goed in concepten denken bent

834
00:46:38.610 --> 00:46:42.630
en dat je inderdaad wil blijven leren, nieuwe dingen

835
00:46:42.630 --> 00:46:44.010
blijven proberen.

836
00:46:45.750 --> 00:46:48.450
Wij nemen niet alleen maar mensen aan die alleen maar

837
00:46:48.450 --> 00:46:51.070
Scala programmeren, dat is sowieso niet.

838
00:46:51.890 --> 00:46:54.070
Maar we hebben natuurlijk wel een voordeel

839
00:46:54.070 --> 00:46:57.090
als we mensen willen aannemen die Scala programmeren.

840
00:46:57.190 --> 00:47:00.330
We zijn nogal een focal point,

841
00:47:00.350 --> 00:47:02.970
zeg maar, voor Scala programmers. Dus het is voor ons

842
00:47:02.970 --> 00:47:06.350
veel makkelijker om een Scala programmer binnen te krijgen dan

843
00:47:06.350 --> 00:47:08.890
een bedrijfje ergens in Nederland die wat

844
00:47:08.890 --> 00:47:09.690
Scala programmers doet.

845
00:47:11.270 --> 00:47:15.010
Ik wilde kort nog even over jouw boek hebben.

846
00:47:15.390 --> 00:47:18.070
Misschien ook wel leuk om even daarbij

847
00:47:18.070 --> 00:47:18.370
te staan.

848
00:47:20.110 --> 00:47:21.250
Dat was weer een tijdje geleden.

849
00:47:23.350 --> 00:47:25.010
Wanneer is je boek uitgekomen?

850
00:47:25.330 --> 00:47:27.010
En kan je er iets meer over vertellen?

851
00:47:30.610 --> 00:47:31.510
Ik krijg het gewoon.

852
00:47:32.050 --> 00:47:33.790
Ik weet het niet meer.

853
00:47:35.550 --> 00:47:38.370
Het is al wel, even kijken,

854
00:47:38.670 --> 00:47:42.090
in ieder geval 5, 4 jaar geleden.

855
00:47:42.710 --> 00:47:44.610
Het heeft me ook heel lang geduurd.

856
00:47:44.610 --> 00:47:46.890
Ze zeggen ook altijd tegen je van

857
00:47:47.630 --> 00:47:50.130
als je denkt dat je een boek gaat schrijven, doe het niet.

858
00:47:51.210 --> 00:47:53.250
Je kan nog meer geld verdienen

859
00:47:53.250 --> 00:47:55.470
als je zavond bij de Burger King gaat werken.

860
00:47:58.190 --> 00:47:59.550
Voor sommige boeken natuurlijk niet waar.

861
00:48:00.350 --> 00:48:02.790
Maar voor de meeste IT-boeken

862
00:48:03.830 --> 00:48:05.290
je wordt er niet schatterijk van.

863
00:48:05.890 --> 00:48:07.150
Dat is ook niet de reden waarom je het doet.

864
00:48:08.030 --> 00:48:10.430
Maar het is zeker een hard werk.

865
00:48:11.650 --> 00:48:13.430
Dat heb ik ook wel het onderschatten.

866
00:48:15.590 --> 00:48:16.870
Gelukkig had ik iemand

867
00:48:16.870 --> 00:48:17.910
die het samen met mij wilde doen.

868
00:48:18.110 --> 00:48:19.070
Dat was Rob Bakker.

869
00:48:19.630 --> 00:48:24.090
Een van de eerste projecten die we samen deden.

870
00:48:27.430 --> 00:48:28.730
Menning was aan het zoek

871
00:48:28.730 --> 00:48:31.350
naar iemand om het akka-boek te schrijven.

872
00:48:32.410 --> 00:48:35.490
Die hebben natuurlijk het akka-team zelf gevraagd.

873
00:48:35.950 --> 00:48:36.810
Hebben jullie interesse?

874
00:48:36.810 --> 00:48:38.190
Ja, die hadden we niet heel de tijd.

875
00:48:39.230 --> 00:48:42.570
Ik was ondertussen alweel bezig als contributor

876
00:48:42.570 --> 00:48:43.870
op het akka-project.

877
00:48:45.250 --> 00:48:47.870
En uiteindelijk zijn ze dan bij mij terechtgekomen.

878
00:48:48.030 --> 00:48:50.190
Dus ik weet niet hoeveel mensen er mee hebben gezegd.

879
00:48:50.330 --> 00:48:52.710
Om het zo maar even te zeggen voordat ze bij mij kwamen.

880
00:48:54.350 --> 00:48:56.270
Toen dacht ik al van dit is zoveel werk.

881
00:48:56.370 --> 00:48:58.470
Maar tegelijkertijd ook wel heel erg leuk om te doen.

882
00:48:59.410 --> 00:49:00.810
Een mooi doel om te hebben weet je wel.

883
00:49:00.810 --> 00:49:03.530
Ik had een boekopje in je kast met je eigen naam erop.

884
00:49:04.650 --> 00:49:06.050
Dat sprak me wel aan.

885
00:49:06.970 --> 00:49:10.610
Maar ik wist al wel van dat gaat me nooit lukken in mijn eentje.

886
00:49:10.790 --> 00:49:13.670
Dus toen heb ik aan Rob gevraagd of ik mee zou doen.

887
00:49:14.710 --> 00:49:16.390
En zo is het eigenlijk begonnen.

888
00:49:16.710 --> 00:49:20.750
En later heeft een andere jongen uit Amerika

889
00:49:20.750 --> 00:49:22.870
meegeholpt met de tekst, Rob Williams.

890
00:49:23.770 --> 00:49:26.250
Maar wij zijn toen met z'n tweeën daarmee begonnen met het boek.

891
00:49:27.210 --> 00:49:30.470
En hoe lang heb je er ongeveer over gedaan?

892
00:49:30.890 --> 00:49:31.710
Weet je dat?

893
00:49:32.350 --> 00:49:34.510
Ja, dat weet ik nog. Dat is ongeveer vier jaar geweest.

894
00:49:36.850 --> 00:49:39.410
Kijk, eigenlijk wil zo'n publisher

895
00:49:39.410 --> 00:49:41.610
dat je ongeveer binnen zes maanden klaar bent.

896
00:49:45.390 --> 00:49:47.550
Wat er gebeurde was...

897
00:49:47.550 --> 00:49:49.670
Ik had er nooit een boek geschreven, Rob ook niet.

898
00:49:51.390 --> 00:49:53.430
Dus je krijgt dan eerst een development editor.

899
00:49:53.770 --> 00:49:56.850
Die gaat je uitleggen, zo moet je een boek schrijven.

900
00:49:56.850 --> 00:49:59.850
Of dit zijn onze manieren van hoe je een boek schrijft.

901
00:50:01.770 --> 00:50:04.730
En het is daar ook heel lang bezig geweest met het eerste hoofdstuk.

902
00:50:04.970 --> 00:50:06.430
Waarom zou je nou Akka moeten hebben?

903
00:50:06.850 --> 00:50:09.930
En dat is niet een heel eenvoudig verhaal

904
00:50:09.930 --> 00:50:11.330
om het heel goed uit te leggen op dat moment.

905
00:50:13.430 --> 00:50:15.750
En Akka veranderde heel erg veel over de tijd.

906
00:50:15.870 --> 00:50:17.930
Die was nog erg in ontwikkeling.

907
00:50:18.750 --> 00:50:21.110
Dus we hebben ook hoofdstukken geschreven

908
00:50:21.110 --> 00:50:22.570
die nooit in het boek terecht zijn gekomen.

909
00:50:22.570 --> 00:50:25.850
Want die zijn in een latere versie van Akka

910
00:50:26.490 --> 00:50:28.830
verwijderd of vervangen door iets beters.

911
00:50:29.370 --> 00:50:32.210
En ook weet ik nog dat we waren op een bepaald moment klaar.

912
00:50:32.310 --> 00:50:34.570
En toen kwam net een heel belangrijk ding uit.

913
00:50:34.630 --> 00:50:36.450
Akka Streams.

914
00:50:36.850 --> 00:50:38.750
En ja, nee, dat moet toch in, hè, de boek?

915
00:50:39.070 --> 00:50:42.170
Ja, hoe gaan we dat doen? Want dat hadden we zo niet mee gewerkt.

916
00:50:43.030 --> 00:50:45.770
Dus toen was het ook van, oké, dan moet ik eerst leren hoe het werkt.

917
00:50:46.110 --> 00:50:48.590
Precies weten hoe het werkt. En dan kan ik er een hoofdstuk over schrijven.

918
00:50:49.370 --> 00:50:52.850
Dat kan je wel merken in het boek dat we daar wat minder kaas van hebben gegeten.

919
00:50:54.110 --> 00:50:56.710
Het blijft redelijk op een beginners niveau.

920
00:50:58.450 --> 00:51:00.570
Maar dat soort dingen maakten het heel moeilijk.

921
00:51:03.170 --> 00:51:04.870
En als je dan niet...

922
00:51:04.870 --> 00:51:09.230
Je moet zo'n 16 uur per week aan je boek werken.

923
00:51:09.530 --> 00:51:10.650
Als je het redelijk op tijd wilt doen.

924
00:51:11.550 --> 00:51:12.450
En dat was best wel veel.

925
00:51:12.510 --> 00:51:14.310
Dat is zeg maar heel weekend, elke week.

926
00:51:14.370 --> 00:51:15.630
Elke week ben je je weekend kwijt.

927
00:51:15.630 --> 00:51:20.850
Of je moet heel gedisciplineerd elke dag en twee uurtjes werken eraan.

928
00:51:21.590 --> 00:51:24.570
En op een bepaald moment wordt dat gewoon te veel.

929
00:51:24.730 --> 00:51:26.070
En dan stop je die weer even mee.

930
00:51:26.350 --> 00:51:28.350
En dan heb je weer later een plek.

931
00:51:28.530 --> 00:51:34.210
Dus als het je heel goed ligt, is dat misschien makkelijker.

932
00:51:36.190 --> 00:51:38.450
Ik vond het wel altijd heel leuk om dingen uit te leggen.

933
00:51:38.590 --> 00:51:40.750
En om ook presentaties erover te geven.

934
00:51:42.050 --> 00:51:43.790
Mensen in teams dingen uit te leggen.

935
00:51:44.490 --> 00:51:46.570
En daar heb ik zeker wel veel van geleerd.

936
00:51:47.350 --> 00:51:48.550
Dus dat zou ik wel aanraden.

937
00:51:48.890 --> 00:51:52.030
De ervaring heeft zeker wel grote voordelen.

938
00:51:53.310 --> 00:52:02.190
En ook, ik denk, een van de belangrijkste skills die je moet hebben als een goede programma is schrijven.

939
00:52:03.010 --> 00:52:04.270
Dus schrijven van tekst.

940
00:52:04.630 --> 00:52:07.630
Niet zozeer schrijven van code.

941
00:52:08.850 --> 00:52:12.030
Schrijven en communicatie zijn enorm belangrijk.

942
00:52:13.790 --> 00:52:14.510
En ondergewaardeerd.

943
00:52:15.330 --> 00:52:18.890
Iedereen denkt alleen maar van, hoe kan je deze bubbelsoort, weet je wel.

944
00:52:19.030 --> 00:52:22.310
Wat kan je deze, schrijven zijn van een paxos ofzo.

945
00:52:22.870 --> 00:52:24.590
Maar daar gaat het eigenlijk niet om.

946
00:52:24.810 --> 00:52:25.690
Naar mijn mening hoor.

947
00:52:26.470 --> 00:52:28.870
Het gaat voornamelijk veel meer over hoe je communiceren met je team.

948
00:52:29.270 --> 00:52:31.570
Hoe zorg je ervoor dat je je gebleem op kost en dat soort dingen.

949
00:52:32.350 --> 00:52:33.530
En schrijven heeft daar ook mee te maken.

950
00:52:33.650 --> 00:52:36.350
Je moet je designs delen met mensen.

951
00:52:37.650 --> 00:52:38.690
Je moet van alles schrijven.

952
00:52:39.490 --> 00:52:41.390
Dus ik dacht, nou ja, daar heb ik wel een voordeel aan.

953
00:52:43.670 --> 00:52:46.310
Ik heb ook een keer ergens iets over gelezen.

954
00:52:46.550 --> 00:52:50.870
Van dat het moment als je het gaat uitleggen aan een ander.

955
00:52:51.110 --> 00:52:53.950
Dan pas ga je echt leren wat je geleerd hebt.

956
00:52:55.270 --> 00:52:58.490
Je bent gewoon constant in practice mode.

957
00:53:00.150 --> 00:53:02.230
Dus als je iets aan het bouwen bent of wat dan ook.

958
00:53:04.350 --> 00:53:07.930
Het zou best zelfs wel kunnen zijn dat het je linker oor ingaat.

959
00:53:08.370 --> 00:53:10.370
En dan doe je je ding en in je rechter oor gaat het eruit.

960
00:53:10.370 --> 00:53:11.610
Ben je het al even vergeten?

961
00:53:11.850 --> 00:53:15.570
Maar het moment als je dan echt een training of een boek gaat schrijven.

962
00:53:15.830 --> 00:53:21.330
Dat is denk ik wel het moment dat je een reflectie doet over wat je echt weet.

963
00:53:23.050 --> 00:53:30.670
Ja, want wat mij betreft, vooral in dit vak.

964
00:53:31.310 --> 00:53:33.790
Misschien wel met bijna alles, maar vooral in dit vak.

965
00:53:34.070 --> 00:53:35.910
Weet je eigenlijk niet hoe het in elkaar zit.

966
00:53:37.210 --> 00:53:39.870
Dus je hebt een soort van mentaal model.

967
00:53:40.290 --> 00:53:41.410
Van hoe het werkt.

968
00:53:41.670 --> 00:53:43.870
En dat mentale model hoeft helemaal niet te kloppen.

969
00:53:44.690 --> 00:53:47.570
Het hoeft alleen maar te kloppen zoveel als jij kan zien.

970
00:53:48.110 --> 00:53:52.790
Dus als jij met Akka werkt en je werkt een paar weken ermee en alles gaat goed.

971
00:53:52.990 --> 00:53:55.050
Dan denk jij misschien wel dat het op een bepaalde manier werkt.

972
00:53:56.150 --> 00:53:59.910
Maar het hoeft helemaal niet erg te zijn dat het verkeerd is hoe je erover denkt.

973
00:54:00.890 --> 00:54:03.390
Totdat je het opschrijft, want als je dan gaat uitleggen.

974
00:54:03.810 --> 00:54:08.010
Ja, mijn mentaal model zit zo in elkaar en dat het moet kloppen.

975
00:54:08.010 --> 00:54:11.970
Dan ga je jezelf vragen, wacht even, zit het eigenlijk wel zo?

976
00:54:12.010 --> 00:54:13.210
Hoe zit het eigenlijk precies?

977
00:54:14.270 --> 00:54:17.850
Dat is wel interessant aan het uitleggen aan een ander.

978
00:54:17.910 --> 00:54:22.750
Je hebt gewoon wat meer diepgauw nodig dan wanneer je het zomaar gebruikt.

979
00:54:23.530 --> 00:54:26.710
Dat vind ik wel heel erg interessant van dit werk.

980
00:54:27.230 --> 00:54:34.370
Dat je in zekere zin helemaal niet door alle lagen heen kan overzien wat er precies gebeurt.

981
00:54:34.370 --> 00:54:38.270
Maar dat iedereen voor zichzelf een mentaal model maakt.

982
00:54:38.710 --> 00:54:39.770
En daarmee uit de voeten kan.

983
00:54:39.850 --> 00:54:41.450
Dat we dan toch nog dingen kunnen bereiken.

984
00:54:43.110 --> 00:54:44.290
Dat vind ik wel een heel interessant idee.

985
00:54:45.610 --> 00:54:49.470
Dat je op de schouders van de shoulders of giants, weet je wel.

986
00:54:49.470 --> 00:54:50.410
Dat je daar bovenop staat.

987
00:54:51.590 --> 00:54:53.150
Dat is wel heel gaaf.

988
00:54:53.310 --> 00:54:53.930
Ja, gaaf joh.

989
00:54:55.710 --> 00:54:58.030
En het schrijven van het boek zelf.

990
00:54:59.230 --> 00:55:00.730
Hoe is je dat bevallen?

991
00:55:01.510 --> 00:55:03.950
Kan je daar iets meer over vertellen?

992
00:55:05.430 --> 00:55:06.510
Initieel was het wel leuk.

993
00:55:07.210 --> 00:55:09.410
En aan het einde dacht ik, wanneer houdt dit op?

994
00:55:12.510 --> 00:55:15.250
Het is echt, nou ja, je gaat op een bepaalde moment.

995
00:55:15.690 --> 00:55:19.030
Wat ik heel lastig vond, was goede voorbeelden bedenken.

996
00:55:20.050 --> 00:55:22.670
Want voorbeelden moeten ten eerste niet te groot zijn.

997
00:55:23.630 --> 00:55:26.130
Als ik een heel echt systeem ga uitleggen aan je.

998
00:55:26.450 --> 00:55:27.850
Dan ben je een paar met de draad kwijt.

999
00:55:27.850 --> 00:55:31.490
Dan leer je meer over het echte systeem dan over bijvoorbeeld akken.

1000
00:55:32.310 --> 00:55:37.250
En als er te weinig vlees aan de botten zit, zeg maar.

1001
00:55:37.510 --> 00:55:40.110
Dan denk je van, ja, dit is een hele world-ding.

1002
00:55:40.870 --> 00:55:42.910
Hoe ga ik dat dan gebruiken in mijn project?

1003
00:55:44.050 --> 00:55:47.370
Dus je brengt op een bepaald moment een bepaald voorbeeld.

1004
00:55:48.370 --> 00:55:49.750
En dan kan je er ook niet meer echt van af.

1005
00:55:49.790 --> 00:55:51.790
Je hebt er allerlei dingen omheen geschreven.

1006
00:55:52.490 --> 00:55:54.630
En op een bepaald moment ga je het voorbeeld steeds minder leuk vinden.

1007
00:55:54.630 --> 00:55:59.830
Dus totdat je denkt van, oh, man, waarom heb ik nou dit voorbeeld gekozen?

1008
00:56:01.330 --> 00:56:03.630
Dus het is best wel...

1009
00:56:04.230 --> 00:56:07.110
Ja, er waren wel leuke dingen aan.

1010
00:56:09.190 --> 00:56:14.430
Maar ja, tegelijkertijd de werkdruk die je dan gewoon in je normale dagelijkse werk hebt.

1011
00:56:14.610 --> 00:56:15.830
En dan dit nog erbovenop.

1012
00:56:16.370 --> 00:56:18.470
En dan je wilt nog een leven hebben, et cetera.

1013
00:56:18.550 --> 00:56:20.230
Dus dat is best wel tricky.

1014
00:56:20.690 --> 00:56:24.410
Ik zou het als waarschuwing geven aan mensen die...

1015
00:56:24.410 --> 00:56:26.250
Als je lekker veel tijd over hebt, moet je het doen.

1016
00:56:28.090 --> 00:56:29.650
Maar het is...

1017
00:56:29.650 --> 00:56:31.210
Het is wat wel heel leuk was.

1018
00:56:31.710 --> 00:56:35.270
Je gaat weer met die publisher, de mensen die helpen je daarbij.

1019
00:56:35.430 --> 00:56:36.850
En die geven je allerlei tips.

1020
00:56:36.930 --> 00:56:39.030
En dat is allemaal heel erg leerzaam.

1021
00:56:39.930 --> 00:56:41.270
En dat je het dan ook samen doet.

1022
00:56:41.370 --> 00:56:43.090
En dat je dan uiteindelijk het voor elkaar krijgt.

1023
00:56:43.190 --> 00:56:44.890
Dat zijn allemaal hele leuke momenten.

1024
00:56:45.370 --> 00:56:49.230
En dat je dan voor het eerst je boek binnenkrijgt op papier.

1025
00:56:49.230 --> 00:56:50.310
Dat is echt heel gaaf.

1026
00:56:51.290 --> 00:56:52.710
Ik heb later ook...

1027
00:56:54.690 --> 00:56:58.630
Ze hebben het boek ook in het Japans en in het Koreaans uitgegeven.

1028
00:56:58.810 --> 00:57:02.290
En daar heb ik ook copies van gekregen.

1029
00:57:03.410 --> 00:57:06.410
Ik kan het niet lezen natuurlijk, maar het ziet er wel heel gaaf uit, weet je wel.

1030
00:57:07.830 --> 00:57:10.870
En blijkbaar vinden ze het ook een goed boek in Japan.

1031
00:57:11.930 --> 00:57:14.210
Een oud collega van ons, die woont nu in Japan.

1032
00:57:14.990 --> 00:57:18.430
En die heeft contact gehad met de mensen die daar wat hebben geschreven.

1033
00:57:18.430 --> 00:57:21.810
Of zeg maar de Japanse versie van hebben geschreven.

1034
00:57:23.750 --> 00:57:25.470
Dat zijn allemaal hele leuke dingen.

1035
00:57:26.550 --> 00:57:29.290
Dat je het voor elkaar hebt gekregen om het boek af te maken.

1036
00:57:29.810 --> 00:57:33.130
Maar het was zeker bloedswetende traan, laat ik het zo zeggen.

1037
00:57:35.230 --> 00:57:41.470
Net nadat we beide bij Xebia zijn weggegaan, heb ik je een beetje gevolgd via LinkedIn, geloof ik.

1038
00:57:41.730 --> 00:57:45.270
Ik merkte wel dat je hier en daar in het buitenland bent gaan hoppen.

1039
00:57:46.210 --> 00:57:50.330
Je hebt toch wel wat landen mogen werken, of heb ik dat verkeerd gezien?

1040
00:57:50.850 --> 00:57:51.390
Ja, dat klopt.

1041
00:57:51.490 --> 00:57:54.690
Ja, zoals ik al zei, ik heb in Zuid-Afrika gewoond.

1042
00:57:55.790 --> 00:57:57.110
Maar ja, mijn vraag komt daar vandaan.

1043
00:57:57.350 --> 00:57:59.490
En op een bepaald moment een lange afstandsrelatie.

1044
00:58:00.530 --> 00:58:04.130
Dat moet op een bepaald moment een korte afstandsrelatie worden, anders wordt het niks natuurlijk.

1045
00:58:05.610 --> 00:58:06.570
En dus daar.

1046
00:58:07.070 --> 00:58:10.270
Maar ook op een bepaald moment een leuke opdracht.

1047
00:58:12.370 --> 00:58:18.270
Als Scala freelancer in City bij Commonwealth Bank gekregen.

1048
00:58:20.310 --> 00:58:22.610
En ik werd gewoon door iemand benaderd.

1049
00:58:23.110 --> 00:58:24.130
Van, ja, gewoon, wil je dat doen?

1050
00:58:25.830 --> 00:58:26.670
En ja, is goed, zeg ik.

1051
00:58:26.730 --> 00:58:28.070
Maar dan moet je wel alles regelen.

1052
00:58:28.570 --> 00:58:29.170
En ja, is goed.

1053
00:58:29.510 --> 00:58:30.090
Oh, wacht even.

1054
00:58:30.370 --> 00:58:31.370
Dit wordt interessant.

1055
00:58:33.490 --> 00:58:34.870
Dus ja, zo ging het.

1056
00:58:35.230 --> 00:58:38.670
En de eerste drie maanden ben ik dan met familie, zeg maar, daarin gegaan.

1057
00:58:38.770 --> 00:58:39.770
Dat was echt heel gaaf.

1058
00:58:39.770 --> 00:58:41.770
We hadden midden in de stad daar.

1059
00:58:44.030 --> 00:58:47.630
En dan ging ik, daarna ging ik elke, wat was het?

1060
00:58:48.150 --> 00:58:50.270
Elke drie maanden ging ik drie weken naar Sydney.

1061
00:58:51.330 --> 00:58:53.310
En dat heb ik zo'n tweeënhalf jaar gedaan, denk ik.

1062
00:58:53.570 --> 00:58:54.390
Ja, tweeënhalf jaar gedaan.

1063
00:58:55.210 --> 00:58:58.970
Maar het maakt niet uit waar ik was, zeg maar.

1064
00:58:59.190 --> 00:59:02.490
We hebben ook twee keer een half jaar in Sarasaka weer gewoond.

1065
00:59:02.610 --> 00:59:05.070
En dan kwam mijn vrouw weer bij haar ouders en zo contact.

1066
00:59:05.850 --> 00:59:09.750
En ook onze dochter kon dan met grote ouders en zo contact houden.

1067
00:59:09.750 --> 00:59:13.150
Dus het was ideaal op dat moment.

1068
00:59:14.670 --> 00:59:15.090
Rockstar.

1069
00:59:17.590 --> 00:59:18.430
Geluk, hou geluk.

1070
00:59:20.430 --> 00:59:27.230
Nou, het lijkt me wel leuk om de Developer Dilemma's nog eens een keer te gaan doen.

1071
00:59:29.510 --> 00:59:30.330
Ik weet niet wat het is.

1072
00:59:31.050 --> 00:59:36.750
Het is een beetje gejat van developerdilemma's.org, geloof ik uit mijn hoofd.

1073
00:59:38.030 --> 00:59:38.910
Dat is een website, ja.

1074
00:59:38.910 --> 00:59:42.330
En daar, ja, eigenlijk is het gewoon heel simpel.

1075
00:59:42.770 --> 00:59:45.570
Er wordt een kaart getrokken en pick one.

1076
00:59:45.870 --> 00:59:47.970
Dus er zijn twee stellingen op die kaart.

1077
00:59:48.350 --> 00:59:49.970
En dan moet je iets kiezen.

1078
00:59:50.910 --> 00:59:54.470
En ja, kijk, het is natuurlijk leuk om jou gewoon helemaal te verrassen.

1079
00:59:54.590 --> 00:59:56.850
En dan jou in die zin te betrappen.

1080
00:59:57.810 --> 01:00:00.510
Dus ik dacht, laten we het gewoon even vier keer even doen.

1081
01:00:01.330 --> 01:00:04.070
En dan leren we je gewoon op die manier kennen.

1082
01:00:05.390 --> 01:00:06.570
Dus ja, let's go.

1083
01:00:08.270 --> 01:00:09.390
De eerste.

1084
01:00:10.650 --> 01:00:12.890
A monolith of microservices?

1085
01:00:13.630 --> 01:00:15.070
Je moet eentje kiezen.

1086
01:00:16.630 --> 01:00:17.190
Microservices.

1087
01:00:18.190 --> 01:00:19.230
Oké, waarom?

1088
01:00:22.670 --> 01:00:24.550
Als je moet kiezen, ja.

1089
01:00:26.330 --> 01:00:31.530
Ja, ik verwacht dat we het hebben over een groot systeem.

1090
01:00:32.450 --> 01:00:35.190
Want anders dan heb je het niet over het een of het ander.

1091
01:00:35.210 --> 01:00:37.290
Dan heb je het over een klein dingetje.

1092
01:00:38.810 --> 01:00:41.330
En microservices zijn wel een manier om...

1093
01:00:43.610 --> 01:00:46.070
Het gaat eigenlijk weer terug naar die communicatie wat je eerder over hadde.

1094
01:00:46.150 --> 01:00:49.190
Als jij aan één systeem met heel veel mensen moet werken,

1095
01:00:49.510 --> 01:00:51.490
dan krijg je steeds meer communicatie over het.

1096
01:00:51.890 --> 01:00:56.610
Dus een grote systeem opsplitsen in bekende interfaces,

1097
01:00:57.490 --> 01:01:00.350
in een duidelijke verantwoordelijkheid per onderdeel,

1098
01:01:00.790 --> 01:01:07.150
is een goede manier om een grote problemen op te splitsen in kleine problemen.

1099
01:01:08.890 --> 01:01:14.070
En in die zin zie ik dat een microservice daarin een goed idee is.

1100
01:01:14.310 --> 01:01:19.050
Ook omdat je daarin als team of als subteam

1101
01:01:19.050 --> 01:01:23.170
verantwoordelijkheid kan nemen voor een kleine onderdeel van het probleem.

1102
01:01:23.350 --> 01:01:29.690
Waar je ook redelijk vrij in bent in het aanpassen en het veranderen van de software.

1103
01:01:30.810 --> 01:01:32.670
Bij de monolith zit je meteen weer vast aan,

1104
01:01:32.670 --> 01:01:38.630
we moeten alles samen deployen, maar ook samen version control, samen alles.

1105
01:01:39.370 --> 01:01:44.230
Dus bij de microservices moet je wel wat meer qua design doen,

1106
01:01:44.450 --> 01:01:49.150
en wat meer nadenken over die juiste kaders, die juiste constraints.

1107
01:01:51.650 --> 01:01:55.050
Maar bij grotere systemen zie ik daar wel een voordeel in.

1108
01:01:55.130 --> 01:01:59.170
Natuurlijk hebben microservices ook een nadeel, de chaos die er kan ontstaan,

1109
01:01:59.170 --> 01:02:05.450
maar er zijn ook wel weer methodes en technieken voor waar je ervoor kan zorgen

1110
01:02:05.450 --> 01:02:11.270
dat het minder een gevaar wordt voor standaard protocolen kiezen,

1111
01:02:11.530 --> 01:02:16.170
voor standaard dingen als Kafka of message buses kiezen.

1112
01:02:18.430 --> 01:02:20.910
Dus ja, ik ben er wel uit.

1113
01:02:22.110 --> 01:02:28.370
Dus we zouden je niet gelukkig maken als een project voor je uit kiezen waar monolith wordt gekozen?

1114
01:02:28.370 --> 01:02:30.350
Nee, dat maakt het project niet uit.

1115
01:02:31.070 --> 01:02:34.470
Kijk, je moet het probleem oplossen en je moet gewoon,

1116
01:02:34.750 --> 01:02:37.170
wat je ook moet doen, je moet het voor elkaar krijgen.

1117
01:02:37.290 --> 01:02:40.490
En ook een monolith kan je mooi doen.

1118
01:02:40.830 --> 01:02:45.270
Ik bedoel, al die jaren voordat mensen microservices benoemden,

1119
01:02:46.010 --> 01:02:47.410
hebben we ook genoeg gemaakt.

1120
01:02:49.530 --> 01:02:53.890
Het is niet een, hoe zeg je dat, een zilver bullet.

1121
01:02:54.730 --> 01:02:56.990
Nou, hartstikke goed. Fijn, dankjewel.

1122
01:02:57.170 --> 01:02:59.650
Het is goed om ook weer jouw kant van het verhaal te horen.

1123
01:03:00.890 --> 01:03:02.570
Nou, we gaan nu door naar de volgende.

1124
01:03:04.310 --> 01:03:08.250
Hang on, monorepo of multiple repos?

1125
01:03:11.270 --> 01:03:16.610
Oeh, ja, vanwege de microservices kan ik zeggen multiple repo,

1126
01:03:16.910 --> 01:03:18.470
misschien, af en toe als je verschillende teams hebt.

1127
01:03:19.190 --> 01:03:20.970
Maar ik vind dat wel een lastige,

1128
01:03:20.970 --> 01:03:27.670
want ik heb allebei gedaan in vorige projecten

1129
01:03:27.670 --> 01:03:29.630
en ook geswitcht van de een naar de ander.

1130
01:03:29.870 --> 01:03:31.410
Zowel van de een af naar de ander.

1131
01:03:34.850 --> 01:03:38.690
Een monorepo heeft natuurlijk duidelijke voordelen in

1132
01:03:39.310 --> 01:03:42.970
dat je niet elke keer hoeft te releasen, et cetera, van je sub-onderdelen.

1133
01:03:44.790 --> 01:03:47.370
Dus dat geeft wel een beetje de voorkeur.

1134
01:03:47.590 --> 01:03:49.610
Alleen, dat kan dus niet in elke situatie.

1135
01:03:50.530 --> 01:03:54.490
Bijvoorbeeld in dat microservices systeem dat we net overhadden,

1136
01:03:54.550 --> 01:03:56.870
is dat duidelijk een voordeel,

1137
01:03:57.030 --> 01:04:00.990
omdat als je hele duidelijke kaders hebt,

1138
01:04:01.170 --> 01:04:03.610
hele duidelijke afscheiding hebt in systemen,

1139
01:04:04.990 --> 01:04:06.490
dan kan dat wel zin hebben.

1140
01:04:07.770 --> 01:04:09.070
Maar ja, goed, er zijn natuurlijk ook genoeg bedrijven

1141
01:04:09.070 --> 01:04:11.590
die hun hele bedrijf in een monorepo doen.

1142
01:04:14.130 --> 01:04:16.850
Dus ik heb wel het idee dat dat redelijk zwaar wordt

1143
01:04:17.710 --> 01:04:19.230
in Gitflow of iets anders,

1144
01:04:19.330 --> 01:04:23.110
om het allemaal een beetje in kaartjes te houden.

1145
01:04:23.250 --> 01:04:26.010
Ja, volgens mij hadden we ook een keer een aflevering,

1146
01:04:26.090 --> 01:04:30.210
toen hadden we het over dat sommige repos echt zo groot werden

1147
01:04:30.210 --> 01:04:33.350
dat men echt met USB-sticks en zo met elkaar moesten gaan delen.

1148
01:04:33.510 --> 01:04:33.870
Weet je nog?

1149
01:04:34.950 --> 01:04:35.730
Zo, ja, echt.

1150
01:04:36.590 --> 01:04:39.730
In ieder geval via USB had je alles binnen kunnen trekken.

1151
01:04:40.890 --> 01:04:42.290
Maar ja, dan moest je dan ook weer...

1152
01:04:42.290 --> 01:04:44.450
Ja, het is echt bizar af en toe, maar goed.

1153
01:04:45.350 --> 01:04:46.570
Het blijft lastig, he?

1154
01:04:46.670 --> 01:04:48.210
Deze is inderdaad een it depends.

1155
01:04:48.750 --> 01:04:50.110
Dat gevoel krijg je ook een keer weer.

1156
01:04:51.030 --> 01:04:52.190
Ja, ik heb ook eerder wel eens...

1157
01:04:52.190 --> 01:04:53.850
We hadden allerlei losse repos,

1158
01:04:54.010 --> 01:04:57.490
maar na een tijdje krijg je een verschrijdend inzicht.

1159
01:04:58.450 --> 01:05:00.730
Ik kwam erachter van, dit heeft eigenlijk allemaal met elkaar te maken.

1160
01:05:00.990 --> 01:05:03.230
Nou, dan zijn die allemaal weer naar één repo gegaan.

1161
01:05:03.650 --> 01:05:07.050
Dus ik denk dat dat ook iets heel natuurders kan zijn

1162
01:05:07.750 --> 01:05:10.510
om die vraag telkens te blijven stellen.

1163
01:05:10.630 --> 01:05:12.470
Niet per se te zeggen het is het een of het ander,

1164
01:05:12.470 --> 01:05:15.470
maar op basis van context te bekijken.

1165
01:05:16.510 --> 01:05:19.710
Ja, het is wat mij betekent ook vergelijkbaar met best practices.

1166
01:05:20.570 --> 01:05:23.630
Best practices die volgen je als je het nog niet helemaal weet.

1167
01:05:24.850 --> 01:05:27.070
En nadat je dat al heel lang gedaan hebt,

1168
01:05:27.150 --> 01:05:27.950
kom je er misschien achter van,

1169
01:05:28.070 --> 01:05:31.970
wacht even, dit is helemaal niet het ideale ding in onze context.

1170
01:05:33.190 --> 01:05:39.270
Dus ja, niet vast komen zitten is een heel belangrijk ding om voor te waken.

1171
01:05:39.570 --> 01:05:40.010
Zeker?

1172
01:05:40.190 --> 01:05:40.670
Zeker.

1173
01:05:40.670 --> 01:05:42.170
Oké.

1174
01:05:42.170 --> 01:05:44.790
Nou, gaan we door naar de derde.

1175
01:05:46.410 --> 01:05:48.690
Assembly of COBOL.

1176
01:05:50.450 --> 01:05:50.790
Wow.

1177
01:05:54.610 --> 01:05:55.690
Ik moet kiezen.

1178
01:05:56.230 --> 01:05:56.690
Man.

1179
01:05:57.750 --> 01:05:58.550
COBOL.

1180
01:06:00.470 --> 01:06:01.650
Ja, ja, COBOL.

1181
01:06:01.950 --> 01:06:03.310
Van wat ik moet doen elke dag?

1182
01:06:03.790 --> 01:06:04.630
Ja, COBOL.

1183
01:06:05.550 --> 01:06:06.850
Nee, als ik gewoon iets,

1184
01:06:07.130 --> 01:06:10.250
als ik een perl interface ofzo moet schrijven

1185
01:06:10.250 --> 01:06:13.730
of iets voor een, voor een of andere chipje ofzo,

1186
01:06:15.010 --> 01:06:15.590
dan Assembler.

1187
01:06:15.770 --> 01:06:17.310
Maar als iemand zegt van,

1188
01:06:17.430 --> 01:06:18.910
maak even een website in Assembler,

1189
01:06:19.590 --> 01:06:20.170
no ways.

1190
01:06:21.450 --> 01:06:22.730
Nee, dat kan niet.

1191
01:06:23.770 --> 01:06:24.550
Gewoon te veel werk.

1192
01:06:25.670 --> 01:06:26.290
Als je zegt,

1193
01:06:26.290 --> 01:06:27.930
als je zegt welke vind je leuker,

1194
01:06:28.390 --> 01:06:29.750
dan is Assembler veel leuker.

1195
01:06:29.870 --> 01:06:31.630
Je kan daar hele leuke dingen mee doen.

1196
01:06:32.030 --> 01:06:33.570
Er zijn allerlei trucjes die je kan vinden.

1197
01:06:36.050 --> 01:06:37.720
Oké, nou dan gaan we naar de laatste.

1198
01:06:39.990 --> 01:06:42.450
Clean code of good documentation?

1199
01:06:45.780 --> 01:06:46.460
Clean code.

1200
01:06:48.300 --> 01:06:49.120
Ja, clean code.

1201
01:06:49.120 --> 01:06:51.280
Ja, clean code heeft geen documentatie nodig dan.

1202
01:06:51.780 --> 01:06:53.240
Ah, oké.

1203
01:06:53.300 --> 01:06:54.180
Dat is een open deur deze.

1204
01:06:56.280 --> 01:06:58.440
Ja, wat voor een documentatie, right?

1205
01:07:00.960 --> 01:07:04.580
Documentatie op code is,

1206
01:07:04.580 --> 01:07:07.680
in een uitzonderlijke situatie,

1207
01:07:07.940 --> 01:07:08.440
noodzakelijk.

1208
01:07:08.520 --> 01:07:09.740
Als je iets heel complex doet,

1209
01:07:10.020 --> 01:07:11.180
dan zou je dat kunnen doen.

1210
01:07:13.840 --> 01:07:17.020
Ik moet zeggen dat ik tegenwoordig steeds minder

1211
01:07:17.020 --> 01:07:18.480
documenteer op code.

1212
01:07:19.560 --> 01:07:22.380
We hebben er nog geen nadeel van gehad,

1213
01:07:23.160 --> 01:07:24.800
maar het kan soms zijn dat de opdrachtgevers

1214
01:07:25.240 --> 01:07:26.440
die dat niet verijzen.

1215
01:07:26.620 --> 01:07:29.260
Of je schrijft een API,

1216
01:07:29.460 --> 01:07:30.960
dan moet je heel veel documentatie hebben

1217
01:07:30.960 --> 01:07:31.900
voor de API,

1218
01:07:32.020 --> 01:07:33.420
maar niet voor de private parts.

1219
01:07:35.940 --> 01:07:37.080
En clean code,

1220
01:07:37.660 --> 01:07:39.200
dat moet je sowieso doen,

1221
01:07:39.700 --> 01:07:40.420
in de zin van,

1222
01:07:41.880 --> 01:07:43.220
ja, code wordt vaak weer gelezen,

1223
01:07:43.340 --> 01:07:44.580
dan geschreven, et cetera.

1224
01:07:45.140 --> 01:07:47.360
Maar ik ga er ook niet te ver in.

1225
01:07:47.680 --> 01:07:49.880
Dus je kan ook te veel polijsten.

1226
01:07:50.120 --> 01:07:52.600
Je kan te veel daarmee bezig zijn

1227
01:07:52.600 --> 01:07:54.280
en niet je deadline halen, bijvoorbeeld.

1228
01:07:55.100 --> 01:07:57.200
Dus technical debt is oké,

1229
01:07:57.280 --> 01:07:59.800
zolang als je maar het wel in de gaten hebt.

1230
01:07:59.840 --> 01:08:02.840
Je kan niet te gek gaan,

1231
01:08:04.140 --> 01:08:08.420
maar alleen maar puur focussen op clean, clean, clean.

1232
01:08:08.700 --> 01:08:11.140
Ja, daar kom je ook weer nergens mee, zeg maar.

1233
01:08:11.360 --> 01:08:13.940
Je moet vooral doelgericht bezig zijn.

1234
01:08:16.120 --> 01:08:17.360
Dat waren ze.

1235
01:08:18.520 --> 01:08:19.400
Ja, joh.

1236
01:08:19.720 --> 01:08:20.660
Wat vond je ervan?

1237
01:08:20.960 --> 01:08:22.420
Ben je aan het zweten geweest, Remo?

1238
01:08:23.500 --> 01:08:24.360
Nee, ik vind het wel leuk.

1239
01:08:24.960 --> 01:08:27.800
Ik vind het sowieso wel leuk om daar

1240
01:08:27.800 --> 01:08:30.180
code in het algemeen te praten

1241
01:08:30.180 --> 01:08:32.360
en wat er toe duwt.

1242
01:08:32.360 --> 01:08:34.920
Daar ben ik wel al veel mee bezig ook.

1243
01:08:35.900 --> 01:08:38.640
Hoe ga je met je team echt het verschil maken?

1244
01:08:38.960 --> 01:08:40.480
Dat is toch altijd maar de vraag.

1245
01:08:41.520 --> 01:08:42.000
Zeker.

1246
01:08:42.640 --> 01:08:43.920
Dat is een mooi bruggetje ook.

1247
01:08:46.340 --> 01:08:47.520
Meestal doen we in elke aflevering,

1248
01:08:48.000 --> 01:08:49.860
proberen we in ieder geval even

1249
01:08:49.860 --> 01:08:50.880
een beetje te kijken van goh,

1250
01:08:51.040 --> 01:08:53.060
wat is er de afgelopen tijd op Twitter gebeurd?

1251
01:08:54.740 --> 01:08:59.640
Ik zag wel een linkje naar een Twitter feed

1252
01:08:59.640 --> 01:09:04.640
van een der Obasanjo.

1253
01:09:05.280 --> 01:09:07.280
Obasanjo, ja.

1254
01:09:07.940 --> 01:09:10.880
Carnage for Life heeft hij als Twitter.

1255
01:09:14.200 --> 01:09:15.660
Ja, dat is echt...

1256
01:09:15.660 --> 01:09:17.780
Opinions about product management,

1257
01:09:18.120 --> 01:09:19.160
technology news,

1258
01:09:20.640 --> 01:09:22.180
inclusivity in tech.

1259
01:09:22.860 --> 01:09:24.480
Diversity is about demographics.

1260
01:09:25.380 --> 01:09:28.000
Inclusion is about creating a sense of belonging.

1261
01:09:28.520 --> 01:09:30.200
Nou, hele wijze woorden.

1262
01:09:30.820 --> 01:09:31.780
Maar wat hij zei,

1263
01:09:31.940 --> 01:09:34.960
dat was trouwens 1 oktober afgelopen jaar.

1264
01:09:35.020 --> 01:09:36.860
Dat is een beetje lang geleden, maar goed.

1265
01:09:38.280 --> 01:09:39.820
The longer I'm in tech,

1266
01:09:40.600 --> 01:09:41.880
the more I'm convinced

1267
01:09:41.880 --> 01:09:44.460
that microservices were a technical solution

1268
01:09:44.460 --> 01:09:46.320
to our organisational problem.

1269
01:09:47.320 --> 01:09:48.720
Ja, dat klopt wel, ja.

1270
01:09:51.000 --> 01:09:52.000
Ik bedoel...

1271
01:09:52.000 --> 01:09:53.440
Ja, ik denk dat het wel...

1272
01:09:53.950 --> 01:09:55.760
Er zit wel een waarheid in in ieder geval.

1273
01:09:57.460 --> 01:09:59.860
Ik denk dat jullie ook al bij wel gehoord hebben

1274
01:09:59.860 --> 01:10:01.600
van Conway's Law.

1275
01:10:01.880 --> 01:10:02.940
Of van Conway's...

1276
01:10:04.520 --> 01:10:05.120
Conway's...

1277
01:10:05.120 --> 01:10:06.660
Dat het...

1278
01:10:06.660 --> 01:10:10.860
Dat het organisatie zich afspiegelt naar...

1279
01:10:12.000 --> 01:10:14.160
Of nee, dat...

1280
01:10:14.160 --> 01:10:16.840
Het gedrag zich afspiegelt naar de organisatie.

1281
01:10:17.060 --> 01:10:20.460
Of het draait nu misschien even een beetje verkeerd om, maar...

1282
01:10:20.460 --> 01:10:23.780
De hele reden voor verschillende teams

1283
01:10:23.780 --> 01:10:24.940
die werken aan iets

1284
01:10:24.940 --> 01:10:28.780
en die organisatorische reden daarvoor

1285
01:10:28.780 --> 01:10:31.760
die zorgt vaak voor de microservices.

1286
01:10:33.760 --> 01:10:36.000
Het feit dat bepaalde mensen in een bepaalde afdeling zitten,

1287
01:10:36.260 --> 01:10:38.520
andere mensen in een andere afdeling, die gaan allemaal wat maken,

1288
01:10:38.600 --> 01:10:41.940
maar ze kunnen niet per se samenwerken, want ze zitten in andere afdelingen.

1289
01:10:43.780 --> 01:10:46.620
Dat zorgt in zekere zin voor

1290
01:10:46.620 --> 01:10:50.620
het moeten maken van afzonderlijke afdelen van software

1291
01:10:50.620 --> 01:10:52.820
en die weer aan elkaar knopen.

1292
01:10:54.020 --> 01:10:57.420
Ik weet niet hoe jullie zijn, maar ik werk het liefst met een team

1293
01:10:57.420 --> 01:11:00.040
van ongeveer 5, 6 man.

1294
01:11:00.280 --> 01:11:02.740
Weet je wel, als het groter wordt, dan wordt het allemaal weer heel moeilijk

1295
01:11:02.740 --> 01:11:05.680
met communicatie en met wie gaat wat doen.

1296
01:11:08.980 --> 01:11:11.020
Dus dat probleem van

1297
01:11:11.020 --> 01:11:14.200
hoe organiseer je jezelf om grotere dingen te maken,

1298
01:11:15.640 --> 01:11:20.300
dat kan je wel afspiegelt zien in die microservices manier van weten.

1299
01:11:20.300 --> 01:11:21.880
Dat denk ik wel, ja.

1300
01:11:22.960 --> 01:11:26.660
Nou goed, Ray, ben je een nieuw boek aan het schrijven?

1301
01:11:27.520 --> 01:11:28.020
No way!

1302
01:11:31.460 --> 01:11:32.820
Eén keer en nooit meer.

1303
01:11:34.320 --> 01:11:36.400
Dat kost me gewoon te veel energie.

1304
01:11:36.480 --> 01:11:40.820
Het was wel leuk, maar ik heb er echt geen tijd meer voor.

1305
01:11:41.460 --> 01:11:43.700
Ik heb ook een paar mensen in Twitter ook wel aan me gevraagd

1306
01:11:43.700 --> 01:11:46.140
van wil je niet de tweede editie doen,

1307
01:11:47.140 --> 01:11:49.640
maar ik heb nu gelukkig een collega van mij gevonden

1308
01:11:49.640 --> 01:11:52.340
die het waarschijnlijk afgaat maken.

1309
01:11:53.640 --> 01:11:57.700
Je hebt mensen die elke paar maanden een boek doen.

1310
01:11:58.440 --> 01:12:02.480
Die hebben het helemaal gevonden.

1311
01:12:03.780 --> 01:12:07.880
Maar voor mij was het te veel werk om naast mijn werk te doen.

1312
01:12:08.500 --> 01:12:09.920
Dat is al veel eisend genoeg.

1313
01:12:12.420 --> 01:12:14.060
Ik moet mijn familie ook nog een foto zien.

1314
01:12:17.180 --> 01:12:19.960
Maar het was wel heel leuk om het af te maken.

1315
01:12:20.960 --> 01:12:22.420
Omdat we de checkboxen zetten.

1316
01:12:26.520 --> 01:12:28.760
We naderen eigenlijk al bijna aan het einde.

1317
01:12:31.390 --> 01:12:33.430
Maar voordat we dat gaan doen,

1318
01:12:33.810 --> 01:12:36.530
leek me leuk om even stil te staan bij wat tips en tricks.

1319
01:12:37.330 --> 01:12:40.590
Ray, heb jij misschien een paar leuke tips en tricks voor ons?

1320
01:12:41.750 --> 01:12:44.570
Ik zit ook te denken van, wat zou een tip zijn?

1321
01:12:45.390 --> 01:12:48.250
Ik probeer het een beetje on the spot te bedenken.

1322
01:12:49.750 --> 01:12:51.250
Maar wat zou nou een tip zijn?

1323
01:12:53.170 --> 01:12:58.550
Er zijn genoeg dingen op de lightband site die interessant zijn.

1324
01:12:58.770 --> 01:13:02.450
We zijn nu ook met AK Serverless bezig.

1325
01:13:02.710 --> 01:13:04.210
Dat is een nieuw product.

1326
01:13:04.210 --> 01:13:09.050
Dat is helemaal gebaseerd op stateful functions.

1327
01:13:09.410 --> 01:13:12.990
Maar ook event sourcing en dat soort dingen meer.

1328
01:13:12.990 --> 01:13:14.370
Dus dat is zeker interessant.

1329
01:13:15.010 --> 01:13:21.270
Dat is een beetje de nieuwe manier waarop we AK aan het publiek willen loosstellen.

1330
01:13:22.310 --> 01:13:24.470
Dus dan halen we een heleboel dingen.

1331
01:13:25.170 --> 01:13:28.010
Wat ik eerder al zei, die AK toolkit is een hele mooie toolkit.

1332
01:13:28.230 --> 01:13:30.810
Maar wat moet je allemaal gebruiken? Dat wordt heel lastig.

1333
01:13:31.370 --> 01:13:38.350
En eigenlijk willen mensen gebruik maken van de voordelen van AK.

1334
01:13:38.470 --> 01:13:41.830
Want heel veel grote bedrijven maken gebruik van die enorme schalen.

1335
01:13:42.650 --> 01:13:45.250
Zoals Apple, PayPal, doe ze maar op.

1336
01:13:46.050 --> 01:13:47.830
Allerlei grote bedrijven die er gebruik van maken.

1337
01:13:48.830 --> 01:13:50.830
Dus iedereen wil die voordelen.

1338
01:13:50.910 --> 01:13:55.290
Maar niet per se de hele diepe kennis van al die systemen.

1339
01:13:55.470 --> 01:13:58.090
Want die grote bedrijven stoppen daar veel meer tijd in.

1340
01:13:59.790 --> 01:14:07.450
En AK Serverless is een model waarin je ook in andere talen dan Java en Scala gebruik kan maken.

1341
01:14:07.550 --> 01:14:08.990
In zekere zin van AK.

1342
01:14:09.610 --> 01:14:13.670
Dus intern draait er een AK Cluster met persistence en alles.

1343
01:14:15.270 --> 01:14:18.110
Maar in AK Serverless kan je gewoon...

1344
01:14:18.110 --> 01:14:22.750
Eigenlijk JavaScript, Golang, allerlei andere talen kan je ook gebruiken.

1345
01:14:24.130 --> 01:14:25.930
Dus dat is misschien heel interessant om in te kijken.

1346
01:14:26.150 --> 01:14:27.050
Dat zou dan wel een tip zijn.

1347
01:14:29.790 --> 01:14:33.910
Ik zat toevallig vandaag op Twitter te kijken.

1348
01:14:34.350 --> 01:14:38.130
En ik zag iemand posten over GitHub.

1349
01:14:38.970 --> 01:14:46.170
Dat je ook Visual Studio Code in je browser kan openen.

1350
01:14:46.870 --> 01:14:48.230
Dus dan moet je...

1351
01:14:48.230 --> 01:14:51.410
Eén, ga naar elke repo op GitHub.

1352
01:14:52.130 --> 01:14:58.630
Twee, vervang GitHub in de URL met GitHub 1S.

1353
01:14:59.030 --> 01:15:00.850
Dus je voegt 1S toe.

1354
01:15:01.490 --> 01:15:03.830
En dan voila, heb je Visual Studio Code.

1355
01:15:05.330 --> 01:15:06.630
Ik ga het even proberen.

1356
01:15:06.630 --> 01:15:10.630
Dus dan heb je GitHub 1S.

1357
01:15:12.410 --> 01:15:13.130
Ja, nummer 1.

1358
01:15:17.570 --> 01:15:18.690
Dit is cool.

1359
01:15:21.150 --> 01:15:24.290
Ik zal ook straks de link even delen naar die tweet.

1360
01:15:24.970 --> 01:15:27.310
Er is ook iemand die dan gereageerd had daarop.

1361
01:15:27.850 --> 01:15:31.970
En het schijnt dus dat GitHub ook zijn eigen Codespaces maakt.

1362
01:15:32.170 --> 01:15:33.910
Sorry, ik bedoel het heet Codespaces.

1363
01:15:33.910 --> 01:15:37.310
Dat is dus ook zo'n instant dev-environment in je browser.

1364
01:15:37.590 --> 01:15:40.810
Dus ze zijn ook bezig om een cloud-editor.

1365
01:15:41.690 --> 01:15:43.530
Wauw, dit is wel heel nice.

1366
01:15:43.870 --> 01:15:46.010
Ja, ze zijn lekker bezig, zie ik.

1367
01:15:47.470 --> 01:15:51.030
En mijn laatste tipje, maar goed dat is meer persoonlijk misschien.

1368
01:15:52.850 --> 01:15:56.010
Ik wil ook inderdaad wat meer in rust gaan duiken.

1369
01:15:56.330 --> 01:15:59.370
Ik vind echt de documentatie van rust, die vind ik echt supergoed.

1370
01:15:59.730 --> 01:16:02.430
Want dat legt je echt in hele simpele stappen uit.

1371
01:16:02.430 --> 01:16:04.550
Dat doe je in kleine stapjes.

1372
01:16:04.610 --> 01:16:07.050
Ja, dan moet je maar eens een keer gaan naar docs.rust.

1373
01:16:08.570 --> 01:16:11.010
Ja, het is echt geweldig hoe ze dat doen.

1374
01:16:11.490 --> 01:16:13.610
Ze nemen je in baby-stappen naar Hello World.

1375
01:16:14.910 --> 01:16:20.030
En dan van Hello World weer naar het model dat rust omarmt.

1376
01:16:21.070 --> 01:16:22.930
Het is echt heel nice.

1377
01:16:24.370 --> 01:16:26.890
Daar wil ik ook meer mee gaan doen met rust inderdaad.

1378
01:16:28.190 --> 01:16:29.070
Heel interessant.

1379
01:16:30.170 --> 01:16:31.450
Mensen worden er rustig van.

1380
01:16:35.390 --> 01:16:37.310
Zo, beste mensen, dat was hem weer.

1381
01:16:38.250 --> 01:16:42.310
Ja, we gaan nu echt richting de afronding van onze podcast.

1382
01:16:43.830 --> 01:16:46.310
Allereerst wil ik Raymond weer bedanken.

1383
01:16:46.610 --> 01:16:48.830
Thanks man voor je deelname aan deze podcast.

1384
01:16:49.010 --> 01:16:49.510
Alsjeblieft.

1385
01:16:49.690 --> 01:16:51.750
We vonden het volgens mij allemaal hartstikke leerzaam.

1386
01:16:52.230 --> 01:16:55.690
Ik denk dat we ook nu elkaar beter begrijpen in de software development landscape.

1387
01:16:56.470 --> 01:16:57.990
Dus ja, super thanks daarvoor.

1388
01:16:59.790 --> 01:16:59.950
Ja.

1389
01:16:59.950 --> 01:17:01.630
Voor degene die nu zitten te luisteren.

1390
01:17:01.790 --> 01:17:04.310
Je kunt je abonneren op onze CodeKlets podcast.

1391
01:17:04.490 --> 01:17:05.950
In je favoriete podcast player.

1392
01:17:07.310 --> 01:17:12.250
Zoek daar gewoon op CodeKlets en voeg ons toe aan je favoriete.

1393
01:17:13.290 --> 01:17:16.070
Wil je ons spreken?

1394
01:17:16.590 --> 01:17:17.890
Of in ieder geval chatten?

1395
01:17:18.510 --> 01:17:19.750
Babbel dan met ons mee op Slack.

1396
01:17:20.230 --> 01:17:21.710
We hebben verschillende Slack kanalen.

1397
01:17:21.750 --> 01:17:26.270
Ga naar codeklets.nl om de link naar Slack te vinden.

1398
01:17:26.950 --> 01:17:29.250
We hebben ook een Twitter en een Instagram account.

1399
01:17:29.250 --> 01:17:33.370
Beiden zijn gewoon CodeKlets met een adje ervoor.

1400
01:17:33.890 --> 01:17:36.330
Retweets en likes zijn altijd lief.

1401
01:17:37.010 --> 01:17:45.170
Ik zal trouwens ook even de show notes en de linkjes naar de verschillende verdiepingen van deze podcast plaatsen.

1402
01:17:46.430 --> 01:17:50.050
En ja, dat resteert mij alleen nogmaals bedanken voor het luisteren.

1403
01:17:50.830 --> 01:17:52.070
En tot de volgende keer dan weer.

1404
01:17:52.830 --> 01:17:53.370
Mazzo!
