1
00:00:00,510 --> 00:00:03,390
Ein absoluter Trend unter 
Software Development auch im 

2
00:00:03,390 --> 00:00:09,070
Jahr 2024 oder gerade im Jahr 
2024 ist das Thema offline First

3
00:00:09,070 --> 00:00:11,270
und das ist auch bei mir 
tatsächlich immer der Nummer 1 

4
00:00:11,270 --> 00:00:14,270
Punkt, der mir auf die Nerven 
geht und für Frustration sorgt, 

5
00:00:14,270 --> 00:00:16,350
wenn es mal nicht funktioniert. 
Wenn ich nämlich in der 

6
00:00:16,350 --> 00:00:18,390
Deutschen Bahn oder in deutschen
Funklöchern bin. 

7
00:00:18,750 --> 00:00:21,350
In dieser Folge reden wir über 
Frameworks, die Developern das 

8
00:00:21,350 --> 00:00:23,950
Leben ein bisschen leichter 
machen und womit das Thema noch 

9
00:00:23,950 --> 00:00:26,430
zusammenhängt, nämlich es geht 
auch viel um Datenhoheit und 

10
00:00:26,430 --> 00:00:29,710
Privacy, also insgesamt glaube 
ich ein sehr spannendes Thema, 

11
00:00:29,710 --> 00:00:45,250
viel Spaß mit dieser Folge. 
Wenn ihr diese Folge hört, dann 

12
00:00:45,290 --> 00:00:47,250
schlafen malte und ich 
wahrscheinlich noch. 

13
00:00:49,000 --> 00:00:52,080
Bist du wach? 
Nee, heute nicht, aber. 

14
00:00:53,800 --> 00:00:55,600
Keinen Tag länger. 
Mit dieser Folge warten. 

15
00:00:55,600 --> 00:00:58,880
Wir wollen ja, dass es am Montag
pünktlich mit dem to do 

16
00:00:58,880 --> 00:01:04,319
Developer Podcast losgeht und 
ihr natürlich die erwünschten 

17
00:01:04,319 --> 00:01:07,560
Informationen bekommt, 
hoffentlich der üblichen 

18
00:01:07,560 --> 00:01:11,600
Qualität. 
Wir erleben hier quasi in der 

19
00:01:11,600 --> 00:01:15,200
Nacht zu Montag auf, weil wir es
nicht gebacken bekommen haben, 

20
00:01:15,200 --> 00:01:18,240
irgendwie unsere Kalender 
anständig zu synchronisieren 

21
00:01:18,240 --> 00:01:20,950
und. 
Ich finde sie auch gerade eben 

22
00:01:20,950 --> 00:01:25,110
erst in München gelandet, jetzt 
an den Schreibtisch gedüst, um 

23
00:01:25,110 --> 00:01:27,790
noch diese Folge aufzunehmen. 
Also. 

24
00:01:27,960 --> 00:01:30,320
Rechnet direkt in den nächsten 
Wochen auf jeden Fall nicht mit 

25
00:01:30,320 --> 00:01:32,840
einer Folge zum Thema 
Zeitmanagement, aber. 

26
00:01:33,470 --> 00:01:35,470
Das sieht wohl noch gut aus. 
Und wenn du das jetzt hier 

27
00:01:35,470 --> 00:01:37,750
während der Aufnahme nicht 
dazwischen kommt, dann dann 

28
00:01:37,750 --> 00:01:38,990
schaffen wir das herzlich 
willkommen. 

29
00:01:40,350 --> 00:01:43,670
Und heute sprechen wir über ein 
super spannendes Thema. 

30
00:01:43,670 --> 00:01:45,870
Du sagst, das ist ein ganz 
aktueller Trend, aber das hat 

31
00:01:45,870 --> 00:01:48,950
sich etwas, was ja schon seit 
vielen Jahren irgendwie immer 

32
00:01:48,950 --> 00:01:51,750
wieder mal hochkommt, nämlich 
offline first. 

33
00:01:51,990 --> 00:01:54,790
Aber bevor wir ins Thema 
einsteigen, erstmal noch viel 

34
00:01:54,790 --> 00:01:57,950
Dank an dich, Kevin, für 3 
Kaffee. 

35
00:01:57,950 --> 00:02:02,440
Wir haben uns natürlich. 
Sehr gefreut, oder? 

36
00:02:02,600 --> 00:02:06,960
Auch wenn ihr uns einen Kaffee 
ausgeben möchtet, findet ihr in 

37
00:02:06,960 --> 00:02:10,280
den Show Notes den Link zu bei 
mir coffee.com. 

38
00:02:12,000 --> 00:02:13,200
Genau da legen wir auch los mit 
dem Thema. 

39
00:02:13,200 --> 00:02:16,440
Also wir haben es gerade offline
First auch oft irgendwie local 

40
00:02:16,720 --> 00:02:19,040
First genannt. 
Warum haben wir gesagt, das ist 

41
00:02:19,040 --> 00:02:22,000
ein Trend in 2024, weil das 
klingt ja eigentlich nach 

42
00:02:22,000 --> 00:02:25,560
irgendwie einer Sau, die schon 
ganz lange durchs Dorf gejagt 

43
00:02:25,560 --> 00:02:29,040
wird, aber es ist tatsächlich, 
dass am meisten requestete 

44
00:02:29,040 --> 00:02:31,920
Feature bei Superbase wer das 
nicht kennt, das ist so ein 

45
00:02:32,240 --> 00:02:35,520
mobile oder so ein Backend as a 
Service Plattform, Es ist seit 

46
00:02:35,520 --> 00:02:38,880
Jahren das am meisten gefragte 
Feature in Motion, was ja auch 

47
00:02:38,880 --> 00:02:42,880
so eine Datenbank und 
Projektplanung Management 

48
00:02:42,880 --> 00:02:44,240
Software ist, die ganz viele 
Bestimmungen. 

49
00:02:44,710 --> 00:02:47,750
Euch da draußen benutzen und 
auch mein Nummer 1 requestes 

50
00:02:47,750 --> 00:02:50,550
Feature in ganz vielen Apps und 
das liegt nicht nur daran, dass 

51
00:02:50,550 --> 00:02:52,550
wir hier in Deutschland, dass 
wir in Deutschland einfach oft 

52
00:02:52,550 --> 00:02:54,590
ne schlechte Abdeckung haben, 
sondern das kann ja einfach mal 

53
00:02:54,590 --> 00:02:57,390
dran liegen, dass man im im 
Flugzeug ist und kein Internet 

54
00:02:57,390 --> 00:02:59,350
hat, oder es gibt auch noch n 
paar andere. 

55
00:03:00,070 --> 00:03:02,430
Andere Benefits warum ist es n 
Trend? 

56
00:03:02,510 --> 00:03:05,230
Weil es gerade auch auf ganz 
vielen Konferenzen, also 

57
00:03:05,230 --> 00:03:07,070
eigentlich fast auf allen 
Developer Konferenzen, 

58
00:03:07,070 --> 00:03:09,270
mindestens einen Talk zu dem 
Thema gibt? 

59
00:03:09,590 --> 00:03:13,270
Es gibt mehrere Frameworks, die 
auch aus irgendwelchen Research 

60
00:03:13,270 --> 00:03:16,990
Labs im Moment raus purzeln. 
Es gibt, und dieses Thema wird 

61
00:03:16,990 --> 00:03:20,350
irgendwie gerade gefühlt wieder 
neu aufgerollt deswegen wir 

62
00:03:20,350 --> 00:03:22,790
dachten, dass da eigentlich ne 
gute Zeit, dass wir da auch mal 

63
00:03:22,790 --> 00:03:25,310
ne Folge zu machen, gerade weil 
das auch einfach insofern 

64
00:03:25,310 --> 00:03:27,110
spannendes Thema ist, dass es 
nicht nur technologisch 

65
00:03:27,110 --> 00:03:31,430
natürlich herausfordernd ist. 
Sondern auch wieder n bisschen n

66
00:03:31,430 --> 00:03:34,350
Schritt zurück von alles muss in
die Cloud, sondern wieder mehr 

67
00:03:34,350 --> 00:03:38,390
lokal hin und auch n. 
Spannendes Thema ist in Richtung

68
00:03:38,390 --> 00:03:41,150
Datenhoheit, aber ich würd sagen
wir fangen mal vorne an. 

69
00:03:42,190 --> 00:03:45,710
Was ich ganz spannend finde, 
ist, dass wir über das Thema 

70
00:03:45,870 --> 00:03:48,750
schon mal gesprochen haben, 
zumindest in Ansätzen, als wir 

71
00:03:48,750 --> 00:03:51,190
über progressive Web Apps 
gesprochen haben. 

72
00:03:51,430 --> 00:03:55,870
Und das ist ja ein Thema, was 
vor einigen Jahren, ich würd mal

73
00:03:55,870 --> 00:04:00,840
sagen, 567 Jahren. 
Ganz frisch hochkam und irgendwo

74
00:04:00,840 --> 00:04:04,520
in aller Munde war. 
Und jetzt kommt das Thema wieder

75
00:04:04,520 --> 00:04:09,440
und das immer noch Leute dieses 
Feature nachfragen müssen, diese

76
00:04:09,440 --> 00:04:12,920
Funktionalität, dass ich 
tatsächlich auch lokal arbeiten 

77
00:04:12,920 --> 00:04:16,959
kann und sichergestellt, dass 
meine Daten jederzeit dennoch 

78
00:04:16,959 --> 00:04:20,320
aktuell sind, das liegt auch 
einfach daran, dass viele. 

79
00:04:21,390 --> 00:04:24,990
Diese Adaption dieser 
Möglichkeiten, die mit solchen 

80
00:04:24,990 --> 00:04:27,110
Technologien gekommen sind, gar 
nicht mitgemacht haben. 

81
00:04:27,590 --> 00:04:30,470
Teilweise einfach weil es 
komplex ist, teilweise auch 

82
00:04:30,470 --> 00:04:33,990
einfach aus Convenience und 
vielleicht auch dem Gedanken, 

83
00:04:33,990 --> 00:04:36,310
dass mittlerweile Internet 
Konnektivität. 

84
00:04:37,230 --> 00:04:41,470
Jederzeit verfügbar ist, was 
aber natürlich faktisch nicht so

85
00:04:41,470 --> 00:04:45,830
ist und vielleicht auch noch ein
Thema, was wir in der Folge 

86
00:04:45,830 --> 00:04:48,830
damals angesprochen haben. 
Es muss ja nicht immer so sein, 

87
00:04:48,830 --> 00:04:51,390
dass man entweder online oder 
offline ist. 

88
00:04:51,830 --> 00:04:54,230
Sondern in einem schwierigen, 
Schwierigsten sind vor allen 

89
00:04:54,230 --> 00:04:57,510
Dingen die Situation, wo 
irgendwie das Gerät das Gefühl 

90
00:04:57,510 --> 00:05:00,270
hat, online zu sein. 
Und dann ist man wieder 

91
00:05:00,270 --> 00:05:03,670
irgendwie mobil unterwegs mit 
irgendeiner Edge Connection und 

92
00:05:04,310 --> 00:05:06,790
die Daten kommen einfach nicht 
über die Leitung und dann 

