{"id":18005904,"url":"https://github.com/andre-dietrich/elmeurope-2019","last_synced_at":"2025-04-04T10:48:03.235Z","repository":{"id":86328081,"uuid":"180379581","full_name":"andre-dietrich/elmeurope-2019","owner":"andre-dietrich","description":"Talk about LiaScript at the elmeurope conference 2019","archived":false,"fork":false,"pushed_at":"2019-11-23T22:10:42.000Z","size":1420,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-30T01:52:31.697Z","etag":null,"topics":["elm","europe","liascript","liascript-course","talk"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andre-dietrich.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-04-09T14:00:50.000Z","updated_at":"2024-07-04T18:32:07.000Z","dependencies_parsed_at":"2023-10-20T17:05:05.266Z","dependency_job_id":"ea1b8109-6026-4a41-a0a3-08b220420394","html_url":"https://github.com/andre-dietrich/elmeurope-2019","commit_stats":{"total_commits":18,"total_committers":2,"mean_commits":9.0,"dds":0.05555555555555558,"last_synced_commit":"e095442ed81677cda635e37e28102ddfa9d165c8"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andre-dietrich%2Felmeurope-2019","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andre-dietrich%2Felmeurope-2019/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andre-dietrich%2Felmeurope-2019/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andre-dietrich%2Felmeurope-2019/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andre-dietrich","download_url":"https://codeload.github.com/andre-dietrich/elmeurope-2019/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247166139,"owners_count":20894652,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["elm","europe","liascript","liascript-course","talk"],"created_at":"2024-10-30T00:22:29.101Z","updated_at":"2025-04-04T10:48:03.210Z","avatar_url":"https://github.com/andre-dietrich.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\nauthor:   André Dietrich\n\nemail:    LiaScript@web.de\n\nversion:  0.0.2\n\nlanguage: en\n\nnarrator: US English Male\n\nlogo:     https://tulula.sfo2.cdn.digitaloceanspaces.com/dev/images/e04ddff04767b4041fdda21a7bc463846cffa569f659cc347fa400b466f4cd83.jpeg\n\ncomment:  Presentation on LiaScript at the [elmeurope 2019](https://2019.elmeurope.org)\n          conference in Paris.\n\n@red:     \u003cbf style= \"color: red\"\u003e@0\u003c/bf\u003e\n\nimport:   https://raw.githubusercontent.com/liaTemplates/vtk/master/README.md\n          https://raw.githubusercontent.com/liaTemplates/rextester/master/README.md\n\n--\u003e\n\n# Open-courSe development with LiaScript\n\n\u003ch4\u003e (... or Markdown on steroids, featuring Elm) \u003c/h4\u003e\n\n\n| Name    | André Dietrich                    |\n| ------- | --------------------------------- |\n| Project | __ https://LiaScript.github.io __ |\n| eMail   | andre.dietrich@ovgu.de            |\n| GitHub  | https://github.com/andre-dietrich |\n| Twitter | @an_dietrich                      |\n\n\n      --{{0}}--\nHi there and welcome to my talk about LiaScript, an Open-courSe authoring tool\nfor open educational content, which is based on a some simple Markdown\nextension. When I started this project, I shortly realized that there is a huge\ngap between people that want to create educational content and those who can. It\ntakes years to become a sophisticated web-developer, but it also takes years to\nbecome fluent in veterinary ophthalmology, cuneiform writing or Slavic\nliterature. But if it comes to creating and sharing open educational content,\nthose people are mostly stuck at Word, PDFs, PowerPoint.\n\n\n      --{{1}}--\nWith LiaScript I tried to create a very simple and easy to learn and to adapt\napproach for developing online courses. There is no login no server required and\neverything happens within the browser. The entire course is hosted on GitHub and\neverything that is required is actually a link to the Markdown-document. That is\nthe second link is a bit longer than the first one.\n\n       {{1}}\n*******************************************************************************\n\nhttps://github.com/andre-dietrich/elmeurope-2019\n\n![qr-image](pics/qr.png)\n\nhttps://liascript.github.io/course/?https://raw.githubusercontent.com/andre-dietrich/elmeurope-2019/master/README.md\n\n*******************************************************************************\n\n      --{{2}}--\nBut probably it would be better if the system could introduce itself at the next\nsection.\n\n## What is LiaScript\n\u003c!--\nnarrator: US English Female\n--\u003e\n\n      --{{0}}--\nHi, my name is Lia. LiaScript is not intended to be the next Markup language. It\nis more or less a tool for creating interactive screencast-like online courses.\nWith an easy to read and write syntax.\n\n       {{0-1}}\n```\n      --{{0}}--\nHi my name is Lia. LiaScript is not intended\nto be the next Markup  language.  It is more\nor  less  a  tool  for  creating interactive\nscreencast-like online courses. With an easy\nto read and write syntax.\n```\n\n      --{{1}}--\nYou can use for example the double braces notation as bullet-points, to indicate\nwhen something should appear or disappear.\n\n       {{1-2}}\n```\n      --{{1}}--\nYou can use for example the double braces\nnotation as bullet-points, to indicate when\nsomething should appear or disappear.\n\n       {{2-3}}\n              Example of an ASCII-Art diagram\n    1.9 |\n        |                 ***\n      y |               *     *\n      - | r r r r r r r*r r r r*r r r r r r r\n      a |             *         *\n      x |            *           *\n      i | B B B B B * B B B B B B * B B B B B\n      s |         *                 *\n        | *  * *                       * *  *\n     -1 +------------------------------------\n        0              x-axis               1\n```\n\n\n       {{2-3}}\n              Example of an ASCII-Art diagram\n    1.9 |\n        |                 ***\n      y |               *     *\n      - | r r r r r r r*r r r r*r r r r r r r\n      a |             *         *\n      x |            *           *\n      i | B B B B B * B B B B B B * B B B B B\n      s |         *                 *\n        | *  * *                       * *  *\n     -1 +------------------------------------\n        0              x-axis               1\n\n\n      --{{3}}--\nYou can apply this technique on any kind of Markdown block, but inlining is also\npossible.\n\n```\n      --{{3}}--\nYou  can apply  this technique on  any kind of\nMarkdown block, but inlining is also possible.\n\n        {{3}}\n| This   | table                    | will  |\n| :----- | :----------------------- | :---- |\n| appear | at the {4}{__watch me__} | end   |\n```\n\n        {{3}}\n| This   | table                    | will  |\n| :----- | :----------------------- | :---- |\n| appear | at the {4}{__watch me__} | end   |\n\n\n      --{{5 French Female}}--\nAnd by using double dashes, you can mark a paragraph as a comment that should be\nread out loud.\n\n```\n      --{{5 French Female}}--\nAnd by using double dashes, you can mark a\nparagraph as a comment that should be read\nout loud.\n```\n\n## Prehistory\n\n      --{{0}}--\nBut let me first start, with a little prehistory and how I started to become a\nweb-developer.\n\n### SelectScript\n\n![robots in a manucactoring hall](pics/robots.png)\u003c!--width=\"100%\"--\u003e\n\n      --{{0}}--\nOriginally I was a robotics and embedded systems developer, who become obsessed\nwith programming paradigms and how people try to solve problems or think\ndifferently in different  languages. I even tried to develop my own programming\nlanguage that contained everything I liked in other programming languages or\nstuff that I missed. But my problem though was, that I could not convince anyone\nin the robotics community.\n\n\u003e ... a declarative dynamic typed language for simulations and IoT, with\n\u003e _ternary logic_, _SQL \u0026 spatial-temporal reasoning_, _prototypes_,\n\u003e _temporal variables_, etc...\n\u003e\n\u003e __GitHub:__ https://github.com/andre-dietrich/SelectScriptC\n\u003e\n\u003e __Publications:__\n\u003e\n\u003e * Reasoning in complex environments with the _SelectScript_ declarative language\n\u003e   * URL: https://arxiv.org/abs/1508.04159\n\u003e   * YouTube: https://youtu.be/EFRV0JSdK3M\n\u003e\n\u003e * _SelectScript_: A query language for robotic world models and simulations\n\u003e   * URL: https://ieeexplore.ieee.org/abstract/document/7140077\n\u003e   * YouTube: https://youtu.be/R_PThP0gwOc\n\n\n### Industrial eLab Project (BMBF)\n\n      --{{0}}--\nSo when I thought my university carrier was over, a friend of mine approached to\nme and asked me if I would like to join a project, called “Industrial eLab”. It\nwas about teaching student embedded systems programming remotely on real Arduino\nrobots remotely. And I was like, PHP — so we meet again old friend.\n\n       {{0-1}}\n![php logo](pics/php.svg)\u003c!--\nstyle=\"width: 70%;\n       display: block;\n       margin-left: auto;\n       margin-right: auto;\" --\u003e\n\n      --{{1}}--\nBut then after some research, I stumbled across this great projects elixir and\nphoenix, which is incredible. Event with only little web-development experience\nI could develop a system with user Management, an online editor and remote\ncompiler for Arduino.\n\n       {{1-2}}\n![elixir logo](pics/elixir.png)\u003c!--\nstyle=\"width: 70%;\n       display: block;\n       margin-left: auto;\n       margin-right: auto;\" --\u003e\n\n      --{{2}}--\nBut, every time that I tried to experiment a little with the system or integrate\na new feature, the system crashed. And mostly not because of Elixir, but because\nof JavaScript. The more the system grew, the more intimidating it was to update\nsomething.\n\n        {{2}}\n![editing](pics/editing.gif)\u003c!--\nstyle=\"width: 70%;\n       display: block;\n       margin-left: auto;\n       margin-right: auto;\" --\u003e\n\n      --{{3}}--\nSo I did a little research and stumbled across this language called elm. Looks\nlike Haskell, no runtime exceptions, statically typed, etc., that was not so\ninteresting as the model-view-controller approach, with only one global state.\nThis was genius, and so I thought lets give it a try. After rebuilding the UI\nwith elm I realized that the system that I had developed so far, could also be\nused to teach programming, operating system, algorithms, IOT and other stuff,\nbut how would I develop such content and deliver it to students, via PDFs, Word,\nor develop a website for every aspect? So the next idea that came into my mind,\nwhy not using something like Markdown for creating online courses, but this time\nI will add everything that I miss in Markdown to make it more interactive.\n\n## Let's build a Markdown-interpreter with Elm\n\n{{0}} Search for Markdown parsers in Elm: _only JavaScript_\n\n      --{{0}}--\nLet's build a Markdown interpreter in elm. Search for Markdown parsers written\nin elm and extend them. Oh, there is one, but it is using JavaScript in the\nback.\n\n\n{{1}} Search for Parser libraries in Elm: ___Parser-Combinators???___\n\n      --{{1}}--\nOk, so here must be some parser libraries, that I can use. Well, it seems there\nare, but what the heck is a parser combinator?\n\n\n{{2}} AntLR and compile it to: No Elm! But JavaScript.\n\n      --{{2}}--\nI know AntLR and I know it can be used in many languages, so probably it does\nalso have an elm integration. Well, no, only JavaScript.\n\n\n{{3}} What else: _Regular Expressions_\n\n      --{{3}}--\nOkay, I do not want to develop an entire programming language, so it should be\nsufficient to use regular expression and some basic rules, right?\n\n{{4}} Go back to: __step 1__\n\n      --{{4}}--\nAfter few hours later I was wondering, what was this parser combinator thing\nagain.\n\n\n### Modularization (Elm)\n\n      --{{0}}--\nDeveloping a parser the functional style actually fits into the common elm\ndeveloping process perfectly. In most cases you start with an initial app.\n\n       {{0-1}}\n\u003c!-- style=\"width: calc(100vh);\" --\u003e\n`````````\n.\n├── App.elm\n├── Lia.elm\n└── LiaHelper.elm\n`````````\n\n      --{{1}}--\nAnd the more your application grows, the more you start to separate parts into\nmodules with a model, view, update, and some helper functions, but the same can\nbe done for the parser too.\n\n\n       {{1-2}}\n\u003c!-- style=\"width: calc(100vh * 0.8)\" --\u003e\n`````````\n.\n├── App.elm\n└── Lia\n    ├── Model.elm\n    ├── Parser.elm\n    ├── Types.elm\n    ├── Update.elm\n    └── View.elm\n`````````\n\n      --{{2}}--\nAt the end, a parser is also a composition of many parsers, such as your view\nis. And every parser is only responsible for a very tiny part, such as the quiz\nand survey parser only have to perform one single task.\n\n        {{2}}\n\u003c!-- style=\"width: calc(100vh * 0.5)\" --\u003e\n`````````\n.\n├── App.elm\n├── Lia\n│   ├── ...\n│   ├── Markdown\n│   │   ├── ...\n│   │   ├── Quiz\n│   │   │   ├── Json.elm\n│   │   │   ├── Model.elm\n│   │   │   ├── Parser.elm\n│   │   │   ├── Types.elm\n│   │   │   ├── Update.elm\n│   │   │   └── View.elm\n│   │   ├── Survey\n│   │   │   ├── Json.elm\n│   │   │   ├── Model.elm\n│   │   │   ├── Parser.elm\n│   │   │   └── ..\n│   │   └── ...\n│   └── ...\n└── ...\n`````````\n\n## LiaScript vs. LMS\n\n      --{{0}}--\nFor the next part, I also did a little research and tried to analyze how\ndifficult it is to create online courses with common Learning Management\nSystems, so called LMS. I therefor watched a couple of instructional YouTube\nvideos and counted clicks, the time for a task, how often the page had to be\nchanged and also what instructors said, whether it is quite easy or complicated.\nThe data and links can be found at the following link.\n\n       {{0-1}}\n\u003e _From Hero to Zero with Learning Management Systems._\n\u003e\n\u003e https://osf.io/3rweg/\n\n{{1}} **Multimedia**\n\n      --{{1}}--\nOn average, it takes 3 minutes to integrate something like video with too many\nclicks and page changes. In most cases users also had to deal with the embed\ncode and thus leave their standard editor and switch to coding.\n\n        {{1}}\n| System | time-on-task | # of clicks | # of pages | satisfaction |\n|--------|-------------:|------------:|-----------:|-------------:|\n| Canvas |        02:56 |        10.4 |        5.1 |         0.83 |\n| Edmodo |        02:33 |         9.1 |        2.9 |         0.00 |\n| ILIAS  |        02:59 |        11.2 |        5.3 |         0.00 |\n| Moodle |        03:51 |        13.9 |        7.3 |         0.27 |\n\n\n{{2}} **Quizzes**\n\n      --{{2}}--\nQuizzes are even more complicated, even for the instructors, one woman even said\n“what the f” during a recording, since her settings got lost a couple of times.\n\n        {{2}}\n| System | time-on-task | # of clicks | # of pages | satisfaction |\n|--------|-------------:|------------:|-----------:|-------------:|\n| Canvas |        08:34 |        51.2 |       15.6 |         0.38 |\n| Edmodo |        05:59 |        24.9 |        8.2 |        -0.10 |\n| ILIAS  |        04:04 |        19.3 |        7.7 |         0.10 |\n| Moodle |        08:33 |        47.5 |        9.9 |        -0.92 |\n\n      --{{3}}--\nThus, the next part is intended to show, how easy these tasks can be solved with\na simple extension to Markdown.\n\n### __Task:__ Integrating Multimedia Content\n\n      --{{0}}--\nIf you know Markdown, then the first three types of links should be familiar to\nyou. A simple link, you can give it a name, if you put it into parentheses and\nadd some content in brackets at the beginning. And if you want to define an\nimage, you have to mark it with an exclamation mark in front of it. But that is\nwhere Markdown ends.\n\n``` md\nhttps://www.youtube.com/watch?v=8pTEmbeENF4\n\n [a link](https://www.youtube.com/watch?v=8pTEmbeENF4)\n\n ![image](https://upload.wikimedia.org/wikipedia/commons/thumb/3/31/VisualEditor_-_Icon_-_Book.svg/240px-VisualEditor_-_Icon_-_Book.svg.png)\n\n ?[sound](https://soundcloud.com/roddyricch/start-wit-me-feat-gunna)\n\n!?[video](https://www.youtube.com/watch?v=8pTEmbeENF4)\n\n```\n\n      --{{1}}--\nIn LiaScript you can add a question mark in front of it, to indicate a sound\nfile. With a bit of imagination this might resemble and ear. But next to\nordinary files, this works for example also for SoundCloud.\n\n        {{1}}\n?[sound](https://soundcloud.com/roddyricch/start-wit-me-feat-gunna)\n\n      --{{2}}--\nAnd if you have an image with sound, then this can be interpreted as a video.\nAnd the best thing about this is, if you are reading this document with a\nMarkdown reader of your choice, than these links are still valid Markdown links.\n\n        {{2}}\n!?[video](https://www.youtube.com/watch?v=8pTEmbeENF4)\u003c!--\nwidth=\"600\" height=\"400\"\n--\u003e\n\n### __Task:__ Adding Quizzes\n\n[( )] This is wrong.\n[(X)] The only correct option.\n[( )] Still not right.\n\n\n[[ ]] Add as many elements as you want?\n[[X]] The X marks the correct answer!\n[[ ]] ... this is wrong ...\n[[X]] ... this has to be selected too ...\n[[?]] hint1\n[[?]] __ hint 2__\n*********************************\n\nsolution\n\n$$\n   \\sum_{i=1}^\\infty\\frac{1}{n^2}\n        =\\frac{\\pi^2}{6}\n$$\n\n********************************\n\n\n\n\n\n## Lazy Parsing \u0026 Refactoring\n\n        {{0}}\n\u003c!-- style=\"width: 80%\" --\u003e\n`````````\n   Document: String                         Model\n ╔══════════════════════╗                 +---------------------+\n ║ # main title         ║                 | title: List String  |\n ║                      ║                 +---------------------+\n ║ ## sub-title         ║                 | body: List Markdown |\n ║                      ║  (JiT compile)  +---------------------+\n ║ ``` python           ║ --------------\u003e | code: Array Code    |\n ║ print(\"Hello World\") ║                 +---------------------+\n ║ ```                  ║                 | quiz: Array Quiz    |\n ║                      ║                 +---------------------+\n ║ ...                  ║                 | ...                 |\n ╚══════════════════════╝                 +---------------------+\n`````````\n        {{1}}\n\u003c!-- style=\"width: 80%;\" --\u003e\n`````````\n           |\n    (Preprocessing)\n           |\n           v\n\n   Model: Array Slides\n +--------------------+--------------------+--------------------\n | title: main title  | title: sub-title   | title: ...\n | code:  String      | code:  String      | ...\n +--------------------+--------------------+--------------------\n`````````\n        {{2}}\n\u003c!-- style=\"width: 80%\" --\u003e\n`````````\n           |                                          |\n     (JiT compile)                              (JiT compile)\n           |                                          |\n           v                                          v\n +--------------------+                     - - - - - - - - - - -\n | body: Markdown     |\n +--------------------+\n | code: Vector Code  |\n +--------------------+\n | quiz: Vector Quiz  |\n +--------------------+\n | ...                |\n`````````\n\n## Hello World\n\n```javascript\nvar s = \"Hello World\";\nalert(s);\ns + 22;\n```\n\u003cscript\u003e@input\u003c/script\u003e\n\n\n\n### Projects\n\n``` js     -EvalScript.js\nlet who = data.first_name + \" \" + data.last_name;\n\nif(data.online) {\n  who + \" is online\"; }\nelse {\n  who + \" is NOT online\"; }\n```\n``` json    +Data.json\n{\n  \"first_name\" :  \"Sammy\",\n  \"last_name\"  :  \"Shark\",\n  \"online\"     :  true\n}\n```\n\u003cscript\u003e\n  // insert the JSON dataset into the local variable data\n  let data = @input(1);\n\n  // eval the script that uses this dataset\n  eval(`@input(0)`);\n\u003c/script\u003e\n\n## Macros\n\n@red(See a List of Templates at:) https://github.com/LiaTemplates\n\n``` markdown\n\u003c!--\nauthor: ...\n\n@red:    \u003cbf style= \"color: red\"\u003e@0\u003c/bf\u003e\n\n@multiline_macro\n\u003cscript\u003e\n  ... @0 ... @1 ... @input(1)\n\u003c/script\u003e\n@end\n\nimport:   https://raw.githubusercontent.com/liaTemplates/vtk/master/README.md\n          https://raw.githubusercontent.com/liaTemplates/rextester/master/README.md\n\nattribute: _Say thank you_\n\n--\u003e\n\n# Macros\n\n@red(See a List of Templates at:) https://github.com/LiaTemplates\n\n```\n\n\n        {{1}}\n``` c Rextester.c\n#include\u003cstdio.h\u003e\n\nint main(void) {\n  printf(\"Hello World\\n\");\n  return 0;\n}\n```\n@Rextester.C\n\n\n### No Brain\n\n\u003e This might take a while until the patient data is loaded.\n\u003e\n\u003e `@VTK.load(https://data.kitware.com/api/v1/file/58e665158d777f16d095fc2e/download)`\n\n@VTK.load(https://data.kitware.com/api/v1/file/58e665158d777f16d095fc2e/download)\n\n\n## What's Next?\n\n\n       {{0-1}}\n\u003e _Infographic: Textbook Costs Skyrocket 812% in 35 Years_\n\u003e\n\u003e [[www.aeseducation.com](https://www.aeseducation.com/blog/infographic-the-skyrocketing-cost-of-textbooks-for-schools-students)]\n\u003e\n\u003e _The cost of getting a (decent) education in India is skyrocketing_\n\u003e\n\u003e [[qz.com](https://qz.com/india/445500/the-cost-of-getting-a-decent-education-in-india-is-now-staggering/)]\n\u003e\n\u003e _College Textbook Prices Increasing Faster Than Tuition And Inflation_\n\u003e\n\u003e [[huffpost.com](https://www.huffpost.com/entry/college-textbook-prices-increase_n_2409153)]\n\n\n        {{1}}\n*********************************************************************\n\n__Atom:__\n\n* liascript-preview: https://atom.io/packages/liascript-preview\n* liascript-snippets: https://atom.io/packages/liascript-snippets\n\n*********************************************************************\n\n        {{2}}\n*********************************************************************\n\n__Projects:__\n\n* http://github.com/LiaTemplates\n* http://github.com/LiaBooks\n\n*********************************************************************\n\n## Misc\n\n### Messaging (Elm)\n\n        {{0}}\n``` elm\ntype alias Event = { topic : String, section : Int , message : JE.Value }\n\nupdate : Msg -\u003e Model -\u003e ( Model, Cmd Msg, Maybe Event )\n...\n```\n\n        {{1}}\n``````````\n  [MODULES]                       ┏━━━━━━━━━━┓      ░  [MESSAGES]\n -----------                      ┃ Terminal ┃      ░ ------------                   { ... }\n                                  ┗━━━━━┳━━━━┛      ░                                 =====\n                              ┏━━━━━━━━━┛           ░                                   |\n      ┌─┬─┬─┬───        ┌─┬─┲━┻━┱───                ░                                   v\n Quiz │0│1│2│...   Code │0│1┃ 2 ┃...                ░      { top: \"term\", sec: ., msg: ... }\n      └┬┴┬┴┬┴───        └┬┴┬┺━┳━┹───                ░       ===============================\n       └ ┴ ┼ ─ ─ ─       └ ┴ ─┠ ─ ─ ─               ░                                   |\n           └ ─ ─ ─ ─ ─ ─ ─┲━━━┛                     ░                                   |\n ┌──────────┐         ┌─┲━┻━┱─┬─────                ░                                   v\n │ Settings │  Slides │0┃ 1 ┃2│ ...                 ░      { top: \"code\", sec: 2, msg: ... }\n └─────┬────┘         └┬┺━┳━┹┬┴─────                ░       ===============================\n       │               └─ ╂ ─┴ ─ ─ ─                ░                                   |\n       │            ┏━━━━━┛                         ░                                   |\n ┏━━━━━┷━━━━━━━━━━━━┻━━━━━━━┓                       ░                                   v\n ┃         LiaScript        ┃                       ░     { top: \"slide\", sec: 1, msg: ... }\n ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛                       ░\n         |         ^                                ░\n         v  ports  |                                ░\n``````````\n\n\n\n### Lifting a Project and Dependencies to Elm 0.19\n\n{{1}} ** Remain on Elm 0.18!!! **\n\n{{2}} Update your project first --\u003e webcomponents, ports, operators, lazy, etc.\n\n{{3}} Update the libraries --\u003e operators, lazy, etc.\n\n{{4}} Upgrade your libraries to Elm 0.19\n\n{{5}} Upgrade your project to Elm 0.19\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandre-dietrich%2Felmeurope-2019","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandre-dietrich%2Felmeurope-2019","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandre-dietrich%2Felmeurope-2019/lists"}