{"id":23949691,"url":"https://github.com/liaplayground/oeb-2023","last_synced_at":"2026-02-25T18:06:01.022Z","repository":{"id":208911281,"uuid":"722773028","full_name":"LiaPlayground/OEB-2023","owner":"LiaPlayground","description":null,"archived":false,"fork":false,"pushed_at":"2023-11-24T12:50:06.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-30T05:48:59.346Z","etag":null,"topics":["liascript","liascript-course","oeb"],"latest_commit_sha":null,"homepage":"https://LiaScript.github.io/course/?https://raw.githubusercontent.com/LiaPlayground/OEB-2023/main/README.md","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LiaPlayground.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-23T23:16:48.000Z","updated_at":"2025-02-10T09:33:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"a41ff106-632c-4185-b407-49e3d3134f44","html_url":"https://github.com/LiaPlayground/OEB-2023","commit_stats":null,"previous_names":["liaplayground/oeb-2023"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/LiaPlayground/OEB-2023","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaPlayground%2FOEB-2023","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaPlayground%2FOEB-2023/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaPlayground%2FOEB-2023/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaPlayground%2FOEB-2023/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LiaPlayground","download_url":"https://codeload.github.com/LiaPlayground/OEB-2023/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaPlayground%2FOEB-2023/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29833793,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T17:57:15.019Z","status":"ssl_error","status_checked_at":"2026-02-25T17:56:11.472Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["liascript","liascript-course","oeb"],"created_at":"2025-01-06T11:49:44.602Z","updated_at":"2026-02-25T18:06:00.999Z","avatar_url":"https://github.com/LiaPlayground.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\nauthor:  André Dietrich; Sebastian Zug\n\nmode:    Textbook\n\ncomment: Interactive LiaScript workshop at the OEB 2023 in Berlin.\n\n--\u003e\n\n[OEB23 Presentation on GitHub](https://github.com/LiaPlayground/OEB-2023)\n\n[OEB23 Presentation on LiaScript](https://liascript.github.io/course/?https://raw.githubusercontent.com/LiaPlayground/OEB-2023/main/README.md)\n\n[OEB23 Presentation in the Live Editor](https://liascript.github.io/LiveEditor/?/show/file/https://raw.githubusercontent.com/LiaPlayground/OEB-2023/main/README.md)\n\n\n# Serverless Online Education\n\n1. Introduction \u0026 Motivation\n2. LiaScript \u0026 Markdown Cookbook\n3. Progressive Web Apps\n4. Decentralized Content-Storage\n5. Peer^2^Peer in da Browser \u0026 LiaScript-Classrooms\n6. Sharing Laboratories\n\n---\n\n| Name                    |                 eMail                   |                     Twitter                           |\n| ----------------------- |:---------------------------------------:|:-----------------------------------------------------:|\n| Prof. Dr. Sebastian Zug | [sebastian.zug\\@informatik.tu-freiberg.de](mailto:sebastian.zug@informatik.tu-freiberg.de) |    |\n| Dr. André Dietrich      | [LiaScript\\@web.de](mailto:LiaScript@web.de) | [\\@an_dietrich](https://twitter.com/an_dietrich) |\n\n## 1. Introduction \u0026 Motivation\n\n\n![Nokia](https://raw.githubusercontent.com/LiaPlayground/LiaScript_Tutorial_Kigali/main/images/nokia.jpeg)\n\n\n## 2. LiaScript \u0026 Markdown\n\n\u003c!-- class=\"translate\" --\u003e\n```markdown             README.md\n# Headline\n\n_a text with **bold** and italic highlighting_\n\n* Point A\n* Point B  \n\n| A       |  Table  |\n|---------|:-------:|\n| with    |   two   |\n| rows    |   ...   |\n\nAnd another line with some simple math notation $ a= \\frac{1}{cos(b)} $!\n```\n\n    {{1}}\n\u003csection\u003e\n\n# Headline\n\n_a text with **bold** and italic highlighting_\n\n* Point A\n* Point B  \n\n| A       |  Table  |\n|---------|:-------:|\n| with    |   two   |\n| rows    |   ...   |\n\nAnd another line with some simple math notation $ a= \\frac{1}{cos(b)} $!\n\n\u003c/section\u003e\n\n    {{2}}\n\u003csection\u003e\n\n## Markdown is everywhere\n\nhttps://phind.com\n\n__Prompts:__\n\n- Generate a table of the 5 most important Learning Management Systems.\n- Generate an ASCII-art sequence diagram for cooking a soup.\n\n\u003c/section\u003e\n\n### Additional Material\n\n- # Resources:\n\n  - Project-Website: https://LiaScript.github.io\n  - Code: https://github.com/liascript\n  - YouTube: https://www.youtube.com/channel/UCyiTe2GkW_u05HSdvUblGYg\n  - Blog: https://aizac.herokuapp.com/\n\n- # Documentation:\n\n  - GitHub: https://github.com/liaScript/docs\n  - LiaScript: https://liascript.github.io/course/?https://raw.githubusercontent.com/liaScript/docs/master/README.md\n\n- # Tooling:\n\n  - Editor: https://code.visualstudio.com/Download\n  - Liascript-Preview: https://marketplace.visualstudio.com/items?itemName=LiaScript.liascript-preview\n  - Liascript-Snippets: https://marketplace.visualstudio.com/items?itemName=LiaScript.liascript-snippets\n  - Online LiveEditor: https://liascript.github.io/LiveEditor/\n  - Exporter: https://www.npmjs.com/package/@liascript/exporter\n  - Development-Server: https://www.npmjs.com/package/@liascript/devserver\n\n- # Examples:\n\n  - Courses: https://github.com/topics/liascript-course\n  - Templates: https://github.com/topics/liascript-template\n  - Tutorial:\n\n    - GitHub: https://github.com/LiaBooks/LiaScript-Tutorial\n    - LiveEdit: https://liascript.github.io/LiveEditor/?/show/file/https://raw.githubusercontent.com/LiaBooks/LiaScript-Tutorial/main/README.md\n\n### Contact via\n\n- eMail: LiaScript@web.de\n- Twitter: https://twitter.com/LiaScript\n- Chat: https://gitter.im/LiaScript/community\n\n\n### Tutorial on Alphabet-Soup\n\nA. Basics\n\nPreparation / Working time approximately 10 minutes / Cooking time approximately 25 minutes\n\nTotal time approximately 35 minutes\n\nChop or slice the onions and then sauté them in a large pot with olive oil. Douse the soup with water and start boiling while adding the peeled carrots directly to the pot. Once the water is boiling, add the broth. Chop or slice the zucchini into cubes or halves and then mix it with the noodles into the soup. Let it simmer for about 10 minutes and then add the finely chopped tomatoes and peppers. If needed, add some water. Let it simmer for another 10 minutes and season with spices, salt, and pepper.\n\nA.1 Ingredient List\n\n\n100 g \tInstant noodles (Alphabet noodles)\n2 TL, heaping \tVegetable broth powder, instant\n1 Liter \tWater, possibly more\n1 Zucchini\n2 Red bell peppers\n2 Carrots\n1 Onion\n3 Tomatoes\nOptionally\nFresh, dried or TK herbs\nSalt and pepper\nSweet paprika powder\n1 EL \tOlive oil \n\nA.2 Tables and Amounts\n\nNutritional values per serving: 160 kcal\n\n\nSubstance         Grams\nProtein          6.31 g\nFat              2.75 g\nCarbohydrates   26.48 g\n\nA.3 Correct Citing\n\nAlphabet soup is a noodle soup with alphabet noodles as an ingredient. Often, small carrot pieces and various spices are also added to the ingredient. Alphabet noodles are up to one centimeter in size and have the form of the letters A-Z and seldom also the numbers 0-9 or the @ sign. Alphabet noodles and alphabet soup have been available since at least 1867 in the United States, in Germany no later than since 1884. Alphabet noodles are usually offered in the trade as soup ingredients, alphabet soups as canned soups or as canned goods.\n\nWikipedia: https://de.wikipedia.org/wiki/Buchstabensuppe \n\n\nB. External References\n\nSource: https://www.chefkoch.de/rezepte/2166951347805623/Buchstabensuppe-mit-frischem-Gemuese.html\n\n\nB.1 Pictures\n\nhttps://upload.wikimedia.org/wikipedia/commons/0/09/Buchstabensuppe.jpg\n\nhttps://www.verbformen.de/deklination/substantive/Buchstabensuppe.png\n\nhttps://upload.wikimedia.org/wikipedia/commons/e/e9/Alphabet_soup%2C_empty.jpg\n\n\nB.2 Music for Cooking\n\nhttps://open.spotify.com/track/24fdXLWNsc6LJZrbE8wLaJ\n\nhttps://soundcloud.com/sitzhupe/barbier-von-sevillia\n\n\nB.3 Videos for Cooking\n\nhttps://www.youtube.com/watch?v=U_UW69w0uHE\n\n\nB.4 Augmented Reality and More\n\nhttps://sketchfab.com/3d-models/formschussel-fur-terra-sigillata-schalen-d4a48496f8bc4808b22277fdedba0b2b\n\nhttps://phet.colorado.edu/sims/html/states-of-matter/latest/states-of-matter_all.html\n\n\nC. Recipe Formats\n\nInteractive books, folios, presentations\n\n\nC.1 Animations \u0026 Comments\n\nToday we are going to make an alphabet soup and for that we need the following ingredients:\n\nFirst, chop the onions small to sauté them in a large pot with olive oil.\n\nhttps://openai-labs-public-images-prod.azureedge.net/user-ANzFa46RCwWLS19qYwta4rsP/generations/generation-jnFGtapIukJDG38mOKHcDx9g/image.webp\n\nThen douse the soup with water and start boiling while adding the peeled carrots directly to the pot.\n\nhttps://openai-labs-public-images-prod.azureedge.net/user-ANzFa46RCwWLS19qYwta4rsP/generations/generation-ZddGERw9EB3CEuPYGBRs5Sbn/image.webp\n\nOnce the water is boiling, add the broth.\nThe zucchini is chopped into cubes or halves and then mixed with the noodles into the soup. \nLet it simmer for about 10 minutes.\n\nhttps://openai-labs-public-images-prod.azureedge.net/user-ANzFa46RCwWLS19qYwta4rsP/generations/generation-rwRK8X0LqVixqeN1ah3ukoPv/image.webp\n\n\nFinally, add the finely chopped tomatoes and peppers.\nAdd some water if needed and let it simmer for another 10 minutes and season with spices, salt, and pepper.\nAnd then serve hot.\n\nhttps://www.youtube.com/watch?v=V6paiDYJmOo\u0026autoplay=1\u0026mute=1\n\n\nE. Programming in Cooking\n\n\nvar Guests = 4\nconst People = 4\n\nvar Ingredient = {\n   AlphabetNoodles: 100, // Grams\n   VegetableBroth: 2, // TL\n   Water: 1, // L\n   Zucchini: 1,\n   BellPeppers: 2,\n   Carrots: 2,\n   Onions: 1,\n   Tomatoes: 3,\n   Oil: 1 // EL\n}\n\nfor (const Name in Ingredient) {\n   Ingredient[Name] = (Ingredient[Name] / People) * Guests\n}\n\nJSON.stringify(Ingredient, null, 2)\n\n### ... More?\n\n``` abc\n% audio: true\n% autoplay: false\n% channel: 0\n% debug: false\n% notes: true\n% program: 60\n% responsive: true\n% tablature: [{\"instrument\": \"violin\",\"tuning\": [\"G,\", \"D\", \"A\", \"e\"]}]\n% voicesOff: false\n% chordsOff: false\n% stereo: true\nX: 1\nT: Cooley's\nM: 4/4\nL: 1/8\nK: Emin\n|:D2|\"Em\"EBBA B2 EB|~B2 AB dBAG|\"D\"FDAD BDAD|FDAD dAFD|\n\"Em\"EBBA B2 EB|B2 AB defg|\"D\"afe^c dBAF|\"Em\"DEFD E2:|\n|:gf|\"Em\"eB B2 efge|eB B2 gedB|\"D\"A2 FA DAFA|A2 FA defg|\n\"Em\"eB B2 eBgB|eB B2 defg|\"D\"afe^c dBAF|\"Em\"DEFD E2:|\n```\n@ABCJS.eval\n\n```\n\u003c!--\nimport: \n https://raw.githubusercontent.com/liaTemplates/ABCjs/main/README.md\n--\u003e\n```\n\n\u003e Explore some of the availibe extensions at:\n\u003e\n\u003e https://github.com/topics/liascript-template\n\n### Fullday-Workshop at eLearning Africa 2023\n\n!?[1](https://www.youtube.com/watch?v=U_UW69w0uHE)\n!?[1](https://www.youtube.com/watch?v=8UtlwH0o8FI)\n!?[1](https://www.youtube.com/watch?v=DLk7cKb54IQ)\n!?[1](https://www.youtube.com/watch?v=F1DY7_k6KtQ)\n\n\n## 3. Progressive Web Apps\n\n\u003e A __P__rogressive __W__eb __A__pplication (PWA), or progressive web app, is a type of application software delivered through the web, built using common web technologies including HTML, CSS, JavaScript, and WebAssembly. It is intended to work on any platform with a standards-compliant browser, including desktop and mobile devices...\n\u003e\n\u003e _Source: [Wikipedia](https://en.wikipedia.org/wiki/Progressive_web_app)_\n\n    {{1}}\n\u003csection\u003e\n__Benefits:__\n\n* Allow to store the website in the browser\n* Can be installed like a native App\n* Support for advanced caching strategies\n\u003c/section\u003e\n\n    {{2}}\n\u003cdiv style=\"width:100%;height:0;padding-bottom:67%;position:relative;\"\u003e\u003ciframe src=\"https://giphy.com/embed/xUA7b6waIz1Jdfp0Qw\" width=\"100%\" height=\"100%\" style=\"position:absolute\" frameBorder=\"0\" class=\"giphy-embed\" allowFullScreen\u003e\u003c/iframe\u003e\u003c/div\u003e\u003cp\u003e\u003ca href=\"https://giphy.com/gifs/reactionseditor-xUA7b6waIz1Jdfp0Qw\"\u003evia GIPHY\u003c/a\u003e\u003c/p\u003e\n\n## 4. Decentralized Storage\n\n\n![Alexandria](https://raw.githubusercontent.com/LiaPlayground/University-Future-Festival-2023/main/img/alexandria.jpg)\n\n### Git\n\n\u003e Git is a distributed version control system that tracks changes in any set of computer files, usually used for coordinating work among programmers. It was originally created by Linus Torvalds in 2005 for development of the Linux kernel, and has become the most popular version control system.\n\u003e\n\u003e _Source: [Wikipedia](https://en.wikipedia.org/wiki/Git)_\n\n    {{1}}\n\n![Git](https://raw.githubusercontent.com/LiaPlayground/University-Future-Festival-2023/main/img/git.png)\n\n### IPFS \u0026 IPNS\n\u003c!--\nicon: https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Ipfs-logo-1024-ice-text.png/240px-Ipfs-logo-1024-ice-text.png\n--\u003e\n\n\u003e The __I__nter__P__lanetary __F__ile __S__ystem (IPFS) is a protocol, hypermedia and file sharing peer-to-peer network for storing and sharing data in a distributed file system ...\n\u003e _supported by Opera, Brave-Browser, Agregore, and more to come_\n\u003e\n\u003e https://ipfs.tech\n\n![IPFS](https://icommunity.io/wp-content/uploads/2020/08/IPFS.jpg)\n\n### Onion-Share\n\u003c!--\nicon: https://upload.wikimedia.org/wikipedia/commons/1/15/Tor-logo-2011-flat.svg\n--\u003e\n\n!?[Onion-Share Demo](https://www.youtube.com/watch?v=y6tBVNe6mWw\u0026t=1200s)\n\nThe [Tor Network](https://en.wikipedia.org/wiki/Tor_%28network%29) is a system that allows users to anonymize their online activities and their identity by routing the data traffic through multiple servers, thereby hiding the source of the data. The network consists of thousands of voluntary servers worldwide that act as \"nodes\" and encrypt the data traffic to protect the privacy of the users.\n\n__Tor Browser: For anonymous browsing__\n\n* Download \u0026 Install: https://www.torproject.org/download/\n\n* Disable private browsing to enable IndexedDB for caching LiaScript courses:\n\n  Settings \u003e\u003e Privacy \u0026 Security \u003e\u003e History \u003e\u003e Always use private browsing mode (disable)\n\n* Enable CORS:\n\n  Settings \u003e\u003e Extensions \u0026 Themes \u003e\u003e Search for \"[CORS Unblock](https://addons.mozilla.org/en-US/firefox/addon/cors-unblock/?utm_source=addons.mozilla.org\u0026utm_medium=referral\u0026utm_content=search)\" \u003e\u003e Click on \"[CORS Unblock](https://addons.mozilla.org/en-US/firefox/addon/cors-unblock/?utm_source=addons.mozilla.org\u0026utm_medium=referral\u0026utm_content=search)\" \u003e\u003e Install (Add to Firefox)\n\n  If you have __disabled private browsing__ mode, enable \"CORS Unblock\".\n\n  Otherwise, enable the plugin first to be used in private mode:\n  Settings \u003e\u003e Extensions \u0026 Themes \u003e\u003e \"CORS Unblock\" \u003e\u003e Run in Private Windows (Allow)\n\n\n  ![Activate CORS Unblock](https://addons.mozilla.org/user-media/previews/full/213/213890.png?modified=1622134234)\n\n\n__OnionShare for anonymous hosting and sharing__\n\n* Download \u0026 Install: https://onionshare.org\n* Open and \"Connect to Tor\"\n* Share data: Start Hosting \u003e\u003e Add Files or Add Folder \u003e\u003e Start sharing\n* Send the Onion-Address and the Private-Key to your students\n* Open the Onion-Address within the Tor-Browser, enter the private key and select \"Remember this key\"\n* Open the README.md of the course and copy this URL\n* Goto https://LiaScript.github.io and paste this URL \"click on Load URL\"\n\n\n### WebTorrent\n\u003c!--\nicon: https://upload.wikimedia.org/wikipedia/en/7/79/WebTorrent_logo.png\n--\u003e\n\n\u003e WebTorrent is a peer-to-peer (P2P) streaming torrent client written in JavaScript, from the same author, Feross Aboukhadijeh, of YouTube Instant, and the team at WebTorrent and on GitHub, for use in web browsers, as well as a WebTorrent Desktop stand alone version able to bridge WebTorrent and BitTorrent serverless networks.\n\u003e\n\u003e Source: [Wikipedia](https://en.wikipedia.org/wiki/WebTorrent)\n\nTry it on: https://instant.io\n\n### Agregore Browser\n\u003c!--\nicon: https://raw.githubusercontent.com/AgregoreWeb/agregore-browser/master/build/icon.png\n--\u003e\n\n    {{1}}\n![Agregore-Browser](https://raw.githubusercontent.com/AgregoreWeb/agregore-browser/master/agregore-demo-2.gif \"Download at: https://agregore.mauve.moe\")\u003c!--style=\"width: 100%\"--\u003e\n\n\n## 5. Peer^2^Peer in da Browser\n\n    {{1-2}}\n``` ascii    __Fig:__ Classic Client \u0026 Server Applications\n    👨🏾‍💻 --.     .-- 👩‍💻\n          \\   /\n\n👩‍💻 ------  🖥️  ------ 👨🏾‍💻\n\n          /   \\\n    👨🏾‍💻 --'     '-- 👩‍💻\n```\n\n    {{2}}\n``` ascii    __Fig:__ Peer^2^Peer- or Mesh-Networks\n- - - --👨🏾‍💻-----👩‍💻\n              /  \\\n             /    \\\n    👩‍💻------+-----👨🏾‍💻- - -\n      \\    /      /\n       \\  /      /\n        👨🏾‍💻     👩‍💻- - - -\n```\n\n### LiaScript - Classroom\n\ngo to:\n\n[OEB-Classroom](https://liascript.github.io/course/?https://raw.githubusercontent.com/LiaPlayground/OEB-2023/main/Classroom.md)\n\nselect share \u003e\u003e Classroom \u003e\u003e GunDB \u003e\u003e OEB23\n\n---\n\n[qr-code](https://liascript.github.io/course/?eyJiYWNrZW5kIjoiR1VOfGZ8aHR0cHM6Ly9wZWVyLndhbGxpZS5pby9ndW4iLCJjb3Vyc2UiOiJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vTGlhUGxheWdyb3VuZC9PRUItMjAyMy9tYWluL0NsYXNzcm9vbS5tZCIsInJvb20iOiJPRUIyMyJ9#1)\n\n### WebRTC\n\n\u003e The __Web Real-Time Communication__ is a free and open-source project providing web browsers and mobile applications with real-time communication (RTC) via application programming interfaces (APIs).\n\u003e It allows audio and video communication to work inside web pages by allowing direct peer-to-peer communication, eliminating the need to install plugins or download native apps...\n\u003e\n\u003e _Source: [Wikpedia](https://en.wikipedia.org/wiki/WebRTC)_\n\n\n    {{0-1}}\n``` ascii\n                     (WebRTC)\nAlice 👩‍💻 \u003c------------------------------\u003e 👨🏾‍💻 Bob\n```\n\n    {{1}}\n``` ascii\n               (Signaling Server)\n\n       .-------------\u003e 🖥️ --------------.\n       |    \"{1}{}\"   /  A      \"{2}{}\" |\n       |             /    \\             |\n       |            /      \\            V\n                   /        \\\nAlice 👩‍💻 \u003c--------'          '--------- 👨🏾‍💻 Bob\n            \"{4}{}\"             \"{3}{}\"\n      A                                  A\n      |                                  |\n      '----------------------------------'\n      A    \"{5}{Direct Communication}\"   A\n      |                                  |\n      '-- - - - - - - - - - - - - - - - -'\n             \"{6}{InDirect via TURN}\"\n```\n\n    {{7}}\n\u003e More confusing information on WebRTC:\n\u003e\n\u003e !?[WebRTC](https://www.youtube.com/watch?v=7cbD-hFkzY0)\n\n### CRDTs\n\nA _**C**onflict-free **R**eplicated **D**ata **T**ype_ (CRDT) is a new type of data structure[^1] that can be replicated across multiple instances in a network with the following guarantees:\n\n    {{1}}\n1. A replica can be updated independently, concurrently and without coordinating with other replicas.\n2. Inconsistencies can be resolved automatically.\n3. Although replicas may have different state, they are guaranteed to eventually converge.\n\n    {{2}}\n__Task:__ Implement an distributed counter\n\n    {{3}}\n``` ascii\nAlice 👩‍💻\n\n[0]---------*--\u003e[5]--[+1 = 6]--------*--\u003e[8]-- - - - - - - - - - - - \n           /            \\           /          \\\n          A              V         A            \\\n         /                        /              \\\n[0]---[+5 = 5]-----------------[+2 = 7]-- - - - --*- - - - - - - - - -\n\nBob 👨🏾‍💻\n```\n\n    {{4}}\n__Solution:__ Use Sets and Unions instead... \n\n    {{5}}\n``` ascii\nAlice 👩‍💻\n\n{(a,0)}----------*--\u003e{(a,0),(b,5)}-\u003e{(a,1),(b,5)}---*--\u003e{(a,1),(b,7)}\n                /                         \\        /   \n               A                           V      A   \n              /                                  /\n{(b,0)}---{(b,5)}----------------------------{(b,7)}-----------------\n\nBob 👨🏾‍💻\n```\n\n    {{6}}\n\u003csection\u003e\n\n__ Implementations__\n\n- [Automerge](https://automerge.org)\n- [__Yjs__](https://docs.yjs.dev)\n\n\u003c/section\u003e\n\n\n[^1]: The CRDT concept was defined in 2011 by Marc Shapiro, Nuno Preguiça, Carlos Baquero and Marek Zawirski.\n\n      See also: https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type\n\n\n\n## 6. Sharing Laboratories\n\n\u003cdiv style=\"width:100%;height:0;padding-bottom:56%;position:relative;\"\u003e\u003ciframe src=\"https://giphy.com/embed/46zB7HJZYbZ35tLpwl\" width=\"100%\" height=\"100%\" style=\"position:absolute\" frameBorder=\"0\" class=\"giphy-embed\" allowFullScreen\u003e\u003c/iframe\u003e\u003c/div\u003e\u003cp\u003e\u003ca href=\"https://giphy.com/gifs/Fermilab-physics-particles-46zB7HJZYbZ35tLpwl\"\u003evia GIPHY\u003c/a\u003e\u003c/p\u003e\n\n### CrossLab\n\nTODO\n\n### Edrys\n\nEdrys is an open-source app that helps you teach remotely: https://edrys.org\n\n* Live classrooms with video chat, breakout rooms, and more.\n* __Allow your students to remotely control live equipment (Remote Labs)__.\n* Customize your classes by adding modules (explore Edrys Modules).\n\n\n![Edrys](https://edrys.org/docs/index/screen-settings.png)\n\n    {{1}}\n\u003csection\u003e\n\n## Edrys - Lite\n\n![Edrys](https://edrys.org/docs/index/screen-settings.png)\n\n* GitHub: https://github.com/Cross-Lab-Project/edrys-Lite\n* Web: https://cross-lab-project.github.io/edrys-Lite\n\n\u003c/section\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliaplayground%2Foeb-2023","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliaplayground%2Foeb-2023","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliaplayground%2Foeb-2023/lists"}