93
00:05:06,790 --> 00:05:09,510
befindet man sich in einem 
Zustand, wo die Anwendung 

94
00:05:09,510 --> 00:05:13,550
einfach nicht mehr nutzbar ist. 
Und ich glaube das wird auch für

95
00:05:13,550 --> 00:05:16,670
die nächsten Jahre, wenn ich 
Jahrzehnte immer noch in vielen 

96
00:05:16,670 --> 00:05:20,790
Situationen vorkomme, selbst 
wenn man jetzt heutzutage selbst

97
00:05:20,790 --> 00:05:24,600
im Flieger im Zug durchaus. 
Internet hat aber dieses 

98
00:05:24,600 --> 00:05:28,080
Internet hat natürlich nicht 
immer die Qualität, wie man es 

99
00:05:28,120 --> 00:05:32,680
vielleicht vom heimischen 
Schreibtisch oder vom Access 

100
00:05:32,680 --> 00:05:36,760
Point zuhause gewohnt ist. 
Genau, wenn das Spannende an dem

101
00:05:36,760 --> 00:05:38,720
Thema ist. 
Es geht einfach darum, geile 

102
00:05:38,720 --> 00:05:43,800
Apps zu bauen, die schnell sind,
die Responsive sind, die mir als

103
00:05:43,800 --> 00:05:47,840
als User immer Zuruf auf meine 
Daten geben und vor allem super 

104
00:05:47,840 --> 00:05:50,640
schnell auf meine Daten geben. 
Du hast gerade schon erwähnt 

105
00:05:50,640 --> 00:05:52,200
progressive Web Apps, da ist es 
soweit. 

106
00:05:52,630 --> 00:05:56,670
Weiß sogar ein Requirement, dass
die App offline fähig sein muss,

107
00:05:56,790 --> 00:05:59,510
zumindest natürlich in der Art 
und Weise, dass sie, wenn es ne 

108
00:05:59,510 --> 00:06:03,190
Web App ist, die HTML, Java 
Script und CSS Dateien offline 

109
00:06:03,190 --> 00:06:05,510
ausliefert. 
Dazu gehört dann meistens auch 

110
00:06:05,510 --> 00:06:08,870
eine kleine lokale Datenbank. 
Ne, das können die meisten 

111
00:06:08,870 --> 00:06:11,350
Browser, also die meisten 
Browser heute haben die 

112
00:06:11,350 --> 00:06:14,550
Möglichkeit eine lokale 
Datenbank zu haben, kann man 

113
00:06:14,550 --> 00:06:17,070
auch mal irgendwie die was sind 
das die bei Chrome oder sowas 

114
00:06:17,070 --> 00:06:19,590
die Developer Tools aufmachen 
und dann sieht man auch, dass da

115
00:06:19,590 --> 00:06:22,870
unter anderem neben irgendwie 
den den Sourcecode und den 

116
00:06:22,870 --> 00:06:26,510
Cookies und dem Local Storage 
ist auch Databases und Indexed 

117
00:06:26,510 --> 00:06:28,990
DB heißt das in den Developer 
Tools, dass es das gibt, das 

118
00:06:28,990 --> 00:06:31,470
heißt die Browser stellen so was
eigentlich schon zur Verfügung 

119
00:06:31,950 --> 00:06:34,430
und bei progressive Web Apps ist
es soweit ich weiß auch wirklich

120
00:06:34,430 --> 00:06:38,110
eine Anforderung, jetzt brauchen
das natürlich nicht alle Apps, 

121
00:06:38,110 --> 00:06:41,470
also gerade wenn ich was habe 
was einfach ganz klar nur im 

122
00:06:41,470 --> 00:06:43,950
Internet stattfindet also denke 
ich jetzt irgendwie das Portal 

123
00:06:43,950 --> 00:06:46,470
von meinem Cloud Provider nehme,
da kann ich natürlich. 

124
00:06:47,680 --> 00:06:49,360
Offline wenig machen, weil da 
werde ich keine WM hochfahren 

125
00:06:49,360 --> 00:06:51,320
können, wenn ich da gerade keine
Internetverbindung habe. 

126
00:06:52,000 --> 00:06:54,520
Aber sogar für das, was wir hier
tun. 

127
00:06:54,520 --> 00:06:57,280
Also dieser Podcast entsteht ja 
an 2 komplett verschiedenen 

128
00:06:57,280 --> 00:07:01,760
Orten in Deutschland und wir 
nehmen über eine Software auf, 

129
00:07:01,760 --> 00:07:05,160
die im Browser läuft und auch 
die hat aber eine gewisse 

130
00:07:05,160 --> 00:07:08,080
Offline Funktionalität, dass sie
zumindest meine Stimme. 

131
00:07:08,550 --> 00:07:12,070
Ihr gerade hört noch maltes 
Stimme lokal speichert und erst 

132
00:07:12,070 --> 00:07:14,110
am Ende des Recordings quasi 
hochlädt. 

133
00:07:14,110 --> 00:07:16,510
Das heißt, das, was malte und 
ich hier live hören, das kann 

134
00:07:16,510 --> 00:07:19,110
auch manchmal nen Hänger oder 
nen kleinen Hick haben, aber 

135
00:07:19,110 --> 00:07:21,350
wenn jetzt bei malte mal für ne 
Sekunde oder bei mir mal für ne 

136
00:07:21,350 --> 00:07:24,270
Sekunde das Internet wegbrechen 
würde, würde dieses Recording 

137
00:07:24,270 --> 00:07:27,030
trotzdem lokal weiterlaufen und 
am Ende dann zusammengefügt 

138
00:07:27,030 --> 00:07:29,230
werden, ist also auch schon mal 
ein ganz gutes Beispiel dafür, 

139
00:07:29,230 --> 00:07:31,630
dass eine App eigentlich auch 
immer beides sein kann und 

140
00:07:31,630 --> 00:07:34,190
deswegen reden wir auch nicht 
von irgendwie online oder 

141
00:07:34,190 --> 00:07:36,670
offline Apps, sondern wir reden 
wirklich von offline first. 

142
00:07:36,910 --> 00:07:41,070
Also dass das einfach quasi von 
von Tag 1 mitgedacht wird. 

143
00:07:42,120 --> 00:07:45,240
Und Verfechter davon, von diesem
Thema, die sagen offline First, 

144
00:07:45,240 --> 00:07:48,160
das ist kein Feature, sondern 
das ist ein Design Pattern, das 

145
00:07:48,160 --> 00:07:51,760
heißt von vornherein in der Art 
und Weise, wie ich mein Software

146
00:07:51,760 --> 00:07:55,560
Designer, wie ich meine 
Anwendung baue, habe ich direkt 

147
00:07:55,560 --> 00:07:58,880
im Hinterkopf, dass ich mich 
nicht einzig und allein auf der 

148
00:07:58,880 --> 00:08:01,560
Verbindung zu einem Server 
verlasse, auch wenn das 

149
00:08:01,560 --> 00:08:05,480
natürlich als Developer auf die,
ja, sag ich mal, einfachere Art 

150
00:08:05,480 --> 00:08:08,120
und Weise ist. 
Gerade kollaborative Anwendungen

151
00:08:08,120 --> 00:08:10,040
zu implementieren oder gerade 
irgendwelche Anwendungen mit 

152
00:08:10,040 --> 00:08:11,160
online Features zu 
implementieren. 

153
00:08:11,670 --> 00:08:14,950
Und das wahrscheinlich auch der 
Grund ist, warum wir so viele 

154
00:08:14,950 --> 00:08:18,150
Apps sehen, die keine offline 
First Funktionalität haben, weil

155
00:08:18,150 --> 00:08:19,950
es einfach bequemer ist oder 
weil es einfach ein bisschen 

156
00:08:19,950 --> 00:08:22,150
einfacher ist. 
Und weil das Thema Komplex ist. 

157
00:08:22,150 --> 00:08:23,990
Und da tauchen wir gleich mal 
dran ein. 

158
00:08:24,990 --> 00:08:27,950
Ja, anstatt wir kennen das auch 
alle als User von Anwendungen, 

159
00:08:27,950 --> 00:08:30,710
wie frustrierend das einfach 
ist, wenn tatsächlich die 

160
00:08:30,710 --> 00:08:32,390
Anwendung einfach nur n Fehler 
wirft, wenn die 

161
00:08:32,390 --> 00:08:36,510
Internetverbindung mal nicht da 
ist oder unterbrochen ist und 

162
00:08:37,390 --> 00:08:39,710
vielleicht in dem Fall gar 
keine. 

163
00:08:39,830 --> 00:08:41,470
Echtzeitübertragung notwendig 
ist. 

164
00:08:41,470 --> 00:08:44,030
Klar, wenn du irgendwo ne 
Videokonferenz hast und die 

165
00:08:44,030 --> 00:08:46,350
Internetverbindung wegbricht, 
dann kannst du nicht mehr 

166
00:08:46,350 --> 00:08:49,190
kommunizieren, aber es gibt ja 
ganz viele Anwendungsfälle, wo 

167
00:08:49,190 --> 00:08:51,590
es völlig irrelevant ist. 
Und warum soll man den User da 

168
00:08:51,590 --> 00:08:56,350
aus seinem Flow reißen? 
Obwohl man die Möglichkeit 

169
00:08:56,350 --> 00:08:59,950
hätte, die ganzen Informationen 
lokal zu speichern, lokal zu 

170
00:08:59,950 --> 00:09:03,230
verarbeiten und dann zu einem 
späteren Zeitpunkt dann zu 

171
00:09:03,230 --> 00:09:04,950
synchronisieren. 
Da kommen wir ja gleich später 

172
00:09:04,950 --> 00:09:09,230
noch mal drauf, wie das Ganze 
dann auch zu implementieren ist.

173
00:09:09,670 --> 00:09:11,390
Ja oder noch viel schlimmer, 
dass er sich keinen Fehler 

174
00:09:11,390 --> 00:09:14,670
bekomme, sondern das einfach 
unfassbar langsam ist irgendwie 

175
00:09:14,670 --> 00:09:16,590
gerade, dass ich vielleicht 
irgendwie gerade keinen Text in 

176
00:09:16,590 --> 00:09:19,670
Dokument eintippen kann, weil 
keine Ahnung die API für die 

177
00:09:19,670 --> 00:09:22,950
Autovervollständigung langsam 
ist oder einfach frustrierend 

178
00:09:22,950 --> 00:09:24,430
sein kann. 
Ne, ich hatte das gerade, also 

179
00:09:24,550 --> 00:09:26,630
ich. 
Im gerade im Flugzeug auf diese 

180
00:09:26,630 --> 00:09:31,230
Folge vorbereitet und hab ne n 
Konferenztalk dazu offline auf 

181
00:09:31,230 --> 00:09:34,030
Youtube gesehen und hab n hab n 
coolen Screenshot gefunden den 

182
00:09:34,030 --> 00:09:36,350
ich hier meine Notizen 
reinschreiben wollte und ich. 

183
00:09:36,910 --> 00:09:39,870
Also malte und ich, wir, wir 
pflegen die Vorbereitung und die

184
00:09:39,870 --> 00:09:43,070
Notes in Motion und ich kann 
zwar meine Notes The offline 

