From be412c98aee8eef702f428d86d4402477ed5916f Mon Sep 17 00:00:00 2001 From: Brady McDonough Date: Tue, 25 Mar 2025 19:04:43 -0600 Subject: [PATCH] The demo has been up a while, link it. --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index a28b692..403cb75 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ Yet Another Covid Statistics Web App During the Covid-19 pandemic it seems like everyone and their dog made a web app to display statistics, and I was part of everyone. I was working in a grocery store at the time and that means I saw a lot of people. Originally I reasoned about my risk using a spreadsheet, manually pulling in fresh statistics for my area every week or so; being a programmer I knew I could do better and I made this. The backend is written in Guile Scheme while the frontend is written in Elm, both languages were chosen due to my interest at the time. +There is a live demo running [here][demo] though it's data is horribly out of date, the repository which the data comes from is no longer updated and the code which polls for updates is intentionally disabled. + If you want to run this all yourself the project depends on: * [Guile][gui] * [Artanis][art] @@ -31,6 +33,7 @@ After all that parsing and data wrangling all that's left is to serve the data u Elm is a very interesting language, it's a Haskell that compiles to Javascript. It was created as a thesis project back in 2012 as a proof of concept for something the author called functional reactive programming. The "reactive" part of that recipe is everywhere in modern web programming and common terminology like "reactive props" were coined by Elm. In it's current form Elm's reactive roots are handled under the hood, its html module is clever enough to spot dependant variables and make minimal modifications to the DOM as an app's state updates. Elm is very aggressively an MVC language, the Model and Controller types are referenced everywhere and both pass through the View and Update functions. I decided to cut up the Controller type mid-way through the project according to why something was happening and it was quite easy. Thanks to the strict type system and detailed error messages any change I missed was caught by the compiler and portioning out the update function into active and passive concerns really cleaned things up. +[demo]:https://demo.bradymcd.ca [art]:https://www.gnu.org/software/artanis [gui]:https://www.gnu.org/software/guile [elm]:https://elm-lang.org