forked from HEIG-VD/template-tb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbibliography.bib
290 lines (262 loc) · 17.1 KB
/
bibliography.bib
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
@misc{amazon.comRiakDynamoAmazon2007,
title = {Riak: {{Dynamo}}: {{Amazon}}'s {{Highly Available Key-value Store}}},
author = {{Amazon.com}},
year = {2007},
url = {https://docs.riak.com/riak/kv/2.2.3/learn/dynamo/index.html}
}
@misc{AutomergeCRDTAutomerge,
title = {Automerge {{CRDT}} | {{Automerge CRDT}}},
url = {https://automerge.github.io/},
urldate = {2023-04-25},
abstract = {Automerge is a library of data structures for building collaborative applications.},
langid = {english},
file = {/Users/maxsch/Zotero/storage/HMETCTJV/automerge.org.html}
}
@misc{BinaryDocumentFormat,
title = {Binary {{Document Format}}},
url = {https://automerge.org/automerge-binary-format-spec/},
urldate = {2023-05-02},
file = {/Users/maxsch/Zotero/storage/3J7K6HF2/automerge-binary-format-spec.html}
}
@misc{ChatGPT,
title = {{{ChatGPT}}},
url = {https://chat.openai.com/},
urldate = {2023-04-25}
}
@article{ConflictfreeReplicatedData2023,
title = {Conflict-Free Replicated Data Type},
year = {2023},
month = jul,
journal = {Wikipedia},
url = {https://en.wikipedia.org/w/index.php?title=Conflict-free_replicated_data_type&oldid=1166243640},
urldate = {2023-06-27},
abstract = {In distributed computing, a conflict-free replicated data type (CRDT) is a data structure that is replicated across multiple computers in a network, with the following features: The application can update any replica independently, concurrently and without coordinating with other replicas. An algorithm (itself part of the data type) automatically resolves any inconsistencies that might occur. Although replicas may have different state at any particular point in time, they are guaranteed to eventually converge.The CRDT concept was formally defined in 2011 by Marc Shapiro, Nuno Pregui\c{c}a, Carlos Baquero and Marek Zawirski. Development was initially motivated by collaborative text editing and mobile computing. CRDTs have also been used in online chat systems, online gambling, and in the SoundCloud audio distribution platform. The NoSQL distributed databases Redis, Riak and Cosmos DB have CRDT data types.},
copyright = {Creative Commons Attribution-ShareAlike License},
langid = {english},
annotation = {Page Version ID: 1166243640}
}
@inproceedings{ellisConcurrencyControlGroupware1989,
title = {Concurrency {{Control}} in {{Groupware Systems}}},
booktitle = {Proceedings of the 1989 {{ACM SIGMOD International Conference}} on {{Management}} of {{Data}}},
author = {Ellis, C. A. and Gibbs, S. J.},
year = {1989},
series = {{{SIGMOD}} '89},
pages = {399--407},
publisher = {{Association for Computing Machinery}},
address = {{New York, NY, USA}},
doi = {10.1145/67544.66963},
url = {https://doi.org/10.1145/67544.66963},
abstract = {Groupware systems are computer-based systems that support two or more users engaged in a common task, and that provide an interface to a shared environment. These systems frequently require fine-granularity sharing of data and fast response times. This paper distinguishes real-time groupware systems from other multi-user systems and discusses their concurrency control requirements. An algorithm for concurrency control in real-time groupware systems is then presented. The advantages of this algorithm are its simplicity of use and its responsiveness: users can operate directly on the data without obtaining locks. The algorithm must know some semantics of the operations. However the algorithm's overall structure is independent of the semantic information, allowing the algorithm to be adapted to many situations. An example application of the algorithm to group text editing is given, along with a sketch of its proof of correctness in this particular case. We note that the behavior desired in many of these systems is non-serializable.},
isbn = {0-89791-317-5}
}
@misc{ExcalidrawExcalidraw2023,
title = {Excalidraw/Excalidraw},
year = {2023},
month = jul,
url = {https://github.com/excalidraw/excalidraw},
urldate = {2023-07-21},
abstract = {Virtual whiteboard for sketching hand-drawn like diagrams},
copyright = {MIT},
howpublished = {Excalidraw},
keywords = {canvas,collaboration,diagrams,drawing,productivity,whiteboard}
}
@misc{foundationApacheWave2012,
title = {Apache {{Wave}}},
author = {Foundation, The Apache Software},
year = {2012},
url = {https://incubator.apache.org/wave/}
}
@misc{hardenbergAutomerge2023,
title = {Automerge 2.0},
author = {van Hardenberg, Peter},
year = {2023},
url = {https://automerge.org/blog/automerge-2}
}
@misc{holzleUpdateGoogleWave2010,
title = {Update on {{Google Wave}}},
author = {H{\"o}lzle, Urs},
year = {2010},
url = {https://googleblog.blogspot.com/2010/08/update-on-google-wave.html}
}
@misc{incImmuDB2023,
title = {{{ImmuDB}}},
author = {Inc, Codenotary},
year = {2023},
url = {https://immudb.io/}
}
@misc{incIntroducingGoogleWave2009,
title = {Introducing {{Google Wave}}},
author = {Inc, Google},
year = {2009},
url = {https://www.youtube.com/watch?v=v_UyVmITiYQ},
annotation = {Published: Google I/O Developer Conference}
}
@misc{InstallationTailwindCSS,
title = {Installation - {{Tailwind CSS}}},
url = {https://tailwindcss.com/docs/installation},
urldate = {2023-04-28},
abstract = {The simplest and fastest way to get up and running with Tailwind CSS from scratch is with the Tailwind CLI tool.},
langid = {english},
file = {/Users/maxsch/Zotero/storage/R9JBTMAU/installation.html}
}
@inproceedings{kleppmannLocalFirstSoftwareYou2019,
title = {Local-{{First Software}}: {{You Own Your Data}}, in {{Spite}} of the {{Cloud}}},
booktitle = {Proceedings of the 2019 {{ACM SIGPLAN International Symposium}} on {{New Ideas}}, {{New Paradigms}}, and {{Reflections}} on {{Programming}} and {{Software}}},
author = {Kleppmann, Martin and Wiggins, Adam and {van Hardenberg}, Peter and McGranaghan, Mark},
year = {2019},
series = {Onward! 2019},
pages = {154--178},
publisher = {{Association for Computing Machinery}},
address = {{New York, NY, USA}},
doi = {10.1145/3359591.3359737},
url = {https://doi.org/10.1145/3359591.3359737},
abstract = {Cloud apps like Google Docs and Trello are popular because they enable real-time collaboration with colleagues, and they make it easy for us to access our work from all of our devices. However, by centralizing data storage on servers, cloud apps also take away ownership and agency from users. If a service shuts down, the software stops functioning, and data created with that software is lost. In this article we propose local-first software, a set of principles for software that enables both collaboration and ownership for users. Local-first ideals include the ability to work offline and collaborate across multiple devices, while also improving the security, privacy, long-term preservation, and user control of data. We survey existing approaches to data storage and sharing, ranging from email attachments to web apps to Firebase-backed mobile apps, and we examine the trade-offs of each. We look at Conflict-free Replicated Data Types (CRDTs): data structures that are multi-user from the ground up while also being fundamentally local and private. CRDTs have the potential to be a foundational technology for realizing local-first software. We share some of our findings from developing local-first software prototypes at the Ink \& Switch research lab over the course of several years. These experiments test the viability of CRDTs in practice, and explore the user interface challenges for this new data model. Lastly, we suggest some next steps for moving towards local-first software: for researchers, for app developers, and a startup opportunity for entrepreneurs.},
isbn = {978-1-4503-6995-4},
keywords = {collaboration software,CRDTs,data ownership,mobile computing,peer-to-peer communication}
}
@misc{MotivationPnpm,
title = {Motivation | Pnpm},
url = {https://pnpm.io/motivation},
urldate = {2023-04-28},
abstract = {Saving disk space},
langid = {english},
file = {/Users/maxsch/Zotero/storage/7WAV8U6G/motivation.html}
}
@book{nicolaescuYjsFrameworkRealTime2015,
title = {Yjs: {{A Framework}} for {{Near Real-Time P2P Shared Editing}} on {{Arbitrary Data Types}}},
author = {Nicolaescu, Petru and Jahns, Kevin and Derntl, Michael and Klamma, Ralf},
editor = {Cimiano, Philipp and Frasincar, Flavius and Houben, Geert-Jan and Schwabe, Daniel},
year = {2015},
journal = {Engineering the Web in the Big Data Era},
publisher = {{Springer International Publishing}},
address = {{Cham}},
abstract = {Near real-time shared editing of documents in the Web browser has become popular for many applications like text writing, drawing, sketching and others. These applications require protocols for exchanging messages among user agents and for resolving editing conflicts. The available frameworks mostly rely on operational transformation approaches and often expose drawbacks like failing to scale, restriction to linear data structures and client-server architectures. In this paper we present Yjs, a lightweight open-source JavaScript framework that can be used for collaborative editing of arbitrary data types in peer-to-peer settings. The framework is based on a new operational transformation-like approach and supports communication protocols like XMPP and WebRTC. From an engineering perspective Yjs is easy to integrate into Web applications. Evaluations show that it has a favorable runtime complexity.},
isbn = {978-3-319-19890-3}
}
@misc{Npm,
title = {Npm},
url = {https://www.npmjs.com/},
urldate = {2023-04-28},
langid = {english},
file = {/Users/maxsch/Zotero/storage/P6H9QMP8/www.npmjs.com.html}
}
@misc{opendsaprojectPRQuadtreeData,
title = {The {{PR Quadtree}} \textemdash{} {{Data Structures}} \& {{Algorithms}}},
author = {{OpenDSA Project}},
url = {https://opendsa-server.cs.vt.edu/ODSA/Books/CS3/html/PRquadtree.html},
urldate = {2023-07-25}
}
@article{OperationalTransformation2022,
title = {Operational Transformation},
year = {2022},
month = apr,
journal = {Wikipedia},
url = {https://en.wikipedia.org/w/index.php?title=Operational_transformation&oldid=1084900873},
urldate = {2023-07-21},
abstract = {Operational transformation (OT) is a technology for supporting a range of collaboration functionalities in advanced collaborative software systems. OT was originally invented for consistency maintenance and concurrency control in collaborative editing of plain text documents. Its capabilities have been extended and its applications expanded to include group undo, locking, conflict resolution, operation notification and compression, group-awareness, HTML/XML and tree-structured document editing, collaborative office productivity tools, application-sharing, and collaborative computer-aided media design tools. In 2009 OT was adopted as a core technique behind the collaboration features in Apache Wave and Google Docs.},
copyright = {Creative Commons Attribution-ShareAlike License},
langid = {english},
annotation = {Page Version ID: 1084900873}
}
@misc{QuickStartReact,
title = {Quick {{Start}} \textendash{} {{React}}},
url = {https://react.dev/learn},
urldate = {2023-04-28},
abstract = {The library for web and native user interfaces},
langid = {english},
file = {/Users/maxsch/Zotero/storage/YWQPLY86/learn.html}
}
@techreport{shapiroComprehensiveStudyConvergent2011,
type = {Research {{Report}}},
title = {A Comprehensive Study of {{Convergent}} and {{Commutative Replicated Data Types}}},
author = {Shapiro, Marc and Pregui{\c c}a, Nuno and Baquero, Carlos and Zawirski, Marek},
year = {2011},
month = jan,
number = {RR-7506},
pages = {50},
institution = {{Inria \textendash{} Centre Paris-Rocquencourt ; INRIA}},
url = {https://hal.inria.fr/inria-00555588},
keywords = {commutative operations,Data replication,distributed algorithms,distributed systems,eventual consistency,optimistic replication,replicated data types}
}
@misc{SignaturesFoundationsModern,
title = {Signatures: {{The}} Foundations of Modern End-to-End Encryption},
url = {https://kerkour.com/signatures-modern-end-to-end-encryption},
urldate = {2023-07-24}
}
@misc{smithShareDBRealtimeDocument2014,
title = {{{ShareDB}}: {{Real-time}} Document Collaboration with Operational Transformation},
author = {Smith, Nate and Gentle, Joseph},
year = {2014},
url = {https://github.com/share/sharedb}
}
@inproceedings{sunOperationalTransformationRealtime1998,
title = {Operational Transformation in Real-Time Group Editors: Issues, Algorithms, and Achievements},
shorttitle = {Operational Transformation in Real-Time Group Editors},
booktitle = {Proceedings of the 1998 {{ACM}} Conference on {{Computer}} Supported Cooperative Work},
author = {Sun, Chengzheng and Ellis, Clarence},
year = {1998},
month = nov,
pages = {59--68},
publisher = {{ACM}},
address = {{Seattle Washington USA}},
doi = {10.1145/289444.289469},
url = {https://dl.acm.org/doi/10.1145/289444.289469},
urldate = {2023-04-25},
isbn = {978-1-58113-009-6},
langid = {english}
}
@misc{Tldraw2023,
title = {Tldraw},
year = {2023},
month = apr,
url = {https://github.com/tldraw/tldraw},
urldate = {2023-04-25},
abstract = {A tiny little drawing app.},
copyright = {MIT},
keywords = {code,drawing,fun,sketch,svg,whiteboard}
}
@article{TopologieMesh2023,
title = {{Topologie mesh}},
year = {2023},
month = apr,
journal = {Wikip\'edia},
url = {https://fr.wikipedia.org/w/index.php?title=Topologie_mesh&oldid=203042517},
urldate = {2023-07-24},
abstract = {Le r\'eseau maill\'e (ou maillage en r\'eseau) est une topologie de r\'eseau (filaire et sans fil) o\`u tous les h\^otes sont connect\'es pair \`a pair sans hi\'erarchie centrale, formant ainsi une structure en forme de filet. Par cons\'equent, chaque n\oe ud doit recevoir, envoyer et relayer les donn\'ees. Ceci \'evite d'avoir des points n\'evralgiques qui, s'ils tombent en panne, isolent une partie du r\'eseau. Si un h\^ote est hors service, les donn\'ees empruntent une route alternative. Un r\'eseau en maille peut relayer les donn\'ees par \guillemotleft{} inondation \guillemotright{} (flood) ou en utilisant des routes (itin\'eraires) pr\'ed\'efinis ; dans le second cas, le r\'eseau doit pr\'evoir des connexions sans interruption ou pr\'evoir des d\'eviations (routes alternatives). Issue de la recherche militaire et utilis\'ee notamment par les arm\'ees am\'ericaine et fran\c{c}aise, cette architecture reproduit le mod\`ele de l'Internet tout en l'optimisant pour le sans-fil. Technologie de rupture par rapport aux solutions centralis\'ees classiques sans-fil avec station de base, la solution en mailles autorise un d\'eploiement rapide et simplifi\'e, supporte une couverture \'evolutive, assure une grande tol\'erance aux pannes et aux interf\'erences et permet une importante r\'eduction des co\^uts d'installation et d'exploitation d'un r\'eseau.},
copyright = {Creative Commons Attribution-ShareAlike License},
langid = {french},
annotation = {Page Version ID: 203042517},
file = {/Users/maxsch/Zotero/storage/3BM9L62G/Topologie_mesh.html}
}
@article{TopologieReseau2022,
title = {{Topologie de r\'eseau}},
year = {2022},
month = nov,
journal = {Wikip\'edia},
url = {https://fr.wikipedia.org/w/index.php?title=Topologie_de_r%C3%A9seau&oldid=198751841},
urldate = {2023-07-24},
abstract = {Une topologie de r\'eseau informatique correspond \`a l'architecture (physique, logicielle ou logique) de celui-ci, d\'efinissant les liaisons entre les \'equipements du r\'eseau et une hi\'erarchie \'eventuelle entre eux. Elle peut d\'efinir la fa\c{c}on dont les \'equipements sont interconnect\'es et la repr\'esentation spatiale du r\'eseau (topologie physique). Elle peut aussi d\'efinir la fa\c{c}on dont les donn\'ees transitent dans les lignes de communication (topologies logiques).},
copyright = {Creative Commons Attribution-ShareAlike License},
langid = {french},
annotation = {Page Version ID: 198751841},
file = {/Users/maxsch/Zotero/storage/3AHZBSHP/Topologie_de_réseau.html}
}
@misc{Turborepo,
title = {Turborepo},
journal = {Turbo},
url = {https://turbo.build/repo},
urldate = {2023-04-28},
abstract = {Turborepo is a high-performance build system for JavaScript and TypeScript codebases.},
langid = {english},
file = {/Users/maxsch/Zotero/storage/8PTLGXQ2/repo.html}
}
@misc{Zustand2023,
title = {Zustand},
year = {2023},
month = apr,
url = {https://github.com/pmndrs/zustand},
urldate = {2023-04-28},
abstract = {🐻 Bear necessities for state management in React},
copyright = {MIT},
howpublished = {Poimandres}
}