185
00:09:43,070 --> 00:09:45,550
aufrufen, ich konnte aber den 
einen Screenshot den ich gemacht

186
00:09:45,550 --> 00:09:48,830
habe nicht pasten in meine 
Notizen, weil da wahrscheinlich 

187
00:09:48,830 --> 00:09:51,510
irgendeine online API für 
befragt wird die was weiß ich 

188
00:09:51,510 --> 00:09:54,190
macht oder dieses Bild glaube 
ich hochlädt weil natürlich 

189
00:09:54,230 --> 00:09:57,070
Motion die die Dokumente auf den
Motion Servern speichern und gar

190
00:09:57,070 --> 00:09:58,990
nicht lokal. 
Und da habe ich mich tatsächlich

191
00:09:58,990 --> 00:10:01,310
auch wieder mal gefragt ob das 
wirklich das richtige Tool ist. 

192
00:10:01,830 --> 00:10:04,950
Wenn ich hier nicht, wenn es 
quasi keine Internetverbindung 

193
00:10:04,950 --> 00:10:08,230
habe nicht auf meine Nodes 
zugreifen kann und das muss ja 

194
00:10:08,230 --> 00:10:10,270
nicht nur sein, dass ich keine 
Internetverbindung habe, sondern

195
00:10:10,270 --> 00:10:11,590
ich verlasse mich ja auch 
darauf. 

196
00:10:12,400 --> 00:10:16,680
Dass Motion als Firma und als 
Server keine Fehlentscheidungen 

197
00:10:16,680 --> 00:10:19,080
insofern treffen, dass deren 
Server manchmal down sind oder 

198
00:10:19,080 --> 00:10:21,320
die ganze Firma vielleicht 
irgendwie den Bach runter geht. 

199
00:10:21,960 --> 00:10:25,680
Wir kennen das alle irgendwie, 
dann gibt es irgendwie keine 

200
00:10:25,680 --> 00:10:29,560
Ahnung, einen großen Blog Post. 
Hey we go und Incredible Journey

201
00:10:29,560 --> 00:10:32,840
Blabla, was am Ende einfach nur 
heißt wir sind gekauft worden 

202
00:10:32,840 --> 00:10:35,960
von irgendeiner riesigen Firma 
und ich meine wir haben es ja 

203
00:10:35,960 --> 00:10:38,240
nicht selten gesehen, dass Tools
dann auch einfach eingestellt 

204
00:10:38,240 --> 00:10:40,750
werden und. 
Und ich hab mir schon überlegt, 

205
00:10:40,750 --> 00:10:45,190
weil ich hab ja viele 1000 
Notizen und ja, Mitschriften und

206
00:10:45,190 --> 00:10:48,440
Sachen hier drin. 
Und deswegen meinte ich auch 

207
00:10:48,440 --> 00:10:51,200
vorhin so n bisschen, dass für 
mich das Thema offline First gar

208
00:10:51,200 --> 00:10:53,320
nicht immer nur technologisch 
ist, sondern auch. 

209
00:10:53,830 --> 00:10:58,870
Komme ich an meine Daten ran, 
wenn die Firma Norton oder das 

210
00:10:58,870 --> 00:11:01,550
oder die die Server von Motion 
vielleicht mal nicht mehr sind? 

211
00:11:01,910 --> 00:11:03,830
Und klar ich kann das nicht 
irgendwie exportieren bei 

212
00:11:03,830 --> 00:11:06,110
manchen Apps wenn ich Glück habe
kann ich noch was exportieren, 

213
00:11:06,110 --> 00:11:07,790
das müsste ich aber auch 
regelmäßig machen. 

214
00:11:08,510 --> 00:11:10,990
Reicht aber auch nur irgendwie n
Jason und es gibt ja auch 

215
00:11:10,990 --> 00:11:13,190
durchaus Notiz Apps die lokal 
funktionieren oder die 

216
00:11:13,190 --> 00:11:15,150
vielleicht einfach nur auf Mark 
Down oder Textdokumenten 

217
00:11:15,150 --> 00:11:18,590
basieren. 
Und ich glaube, dass dieses 

218
00:11:18,750 --> 00:11:22,310
Owning dieses wem gehören, die 
Daten gehören mir weiterhin die 

219
00:11:22,310 --> 00:11:25,070
Daten und ich nutze nur ein 
Tool, was ist mir einfacher 

220
00:11:25,070 --> 00:11:27,950
macht darauf zuzugreifen sowie 
halt als Developer, dass er mit 

221
00:11:27,950 --> 00:11:29,590
Git schon eigentlich schon immer
hatten. 

222
00:11:29,950 --> 00:11:33,030
Ich glaube, dass das ein Trend 
ist und dass deswegen auch ins 

223
00:11:33,030 --> 00:11:36,550
Jahr 2024 ist offline First 
wieder viel hochkommt, weil 

224
00:11:36,550 --> 00:11:39,590
dieses wem gehören die Daten, 
dass ich die meine wichtigsten 

225
00:11:39,590 --> 00:11:42,550
Sachen eigentlich selber Owen 
möchte, die Dateien dahinter, 

226
00:11:42,950 --> 00:11:45,550
ich glaube, dass das noch mal 
dieser Privacy Trend ist, der 

227
00:11:45,550 --> 00:11:47,110
jetzt das Thema nochmal 
hochkommen lässt. 

228
00:11:48,160 --> 00:11:51,120
Ja, ich glaube, gerade bei 
solchen Apps, die auf 

229
00:11:51,120 --> 00:11:55,440
Webtechnologien basieren, da ist
es halt einfach noch nicht 

230
00:11:56,120 --> 00:11:58,240
leicht genug, diese 
Funktionalitäten zu 

231
00:11:58,240 --> 00:12:00,800
implementieren. 
Ich glaube, bei klassischen. 

232
00:12:02,560 --> 00:12:05,240
Desktop Apps zum Beispiel. 
Da ist dieser Gedanke immer noch

233
00:12:05,240 --> 00:12:09,760
aus früheren Zeiten da, dass 
diese Anwendung völlig 

234
00:12:09,760 --> 00:12:11,920
internetfrei funktioniert, muss 
ich meine ich. 

235
00:12:12,550 --> 00:12:16,950
Zum im Vergleich zu Motion, auch
wenn ich hundertprozentig 

236
00:12:16,950 --> 00:12:20,270
vergleichbar, aber wenn du die 
Notiz App von Apple verwendest, 

237
00:12:20,270 --> 00:12:22,710
natürlich funktioniert die und 
ich kann meine Notizen machen 

238
00:12:22,710 --> 00:12:25,310
wenn ich auf dem Mac keine 
Internetverbindung habe und 

239
00:12:25,310 --> 00:12:28,550
sobald ich wieder online bin 
werden die dann synchronisiert 

240
00:12:28,670 --> 00:12:31,270
mit den Daten auf meinen anderen
Geräten oder? 

241
00:12:33,000 --> 00:12:34,200
Anderen Themen. 
Und wenn du da dann deinen 

242
00:12:34,200 --> 00:12:36,280
Screenshot einfügst wenn du 
gerade kein Internet hast, das 

243
00:12:36,280 --> 00:12:38,120
ist gar kein Problem. 
Die Anwendung beschwert sich ja 

244
00:12:38,120 --> 00:12:42,600
nicht mal und von daher ist es 
dann häufig auch eine Frage, 

245
00:12:42,600 --> 00:12:45,960
dessen will man dort diesen 
zusätzlichen Aufwand treffen, 

246
00:12:45,960 --> 00:12:49,280
weil heutzutage ist es ja sogar 
in Webanwendungen möglich, diese

247
00:12:49,280 --> 00:12:52,840
ganze Verarbeitung der Dateien 
lokal zu machen, du musst es ja 

248
00:12:52,840 --> 00:12:56,920
gar nicht über irgendwelche 
Server Schnittstellen machen und

249
00:12:56,920 --> 00:13:00,880
von daher ist es häufig nur eine
Frage des Wollens, aber es macht

250
00:13:00,880 --> 00:13:04,720
natürlich die Anwendung in der 
Entwicklung komplexer, es ist 

251
00:13:04,960 --> 00:13:09,280
kein triviales Thema, weil dann 
natürlich sobald ich solche 

252
00:13:09,280 --> 00:13:12,640
Mechanismen einfüge. 
Auch viele Gedanken machen muss.

253
00:13:13,710 --> 00:13:18,790
Welche Strategie fahr ich ja bei
den beiden Themen so Lesen, 

254
00:13:18,790 --> 00:13:21,710
schreiben, Daten 
synchronisieren, wie stelle ich 

255
00:13:21,710 --> 00:13:26,120
sicher, dass diese Daten. 
Jederzeit auch. 

256
00:13:26,870 --> 00:13:29,550
Die entsprechende Integrität 
haben und ich mir nicht 

257
00:13:29,550 --> 00:13:32,710
gegenseitig irgendwelche 
Datenbestände überschreibe von 

258
00:13:32,710 --> 00:13:34,350
vielleicht verschiedenen 
Quellen, aber da kommen wir ja 

259
00:13:34,350 --> 00:13:36,830
gleich noch ein bisschen im 
Detail zu, wenn es um die 

260
00:13:37,070 --> 00:13:39,950
konkreten. 
Wege geht, wie man so etwas 

261
00:13:39,950 --> 00:13:43,910
bauen kann. 
Ja, es sei einfach teuer, weil 

262
00:13:43,910 --> 00:13:46,270
aufwendig, das zu entwickeln, 
wie du gerade schon gesagt hast.

263
00:13:46,270 --> 00:13:49,070
Ne, es fehlt so ein bisschen an 
der an der Einfachheit oder dass

264
00:13:49,070 --> 00:13:51,310
es einfach in den Frameworks, 
die wir heute benutzen mit 

265
00:13:51,310 --> 00:13:53,150
Eingebacken ist. 
Und ich meine, es kommt 

266
00:13:53,150 --> 00:13:56,630
natürlich auf, weil was, was 
wollen wir, was man eine geile 

267
00:13:56,630 --> 00:13:59,830
Software aus, die ist immer 
verfügbar, also unabhängig 

268
00:13:59,830 --> 00:14:01,990
davon, ob ich gleich auch bei 
Grad nur ein Funkloch habe. 

269
00:14:02,030 --> 00:14:05,950
Ich möchte aber heutzutage ja 
trotzdem kollaborativ, privat, 

270
00:14:05,950 --> 00:14:07,710
kollaborativ, im Idealfall 
natürlich. 

271
00:14:08,760 --> 00:14:10,680
Damit arbeiten können, und das 
kann einmal sein, über 

272
00:14:10,680 --> 00:14:13,440
verschiedene Geräte, weil es war
schon so. 

273
00:14:13,520 --> 00:14:17,560
Ich habe die Vorbereitung am 
Flughafen am Laptop gemacht, ich

274
00:14:17,560 --> 00:14:20,680
saß im Flieger, dann an meinem I
pad, das heißt, ich muss ja 

275
00:14:20,680 --> 00:14:22,360
nicht nur verschiedene Personen 
sein, sondern allein schon 

276
00:14:22,360 --> 00:14:25,440
zwischen meinen Geräten einfach 
so früher, so ein bisschen 

