{"id":18555387,"url":"https://github.com/bearloga/wmf-allhands18","last_synced_at":"2026-02-10T13:32:36.195Z","repository":{"id":146996674,"uuid":"116068592","full_name":"bearloga/wmf-allhands18","owner":"bearloga","description":"Data visualization literacy workshop for Wikimedia Foundation's All Hands 2018 staff conference","archived":false,"fork":false,"pushed_at":"2018-03-01T00:19:02.000Z","size":8454,"stargazers_count":29,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-20T02:49:29.087Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://blog.wikimedia.org/2018/02/21/data-visualization-literacy-workshop/","language":"HTML","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/bearloga.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":"2018-01-02T23:36:49.000Z","updated_at":"2020-08-22T17:20:56.000Z","dependencies_parsed_at":"2023-10-20T18:20:39.978Z","dependency_job_id":null,"html_url":"https://github.com/bearloga/wmf-allhands18","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bearloga/wmf-allhands18","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bearloga%2Fwmf-allhands18","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bearloga%2Fwmf-allhands18/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bearloga%2Fwmf-allhands18/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bearloga%2Fwmf-allhands18/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bearloga","download_url":"https://codeload.github.com/bearloga/wmf-allhands18/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bearloga%2Fwmf-allhands18/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29300656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-10T12:55:56.056Z","status":"ssl_error","status_checked_at":"2026-02-10T12:55:55.692Z","response_time":65,"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":[],"created_at":"2024-11-06T21:26:24.163Z","updated_at":"2026-02-10T13:32:36.176Z","avatar_url":"https://github.com/bearloga.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Plotting the Course Through Charted Waters\n\n\u003e Heat maps, stacked area plots, mosaic plots, choropleths – oh my! There are so many different ways to visually convey relationships and patterns in data! While there are many tutorials on making them, there are very few for learning to read and understand them. In this workshop on data visualization literacy, you'll learn to recognize many popular types of charts and how to glean insights from them.\n\nTo be given at [Wikimedia Foundation's All Hands 2018](https://office.wikimedia.org/wiki/All_Hands/2018)'s [third workshop session](https://office.wikimedia.org/wiki/All_Hands/2018/Workshops) (3:15P-4:00P) in the Cypress room.\n\n## Setup\n\nThis workshop uses the [learnr](https://rstudio.github.io/learnr/) and [rmarkdown](http://rmarkdown.rstudio.com/) packages from [RStudio](https://www.rstudio.com/) to create [an interactive web application](http://dataviz-literacy.wmflabs.org/) (which should automatically send you to either [mirror 1](http://dataviz-lit-01.wmflabs.org/), [mirror 2](http://dataviz-lit-02.wmflabs.org/), or [mirror 3](http://dataviz-lit-03.wmflabs.org/)) and [a static web page](https://bearloga.github.io/wmf-allhands18/).\n\n```R\ninstall.packages(c(\"tidyverse\", \"devtools\", \"learnr\"))\n# Visualizations\ndevtools::install_github(\"tidyverse/ggplot2\")\ninstall.packages(c(\"cowplot\", \"waffle\", \"RColorBrewer\", \"mixtools\"))\n# Data\ninstall.packages(\"pageviews\")\n```\n\n### Load Balancing\n\nThe workshop _can_ be deployed to shinyapps.io but we are hosting it using [Wikimedia Cloud Services](https://wikitech.wikimedia.org/wiki/Help:Cloud_Services_Introduction) VMs running Shiny Server (see [this post](https://blog.wikimedia.org/2017/08/21/discovery-dashboards-puppet/) for details).\n\nThere is a separate VM that acts as a portal and sends users to the different servers so that we don't have a single overloaded Shiny server. We are using the following web proxies configured in [Horizon](https://wikitech.wikimedia.org/w/index.php?title=Help:Horizon_FAQ):\n\n| Hostname         | Backend instance | Backend port | Backend IP   | Role       |\n|:-----------------|:-----------------|-------------:|:-------------|:-----------|\n| dataviz-literacy | shinyserv-lb     |         3838 | 10.68.19.61  | Portal     |\n| dataviz-lit-01   | shinyserv-01     |         3838 | 10.68.19.31  | App server |\n| dataviz-lit-02   | shinyserv-02     |         3838 | 10.68.17.173 | App server |\n| dataviz-lit-03   | shinyserv-03     |         3838 | 10.68.19.32  | App server |\n\nWe edited `/etc/nginx/sites-available/default` to have the following configuration based on recommendations in [this article](https://support.rstudio.com/hc/en-us/articles/213733868-Running-Shiny-Server-with-a-Proxy):\n\n```nginx\nmap $http_upgrade $connection_upgrade {\n     default upgrade;\n     ''      close;\n}\nupstream datavizlit {\n    # some kind of session affinity might be required if shiny-r isn't stateless\n    # (either cookie or ip_hash)\n    # sticky cookie srv_id expires=1h domain=.dataviz-literacy.wmflabs.org path=/;\n    # ip_hash;\n    server 10.68.19.31:3838;\n    server 10.68.17.173:3838;\n    server 10.68.19.32:3838;\n}\nserver {\n    listen 3838;\n    location / {\n        proxy_pass http://datavizlit;\n        # websocket require HTTP 1.1\n        proxy_http_version 1.1;\n        proxy_redirect off;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection $connection_upgrade;\n        # proxy_read_timeout 1d;\n        proxy_buffering off;\n    }\n}\n```\n\nWe are also using `nginx-full` which includes support for websockets.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbearloga%2Fwmf-allhands18","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbearloga%2Fwmf-allhands18","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbearloga%2Fwmf-allhands18/lists"}