-
Notifications
You must be signed in to change notification settings - Fork 0
/
05_faq.Rmd
570 lines (379 loc) · 23.3 KB
/
05_faq.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
# FAQs {#faq}
## Naming {-}
### Why is the space character not allowed? {-#faq-why-no-space}
Why is the space character not allowed in file or folder names?
File paths containing spaces need to be put into quotes when being used in a
command line, such as in:
```
"C:\Programs\model software xyz\run.exe" "\\server\path with space\input.txt"
```
With all paths lacking the space character you can omit the quotes:
```
C:\Programs\model-software-xyz\run.exe \\server\path-without-space\input.txt
```
Consequent usage of paths without spaces allows for simpler programming and
leads to less errors during program execution.
### Why are special characters not allowed in file or folder names? {-#faq-why-no-german-specials}
The way in which special characters are encoded may differ from system to
system, especially between systems with different language settings.
File names containing German special characters are e.g. not shown correctly
on a French computer and vice versa.
Excluding (e.g. language-specific) special characters from the set of allowed
characters in file or folder names avoids problems when exchanging files between
partners in different countries.
We may have a problem with a file from Sofia, called
```
Example file from Canasoft жк. Хаджи Димитър, ул.Клисура_Troncons.xml
```
and they may have a problem with a file from us, called
```
abgebrochene schmuz- und regenwasserhaltungen schützenstraße nord 2. ba.xls
```
## RDM Tools {-}
A very exhaustive overview of tools used in the researcher`s workflow are
provided by `r citet(manual["Bosman_2018"])`, which are grouped according to
different research phases as shown below.
[![compliance-tools-workflow](images/compliance-tools-workflow_cropped.png)](https://101innovations.wordpress.com/workflows/)
```{block2 type = "rmdtip"}
An overview of tools used in FAKIN (including links to people at
KWB who know these) is available in the project`s knowledge repo at:
https://kwb-r.gitlab.io/fakin/#tool
```
## Writing More Robust R Code {-}
For details on making R code more robust to work on different computers
please read the following [tutorial](file:///Y:/Z-Exchange/_Tutorials/HomeDirectory.html).
<!-- Only adds more details in case of html output as
defined in "R/add_text.R" -->
`r add_text_links()`
Recommended literature:
- [Good enough practices in scientific computing](https://doi.org/10.1371/journal.pcbi.1005510) `r citep("10.1371/journal.pcbi.1005510")`
- [Ten simple rules for making research software more robust](https://doi.org/10.1371/journal.pcbi.1005412)
`r citep("10.1371/journal.pcbi.1005412")`
- R programming books (freely available online!)
+ [R for data science](http://r4ds.had.co.nz/) `r citep(manual["Grolemund_2017"])`
+ [Advanced R](http://adv-r.had.co.nz/) `r citep(manual[c("Wickham_2014","Wickham_2018")])`
+ [R packages](http://r-pkgs.had.co.nz/) `r citep(manual["Wickham_2015"])`
## Learning R on DataCamp {-}
Since June 2017 we have an account for the online learning platform
[DataCamp](https://www.datacamp.com).
This platform provides many online courses in the programming language
[R](https://cran.r-project.org/) that we use a lot at our institute.
The usage of DataCamp allows to let new students and beginners teach
themselves in programming. This helps a lot in bringing the programming
skills within our institute up to a certain level.
As the institution "KWB" we have a
[Free group account](https://www.datacamp.com/pricing) and a
[Premium group account](https://www.datacamp.com/pricing). The premium
group account comprises ten seats, i.e. ten persons can work with the online
tutorials at the same time.
**For using DataCamp at KWB the following workflow applies:**
1. Become a member in our free [R@KWB DataCamp group](https://www.datacamp.com/groups/r-kwb)
by clicking on the following [link](https://www.datacamp.com/groups/3a6e6d4a7314de1b56a33c99c457b5c7eca00f6a/invite).
In case you do not have a [DataCamp](https://datacamp.com) account yet, please
register yourself first by using your KWB email address. The membership in this
group serves two purposes: on the one hand you should start on DataCamp with
the free courses like for example [Introduction to R](https://www.datacamp.com/courses/free-introduction-to-r)
first. On the other hand this group serves us as a kind of long term memory, to
assess who and how frequently the DataCamp courses are used as the amount of users
in the free group is -- in contrast to our paid premium DataCamp group -- not
limited.
2. If you want to do a paid DataCamp course, please contact one of our
**DataCamp admins** (***see box below***)) who will add you to our corporate
premium group in case there is a free seat available. Subsequently you are able
to start any of the available premium DataCamp courses.
3. As soon as you either do not want to or you do not have the time for a longer
period do one of the paid DataCamp courses, please get in touch with one of our
**DataCamp admins** (***see box below***) again, so that he can make your seat
available for others at KWB who are interested in learning R.
```{block2 type = "rmdtip"}
**Admins for our corporate premium group on DataCamp are:**
- [Nicolas Caradot](https://www.kompetenz-wasser.de/en/ueber-uns/team-2/?search-employee-grid=nicolas%20caradot)
- [Michael Rustler](https://www.kompetenz-wasser.de/en/ueber-uns/team-2/?search-employee-grid=michael%20rustler)
- [Hauke Sonnenberg](https://www.kompetenz-wasser.de/en/ueber-uns/team-2/?search-employee-grid=hauke%20sonnenberg)
```
## Using Subversion at KWB {-}
For details on how to use Subversion at KWB please read the following [tutorial](file:///Y:/Z-Exchange/_Tutorials/using_subversion.html)
<!-- Only adds more details in case of html output as
defined in "R/add_text.R" -->
`r add_text_links()`
## Build Your Own Kwb Styled R Package {-}
For building your own R package from scratch we developed a helper R package
[kwb.pkgbuild](https://github.com/kwb-r/kwb.pkgbuild) (available on Github),
which builds a KWB styled skeleton for your future R package.
With the help of this tool Andreas Matzinger was able to convert this R scripts
on resilience within a few hours into the R package [kwb.resilience](https://kwb-r.github.io/kwb.resilience/dev/) which is now
available on Github.
For more details on turning your own code into a R package checkout the [tutorial](https://kwb-r.github.io/kwb.pkgbuild/dev/articles/tutorial.html)
at the package documentation website.
Recommended literature:
- [R packages](http://r-pkgs.had.co.nz/) `r citep(manual["Wickham_2015"])`
- [Advanced R](http://adv-r.had.co.nz/) `r citep(manual[c("Wickham_2014","Wickham2018")])`
## Install KWB R Packages {-}
Most R packages developed at KWB are not only available in the intranet but are
also available on Github. Please check the following website:
[http://kwb-r.github.io/status/](http://kwb-r.github.io/status/) or
[https://github.com/KWB-R](https://github.com/KWB-R)
Installation of these R packages can be performed with the following
command in R(studio):
```{r, eval = FALSE}
### Required to install an R package from Github
install.packages("devtools", repos = "https://cloud.r-project.org")
### Now install your desired R package (e.g. "kwb.resilience")
remotes::install_github("kwb-r/kwb.resilience")
```
```{block2, type = 'rmdtip'}
A more detailed installation tutorial of KWB R packages is available here:
https://kwb-r.github.io/kwb.pkgbuild/articles/install.html
```
## Organising Emails {-}
Here are some general tips to ensure your email remains organised in the long
term [University of Cambridge, 2018](https://www.data.cam.ac.uk/data-management-guide/organising-your-data#Refernces):
- Delete emails you do not need. Remove any trivial or old messages from your
inbox and sent items on a regular (ideally daily) basis.
- Use folders to store messages. Establish a structured file directory by
subject, activity or project.
- Separate personal emails. Set up a separate folder for these. Ideally, you
should not receive any personal emails to your work email account.
- Limit the use of attachments. Use alternative and more secure methods to
exchange data where possible (see ‘data sharing’ for options). If attachments
are used, exercise version control and save important attachments to other
places, such as a network drive.
## Managing References {-#endnote}
For managing reference there are plenty of tools available. A detailed overview
is provided by `r citep(manual["Fenner_2014"])` in the Chapter [Reference Management](http://book.openingscience.org.s3-website-eu-west-1.amazonaws.com/tools/reference_management.html)
At KWB we use [Endnote](https://www.endnote.com/), for which an internal guideline
document ([KWB-EndNote-Guideline-v3.pdf](file://Y:/R&D Templates/Charts Guidelines Checklists/Endnote/KWB-EndNote-Guideline-v3.pdf), `r add_text_links()`) was developed.
<!-- add_text_links() only adds more details in case of html output as
defined in "R/add_text.R" --
<!-- Only adds chapter firefox local files in case of html output as
defined in "R/add_text.R" -->
`r add_chapter_firefox_local_files()`
<!-- ## Working with Excel {#faq-excel} -->
<!-- ```{block2, type = 'rmdcaution'} -->
<!-- Excel often crashes in case: -->
<!-- - a formula is applied for a whole column (i.e. 1 million rows) -->
<!-- - a lot of data is processed -->
<!-- ``` -->
<!-- **Solution: data in own spreadsheet file** -->
<!-- Hauke`s "best Practices" for EXCEL (unvalidated, to be discussed!) -->
<!-- - Trennung zwischen Eingabe, Verarbeitung und Ausgabe zumindest auf -->
<!-- Tabellenblattebene, d.h. ein Tabellenblattt (oder mehrere) für Eingabe, eines -->
<!-- (oder mehrere) für Verarbeitung, eines (oder mehrere) für formatierte Ausgabe -->
<!-- und / oder Diagramme -->
<!-- - ggf. Aufteilen auf mehrere Dateien. Das hätte den Nachteil, dass nicht mehr -->
<!-- alles in einer Datei ist und nicht so leicht übergeben werden kann. In jedem -->
<!-- Fall müsste eine Namenskonvention getroffen werden, z.B.`<file_name>`_input.xlsx, -->
<!-- `<file_name>`_calc.xlsx, `<file_name>`_output.xlsx -->
<!-- - Verwenden der relativ neuen EXCEL-Features `Als Tabelle` formatieren. -->
<!-- Vorteil: Formeln können auf ganze Tabellenspalten angewendet werden; Spaltennamen -->
<!-- anstatt Zellbezüge mit (unsprechenden) Buchstaben und Zahlen. z.B. Formel für -->
<!-- Spalte `Volumen_L`: `= Durchfluss[@[Q_L_s]] * 60 * 5` -->
<!-- - Ein Tabellenblatt pro Tabelle -->
<!-- - Genau eine Headerzeile pro Tabelle mit eindeutigen Spaltennamen -->
<!-- - Ein Tabellenblatt, das die Bedeutung der Spaltennamen erläutert mit Spalten -->
<!-- `Tabellenblatt; Spalte; Bedeutung; Einheit; Formel` -->
<!-- Vorteil: Dieses Tabellenblatt sollte ausreichen, um die wesentlichen Berechnungen -->
<!-- zu verstehen. -->
<!-- Drawback: needs to be permanently kept up-to-date! -->
<!-- - Hilfsspalten mit (dadurch benannten) Zwischenberechnungen anstatt Wiederholung -->
<!-- von langen Ausdrücken in Formeln -->
<!-- ```{block2, type = 'rmdtip'} -->
<!-- A general online workshop on the topic [Data Organisation in Spreadsheets](http://www.datacarpentry.org/spreadsheet-ecology-lesson/) -->
<!-- is provided for free by the [DataCarpentry](https://datacarpentry.org) organisation. -->
<!-- ``` -->
<!-- ***copied from `10_old_german_chapters.Rmd` ***: -->
<!-- Best Practices zum Arbeiten mit Excel: -->
<!-- * z.B. Zellbezüge benennen, dadurch werden Formeln besser lesbar -->
<!-- Ihr werdet es kaum glauben, aber am Anfang meiner Zeit am KWB habe ich noch -->
<!-- mit Excel gearbeitet. Ich habe auch komplexe Sachen gemacht und auch -->
<!-- Excel-Makros programmiert. Ein Beweis findet sich in meiner persönlichen -->
<!-- Logdatei: -->
<!-- > Fr, 14.09.07 08:15-19:30 benutzerdefinierte Excelfunktionen zur Modellgüte in -->
<!-- Personl.xls, Modul1; TW-Kalibrierung Wochentag fertig -->
<!-- Ich würde heute nicht mehr empfehlen, Excel-Makros zu programmieren. Es ist -->
<!-- umständlich, es gibt keine Bibliotheken und der Quellcode lässt sich nicht -->
<!-- unabhängig von der Exceldatei verwalten, so dass keine ordentliche -->
<!-- Versionsverwaltung möglich ist. Und wir wollen nicht mehr ohne -->
<!-- Versionsverwaltung programmieren! -->
<!-- Wenn wir programmieren, dann sollten wir das einheitlich in R tun. R ist frei, -->
<!-- es gibt eine großartige Community und wir haben mittlerweile eine große -->
<!-- Expertise erlangt. -->
<!-- ## Heterogenous Software Versions on KWB Computers -->
<!-- ```{block2, type = 'rmdcaution'} -->
<!-- Unterschiedliche Softwareversionen (z.B. R) können dazu führen, dass Skripte -->
<!-- auf verschiedenen Rechnern nicht das gleiche Verhalten zeigen. -->
<!-- ``` -->
<!-- ```{block2, type = 'rmdtip'} -->
<!-- Die IT-Abteilung ist in der Lage an bestimmte Nutzergruppen die gleiche Software -->
<!-- (z.B. RStudio / R / Miktex) auszurollen. Dies sollte in Zukunft konsequent genutzt -->
<!-- werden, indem auf alle Computer an denen potentiell programmiert wird zu dieser -->
<!-- Nutzergruppe hinzugefügt werden und somit alle die gleichen Softwareversionen -->
<!-- installiert haben. -->
<!-- ``` -->
<!-- ## R Package/Version Dependency of R Scripts -->
<!-- Lösungsvorschlag: -->
<!-- Es ist eine **Mindestdokumentation** der verwendeten R Version und sämtlicher -->
<!-- R-Pakete (inklusive ihrer Versionen) zu fordern. Dazu kann in R die Funktion -->
<!-- `sessionInfo()` genutzt werden. Die Ausgabe dieser Funktion kann entweder in -->
<!-- eine Metadaten-Textdatei `session_info.txt` geschrieben werden oder im Falle -->
<!-- der Erzeugung von R-Markdown-Dokumenten direkt am Anfang der Analyse im -->
<!-- `R-Markdown` Dokument ausgegeben werden. -->
<!-- Das Schreiben der Metadaten-Datei `session_info.txt` sollte standardisert über -->
<!-- eine Funktion in einem KWB R-Paket (z.B. `kwb.utils`) implementiert werden. -->
<!-- Direktausgabe in R Console / RMarkddown: -->
<!-- ```{r} -->
<!-- sessionInfo() -->
<!-- ``` -->
<!-- Schreiben in standardisierte Metadatei: -->
<!-- ```{r eval = FALSE} -->
<!-- sink("session_info.txt") -->
<!-- sessionInfo() -->
<!-- sink() -->
<!-- ``` -->
<!-- Hierzu ist auch noch ein Tutorial zu erstellen! -->
<!-- ```{block2, type = 'rmdnote'} -->
<!-- Komplexere, technische Möglichkeiten zum Paketmanagement werden im gerade vom -->
<!-- DFG gefördertem Projekt [O2R](http://o2r.info/) in der Entwicklung befindlichen -->
<!-- [CRAN task view for computational environments and reproducibility](https://github.com/o2r-project/ctv-computational-environments) -->
<!-- genannt. -->
<!-- ``` -->
<!-- ```{block2, type = 'rmdtip'} -->
<!-- Mit dem R Paket [packrat](https://rstudio.github.io/packrat/) lässt sich das -->
<!-- Paketmanagement ggf. verbessern. -->
<!-- ``` -->
<!-- Als Beispielanwendung dient die Datenanalyse zur Feinstaubbelastung mit -->
<!-- Sensebox-Daten, die komplett reproduzierbar sind -->
<!-- (mittels der Plattform [mybinder](https://mybinder.org/)) und ohne Installation -->
<!-- von Interessierten im Webbrowser ausgeführt werden kann -->
<!-- ([siehe hier](http://o2r.info/2018/01/12/sensebox-binder/)). -->
<!-- ## Complex R Script Dependencies -->
<!-- ```{block2, type = 'rmdcaution'} -->
<!-- Dieses Problem tritt insbesondere auf, wenn mehrere verschiedene Nutzer -->
<!-- gemeinsam mit den gleichen Skripten arbeiten (wie z.B. im abgeschlossenen -->
<!-- Projekt OGRE). -->
<!-- ``` -->
<!-- ```{block2, type = 'rmdtip'} -->
<!-- Proposed solution: -->
<!-- Bewusstmachen der Skriptabhängigkeiten -->
<!-- Identifizieren von Optimierungspotentialen -> möglicherweise -->
<!-- Elimination von Abhängigkeiten -->
<!-- Workflow dokumentieren und Tutorial, am besten als R-Markdown Dokument, -->
<!-- erstellen. Das ist insbesondere wichtig, wenn Skripte häufig verwendet werden. -->
<!-- ``` -->
<!-- ## Heterogenous Coding Styles -->
<!-- ```{block2, type = 'rmdcaution'} -->
<!-- Currently there is no established coding style at KWB for in case of programming -->
<!-- e.g. R scripts -->
<!-- ``` -->
<!-- ```{block2, type = 'rmdtip'} -->
<!-- (R)Programmers at KWB will use the tidyverse coding style [http://style.tidyverse.org](http://style.tidyverse.org) -->
<!-- as default. This will help increasing both, the readability and reusability of -->
<!-- the developed (R-)scripts at KWB (currently: 1000 R scripts). -->
<!-- ``` -->
<!-- Recommended literature: -->
<!-- Clean code `r citep(manual["martin2009"])` -->
<!-- ## Collaborative Version Control -->
<!-- ```{block2, type = 'rmdcaution'} -->
<!-- Multiple people developing code together. -->
<!-- ``` -->
<!-- ```{block2, type = 'rmdtip'} -->
<!-- 1. At KWB we use Subversion (SVN) for version control (see: -->
<!-- [How to use subversion?](#using-subversion-at-kwb)) -->
<!-- 2. Speak with each other (especially if you are working on code is likely to be -->
<!-- changed be others) -->
<!-- 3. Regularly perform updates/commits with the version control software SVN -->
<!-- ``` -->
<!-- ```{block2, type = 'rmdwarning'} -->
<!-- In case the code base (e.g. R scripts) developed in 'project A' should be -->
<!-- reused/adapted in a new 'project B' (e.g. FLUSSHYGIENE) it is not allowed to -->
<!-- change the code base in the original 'project A'. Instead the code needs to be -->
<!-- copied in a folder for the new project by using Subversion`s [SVN copy](https://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-copy.html) -->
<!-- command. In case this procedure is not followed established processes in the -->
<!-- souce project will be overwritten. -->
<!-- ``` -->
<!-- ## Workflow Automation -->
<!-- **Ressources:** -->
<!-- - [Reproducible Research Automation](http://www.datacarpentry.org/rr-automation/): -->
<!-- This lesson shows how to use automation in R to improve the reproducibility of -->
<!-- research by automating tasks. -->
<!-- - useR!2017 Video: Data Carpentry: Open and Reproducible Research (Tutorial) -->
<!-- + [Part1](https://channel9.msdn.com/Events/useR-international-R-User-conferences/useR-International-R-User-2017-Conference/Data-Carpentry-Open-and-Reproducible-Research-with-R) -->
<!-- + [Part2](https://channel9.msdn.com/Events/useR-international-R-User-conferences/useR-International-R-User-2017-Conference/Data-Carpentry-Open-and-Reproducible-Research-with-R-II) -->
<!-- - Use of an R package to facilitate reproducible research, e.g.: -->
<!-- + [rprrkg](https://github.com/ropensci/rrrpkg) by -->
<!-- [rOpenSci](https://ropensci.org/) -->
<!-- + [rrtools](https://github.com/benmarwick/rrtools) by [Ben Marwick](http://faculty.washington.edu/bmarwick/) -->
<!-- Recommended literature: -->
<!-- - `r citet(manual["Kitzesetal_2018"])` -->
<!-- ## Encoding -->
<!-- ```{block2, type = 'rmdcaution'} -->
<!-- Umlaute und Sonderzeichen werden falsch angezeigt, wenn R-Skripte in -->
<!-- unterschiedlichen Encodings abgespeichert und eingelesen werden. -->
<!-- ``` -->
<!-- ```{block2, type = 'rmdtip'} -->
<!-- Vorgabe einer Default Encoding Einstellung in RStudio (z.B. UTF-8) -->
<!-- Alternativ könnten auch alle [Umlaute](http://javawiki.sowas.com/doku.php?id=java:unicode) -->
<!-- in [Unicode](https://de.wikipedia.org/wiki/Unicode) dokumentiert werden -->
<!-- (siehe folgendes Beispiel). Allerdings ist dies wohl nicht praktikabel, -->
<!-- da die Lesbarkeit der Texte erschwert wird und es sollte daher von uns der -->
<!-- erste Ansatz (Vorgabe von UTF-8 als Default Encoding) angestrebt werden. -->
<!-- ``` -->
<!-- A great blogpost for the topic (How do I write UTF-8 encoded content to a file?) -->
<!-- is provided by `r citet(manual["Ushey_2018"])`, including background information -->
<!-- on how encoding in R works. -->
<!-- In order to increase the portability of R script he recommends the following: -->
<!-- > "Portable R scripts should use unicode code points, to avoid accidental -->
<!-- mis-encoding of string literals." -->
<!-- > -->
<!-- > --- `r citep(manual["Ushey_2018"])` -->
<!-- **Encoding example in R:** -->
<!-- ```{r} -->
<!-- ### Richtiges Skript Encoding WICHTIG (richtiges Einlesen des Skripts nur wenn -->
<!-- ### mit gleichem Encoding eingelesen wie es auch abgespeichert wurde) -->
<!-- print("Ü") -->
<!-- ### Skript Encoding EGAL (da Umlaut in Unicode codiert wurde) -->
<!-- print("\u00dc") -->
<!-- ``` -->
<!-- See also Hauke's article -->
<!-- [Understanding Encoding](https://kwb-r.github.io/kwb.fakin/dev/articles/understanding_encoding.html) -->
<!-- being part of the documentation of our R package kwb.fakin that is available -->
<!-- on [GitHub](https://github.com/kwb-r/kwb.fakin). -->
<!-- ## Collaborative Writing -->
<!-- ```{block2, type = 'rmdcaution'} -->
<!-- Project proposal with many partners. How can be guaranteed that only the most -->
<!-- recently document is used and how can multiple people work at the same time in -->
<!-- that document in the "hot phase" of proposal writing? -->
<!-- ``` -->
<!-- ```{block2, type = 'rmdtip'} -->
<!-- Ulf made good experiences with [Office 365](https://en.wikipedia.org/wiki/Office_365) -->
<!-- (provided by [KWR](https://www.kwrwater.nl/) at that time). Also writing of up to -->
<!-- 10 persons in parallel were not a problem, because the currently processed -->
<!-- paragraph automatically gets blocked for others. -->
<!-- However, in case a whole chapter needs to be processed by one person this is not -->
<!-- performaed automatically. Thus it is recommended to delete the chapter for a short -->
<!-- term from the syncronised document and replace it with a placeholder like -->
<!-- 'Chapter currently in revision by XXXX. Will be put back in this document until -->
<!-- YYYY-MM-DD`. -->
<!-- ``` -->
<!-- ## Exchanging Data with Colleagues/Project Partners {#data-exchange} -->
<!-- **copied from: "10_old_german_chapters.Rmd", to be translated:** -->
<!-- Es gibt internen Datenaustausch und Austausch mit Projektpartnern. Oft werden -->
<!-- Dateien intern per E-Mail verschickt. Das sollten wir nicht tun, da wir -->
<!-- unnötig Kopien von Dateien anlegen. Dateien sollten im besten Fall nur an einem -->
<!-- Ort abgelegt sein. Dort sollten sie allerdings durch ein Backup-System gesichert -->
<!-- sein. Natürlich muss der Zugriff auf diesen Ort gewährleistet sein. Einem -->
<!-- Studenten mit eingeschränkten Rechten eine Datei per mail zuzuschicken, weil sie -->
<!-- an dem Ort, an dem sie gespeichert ist, für ihn nicht zugänglich ist, ist meines -->
<!-- Erachtens nicht die richtige Lösung. Es muss dann ein Ort geschaffen werden, -->
<!-- an dem der gemeinsame Zugriff möglich ist. Laut Bodo ist der Ordner `Exchange` -->
<!-- im Projektordner ein solcher Platz. Aus dem Grund der allgemeinen Zugänglichkeit -->
<!-- wir er auch in manchen Projekten als allgemeiner Datenablageplatz "misbraucht". -->
<!-- Es kann aber niemandem ein Vorwurf gemacht werden, da ja nirgendwo dokumentiert -->
<!-- ist, was in diesem Ort abgelegt werden soll. -->
<!-- Das können wir nun ändern: -->
<!-- Laut Bodo sind Dateien im Exchange-Ordner nur kurzfristig abzulegen, um -->
<!-- z.B. Studenten Zugriff darauf zu geben. Die Dateien sollen nach dem Gebrauch -->
<!-- wieder aus dem Ordner gelöscht werden. Demnach sollte der Ordner im Normallfall -->
<!-- leer sein. Dies ist in einigen Projekten nicht der Fall. -->
<!-- Wir brauchen eine einheitliche Definition der Bedeutungen von Ordnern. -->
<!-- This should be documented in the [metadata](#metadata). -->