277
00:14:25,440 --> 00:14:28,400
früher kam auch mal so Peer to 
Peer Ideen auf und sowas allein 

278
00:14:28,400 --> 00:14:30,680
dazwischen möchte ich ja schon 
eine gewisse Synchronisation 

279
00:14:30,680 --> 00:14:33,880
haben und dann idealerweise was 
Motion ja so ein tolles Tool 

280
00:14:33,880 --> 00:14:35,880
auch macht ist, dass du dich da 
theoretisch auch gleichzeitig 

281
00:14:35,880 --> 00:14:39,360
drin arbeiten können und dass 
man dann wie man das. 

282
00:14:39,480 --> 00:14:42,760
Von von Word online oder von von
Google Docs kennt wirklich so 

283
00:14:42,760 --> 00:14:45,120
gleichzeitig auch mit den Cursor
und sowas sieht und das ist 

284
00:14:45,120 --> 00:14:48,590
natürlich. 
Unheimlich, ja aufwendig zu 

285
00:14:48,590 --> 00:14:51,670
entwickeln. 
Und das kann und will sich aber 

286
00:14:51,670 --> 00:14:53,750
auch vielleicht ja gar nicht 
jeder leisten, der jetzt gerade 

287
00:14:53,750 --> 00:14:56,390
irgendwie ne Anwendung baut. 
Ja, und ich mein, das ist 

288
00:14:56,550 --> 00:14:59,070
technisch möglich ist. 
Das sieht man ja in einigen 

289
00:14:59,070 --> 00:15:02,230
Anwendungen. 
Ich glaub, viele von uns werden 

290
00:15:02,270 --> 00:15:05,030
gelegentlich die die Office 
Tools von Microsoft verwenden, 

291
00:15:05,030 --> 00:15:09,550
wo ja sowohl das gleichzeitige 
Bearbeiten in den Desktop 

292
00:15:09,550 --> 00:15:12,990
Anwendungen als auch eine 
offline Funktionalität möglich 

293
00:15:12,990 --> 00:15:16,150
ist. 
Aber man läuft vielleicht hier 

294
00:15:16,150 --> 00:15:18,350
und da in irgendwelche 
Synchronisierungskonflikte, die 

295
00:15:18,350 --> 00:15:21,230
dann entsprechend nervig sind 
und diese ganzen Probleme spart 

296
00:15:21,230 --> 00:15:24,270
man sich natürlich, wenn man 
diese offline Arbeit gar nicht 

297
00:15:24,270 --> 00:15:27,320
erst erlaubt. 
Dann schauen wir doch mal rein, 

298
00:15:27,320 --> 00:15:28,600
oder? 
Also genug drumherum geredet, 

299
00:15:28,600 --> 00:15:30,160
wir haben uns ein bisschen 
angeschaut, was ist denn so 

300
00:15:30,160 --> 00:15:34,080
stand heute auf offline First, 
offline Funktionalität wie wie 

301
00:15:34,320 --> 00:15:36,480
macht man das denn und wir reden
auch auf jeden Fall leicht 

302
00:15:36,480 --> 00:15:38,680
drüber, wie man mit so 
Konflikten umgeht, die dann ja 

303
00:15:38,680 --> 00:15:40,280
mehr oder weniger unvermeidbar 
sind. 

304
00:15:41,190 --> 00:15:43,710
Das eine Thema hatten wir gerade
schon in Browserdatabaces, da 

305
00:15:43,710 --> 00:15:47,030
gibt es ne ganze Menge. 
Also SQ Lite kennen kennen glaub

306
00:15:47,030 --> 00:15:49,510
ich viele, was so ne 
gleichgewichtige Version von der

307
00:15:49,510 --> 00:15:53,870
klassischen SQL Datenbank ist. 
Es gibt auch Pouch DB, das ist 

308
00:15:53,870 --> 00:15:56,470
gerade relativ populär, das ist 
natürlich wie der Name schon 

309
00:15:56,470 --> 00:15:59,750
sagt inspiriert von Couch DB. 
Das ist eine No SQL Datenbank 

310
00:16:00,030 --> 00:16:03,350
und das ist eigentlich alles nur
verschiedene Java Script Pakete 

311
00:16:03,350 --> 00:16:04,910
die man sich über npm 
runterlädt. 

312
00:16:04,910 --> 00:16:07,630
Also wir reden jetzt gerade, wir
reden jetzt erstmal 

313
00:16:07,630 --> 00:16:11,590
hauptsächlich von Web Apps die 
auch gerade durch sowas wie 

314
00:16:11,590 --> 00:16:14,190
Elektro natürlich gerade auch 
viel den Desktop erobern, aber. 

315
00:16:15,080 --> 00:16:16,840
Die Konzepte und Technologien 
sind aber dieselben davon. 

316
00:16:16,840 --> 00:16:19,280
Wenn wir jetzt von der tiefen 
mobile Apps oder nativen Desktop

317
00:16:19,280 --> 00:16:21,880
Apps reden, auch da habe ich in 
der Regel irgendwas wo ich eine 

318
00:16:21,880 --> 00:16:25,040
Datenbank ansprechen kann, aber 
alle modernen Browser 

319
00:16:25,040 --> 00:16:28,440
unterstützen das schon und dann 
kann die zum Beispiel einfach 

320
00:16:28,440 --> 00:16:31,880
lokal eine Datenbank so eine 
Kopie, das muss ja nicht von der

321
00:16:31,880 --> 00:16:35,960
gesamten Datenbank sein, aber 
von derselben Struktur wie sie 

322
00:16:36,280 --> 00:16:38,440
die Datenbank ist, die ich in 
meinem auf meiner Server 

323
00:16:38,440 --> 00:16:40,920
Landschaft bei meinen Clouds 
stehen habe und. 

324
00:16:41,390 --> 00:16:43,950
Man dort die für den für den 
angemeldeten User relevanten 

325
00:16:43,950 --> 00:16:48,470
Informationen drin speichern und
einen, ja eine Sync eine 

326
00:16:48,470 --> 00:16:51,310
Synchronisation mit der Cloud 
mir dann irgendwie bauen. 

327
00:16:51,430 --> 00:16:54,710
Das natürlich für sehr große 
Datasets problematisch, weil ich

328
00:16:54,710 --> 00:16:56,270
begrenzten Speicher und 
natürlich auch. 

329
00:16:56,550 --> 00:17:00,070
Nur begrenzte begrenzten 
Durchsatz in der Internetleitung

330
00:17:00,070 --> 00:17:04,230
habe aber technisch wäre es 
zumindest so, dass meine 

331
00:17:04,230 --> 00:17:08,150
Applikation dann erstmal immer 
die lokale Datenbank fragt und 

332
00:17:08,150 --> 00:17:11,310
dann im Hintergrund die 
Synchronisation mit dem Server 

333
00:17:11,310 --> 00:17:13,310
macht. 
Das hat den großen Vorteil, Ich 

334
00:17:13,310 --> 00:17:16,710
mache die App auf, ich habe 
sofort Daten, das mögen nicht 

335
00:17:16,710 --> 00:17:19,230
die aller aktuellsten Daten 
sein, aber ich habe sofort 

336
00:17:19,230 --> 00:17:22,950
welche und dann kann ich sagen 
Pass auf wann immer du einen 

337
00:17:22,950 --> 00:17:25,910
Datensatz veränderst oder einen 
neuen Datensatz erstellt, wird 

338
00:17:25,910 --> 00:17:29,190
er in die lokale Datenbank 
geschrieben und dann asynchron 

339
00:17:29,190 --> 00:17:31,870
möglichst zügig mit dem Server 
synchronisiert. 

340
00:17:33,080 --> 00:17:37,240
Und ich glaube, was viele als 
diese Technologien neu in den 

341
00:17:37,240 --> 00:17:40,720
Browser gekommen sind, 
abgeschreckt hat, ist das zu der

342
00:17:40,720 --> 00:17:44,680
Zeit das ganze Halt noch nicht 
auf allen Plattformen verfügbar 

343
00:17:44,680 --> 00:17:47,040
war. 
Und wenn man jetzt halt schaut, 

344
00:17:47,520 --> 00:17:51,640
Index DB weiß nicht auf der 
Webseite wie Can I used.com geht

345
00:17:51,640 --> 00:17:54,600
mal rein, welche Technologien 
sind in meinem Browser 

346
00:17:54,600 --> 00:17:58,080
unterstützt hat man eine 
Kompatibilität eigentlich? 

347
00:17:58,270 --> 00:18:01,270
Über alle Browser hinweg, die 
tatsächlich auf aktuellen 

348
00:18:01,270 --> 00:18:04,750
Betriebssystemen, egal ob jetzt 
Desktop oder Mobile, verfügbar 

349
00:18:04,750 --> 00:18:06,670
sind. 
Das war vor einigen Jahren noch 

350
00:18:06,670 --> 00:18:10,630
nicht so und ich vermute, dass 
das einer der Gründe war, warum 

351
00:18:10,910 --> 00:18:15,390
seinerzeit, als dieses PDA Thema
Hochkam, viele sich damit 

352
00:18:15,390 --> 00:18:17,670
technologisch beschäftigt haben,
haben aber gesagt, es ist 

353
00:18:17,670 --> 00:18:21,470
einfach nicht den Mehraufwand 
wert, weil wir sowieso nicht 

354
00:18:21,470 --> 00:18:24,710
alle User damit erreichen 
können, aber das ist natürlich 

355
00:18:24,710 --> 00:18:27,270
heutzutage anders und 
dementsprechend kann man sich 

356
00:18:27,270 --> 00:18:28,870
jetzt auch wieder Gedanken 
darüber machen. 

357
00:18:29,920 --> 00:18:33,600
Ist jetzt der Punkt gekommen, wo
ich solche Technologien für die 

358
00:18:33,600 --> 00:18:36,080
offline Arbeit in meine 
Webanwendung auch reinbringen 

359
00:18:36,080 --> 00:18:38,190
kann? 
Genau. 

360
00:18:39,920 --> 00:18:42,080
Was kann ich sonst noch machen? 
Also ne wie gesagt es gibt die 

361
00:18:42,080 --> 00:18:44,240
Technologie für ne lokale 
Datenbank ist da. 

362
00:18:44,560 --> 00:18:46,360
Ich muss auf aber ich muss 
natürlich auch auf n paar Sachen

363
00:18:46,360 --> 00:18:49,720
achten zum einen also zum 
Beispiel dass ich sowas wie IDS 

364
00:18:49,800 --> 00:18:51,960
nicht mehr auf dem Server 
generier so auf dem Client in 

365
00:18:51,960 --> 00:18:54,040
ganz vielen klassischen 
Anwendungen die auf irgendeiner 

366
00:18:54,040 --> 00:18:58,240
Rest API basieren, schicke ich 
Informationen über ein Dokument,

367
00:18:58,240 --> 00:19:00,800
was ich neu erstellen will an 
den Server zum Beispiel und der 

368
00:19:00,800 --> 00:19:04,000
antwortet mir dann mit dem 
Dokument, vielleicht noch mit 23

369
00:19:04,000 --> 00:19:08,080
Metadaten mit so einem Timestamp
created ad und ne id, das 

370
00:19:08,080 --> 00:19:10,040
funktioniert offline nicht, 
sondern ich muss in der Lage 

371
00:19:10,040 --> 00:19:12,520
sein. 
Die id s wahrscheinlich 

372
00:19:12,520 --> 00:19:14,640
irgendwelche Guides, 
irgendwelche eindeutigen ids, 

373
00:19:14,680 --> 00:19:18,360
dass ich die lokal auf meinem 
auf meinem Device generiere, 

374
00:19:18,400 --> 00:19:21,360
damit ich sie eben schon die 
lokale Datenbank speichern und 

375
00:19:21,360 --> 00:19:24,760
dann. 
Ja, beim Synchron, beim Syncen 

376
00:19:24,760 --> 00:19:27,200
in die Cloud verwenden kann, 
damit der Server dein Akku mal 

377
00:19:27,200 --> 00:19:28,840
ist. 
Ein neues Dokument habe ich noch

378
00:19:28,840 --> 00:19:32,880
nicht gesehen, ganz wichtig sind
aber auch, dass ich neben den ID

379
00:19:32,880 --> 00:19:35,880
s für meine, ich nenn es jetzt 
Dokumente, das können aber auch 

380
00:19:35,880 --> 00:19:39,120
Zeilen einfach in einer 
relationalen Datenbank sein, so 

381
00:19:39,120 --> 00:19:42,590
ein Revisionmarker. 
Meistens einfach nur ref oder 

382
00:19:42,590 --> 00:19:44,510
Unterschied ref. 
In den meisten Tabellen 

383
00:19:44,510 --> 00:19:50,030
abgekürzt, generiere für meine 
Updates und das mache ich, damit

384
00:19:50,030 --> 00:19:53,510
mein Backend später weiß, wenn 
ich sage ich habe eine Änderung 

385
00:19:53,510 --> 00:19:57,670
an einer an einem, ich nenne es 
jetzt immer Dokumente an einem 

386
00:19:57,670 --> 00:20:01,110
Dokument gemacht, dass mein 
Backend nachher weiß an. 

387
00:20:01,880 --> 00:20:05,320
Welche Version dieses Dokuments 
sich denn meine Änderung 

388
00:20:05,320 --> 00:20:07,080
beziehen? 
Weil es kann ja sein, dass ich 

389
00:20:07,080 --> 00:20:09,880
offline war und sich im 
Hintergrund das Dokument schon 

390
00:20:09,880 --> 00:20:13,920
komplett verändert hat und in 
der Regel, was ich dann mache 

391
00:20:13,920 --> 00:20:16,600
ist, ich krieg dann vom Server 
eine Antwort, der mir irgendwie 

392
00:20:16,600 --> 00:20:20,280
Konflikt, du kannst auf die 
Revision 2 gerade kein Update 

393
00:20:20,280 --> 00:20:23,520
machen, weil die Revision 2 ist 
gar nicht mehr die aktuellste 

394
00:20:23,920 --> 00:20:27,560
und in den meisten Fällen reicht
es dann sich die aktuellste 

395
00:20:27,560 --> 00:20:30,200
Version zu holen und dann darauf
noch mal das Update zu machen. 

396
00:20:30,200 --> 00:20:32,720
Das ist aber jetzt natürlich 
sehr abhängig von der Anwendung,

397
00:20:32,840 --> 00:20:35,600
aber in der Regel löst man das 
mit dem darüber, dass man sich 

398
00:20:35,600 --> 00:20:37,680
einfach die neue Version dann 
wenn man wieder online ist vom 

399
00:20:37,680 --> 00:20:40,600
Server zieht und dann diese 
Version updatet. 

400
00:20:41,350 --> 00:20:43,950
Das heißt aber schon, und das 
merkt man ja gerade schon bei 

401
00:20:43,950 --> 00:20:46,950
diesem Update, dass wir uns 
lösen müssen bei Offline First 

402
00:20:46,950 --> 00:20:50,310
von dem Gedanken, dass wir 
einfach Dokumente Datenbank 

403
00:20:50,310 --> 00:20:54,920
teilen, was auch immer einfach. 
Komplett replacen, sondern was 

404
00:20:54,920 --> 00:21:00,440
wir eigentlich speichern müssen,
ist ja eigentlich ein Log an 

405
00:21:00,440 --> 00:21:04,240
Änderungen die gemacht wurden. 
Das heißt ich heiß nicht, wenn 

406
00:21:04,240 --> 00:21:08,520
ich jetzt den Titel dieser Folge
von folge 90 auf folge 91 

407
00:21:08,520 --> 00:21:12,680
ändere, dann mache ich kein http
put mehr und schicke da einfach 

408
00:21:12,680 --> 00:21:16,440
das komplette Dokument hin, 
sondern idealerweise schicke ich

409
00:21:16,440 --> 00:21:19,360
einfach nur irgendwo die 
Information hin, hat den Titel 

410
00:21:19,360 --> 00:21:25,920
geändert von Folge 90. 
Auf Folge 91, und das heißt, ich

411
00:21:25,920 --> 00:21:28,200
muss mir schon bei meiner 
Datenstruktur oder wie ich mit 

412
00:21:28,200 --> 00:21:32,160
meiner API auch am Ende arbeite,
Gedanken machen, dass ich nicht 

413
00:21:32,160 --> 00:21:34,480
mehr, und das ist natürlich das,
was einfacher für den Developer 

414
00:21:34,480 --> 00:21:36,800
war in der Vergangenheit, dass 
ich nicht mehr einfach nur 

415
00:21:36,800 --> 00:21:41,800
komplette Dokumente austausche, 
sondern eigentlich ja Befehle 

416
00:21:42,160 --> 00:21:45,480
sammeln und dass ich wieso ein 
wieso ein Activity log habe. 

417
00:21:46,270 --> 00:21:48,390
Den ich dann auch wieder 
abspielen kann. 

418
00:21:50,080 --> 00:21:53,200
Mein meine Architektur wird halt
dadurch wesentlich komplexer und

419
00:21:53,200 --> 00:21:57,240
ich muss mir halt über diese. 
Konfliktlösungsstrategien 

420
00:21:57,240 --> 00:21:59,960
Gedanken machen ich kann 
natürlich im einfachsten Fall 

421
00:21:59,960 --> 00:22:02,830
immer hingehen und. 
Die letzten Änderungen nehmen 

422
00:22:02,830 --> 00:22:06,230
immer das Neueste gewinnt, aber 
da habe ich natürlich dann was 

423
00:22:06,230 --> 00:22:09,150
die User Experience betrifft, 
relativ schnell irgendwelche 

424
00:22:09,750 --> 00:22:11,670
Situationen erreicht. 
Du hast gerade das Beispiel 

425
00:22:11,670 --> 00:22:14,470
genannt, Du arbeitest am Laptop,
arbeitest dann irgendwie offline

426
00:22:14,470 --> 00:22:17,430
an einem anderen Gerät, dein 
Gerät geht wieder online und 

427
00:22:17,430 --> 00:22:19,830
überschreibt alles Sachen, die 
du vorher vielleicht mit einem 

428
00:22:19,830 --> 00:22:23,230
anderen Gerät bearbeitet hast. 
Das sollte natürlich nicht sein,

429
00:22:23,230 --> 00:22:26,030
du sollst. 
Im besten Fall sollte das Ganze 

430
00:22:26,030 --> 00:22:28,190
zusammengeführt werden, die 
Änderungen werden 

431
00:22:28,190 --> 00:22:30,670
zusammengeführt, wenn sie 
konfliktfrei sind. 

432
00:22:31,720 --> 00:22:36,040
Falls sie es nicht sind, sollte 
natürlich auch der User dort die

433
00:22:36,040 --> 00:22:39,280
Möglichkeit bekommen, diese 
Konflikte halt zu lösen. 

434
00:22:39,280 --> 00:22:41,440
Ich meine, wir kennen es als 
Developer so ein bisschen auch 

435
00:22:41,440 --> 00:22:46,560
aus aus der Git Welt, wenn ich 
verteilt arbeite, offline first 

436
00:22:46,920 --> 00:22:51,400
und das dann irgendwie 
zusammenführe auf dem auf meinem

437
00:22:51,400 --> 00:22:54,360
Remote Server, dann muss ich 
mich genau mit diesen Themen 

438
00:22:54,360 --> 00:22:58,560
beschäftigen und ich glaube 
daher kann man sich da so ein 

439
00:22:58,560 --> 00:23:01,320
bisschen in diese Thematik ganz 
gut reindenken, weil ich glaube.

440
00:23:01,870 --> 00:23:05,750
Mittlerweile alle sehr vertraut 
sind damit, wie wie geht als 

441
00:23:05,750 --> 00:23:08,350
Protokoll funktioniert. 
Und da sind ja viele dieser 

442
00:23:08,350 --> 00:23:11,790
Themen adressiert, wie gehe ich 
damit um, dass sich Dateien 

443
00:23:11,790 --> 00:23:16,190
verändert haben, während ich 
offline ne Änderung gemacht habe

444
00:23:16,190 --> 00:23:19,030
und wie kann ich dann diese 
Konflikte beseitigen und 

445
00:23:19,030 --> 00:23:22,350
Änderungen zusammenführen und 
gerade diese Stichpunkte, die du

446
00:23:22,670 --> 00:23:26,750
gerade genannt hattest mit den 
verschiedenen Revisionen etc. 

447
00:23:27,110 --> 00:23:30,230
Kennt man ja aus dieser Welt, 
aber genau diese Probleme muss 

448
00:23:30,230 --> 00:23:32,790
ich dann jetzt auch in meinen 
eigenen Anwendungen lösen. 

449
00:23:33,840 --> 00:23:36,000
Ja, wir wissen doch alle, wie 
krampfhaft das auch schon 

450
00:23:36,000 --> 00:23:37,800
alleine in Word oder sowas 
gelöst ist. 

451
00:23:37,920 --> 00:23:39,960
Also da muss ich mich ja 
wirklich als developer, wie du 

452
00:23:39,960 --> 00:23:41,960
gerade gesagt hast, auch 
Gedanken machen, wie ich das 

453
00:23:41,960 --> 00:23:44,240
vielleicht auch dem User 
darstelle. 2 verschiedene 

454
00:23:44,240 --> 00:23:46,840
Versionen lege ich die 
nebeneinander oder gehe ich 

455
00:23:46,840 --> 00:23:48,360
wirklich jede einzelne Änderung 
durch? 

456
00:23:48,360 --> 00:23:51,560
Das können dich ja theoretisch, 
also genau wie bei Git, wenn 

457
00:23:51,920 --> 00:23:54,320
wenn sich nur eine Datei 
verändert hat, kann ich so ein 

458
00:23:54,320 --> 00:23:56,520
kann ich ein Rebase machen oder 
das irgendwie machen, aber wenn 

459
00:23:56,520 --> 00:24:00,200
sich beide Dateien also an der 
gleichen Datei von 2 

460
00:24:00,200 --> 00:24:02,040
verschiedenen Seiten Änderungen 
gab. 

461
00:24:02,350 --> 00:24:04,270
Dann kann ich das ja quasi nicht
mehr auflösen. 

462
00:24:04,270 --> 00:24:05,990
Wie du dort richtig sagst, ne. 
Ich kann natürlich immer sagen, 

463
00:24:05,990 --> 00:24:09,710
Last right wins oder irgendwie 
sowas, aber eigentlich muss ich 

464
00:24:09,710 --> 00:24:11,750
dann auch wenn ich jetzt nicht 
von gitrille oder von Sourcecode

465
00:24:11,750 --> 00:24:16,790
rede, variierende Revisionen. 
Oder die oder die Revision, die 

466
00:24:16,790 --> 00:24:18,750
jetzt verloren hat. 
Die muss ich trotzdem irgendwie 

467
00:24:18,750 --> 00:24:21,750
abspeichern, damit ich den User 
am Ende entscheiden lassen kann.

468
00:24:22,310 --> 00:24:24,910
Und genau wie Git muss ich aber 
eigentlich auch jetzt in meinen 

469
00:24:24,910 --> 00:24:28,710
Applikationen commit Messages 
speichern und nicht die 

470
00:24:28,710 --> 00:24:32,390
geupdateten Dokumente. 
Und da gibt es 2 sehr populäre 

471
00:24:32,390 --> 00:24:35,470
Methoden für die eine ist schon 
Jason Patch, das gibt es 

472
00:24:35,470 --> 00:24:38,590
eigentlich schon sehr lange. 
Und Jason Petsch ist eigentlich 

473
00:24:38,590 --> 00:24:41,790
n Format, was ich an klassischer
Weise, wenn ich ne rastapie 

474
00:24:41,790 --> 00:24:43,470
habe, den Patch endpunkt 
schicke. 

475
00:24:43,470 --> 00:24:45,630
Ne, es gibt ja get put pull 
delete. 

476
00:24:45,630 --> 00:24:47,870
Es gibt ja auch nen Patch 
Endpunkt und der nimmt nicht 

477
00:24:47,870 --> 00:24:51,110
immer, also muss er nicht, aber 
das ist eigentlich sehr gängig. 

478
00:24:51,750 --> 00:24:55,390
Diesen Patchdokument entgegen 
und ein Jason Patch Dokument 

479
00:24:55,390 --> 00:24:59,070
beschreibt im JSON Format, 
welche Änderungen gemacht 

480
00:24:59,070 --> 00:25:00,190
werden. 
Da kann ich zum Beispiel wenn 

481
00:25:00,190 --> 00:25:05,430
ich ein Array habe. 
Ja, ich hab n Dokument und. 

482
00:25:07,120 --> 00:25:09,480
List, Equels und dann NNNT 
Array. 

483
00:25:09,480 --> 00:25:12,440
Dann ist das Patchdokument was 
ich an den Server schicke 

484
00:25:12,440 --> 00:25:15,720
eigentlich nur, dass ich auf dem
Feld. 

485
00:25:16,390 --> 00:25:21,630
Root Punkt List was im Moment ne
leere Liste, also was n leeres 

486
00:25:21,870 --> 00:25:25,990
Array ist. 
Die Operation AD machen will und

487
00:25:25,990 --> 00:25:28,550
zwar um den Wert weiß ich nicht.
Hello World. 

488
00:25:28,990 --> 00:25:32,630
Ja, das heißt, ich schicke 
wirklich an den Server fast 

489
00:25:32,630 --> 00:25:35,230
schon so Events. 
Das erinnert sehr an Event 

490
00:25:35,230 --> 00:25:39,360
Sourcing. 
Ne schon so Events hin. 

491
00:25:39,360 --> 00:25:41,880
Was sind die Änderungen sind und
die kann ich natürlich nicht nur

492
00:25:41,880 --> 00:25:44,720
sammeln, sondern ich würde auch 
sagen, wenn ich das verwende 

493
00:25:45,080 --> 00:25:46,960
bringt mir das ja wir können 
eigentlich auch meine eigene 

494
00:25:46,960 --> 00:25:48,840
Folge zu Events Sourcing machen,
das ist eigentlich super 

495
00:25:48,840 --> 00:25:51,360
spannend, dass das dem Thema so 
nah kommt, bringt mir ja sogar 

496
00:25:51,360 --> 00:25:54,560
ein Feature dazu, dass User 
theoretisch in der Zeit 

497
00:25:54,560 --> 00:25:58,280
zurückreisen können oder sich 
Änderungen nochmal auf einem 

498
00:25:58,280 --> 00:26:01,080
geupdated Dokument ja quasi dann
abspielen kann, weil ich wieso 

499
00:26:01,080 --> 00:26:05,320
ein Feed an Änderungen bekomme. 
Ich schicke wirklich an den 

500
00:26:05,320 --> 00:26:09,920
Server die Änderung die gemacht 
werden soll oder beim Offline 

501
00:26:09,920 --> 00:26:12,640
First Fall schicke ich das an 
meine lokale Datenbank. 

502
00:26:13,760 --> 00:26:15,520
Speicher mir das dafür ab, wenn 
ich mal wieder eine Server 

503
00:26:15,520 --> 00:26:18,280
connection habe und schickt das 
dann auch an den Server, damit 

504
00:26:18,280 --> 00:26:21,240
die Dokumente lokal und auf dem 
Server wieder in Sync sind. 

505
00:26:23,040 --> 00:26:25,800
Zweite Variante ist allerdings, 
dass ich nicht diese Patch 

506
00:26:25,800 --> 00:26:27,760
Dokumente schicke, sondern dass 
ich es wirklich im Code 

507
00:26:27,760 --> 00:26:30,520
ausdrücke. 
Also dass ich wieso man nennt 

508
00:26:30,520 --> 00:26:35,510
das Delta Update funktioniert. 
Baue also anstatt zu sagen weiß 

509
00:26:35,510 --> 00:26:36,910
ich nicht. 
Hab jetzt irgendwie nen like 

510
00:26:36,910 --> 00:26:39,630
Counter irgendwo und wenn ich 
draufklicke der war auf 4 

511
00:26:39,630 --> 00:26:43,190
anstatt dass ich sage Like 
Counter ist jetzt 5 oder sogar 

512
00:26:43,190 --> 00:26:46,790
das Jason ne patchdokument 
schreibe setze den Like Counter 

513
00:26:46,790 --> 00:26:49,990
auf 5 kann ich auch die Funktion
schreiben, zähle den Like 

514
00:26:49,990 --> 00:26:53,910
Counter um 1 hoch und dann kann 
ich da 3 mal drauf drücken und 

515
00:26:53,910 --> 00:26:56,150
jemand anders auf einem anderen 
auf einem anderen System was 

516
00:26:56,150 --> 00:26:58,510
auch offline war auch zweimal 
drauf drücken und wenn diese 

517
00:26:58,510 --> 00:27:01,150
Änderung aber alle an den Server
gespielt werden führt ihr 

518
00:27:01,150 --> 00:27:04,430
einfach diese Funktion fünfmal 
aus weil es 5 Events waren dann 

519
00:27:04,430 --> 00:27:06,550
komme ich auch wieder auf die 
richtige Zahl und ich habe 

520
00:27:06,550 --> 00:27:08,910
keinen Konflikt beim Updaten 
sondern ich kann diese diese 

521
00:27:08,910 --> 00:27:12,270
Änderungen konfliktfreier 
zusammenspielen, das ist 

522
00:27:12,270 --> 00:27:14,430
natürlich sehr abhängig davon 
was man für eine Applikation 

523
00:27:14,430 --> 00:27:17,710
baut, aber beide sowohl die JSON
Patch als auch diese Delta 

524
00:27:17,710 --> 00:27:20,600
Update Funktion. 
Sind eigentlich gerade sehr 

525
00:27:20,600 --> 00:27:22,760
relevant, wenn man offline First
Anwendungen baut. 

526
00:27:24,480 --> 00:27:27,000
Euch geht es ja beim Thema 
Offline First um irgendwelche 

527
00:27:27,280 --> 00:27:30,360
Daten, die offline erstellt 
werden. 

528
00:27:30,360 --> 00:27:33,040
Von den Usern verwaltet werden 
und. 

529
00:27:33,190 --> 00:27:35,950
Solange das irgendwelche Daten 
sind, die sich. 

530
00:27:37,600 --> 00:27:38,520
In Textform. 
Irgendwie. 

531
00:27:40,200 --> 00:27:43,040
Gut ablegen lassen und auch dort
die Änderungen sehr gut 

532
00:27:43,040 --> 00:27:45,680
dokumentieren lassen. 
Ich denke jetzt so ein bisschen 

533
00:27:45,680 --> 00:27:49,680
an meine Git Committee history 
wo ich sehen kann okay wie sind 

534
00:27:49,680 --> 00:27:53,680
die einzelnen Revisionen dann 
auf meinem Dokument wird das 

535
00:27:53,680 --> 00:27:57,240
natürlich schwieriger, wenn ich 
mit Binärdateien arbeite. 

536
00:27:57,240 --> 00:27:58,960
Du hast genau diese Situation 
beschrieben. 

537
00:28:00,680 --> 00:28:04,320
Packe ein Bild da rein und diese
Grenzen sieht man ja auch im Git

538
00:28:04,320 --> 00:28:06,880
Protokoll. 
Wenn ich jetzt anfange in meinem

539
00:28:06,880 --> 00:28:09,880
Repository irgendwelche Binaries
reinzulegen, dann wird mein 

540
00:28:09,880 --> 00:28:13,640
Repository sehr schnell sehr 
groß, weil ich dort halt nicht 

541
00:28:13,640 --> 00:28:16,400
die Deltas speichern kann, 
sondern immer die neuen 

542
00:28:16,400 --> 00:28:20,240
Dokumente ablegen muss, um halt 
diese Revisionen zu ermöglichen 

543
00:28:20,480 --> 00:28:23,080
und das ist natürlich etwas, 
über das man sich auch dann 

544
00:28:23,080 --> 00:28:26,480
Gedanken machen muss. 
Natürlich könnte jetzt Motion 

545
00:28:26,480 --> 00:28:28,880
hingehen und sagen okay wenn ich
dieses Dokument in diesem 

546
00:28:28,880 --> 00:28:31,960
Dokument das Bild ersetze. 
Speichere ich einfach immer 

547
00:28:31,960 --> 00:28:33,600
wieder eine Kopie dieses Bildes 
und Referenzen. 

548
00:28:34,030 --> 00:28:37,270
Das aber dann wird natürlich der
lokale Speicher immer größer und

549
00:28:37,270 --> 00:28:40,510
ich muss natürlich das 
entsprechend dort 

550
00:28:40,990 --> 00:28:43,830
berücksichtigen, wie ich mit 
solchen Fällen umgehe. 

551
00:28:43,830 --> 00:28:45,910
Und deswegen ist es ja ganz 
häufig so, dass ich diese 

552
00:28:45,910 --> 00:28:48,870
Änderungen vielleicht nicht als 
Revision wirklich. 

553
00:28:49,390 --> 00:28:51,710
Speichern kann. 
Und da dann tatsächlich davon 

554
00:28:51,710 --> 00:28:54,110
ausgehen muss, dass die letzte 
Änderung vielleicht die ist, die

555
00:28:54,110 --> 00:28:56,790
für alle übernommen werden muss 
und von daher ist es, glaube 

556
00:28:56,790 --> 00:29:00,390
ich, keine Entscheidung, wo ich 
sage, OK, ich implementiere es 

557
00:29:00,390 --> 00:29:03,110
für alle use Cases in der 
gleichen Art und Weise, sondern 

558
00:29:03,110 --> 00:29:04,710
ich muss es spezifisch 
entscheiden. 

559
00:29:05,030 --> 00:29:08,550
Was ist jetzt für eine bestimmte
Art von Daten die beste 

560
00:29:08,550 --> 00:29:11,510
Herangehensweise im Kontext 
meiner Applikation? 

561
00:29:12,390 --> 00:29:15,150
Ja, aber was ich ja immer machen
kann, ist Änderungen. 

562
00:29:15,430 --> 00:29:17,550
Also versuchen Deltas andere. 
Klar n Bild ist dann halt ne 

563
00:29:17,550 --> 00:29:19,870
große Änderung, aber die können 
dich ja theoretisch irgendwann 

564
00:29:19,870 --> 00:29:23,550
irgendwann wieder wegschmeißen 
oder zusammenfassen wenn du 5 

565
00:29:23,550 --> 00:29:26,390
mal den Like Counter geklickt 
hast und ich weiß du hast gerade

566
00:29:26,390 --> 00:29:29,270
keine Verbindung und ich kannte 
die letzten 3 oder die letzten 4

567
00:29:29,270 --> 00:29:31,030
Male wo du den Like Counter 
geklickt hast nicht an den 

568
00:29:31,030 --> 00:29:34,270
Server schicken könne ich das ja
auch bündeln in ein Malte hat 5 

569
00:29:34,270 --> 00:29:36,630
mal auf den Button geklickt und 
das quasi versucht ein bisschen 

570
00:29:36,910 --> 00:29:38,830
kleiner zu machen, auch das 
kennt man so ein bisschen vom 

571
00:29:38,830 --> 00:29:41,670
Event Sourcing gehen am Ende 
glaube ich das offline First 

572
00:29:41,670 --> 00:29:44,550
auch ganz viel auf Messages am 
Ende wieder raus läuft, das 

573
00:29:44,550 --> 00:29:46,910
heißt wir haben irgendwie einen 
lokalen Messagestream. 

574
00:29:48,000 --> 00:29:50,400
Und bei Live Anwendungen ist es 
ja auch ohnehin so, dass das 

575
00:29:50,400 --> 00:29:53,240
Backend schickt mir auch wenn 
irgendwelche Updates sind, 

576
00:29:53,240 --> 00:29:57,400
irgendwelche live messages über 
Websockets zum Beispiel oder ich

577
00:29:57,400 --> 00:30:00,120
synchronisiere 2 Anwendungen 
oder ich arbeite live mit 

578
00:30:00,120 --> 00:30:02,520
mehreren Personen einem 
Dokument, das passiert ja heute 

579
00:30:02,520 --> 00:30:05,600
schon alles über Messages, die 
in der Regel über Webstockets 

580
00:30:05,600 --> 00:30:08,960
geschickt werden und ich könnte 
dieses Message Konzept auch 

581
00:30:08,960 --> 00:30:12,720
einfach weiterhin lokal 
ausführen, so dass Änderungen 

582
00:30:12,720 --> 00:30:15,000
auf Dokumente über Messages 
passieren, die dann abgespielt 

583
00:30:15,000 --> 00:30:17,440
werden können und ich schicke 
die entweder sofort an den 

584
00:30:17,440 --> 00:30:19,510
Server. 
Wenn ich ne Verbindung habe oder

585
00:30:19,510 --> 00:30:22,670
Staue die auf genauso wie der 
Server natürlich auch Messages 

586
00:30:22,670 --> 00:30:26,990
die an mich kommen sammelt bis 
ich wieder online bin ne wenn du

587
00:30:26,990 --> 00:30:29,750
gleichzeitig im Dokument 5 
Änderungen gemacht hast kann 

588
00:30:29,750 --> 00:30:31,190
können die auch aufgestaut 
werden. 

589
00:30:31,190 --> 00:30:34,150
Ich fahr aus dem Tunnel raus, 
bin wieder online und dann kann 

590
00:30:34,150 --> 00:30:37,070
er diese ganzen Messages zu mir 
schicken und die Spielen die 

591
00:30:37,070 --> 00:30:42,750
einfach in genau der Reihenfolge
ab auf meinen lokalen Daten und 

592
00:30:42,750 --> 00:30:46,630
hab dann ja auch quasi wieder 
den gleichen Lifestand oder noch

593
00:30:46,630 --> 00:30:48,630
cleverer vielleicht auch eher 
Schritt 2. 

594
00:30:48,710 --> 00:30:51,030
Ich spiel ich muss die Daten 
nicht 11 abspielen sondern der 

595
00:30:51,030 --> 00:30:53,910
Server war clever genug mir 
quasi so ein Snapshot nennt man 

596
00:30:53,910 --> 00:30:56,190
das in der Eventsourcing Welt 
zuschicken sagen Pass auf, da 

597
00:30:56,190 --> 00:30:59,470
musst du nicht 1 zu 1 abspielen 
hier du musst dich 5 mal den 

598
00:30:59,710 --> 00:31:02,310
Button den like Counter um 1 
erhöhen, du kannst ihn auch um 5

599
00:31:02,310 --> 00:31:05,750
erhöhen, das ist natürlich dann 
aber noch so ein bisschen extra.

600
00:31:05,800 --> 00:31:08,000
Arbeit. 
Du hast gerade gesagt, dieses 

601
00:31:08,000 --> 00:31:11,880
Konzept von. 
Messages aufstauen, da hat man 

602
00:31:11,880 --> 00:31:15,200
dann irgendwie eine Art von Q, 
die halt befüllt wird mit allen 

603
00:31:15,200 --> 00:31:18,520
Operationen, die sich dann 
angesammelt haben und dann kommt

604
00:31:18,520 --> 00:31:22,200
man natürlich auch dort in einen
Bereich, wo man das auch im 

605
00:31:22,200 --> 00:31:25,230
Kontext. 
Ja, der Fachlichkeit der 

606
00:31:25,230 --> 00:31:27,510
Anwendung betrachten muss. 
Wo ist es sinnvoll, wo nicht? 

607
00:31:27,510 --> 00:31:30,550
Du hat es gerade dieses Beispiel
dann dann drücke ich auf den 

608
00:31:30,550 --> 00:31:33,430
Like Button, wird das dann 
nachher abgespielt oder nicht? 

609
00:31:33,430 --> 00:31:36,310
Weil tatsächlich könnte es 
natürlich so sein, ich als user 

610
00:31:36,310 --> 00:31:39,110
Druck auf den Like Button hab 
gerade keine online Verbindung 

611
00:31:39,110 --> 00:31:42,550
ist passiert quasi nichts und 
drückt dann halt noch zweimal 

612
00:31:42,550 --> 00:31:45,390
drauf wie viele Likes wollte ich
dann als User letzten Endes 

613
00:31:45,390 --> 00:31:48,070
abgeben wollte ich 1 abgeben 
oder wollte ich wirklich 3 

614
00:31:48,070 --> 00:31:50,230
abgeben? 
Da muss man natürlich dann auch 

615
00:31:50,230 --> 00:31:52,790
im Kontext der Fachlichkeit der 
eigenen Anwendung. 

616
00:31:53,840 --> 00:31:56,680
Schauen okay bei welchen 
Operationen ist es sinnvoll, die

617
00:31:56,680 --> 00:32:00,160
zu sammeln und bei welchen gehe 
ich vielleicht dann doch hin und

618
00:32:00,160 --> 00:32:02,960
gebe den Usern dort das 
Feedback, dass diese 

619
00:32:02,960 --> 00:32:07,000
Informationen. 
Nur einfach durchgeführt werden 

620
00:32:07,000 --> 00:32:08,800
dürfen. 
Das hat die Magie von offline 

621
00:32:08,800 --> 00:32:10,240
first. 
Also ich kann den User direkt 

622
00:32:10,240 --> 00:32:12,120
ein Feedback geben. 
Ich kann ihm sagen, Yo ist 

623
00:32:12,120 --> 00:32:14,360
angekommen, habe ich 
gespeichert, ist lokal auch 

624
00:32:14,360 --> 00:32:16,720
schon gespeichert, das heißt der
User sieht ja direkt den 

625
00:32:16,720 --> 00:32:19,640
Countdown 1 hochfahren und das 
ist ja genau die Magie 

626
00:32:19,640 --> 00:32:21,880
eigentlich, wenn ich offline 
first mache, dass ich halt eben 

627
00:32:21,880 --> 00:32:24,160
nicht sagen, also ich will 
eigentlich im Jahr 2014. 

628
00:32:24,590 --> 00:32:26,910
Keine. 
Keine Drehrädchen mehr sehen 

629
00:32:26,910 --> 00:32:29,510
oder keine wie heißen die so so 
Loading Indicator mehr mehr wie 

630
00:32:29,510 --> 00:32:30,950
sie sehen sollen. 
Eigentlich könntest du mir 

631
00:32:30,950 --> 00:32:33,270
sagen, jo this like ist 
angekommen, sodass gar nicht die

632
00:32:33,270 --> 00:32:35,510
Situation entsteht, dass der 
User 5 mal draufklickt, weil bei

633
00:32:35,510 --> 00:32:37,270
der ersten 4 mal nichts passiert
ist. 

634
00:32:40,160 --> 00:32:42,560
Wie baue ich das jetzt? 
Wie gesagt, Wir haben so ein 

635
00:32:42,560 --> 00:32:45,400
bisschen die die Arten und 
weisen beleuchtet, es gibt aber 

636
00:32:45,400 --> 00:32:48,760
natürlich Frameworks dafür, also
wie gesagt Superbase wer das 

637
00:32:48,760 --> 00:32:52,240
benutzt, super populäres Backend
as a Service System, die haben 

638
00:32:52,240 --> 00:32:54,480
es nicht, aber das ist das Most 
requested feature. 

639
00:32:56,560 --> 00:33:01,120
Automurch ist ziemlich cool, das
stammt aus einem Research Lab 

640
00:33:01,120 --> 00:33:04,240
aus Kanada, soweit ich weiß, und
die haben noch eine relativ 

641
00:33:04,240 --> 00:33:06,320
coolen Konferenz Talk dazu 
gemacht. 

642
00:33:06,320 --> 00:33:09,400
Den verlinken wir euch auf jeden
Fall mal in den in den in den 

643
00:33:09,400 --> 00:33:12,640
Shownotes hier vom Podcast. 
Es gibt auch eine Technologie, 

644
00:33:12,640 --> 00:33:16,200
die nennt sich Power Sync, die 
sitzt zum Beispiel zwischen 2 

645
00:33:16,200 --> 00:33:18,520
Datenbanken, also da sage ich 
einfach wirklich pass auf, ich 

646
00:33:18,520 --> 00:33:21,640
lasse Power Sync im Hintergrund 
meine Datenbanken mit so ein 

647
00:33:21,640 --> 00:33:25,200
paar cleveren Regeln 
synchronisieren und rede 

648
00:33:25,200 --> 00:33:27,070
einfach. 
Quasi lokal mit der lokalen 

649
00:33:27,070 --> 00:33:28,910
Datenbank und Server mit der 
Serverdatenbank. 

650
00:33:29,990 --> 00:33:33,750
Das sind wir mal 2 Technologien 
Automurch und Power Sync, die 

651
00:33:33,790 --> 00:33:36,230
würden wir beide aber auch noch 
mal verlinken, da kann man drauf

652
00:33:36,230 --> 00:33:39,270
zugreifen. 
Da kann er noch stark auch noch 

653
00:33:39,270 --> 00:33:40,470
zugreifen. 
Die vor allem auf euch zu 

654
00:33:40,470 --> 00:33:43,440
greifen. 
Aber da kann man, das kann man 

655
00:33:43,440 --> 00:33:46,840
sich mal anschauen. 
Und wer Lust auf das Thema 

656
00:33:46,840 --> 00:33:48,840
bekommen hat, der findet auch 
die Ressourcen, die wir zur 

657
00:33:48,840 --> 00:33:51,040
Vorbereitung benutzt haben und 
diese ne wir haben es erwähnt, 

658
00:33:51,040 --> 00:33:53,920
ganz viel ganze Konferenztalks 
und es passiert gerade irgendwie

659
00:33:53,920 --> 00:33:57,280
viel in dieser developer 
Community, die verlinken wir 

660
00:33:57,280 --> 00:33:59,520
euch natürlich auch noch mal. 
Wer da Lust hat sich noch mal 

661
00:33:59,520 --> 00:34:03,000
ein bisschen über die 30 Minuten
vom Podcast hier hinaus in das 

662
00:34:03,000 --> 00:34:05,750
Thema einzulesen. 
Ja, ich glaub n ganz wichtiger 

663
00:34:05,750 --> 00:34:08,590
erster Schritt ist, sich einfach
Gedanken darüber zu machen. 

664
00:34:08,870 --> 00:34:12,429
Ist es im Kontext meiner 
Anwendung etwas, was sinnvoll 

665
00:34:12,429 --> 00:34:15,389
ist und bei ganz vielen 
Anwendungen ist es so. 

666
00:34:15,389 --> 00:34:17,830
Ich mein du hast gerade gesagt 
bei Motion ist es n Feature was 

667
00:34:18,350 --> 00:34:22,790
ganz viele Leute sich wünschen 
und ich glaube bei Anwendungen 

668
00:34:23,070 --> 00:34:27,469
die rein im Browser laufen ist 
das etwas wo vielleicht bei den 

669
00:34:27,469 --> 00:34:29,030
Usern gar nicht die Erwartung da
ist. 

670
00:34:29,030 --> 00:34:32,230
Aber sobald ich irgendwie auf 
eine Plattform mit einer App 

671
00:34:32,230 --> 00:34:35,909
gehe, da ist wirklich auch die 
Erwartungshaltung der Anwender 

672
00:34:35,909 --> 00:34:39,310
da, dass diese Anwendung 
funktioniert und nicht wirklich.

673
00:34:40,360 --> 00:34:42,159
Diesen Spinning Indicator mehr 
anzeigt, wenn gerade die 

674
00:34:42,159 --> 00:34:44,639
Internetverbindung schlecht oder
nicht da ist. 

675
00:34:44,639 --> 00:34:48,600
Weil tatsächlich kann ich ja als
Developer erkennen, ob das 

676
00:34:48,600 --> 00:34:51,120
Gerät, auf dem ich gerade laufe,
eine Internetverbindung hat, das

677
00:34:51,120 --> 00:34:54,880
relativ trivial, aber die 
Schwierigkeit ist häufig dann in

678
00:34:54,880 --> 00:34:58,560
den Situationen, wo die 
Internetverbindung vom Gerät 

679
00:34:58,560 --> 00:35:01,680
zwar existiert, aber ich 
trotzdem nicht mit meinem 

680
00:35:01,680 --> 00:35:04,440
Backend kommunizieren kann. 
Und wie kann ich in diesen 

681
00:35:04,440 --> 00:35:05,880
Fällen eine gute User 
Experience? 

682
00:35:06,950 --> 00:35:09,830
Darstellen, und da ist man 
natürlich, wenn man tatsächlich 

683
00:35:09,830 --> 00:35:14,750
von diesem Offline Fall als 
Default ausgeht, immer schon in 

684
00:35:14,750 --> 00:35:18,270
der besten Situation, weil da 
hat man gar nicht mehr die die 

685
00:35:18,270 --> 00:35:20,830
Frage, wo ich checken muss, bin 
ich online, bin ich offline, 

686
00:35:20,830 --> 00:35:25,150
sondern der User arbeitet und 
ich arbeite im Hintergrund dabei

687
00:35:25,150 --> 00:35:27,070
daran die Daten zu 
synchronisieren. 

688
00:35:27,550 --> 00:35:30,190
Aber genau, aber das ist doch 
eigentlich auch ein geiler 

689
00:35:30,190 --> 00:35:33,830
Schlusssatz, weil warum das 
glaube ich heute in der 

690
00:35:33,830 --> 00:35:36,190
Entwicklung so oft hinten hinten
überfällt, ist, dass man 

691
00:35:36,190 --> 00:35:38,430
eigentlich sagt, in 99% der 
Fälle haben die User doch 

692
00:35:38,430 --> 00:35:40,830
eigentlich Internet und es ist 
teuer zu implementieren, das 

693
00:35:40,830 --> 00:35:43,280
Feature und. 
Es ist bestimmt nicht das 

694
00:35:43,280 --> 00:35:46,520
Allerwichtigste, auf der 
Prioritätsliste von einem 

695
00:35:46,520 --> 00:35:48,960
Product Manager. 
Aber genau wie du gerade 

696
00:35:48,960 --> 00:35:52,240
argumentiert hast mit okay es 
ist aber die geilere User 

697
00:35:52,240 --> 00:35:57,360
Experience und wir sind wir sind
ultraschnell und wir sind 

698
00:35:57,360 --> 00:36:00,560
Resilien, das heißt, selbst wenn
unser Backend mal ein Hick hat, 

699
00:36:00,680 --> 00:36:02,680
funktioniert die App für den 
User weiter, vielleicht merkt er

700
00:36:02,680 --> 00:36:06,320
gar nicht, dass wir kurz mal 
irgendwie 5 Minuten lang offline

701
00:36:06,320 --> 00:36:10,150
waren und sowas und. 
Und sich das also Performance 

702
00:36:10,150 --> 00:36:13,670
User Experience, eigene 
Resiliency in der Regel 

703
00:36:13,670 --> 00:36:15,830
wahrscheinlich auch günstigere 
Server, weil ich ganz viele Ping

704
00:36:15,830 --> 00:36:17,590
Pong zwischen den Servern 
vielleicht gar nicht brauche. 

705
00:36:17,590 --> 00:36:19,790
Wenn ich ganz viel lokal mache 
und ich glaub, dass wir über 

706
00:36:19,790 --> 00:36:23,270
diese Seite argumentieren muss 
und das ist ne wie ich ehrlich 

707
00:36:23,270 --> 00:36:27,430
gesagt, das ist kein Feature 
ist, sondern also offline first 

708
00:36:27,430 --> 00:36:30,790
ist kein Feature, offline first 
ist ein Design patter. 

709
00:36:33,230 --> 00:36:38,790
Ich glaub, das war das perfekte 
Schlusswort für diese Folge 

710
00:36:39,150 --> 00:36:41,030
glaub ich. 
Sehr gut zusammengefasst. 

711
00:36:41,030 --> 00:36:45,790
Wie gesagt, alle Informationen 
findet ihr in den Shownotes und 

712
00:36:45,790 --> 00:36:48,310
wir hoffen ihr fandet das Thema 
auch so spannend wie wir. 

713
00:36:48,310 --> 00:36:51,750
Also ich fand es wirklich super 
interessant da nochmal 

714
00:36:51,750 --> 00:36:54,070
reinzugehen, nachdem ich mich 
vor einigen Jahren damit 

715
00:36:54,070 --> 00:36:56,510
beschäftigt hatte und ich hoffe 
euch interessieren. 

716
00:36:56,510 --> 00:36:59,880
Sich geworden. 
Ich habe mich auch gewundert bei

717
00:36:59,880 --> 00:37:02,360
meinen. 
Und ich hoffe, es war für euch 

718
00:37:02,360 --> 00:37:06,440
genauso wertvoll und lasst uns 
gerne auch wie immer eine 

719
00:37:06,440 --> 00:37:09,760
positive Bewertung da, wenn euch
diese Folge gefallen hat oder 

720
00:37:09,760 --> 00:37:13,480
wenn ihr noch nicht den Podcast 
abonniert habt, in eurer Podcast

721
00:37:13,480 --> 00:37:15,960
App bitte den Podcast 
abonnieren. 

722
00:37:15,960 --> 00:37:20,040
Damit kriegt ihr dann auch jeden
zweiten Montag automatisch die 

723
00:37:20,160 --> 00:37:23,280
neuste Folge auf euer Endgerät 
gespielt. 

724
00:37:25,070 --> 00:37:27,110
Wenn euch die Folgen unserer 
Arbeit hier gefallen hat, dann 

725
00:37:27,110 --> 00:37:28,190
freuen wir uns darüber 
wahnsinnig. 

726
00:37:28,190 --> 00:37:29,830
Wenn ihr Lust habt, uns einen 
Kaffee auszugeben. 

727
00:37:29,830 --> 00:37:33,310
Das ist quasi so bisschen unsere
Entlohnung, dafür gibt es n bei 

728
00:37:33,310 --> 00:37:36,030
mir Coffee Link, dass er uns 
immer sehr bei den heißen 

729
00:37:36,030 --> 00:37:38,110
Temperaturen ist es auch 
bestimmt mal irgendwie n 

730
00:37:38,110 --> 00:37:42,390
spaghettieis, was wir uns. 
Von dem von dem von dem 

731
00:37:42,390 --> 00:37:46,510
Kaffeetaschengeld holen, obwohl 
da die Uhrzeit, die wir heute 

732
00:37:46,510 --> 00:37:49,470
ausnehmen, da brauchen wir auf 
jeden Fall morgen früh einen 

733
00:37:49,470 --> 00:37:51,790
Kaffee deswegen, da freuen wir 
uns auch immer, oder wenn ihr 

734
00:37:51,790 --> 00:37:55,510
die passende Nerd Tasse zu eurem
Kaffee mit Toucas, Podcast 

735
00:37:55,510 --> 00:37:57,390
Branding und lustigen Sprüchen 
haben wollt. 

736
00:37:57,390 --> 00:38:00,510
Wir haben einen kleinen Mini 
Shop, auch da gibt es natürlich 

737
00:38:00,510 --> 00:38:02,670
die Links zu beidem in der 
Beschreibung. 

738
00:38:04,480 --> 00:38:07,560
Würden wir uns freuen, wenn ihr 
auch in 2 Wochen wieder mit 

739
00:38:07,560 --> 00:38:10,800
dabei seid. 
Beim to do Developer Podcast und

740
00:38:10,800 --> 00:38:12,760
bis dahin wünsche ich euch alles
Gute und. 

741
00:38:12,960 --> 00:38:15,240
Schreibt ganz viel Coach und 
habt eine gute Zeit. 

742
00:38:16,120 --> 00:38:18,160
Gute Nacht bis dahin.
