From 77f829360aab6c7579013c773a2391f1b48f6113 Mon Sep 17 00:00:00 2001 From: Christopher Nam Date: Sat, 6 Jul 2024 17:09:20 -0700 Subject: [PATCH 01/17] Archie theme --- .gitignore | 6 + R/build.R | 2 + R/build2.R | 2 + R/build_one.R | 18 + archetypes/default.md | 5 + assets/css/dark.css | 159 +++++++ assets/css/fonts.css | 41 ++ assets/css/main.css | 333 ++++++++++++++ config.yaml | 36 ++ content/_index.md | 4 + content/about.md | 31 ++ content/archives.md | 5 + content/homepage/about.md | 7 + content/homepage/index.md | 3 + content/homepage/work.md | 7 + .../posts/2020-12-01-r-rmarkdown/index.Rmd | 37 ++ content/posts/post-1.md | 66 +++ content/posts/post-2.md | 41 ++ content/posts/post-3.md | 39 ++ content/posts/post-4.md | 31 ++ content/posts/post-5.md | 75 +++ content/posts/post-6.md | 33 ++ content/posts/post-7.md | 16 + content/posts/tg-gh.md | 383 ++++++++++++++++ index.Rmd | 5 + layouts/shortcodes/blogdown/postref.html | 1 + netlify.toml | 17 + public/about-hugo/index.html | 10 + public/about-us/index.html | 10 + public/about/index.html | 101 ++++ public/archives/index.html | 88 ++++ public/categories/index.html | 82 ++++ public/categories/index.xml | 12 + public/contact/index.html | 10 + ...54f814e5c1b94281aaf8fd0511c1319f7f78a4.css | 159 +++++++ ...121cd01f87c88586803cbb282aa224720a765f.css | 41 ++ ...1deb58df2938ec352b506df655005dcaf98cc0.css | 333 ++++++++++++++ public/fonts/fira-sans-v10-latin-regular.eot | Bin 0 -> 25059 bytes public/fonts/fira-sans-v10-latin-regular.svg | 330 ++++++++++++++ public/fonts/fira-sans-v10-latin-regular.ttf | Bin 0 -> 54984 bytes public/fonts/fira-sans-v10-latin-regular.woff | Bin 0 -> 25888 bytes .../fonts/fira-sans-v10-latin-regular.woff2 | Bin 0 -> 21244 bytes .../ibm-plex-mono-v6-latin-500italic.eot | Bin 0 -> 17474 bytes .../ibm-plex-mono-v6-latin-500italic.svg | 365 +++++++++++++++ .../ibm-plex-mono-v6-latin-500italic.ttf | Bin 0 -> 40032 bytes .../ibm-plex-mono-v6-latin-500italic.woff | Bin 0 -> 19900 bytes .../ibm-plex-mono-v6-latin-500italic.woff2 | Bin 0 -> 15224 bytes .../fonts/roboto-mono-v12-latin-regular.eot | Bin 0 -> 13517 bytes .../fonts/roboto-mono-v12-latin-regular.svg | 405 +++++++++++++++++ .../fonts/roboto-mono-v12-latin-regular.ttf | Bin 0 -> 22224 bytes .../fonts/roboto-mono-v12-latin-regular.woff | Bin 0 -> 15160 bytes .../fonts/roboto-mono-v12-latin-regular.woff2 | Bin 0 -> 12312 bytes public/index.html | 175 +++++++ public/index.xml | 83 ++++ public/js/feather.min.js | 13 + public/js/main.js | 0 public/js/themetoggle.js | 23 + public/page/1/index.html | 10 + public/posts/2020-12-01-r-rmarkdown/index.Rmd | 37 ++ public/posts/index.html | 89 ++++ public/posts/index.xml | 69 +++ public/posts/post-1/index.html | 137 ++++++ public/posts/post-2/index.html | 132 ++++++ public/posts/post-3/index.html | 118 +++++ public/posts/post-4/index.html | 107 +++++ public/posts/post-5/index.html | 146 ++++++ public/posts/post-6/index.html | 346 ++++++++++++++ public/posts/post-7/index.html | 103 +++++ public/posts/tg-gh/index.html | 430 ++++++++++++++++++ public/sitemap.xml | 58 +++ public/tags/index.html | 98 ++++ public/tags/index.xml | 41 ++ public/tags/primer/index.html | 75 +++ public/tags/primer/index.xml | 20 + public/tags/procrastinating/index.html | 75 +++ public/tags/procrastinating/index.xml | 20 + public/tags/space/index.html | 75 +++ public/tags/space/index.xml | 20 + public/tags/todo/index.html | 75 +++ public/tags/todo/index.xml | 20 + themedianduck.Rproj | 13 + 81 files changed, 5957 insertions(+) create mode 100644 .gitignore create mode 100644 R/build.R create mode 100644 R/build2.R create mode 100644 R/build_one.R create mode 100644 archetypes/default.md create mode 100644 assets/css/dark.css create mode 100644 assets/css/fonts.css create mode 100644 assets/css/main.css create mode 100644 config.yaml create mode 100644 content/_index.md create mode 100644 content/about.md create mode 100644 content/archives.md create mode 100644 content/homepage/about.md create mode 100644 content/homepage/index.md create mode 100644 content/homepage/work.md create mode 100644 content/posts/2020-12-01-r-rmarkdown/index.Rmd create mode 100644 content/posts/post-1.md create mode 100644 content/posts/post-2.md create mode 100644 content/posts/post-3.md create mode 100644 content/posts/post-4.md create mode 100644 content/posts/post-5.md create mode 100644 content/posts/post-6.md create mode 100644 content/posts/post-7.md create mode 100644 content/posts/tg-gh.md create mode 100644 index.Rmd create mode 100644 layouts/shortcodes/blogdown/postref.html create mode 100644 netlify.toml create mode 100644 public/about-hugo/index.html create mode 100644 public/about-us/index.html create mode 100644 public/about/index.html create mode 100644 public/archives/index.html create mode 100644 public/categories/index.html create mode 100644 public/categories/index.xml create mode 100644 public/contact/index.html create mode 100644 public/css/dark.726cd11ca6eb7c4f7d48eb420354f814e5c1b94281aaf8fd0511c1319f7f78a4.css create mode 100644 public/css/fonts.2c2227b81b1970a03e760aa2e6121cd01f87c88586803cbb282aa224720a765f.css create mode 100644 public/css/main.ac08a4c9714baa859217f92f051deb58df2938ec352b506df655005dcaf98cc0.css create mode 100644 public/fonts/fira-sans-v10-latin-regular.eot create mode 100644 public/fonts/fira-sans-v10-latin-regular.svg create mode 100644 public/fonts/fira-sans-v10-latin-regular.ttf create mode 100644 public/fonts/fira-sans-v10-latin-regular.woff create mode 100644 public/fonts/fira-sans-v10-latin-regular.woff2 create mode 100644 public/fonts/ibm-plex-mono-v6-latin-500italic.eot create mode 100644 public/fonts/ibm-plex-mono-v6-latin-500italic.svg create mode 100644 public/fonts/ibm-plex-mono-v6-latin-500italic.ttf create mode 100644 public/fonts/ibm-plex-mono-v6-latin-500italic.woff create mode 100644 public/fonts/ibm-plex-mono-v6-latin-500italic.woff2 create mode 100644 public/fonts/roboto-mono-v12-latin-regular.eot create mode 100644 public/fonts/roboto-mono-v12-latin-regular.svg create mode 100644 public/fonts/roboto-mono-v12-latin-regular.ttf create mode 100644 public/fonts/roboto-mono-v12-latin-regular.woff create mode 100644 public/fonts/roboto-mono-v12-latin-regular.woff2 create mode 100644 public/index.html create mode 100644 public/index.xml create mode 100644 public/js/feather.min.js create mode 100644 public/js/main.js create mode 100644 public/js/themetoggle.js create mode 100644 public/page/1/index.html create mode 100644 public/posts/2020-12-01-r-rmarkdown/index.Rmd create mode 100644 public/posts/index.html create mode 100644 public/posts/index.xml create mode 100644 public/posts/post-1/index.html create mode 100644 public/posts/post-2/index.html create mode 100644 public/posts/post-3/index.html create mode 100644 public/posts/post-4/index.html create mode 100644 public/posts/post-5/index.html create mode 100644 public/posts/post-6/index.html create mode 100644 public/posts/post-7/index.html create mode 100644 public/posts/tg-gh/index.html create mode 100644 public/sitemap.xml create mode 100644 public/tags/index.html create mode 100644 public/tags/index.xml create mode 100644 public/tags/primer/index.html create mode 100644 public/tags/primer/index.xml create mode 100644 public/tags/procrastinating/index.html create mode 100644 public/tags/procrastinating/index.xml create mode 100644 public/tags/space/index.html create mode 100644 public/tags/space/index.xml create mode 100644 public/tags/todo/index.html create mode 100644 public/tags/todo/index.xml create mode 100644 themedianduck.Rproj diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4a3c845 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.Rproj.user +.Rhistory +.RData +.Ruserdata +.DS_Store +Thumbs.db \ No newline at end of file diff --git a/R/build.R b/R/build.R new file mode 100644 index 0000000..0227296 --- /dev/null +++ b/R/build.R @@ -0,0 +1,2 @@ +# An optional custom script to run before Hugo builds your site. +# You can delete it if you do not need it. diff --git a/R/build2.R b/R/build2.R new file mode 100644 index 0000000..49a1637 --- /dev/null +++ b/R/build2.R @@ -0,0 +1,2 @@ +# An optional custom script to run after Hugo builds your site. +# You can delete it if you do not need it. diff --git a/R/build_one.R b/R/build_one.R new file mode 100644 index 0000000..49b2064 --- /dev/null +++ b/R/build_one.R @@ -0,0 +1,18 @@ +local({ + # fall back on "/" if baseurl is not specified + baseurl = blogdown:::get_config2("baseurl", default = "/") + knitr::opts_knit$set(base.url = baseurl) + knitr::render_jekyll() # set output hooks + + # input/output filenames as two arguments to Rscript + a = commandArgs(TRUE) + d = gsub("^_|[.][a-zA-Z]+$", "", a[1]) + knitr::opts_chunk$set( + fig.path = sprintf("figure/%s/", d), + cache.path = sprintf("cache/%s/", d) + ) + knitr::knit( + a[1], a[2], quiet = TRUE, encoding = "UTF-8", + envir = globalenv() + ) +}) \ No newline at end of file diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..26f317f --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,5 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- diff --git a/assets/css/dark.css b/assets/css/dark.css new file mode 100644 index 0000000..f93adf1 --- /dev/null +++ b/assets/css/dark.css @@ -0,0 +1,159 @@ +body { + color: white; + background-color: #202124; +} + +::-moz-selection { + background: blue; + color: #fff; + text-shadow: none; +} + +::selection { + background: red; + color: #fff; + text-shadow: none; +} + +hr { + border-top: 3px dotted blue; +} +code { + background-color: lightblue; + color: black; + text-decoration: bold; + padding: 0.1em 0.2em; +} +pre { + background-color: #272822; + line-height: 1.4; + overflow-x: auto; + padding: 1em; +} +blockquote { + border-color: blue; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + color: #ddd; +} +h1::before { + color: var(--darkMaincolor); + content: "# "; +} +h2::before { + color: var(--darkMaincolor); + content: "## "; +} +h3::before { + color: var(--darkMaincolor); + content: "### "; +} +h4::before { + color: var(--darkMaincolor); + content: "#### "; +} +h5::before { + color: var(--darkMaincolor); + content: "##### "; +} +h6::before { + color: var(--darkMaincolor); + content: "###### "; +} + +a { + border-bottom: 3px solid var(--darkMaincolor); + color: inherit; +} +a:hover { + background-color: var(--darkMaincolor); + color: black; +} + +.site-description a { + color: #ddd; +} +.site-description a:hover { + color: black; +} + +.tags a { + border-bottom: 3px solid var(--darkMaincolor); +} +.tags a:hover { + background-color: var(--darkMaincolor); + color: black; +} + +.site-title a { + color: white; + text-decoration: none !important; +} + +.header nav, +.footer { + border-color: #333; +} + +.highlight { + background-color: #333; +} +.soc:hover { + color: black; +} +.draft-label { + color: var(--darkMaincolor); + background-color: blue; +} +.highlight pre code[class=language-javaScript]::before, +.highlight pre code[class="language-js"]::before { + content: "js"; + background: #f7df1e; + color: black; +} +.highlight pre code[class*='language-yml']::before, +.highlight pre code[class*='language-yaml']::before { + content: 'yaml'; + background: #f71e6a; + color: white; +} +.highlight pre code[class*='language-shell']::before, +.highlight pre code[class*='language-bash']::before, +.highlight pre code[class*='language-sh']::before { + content: 'shell'; + background: green; + color:white +} +.highlight pre code[class*='language-json']::before{ + content: 'json'; + background: dodgerblue; + color: #000000 +} +.highlight pre code[class*='language-python']::before, +.highlight pre code[class*='language-py']::before { + content: 'py'; + background: blue; + color: yellow ; +} +.highlight pre code[class*='language-css']::before{ + content: 'css'; + background: cyan; + color: black ; +} +.highlight pre code[class*='language-go']::before{ + content: 'Go'; + background: cyan; + color: royalblue ; +} +.highlight pre code[class*='language-md']::before, +.highlight pre code[class*='language-md']::before{ + content: 'Markdown'; + background: royalblue; + color: whitesmoke ; +} \ No newline at end of file diff --git a/assets/css/fonts.css b/assets/css/fonts.css new file mode 100644 index 0000000..f758f58 --- /dev/null +++ b/assets/css/fonts.css @@ -0,0 +1,41 @@ +/* fira-sans-regular - latin */ +@font-face { + font-display: swap; + font-family: 'Fira Sans'; + font-style: normal; + font-weight: 400; + src: url('../fonts/fira-sans-v10-latin-regular.eot'); /* IE9 Compat Modes */ + src: local('Fira Sans Regular'), local('FiraSans-Regular'), + url('../fonts/fira-sans-v10-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/fira-sans-v10-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/fira-sans-v10-latin-regular.woff') format('woff'), /* Modern Browsers */ + url('../fonts/fira-sans-v10-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/fira-sans-v10-latin-regular.svg#FiraSans') format('svg'); /* Legacy iOS */ +} +/* roboto-mono-regular - latin */ +@font-face { + font-display: swap; + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + src: url('../fonts/roboto-mono-v12-latin-regular.eot'); /* IE9 Compat Modes */ + src: url('../fonts/roboto-mono-v12-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/roboto-mono-v12-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/roboto-mono-v12-latin-regular.woff') format('woff'), /* Modern Browsers */ + url('../fonts/roboto-mono-v12-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/roboto-mono-v12-latin-regular.svg#RobotoMono') format('svg'); /* Legacy iOS */ +} +/* ibm-plex-mono-500italic - latin */ +@font-face { + font-display: swap; + font-family: 'IBM Plex Mono'; + font-style: italic; + font-weight: 500; + src: url('../fonts/ibm-plex-mono-v6-latin-500italic.eot'); /* IE9 Compat Modes */ + src: local('IBM Plex Mono Medium Italic'), local('IBMPlexMono-MediumItalic'), + url('../fonts/ibm-plex-mono-v6-latin-500italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/ibm-plex-mono-v6-latin-500italic.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/ibm-plex-mono-v6-latin-500italic.woff') format('woff'), /* Modern Browsers */ + url('../fonts/ibm-plex-mono-v6-latin-500italic.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/ibm-plex-mono-v6-latin-500italic.svg#IBMPlexMono') format('svg'); /* Legacy iOS */ +} diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 0000000..3a7d1cd --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,333 @@ +/* Markdown */ +:root{ +--maincolor: red; +--bordercl:rebeccapurple; +--callouctcolor:dodgerblue; +--hovercolor:navy; +--darkMaincolor: #50fa7b; +} +html { + color: #232333; + font-family: 'Roboto Mono', monospace; + font-size: 15px; + line-height: 1.6em; +} +body{ + display: block; + margin: 8px; +} +* { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +::selection { + background: var(--maincolor); + color: #fff; +} + +p { + font-family: 'Fira Sans', sans-serif; + line-height: 1.5; +} + +hr { + border: 0; + border-top: 3px dotted var(--bordercl); + margin: 1em 0; +} + +blockquote { + border-left: 3px solid var(--bordercl); + color: #737373; + margin: 0; + padding-left: 1em; +} + +a { + border-bottom: 3px solid var(--maincolor); + color: inherit; + text-decoration: none; +} +a:hover { + background-color: var(--hovercolor); + color: #fff; +} + +ul { + list-style: none; + padding-left: 2ch; +} +ul li { + text-indent: -2ch; +} +ul > li::before { + content: '* '; + font-weight: bold; +} + +/* Images */ +img { + border: 3px solid #ececec; + max-width: 100%; +} + +figure { + box-sizing: border-box; + display: inline-block; + margin: 0; + max-width: 100%; +} + +figure img { + max-height: 500px; +} + +@media screen and (min-width: 600px) { + figure { + padding: 0 40px; + } +} + +figure h4 { + font-size: 1rem; + margin: 0; + margin-bottom: 1em; +} +figure h4::before { + content: '↳ '; +} + +/* Code blocks */ +code { + background-color: #f1f1f1; + padding: .1em .2em; +} + +pre { + background-color: #ececec; + line-height: 1.4; + overflow-x: auto; + padding: 1em; +} + +.highlight pre ::selection { + background: rgba(255, 255, 255, 0.2); + color: inherit; +} + +pre code { + background-color: transparent; + color: inherit; + font-size: 100%; + padding: 0; +} + +/* Containers */ +.content { + margin-bottom: 4em; + margin-left: auto; + margin-right: auto; + max-width: 800px; + padding: 0 1ch; + word-wrap: break-word; +} + +/* Header */ +header { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + margin: 1em 0; + line-height: 2.5em; +} + +header .main { + font-size: 1.5rem; +} +h1, h2, h3, h4, h5, h6 { + font-size: 1.2rem; + margin-top: 2em; +} + +h1::before { color: var(--maincolor); content: '# '; } +h2::before { color: var(--maincolor); content: '## '; } +h3::before { color: var(--maincolor); content: '### '; } +h4::before { color: var(--maincolor); content: '#### '; } +h5::before { color: var(--maincolor); content: '##### '; } +h6::before { color: var(--maincolor); content: '###### '; } + +.meta { + color: #999; + letter-spacing: -0.5px; +} + +/* Footer */ +footer { + display: flex; + align-items: center; + border-top: 0.4rem dotted var(--bordercl); + padding: 2rem 0rem; + margin-top: 2rem; +} +.soc { + display: flex; + align-items: center; + border-bottom: none; +} +.border { + margin-left: 0.5rem; + margin-right: 0.5rem; + border: 1px solid; +} +.footer-info { + padding: var(--footer-padding); +} + +/* Common */ +.title h1 { + margin-bottom: 0; +} + +time { + color: grey; +} + +/* Posts */ +article .title { + margin-bottom: 1em; +} + + +/* Callout */ +.callout { + background-color: var(--callouctcolor); + color: #fff; + padding: 1em; +} + +.callout p { + font-family: 'IBM Plex Mono', monospace; + margin: 0; +} + +.callout a { + border-bottom: 3px solid #fff; +} + +.callout a:hover { + background-color: #fff; + color: var(--callouctcolor); +} + +.site-description { +display: flex; +justify-content: space-between; +} +.tags li::before{ + content: "🏷 "; +} +.tags a{ + border-bottom: 3px solid var(--maincolor); +} +.tags a:hover{ + color:white; + background-color: var(--hovercolor); +} +svg{ + max-height: 15px; +} +.soc:hover{ + color: white; +} +.draft-label{ + color: var(--bordercl); + text-decoration: none; + padding: 2px 4px; + border-radius: 4px; + margin-left: 6px; + background-color: #f9f2f4; +} +.highlight { + position: relative; + -webkit-overflow-scrolling: touch; +} +.highlight pre code[class*="language-"] { + -webkit-overflow-scrolling: touch; +} +.highlight pre code[class*="language-"]::before { + background: black; + border-radius: 0 0 0.25rem 0.25rem; + color: white; + font-size: 12px; + letter-spacing: 0.025rem; + padding: 0.1rem 0.5rem; + position: absolute; + right: 1rem; + text-align: right; + text-transform: uppercase; + top: 0; +} + +.highlight pre code[class=language-javaScript]::before, +.highlight pre code[class="language-js"]::before { +content: "js"; +background: #f7df1e; +color: black; +} +.highlight pre code[class*='language-yml']::before, +.highlight pre code[class*='language-yaml']::before { +content: 'yaml'; +background: #f71e6a; +color: white; +} +.highlight pre code[class*='language-shell']::before, +.highlight pre code[class*='language-bash']::before, +.highlight pre code[class*='language-sh']::before { +content: 'shell'; +background: green; +color:white +} +.highlight pre code[class*='language-json']::before{ +content: 'json'; +background: dodgerblue; + color: #000000 +} +.highlight pre code[class*='language-python']::before, +.highlight pre code[class*='language-py']::before { +content: 'py'; +background: blue; +color: yellow ; +} +.highlight pre code[class*='language-css']::before{ +content: 'css'; +background: cyan; +color: black ; +} +.highlight pre code[class*='language-go']::before{ +content: 'Go'; +background: cyan; +color: royalblue ; +} +.highlight pre code[class*='language-md']::before, +.highlight pre code[class*='language-md']::before{ +content: 'Markdown'; +background: royalblue; +color: whitesmoke ; +} + +/* table */ +table { + border-spacing: 0; + border-collapse: collapse; +} + +table th{ + padding: 6px 13px; + border: 1px solid #dfe2e5; + font-size: large; +} + +table td{ + padding: 6px 13px; + border: 1px solid #dfe2e5; +} diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..4a8278d --- /dev/null +++ b/config.yaml @@ -0,0 +1,36 @@ +baseURL: https://example.com +languageCode: en-us +title: Archie +theme: archie +copyright: © Athul +pygmentsstyle: monokai +pygmentscodefences: yes +pygmentscodefencesguesssyntax: yes +params: + mode: auto + social: + - icon: github + name: GitHub + url: https://github.com/athul/archie + - icon: twitter + name: Twitter + url: https://twitter.com/athulcajay/ + - icon: gitlab + name: GitLab + url: https://gitlab.com/athul/ + subtitle: Minimal and Clean [blog theme for Hugo](https://github.com/athul/archie) + useCDN: no +menu: + main: + - name: Home + url: / + weight: 1 + - name: All posts + url: /posts + weight: 2 + - name: About + url: /about + weight: 3 + - name: Tags + url: /tags + weight: 4 diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..0e2f507 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,4 @@ +--- +author: Hugo Authors +--- + diff --git a/content/about.md b/content/about.md new file mode 100644 index 0000000..5f0e67d --- /dev/null +++ b/content/about.md @@ -0,0 +1,31 @@ +--- +aliases: +- about-us +- about-hugo +- contact +author: Hugo Authors +date: "2019-02-28" +description: Hugo, the world’s fastest framework for building websites +title: About +--- + +Written in Go, Hugo is an open source static site generator available under the [Apache Licence 2.0.](https://github.com/gohugoio/hugo/blob/master/LICENSE) Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows. + +Hugo makes use of a variety of open source projects including: + +* https://github.com/yuin/goldmark +* https://github.com/alecthomas/chroma +* https://github.com/muesli/smartcrop +* https://github.com/spf13/cobra +* https://github.com/spf13/viper + +Hugo is ideal for blogs, corporate websites, creative portfolios, online magazines, single page applications or even a website with thousands of pages. + +Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases. + +Websites built with Hugo are extremelly fast, secure and can be deployed anywhere including, AWS, GitHub Pages, Heroku, Netlify and any other hosting provider. + +Learn more and contribute on [GitHub](https://github.com/gohugoio). + + + diff --git a/content/archives.md b/content/archives.md new file mode 100644 index 0000000..a0271c3 --- /dev/null +++ b/content/archives.md @@ -0,0 +1,5 @@ +--- +date: "2019-05-28" +layout: archives +type: section +--- diff --git a/content/homepage/about.md b/content/homepage/about.md new file mode 100644 index 0000000..c2ba680 --- /dev/null +++ b/content/homepage/about.md @@ -0,0 +1,7 @@ +--- +title: 'Our Difference' +button: 'About us' +weight: 2 +--- + +Lorem ipsum dolor sit amet, et essent mediocritatem quo, choro volumus oporteat an mei. ipsum dolor sit amet, et essent mediocritatem quo, \ No newline at end of file diff --git a/content/homepage/index.md b/content/homepage/index.md new file mode 100644 index 0000000..01ffa31 --- /dev/null +++ b/content/homepage/index.md @@ -0,0 +1,3 @@ +--- +headless : true +--- diff --git a/content/homepage/work.md b/content/homepage/work.md new file mode 100644 index 0000000..f2fee73 --- /dev/null +++ b/content/homepage/work.md @@ -0,0 +1,7 @@ +--- +title: 'We Help Business Grow' +button: 'Our Work' +weight: 1 +--- + +Lorem ipsum dolor sit amet, et essent mediocritatem quo, choro volumus oporteat an mei. Numquam dolores mel eu, mea docendi omittantur et, mea ea duis erat. Elit melius cu ius. Per ex novum tantas putant, ei his nullam aliquam apeirian. Aeterno quaestio constituto sea an, no eum intellegat assueverit. \ No newline at end of file diff --git a/content/posts/2020-12-01-r-rmarkdown/index.Rmd b/content/posts/2020-12-01-r-rmarkdown/index.Rmd new file mode 100644 index 0000000..cc06f2e --- /dev/null +++ b/content/posts/2020-12-01-r-rmarkdown/index.Rmd @@ -0,0 +1,37 @@ +--- +title: "Hello R Markdown" +author: "Frida Gomam" +date: 2020-12-01T21:13:14-05:00 +categories: ["R"] +tags: ["R Markdown", "plot", "regression"] +--- + +```{r setup, include=FALSE} +knitr::opts_chunk$set(collapse = TRUE) +``` + +# R Markdown + +This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see . + +You can embed an R code chunk like this: + +```{r cars} +summary(cars) +fit <- lm(dist ~ speed, data = cars) +fit +``` + +# Including Plots + +You can also embed plots. See Figure \@ref(fig:pie) for example: + +```{r pie, fig.cap='A fancy pie chart.', tidy=FALSE} +par(mar = c(0, 1, 0, 1)) +pie( + c(280, 60, 20), + c('Sky', 'Sunny side of pyramid', 'Shady side of pyramid'), + col = c('#0292D8', '#F7EA39', '#C4B632'), + init.angle = -50, border = NA +) +``` diff --git a/content/posts/post-1.md b/content/posts/post-1.md new file mode 100644 index 0000000..74c1270 --- /dev/null +++ b/content/posts/post-1.md @@ -0,0 +1,66 @@ +--- +date: "2020-04-01T02:01:58+05:30" +description: You have a to-do list that scrolls on for days. You are managing multiple + projects, getting lots of email and messages on different messaging systems, managing + finances and personal health habits and so much more. +tags: +- Primer +- todo +title: 'Primer: When You Have Too Much to Do' +--- + +You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more. + +It all keeps piling up, and it can feel overwhelming. + +How do you keep up with it all? How do you find focus and peace and get stuff accomplished when you have too much on your plate? + +In this primer, I’ll look at some key strategies and tactics for taking on an overloaded life with an open heart, lots of energy, and a smile on your face. + +## The First Step: Triage + +Whether you’re just starting your day, or you’re in the middle of the chaos and just need to find some sanity … the first step is to get into triage mode. + +Triage, as you probably know, is sorting through the chaos to prioritize: what needs to be done now, what needs to be done today, what needs to be done this week, and what can wait? You’re looking at urgency, but also what’s meaningful and important. + +Here’s what you might do: + +* Pick out the things that need to be done today. Start a Short List for things you’re going to do today. That might be important tasks for big projects, urgent tasks that could result in damage if you don’t act, smaller admin tasks that you really should take care of today, and responding to important messages. I would recommend being ruthless and cutting out as much as you can, having just 5 things on your plate if that’s at all possible. Not everything needs to be done today, and not every email needs to be responded to. +* Push some things to tomorrow and the rest of the week. If you have deadlines that can be pushed back (or renegotiated), do that. Spread the work out over the week, even into next week. What needs to be done tomorrow? What can wait a day or two longer? +* Eliminate what you can. That might mean just not replying to some messages that aren’t that important and don’t really require a reply. It might mean telling some people that you can’t take on this project after all, or that you need to get out of the commitment that you said you’d do. Yes, this is uncomfortable. For now, just put them on a list called, “To Not Do,” and plan to figure out how to get out of them later. + +OK, you have some breathing room and a manageable list now! Let’s shrink that down even further and just pick one thing. + +## Next: Focus on One Thing + +With a lot on your plate, it’s hard to pick one thing to focus on. But that’s exactly what I’m going to ask you to do. + +Pick one thing, and give it your focus. Yes, there are a lot of other things you can focus on. Yes, they’re stressing you out and making it hard to focus. But think about it this way: if you allow it all to be in your head all the time, that will always be your mode of being. You’ll always be thinking about everything, stressing out about it all, with a frazzled mind … unless you start shifting. + +The shift: + +* Pick something to focus on. Look at the triaged list from the first section … if you have 5-6 things on this Short List, you can assess whether there’s any super urgent, time-sensitive things you need to take care of. If there are, pick one of them. If not, pick the most important one — probably the one you have been putting off doing. +* Clear everything else away. Just for a little bit. Close all browser tabs, turn off notifications, close open applications, put your phone away. +* Put that one task before you, and allow yourself to be with it completely. Pour yourself into it. Think of it as a practice, of letting go (of everything else), of focus, of radical simplicity. + +When you’re done (or after 15-20 minutes have gone by at least), you can switch to something else. But don’t allow yourself to switch until then. + +By closing off all exits, by choosing one thing, by giving yourself completely to that thing … you’re now in a different mode that isn’t so stressful or spread thin. You’ve started a shift that will lead to focus and sanity. + +## Third: Schedule Time to Simplify + +Remember the To Not Do list above? Schedule some time this week to start reducing your projects, saying no to people, getting out of commitments, crossing stuff off your task list … so that you can have some sanity back. + +There are lots of little things that you’ve said “yes” to that you probably shouldn’t have. That’s why you’re overloaded. Protect your more important work, and your time off, and your peace of mind, by saying “no” to things that aren’t as important. + +Schedule the time to simplify — you don’t have to do it today, but sometime soon — and you can then not have to worry about the things on your To Not Do list until then. + +## Fourth: Practice Mindful Focus + +Go through the rest of the day with an attitude of “mindful focus.” That means that you are doing one thing at a time, being as present as you can, switching as little as you can. + +Think of it as a settling of the mind. A new mode of being. A mindfulness practice (which means you won’t be perfect at it). + +As you practice mindful focus, you’ll learn to practice doing things with an open heart, with curiosity and gratitude, and even joy. Try these one at a time as you get to do each task on your Short List. + +You’ll find that you’re not so overloaded, but that each task is just perfect for that moment. And that’s a completely new relationship with the work that you do, and a new relationship with life. diff --git a/content/posts/post-2.md b/content/posts/post-2.md new file mode 100644 index 0000000..da8cc9b --- /dev/null +++ b/content/posts/post-2.md @@ -0,0 +1,41 @@ +--- +date: "2018-03-18T12:13:30+05:30" +tags: +- Space +title: 'Fearlessness: How to Stop Running from Space' +--- + +We spend our days filling in every available space, cramming in more tasks, responding to messages, checking social media and online sites, watching videos. + +We are afraid of empty space in our lives. + +The result is often a continual busyness, constant distraction and avoidance, lack of focus, lack of satisfaction with our lives. + +We run from silence. We run from the spaces between tasks and appointments. We run from solitude and stillness. We try to fill every second with activity, with something useful, as if silence and space are not valuable. + +But what are we afraid of? + +And who would we be if we didn’t have that fear? + +We’re afraid of space and stillness and silence because it highlights the uncertainty, instability, groundlessness, insecurity, shakiness that lie underneath every second of our lives. We’re afraid of having to face this instability and uncertainty, of having to feel the fear of it. + +Without the fear of all of the uncertainty that is highlighted by space … we become free. + +I know in my life, when I allow myself to have stillness, silence, solitude, simplicity and space … it leaves room to face whatever is coming up for me. It gives me room to fully feel any feelings that I’ve been avoiding. It allows me to be more honest with myself, instead of using distractions and busyness to cover up what I don’t want to see. + +And in the end, I develop trust that the space is not something to be feared, but rather something to be treasured. A gift, filled with learning and not knowing and shakiness and beauty. + +You might try allowing more space to be in your day, without filling it: + +* Take some time between tasks for stillness. +* Sit out in nature, in silence, without technology. +* When you notice yourself reaching for your phone, pause. See if you can just be still, just savor some space. +* When you feel uncertainty or instability in your life (hint: it’s always there), let yourself feel it. Be present with it, without needing to run or avoid. +* When you feel fear, be open-hearted with it and allow yourself fully feel it, being friendly with it. Your relationship with fear will change if you become friendly with it. +* Do less, and trust that things won’t fall apart. Or if they do fall apart, you can be present with that instability. +* When you’re in line, driving, eating, walking, exercising … see if you can do those things in silence, without technology, without needing to do something “useful.” Find the value in these spaces. +* Notice who you are without the fear of space. + +Savor these spaces, their deliciousness. Savor the groundlessness, as something filled with freedom if we learn not to fear it. Be present with the fear and uncertainty, as good friends not as enemies. + +Let your heart be open raw tender and vulnerable, and your mind embracing the spaciousness of the vast blue sky of open awareness. diff --git a/content/posts/post-3.md b/content/posts/post-3.md new file mode 100644 index 0000000..7931cf7 --- /dev/null +++ b/content/posts/post-3.md @@ -0,0 +1,39 @@ +--- +date: "2018-03-18T12:13:32+05:30" +description: The art of letting go. +tags: +- Procrastinating +title: How I Learned to Stop Procrastinating, & Love Letting Go +--- + +The end of procrastination is the art of letting go. + +I’ve been a lifelong procrastinator, at least until recent years. I would put things off until deadline, because I knew I could come through. I came through on tests after cramming last minute, I turned articles in at the deadline after waiting until the last hour, I got things done. + +Until I didn’t. It turns out procrastinating caused me to miss deadlines, over and over. It stressed me out. My work was less-than-desirable when I did it last minute. Slowly, I started to realize that procrastination wasn’t doing me any favors. In fact, it was causing me a lot of grief. + +But I couldn’t quit. I tried a lot of things. I tried time boxing and goal setting and accountability and the Pomodoro Technique and Getting Things Done. All are great methods, but they only last so long. Nothing really worked over the long term. + +That’s because I wasn’t getting to the root problem. + +I hadn’t figured out the skill that would save me from the procrastination. + +Until I learned about letting go. + +Letting go first came to me when I was quitting smoking. I had to let go of the “need” to smoke, the use of my crutch of cigarettes to deal with stress and problems. + +Then I learned I needed to let go of other false needs that were causing me problems: sugar, junk food, meat, shopping, beer, possessions. I’m not saying I can never do these things again once I let go of these needs, but I let go of the idea that they’re really necessary. I let go of an unhealthy attachment to them. + +Then I learned that distractions and the false need to check my email and news and other things online … were causing me problems. They were causing my procrastination. + +So I learned to let go of those too. + +Here’s the process I used to let go of the distractions and false needs that cause procrastination: + +I paid attention to the pain they cause me, later, instead of only the temporary comfort/pleasure they gave me right away. +I thought about the person I want to be, the life I want to live. I set my intentions to do the good work I think I should do. +I watched my urges to check things, to go to the comfort of distractions. I saw that I wanted to escape discomfort of something hard, and go to the comfort of something familiar and easy. +I realized I didn’t need that comfort. I could be in discomfort and nothing bad would happen. In fact, the best things happen when I’m in discomfort. +And then I smile, and breathe, and let go. + +And one step at a time, become the person I want to be. diff --git a/content/posts/post-4.md b/content/posts/post-4.md new file mode 100644 index 0000000..a1b2c1e --- /dev/null +++ b/content/posts/post-4.md @@ -0,0 +1,31 @@ +--- +date: "2020-03-18T12:13:35+05:30" +description: Start by getting a small backpack (less than 20 liters) and then just + travel with what fits in that. +title: Getting Started with Traveling Ultralight +--- + +I’m on a trip at the moment, and a friend who generously let me sleep on his couch looked at my small travel backpack and commented on how little I travel with: “That’s impressive,” he said. + +I was a little surprised, because though I’ve gotten that comment before, it’s become normal for me to travel with just a small bag (10 lbs. or less, usually), and I have friends who travel with even less. But then I remembered that I’m far from normal in this way. + +I gave him a tip for getting started, and I recommend it for all of you, who want to travel light — or ultralight, as I call it, because for many people traveling light is taking a carry-on roller luggage. For me, having those roller bags is lugging too much, because you can run up stairs with it with ease, or carry it all over a city without worrying about stowing away your luggage somewhere first. It’s so much easier to travel ultralight. + +Here’s the tip I gave him to get started: start by getting a small backpack (less than 20 liters) and then just travel with what fits in that. + +That’s how to start. But you’ll probably want some guidance on what to put into the bag, and how to travel with so little. Here’s some guidance to get started: + +* I travel with a lightweight laptop (Macbook Air), a few clothes, my phone, earbuds and some charging cords, toiletries, and almost nothing else. A lightweight windbreaker for wind and light rain (Patagonia Houdini). An eye mask and ear plugs. A collapsible water bottle. My passport. That’s about it. No extra shoes. No books. No suit. No travel pillow. No extra camera other than my phone. I’m not sure what else everyone else brings, but none of that. +* I bring clothes that I can wash in the sink or shower and that will dry overnight. Lightweight stuff that I can layer. Often they’re workout-style clothes or things from companies like Outlier or Patagonia that travel well. I don’t bring enough underwear or socks for every day of the trip, because I wash them every couple of days. I only bring one or two extra T-shirts, generally wearing the same two shirts the whole trip, even if it’s a month long. No one has ever once cared what I wear when I’m traveling. +* I bring minimal toiletries: a small shaver for my head, razor, toothbrush, floss small tubes of toothpaste and shaving cream, deodorant, nail clippers, ibuprofen. +* For cold places, I have thermal underwear and a couple long-sleeve layers (generally all Patagonia capilene stuff), and a beanie. I don’t usually go to places where it’s snowing (I don’t know why, maybe snow isn’t my thing), so I don’t have clothes to deal with that weather. +* For warm places, I will bring flip flops and swim trunks, and leave most of the colder layers behind. + +That’s enough for a monthlong trip, which I’ve done multiple times with this kind of setup. For a shorter trip of a few days, I might bring even less. + +I really love traveling this way, and am more than willing to sacrifice bringing extra things for the luxury of traveling lightweight. + +By the way, you don’t need much more than this kind of setup even in everyday life. + +For more info on this, check out my Ultralight ebook, and my friend Tynan has a great book called Forever Nomad. + diff --git a/content/posts/post-5.md b/content/posts/post-5.md new file mode 100644 index 0000000..1fb7c80 --- /dev/null +++ b/content/posts/post-5.md @@ -0,0 +1,75 @@ +--- +date: "2018-03-18T12:13:38+05:30" +title: Typography +--- + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +# Heading 1 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +## Heading 2 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +### Heading 3 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +#### Heading 4 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +##### Heading 5 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +###### Heading 6 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +## Typography + +Lid est laborum et dolorum fuga, This is [an example](http://example.com/ "Title") inline link. Et harum quidem rerum facilis, **This is bold** and *emphasis* cumque nihilse impedit quo minus id quod amets untra dolor amet sad. While this is `code block()` and following is a `pre` tag + + print 'this is pre tag' + +Following is the syntax highlighted code block + +```go +func getCookie(name string, r interface{}) (*http.Cookie, error) { + rd := r.(*http.Request) + cookie, err := rd.Cookie(name) + if err != nil { + return nil, err + } + return cookie, nil +} + +func setCookie(cookie *http.Cookie, w interface{}) error { + // Get write interface registered using `Acquire` method in handlers. + wr := w.(http.ResponseWriter) + http.SetCookie(wr, cookie) + return nil +} +``` + +This is blockquote, Will make it *better now* + +> 'I want to do with you what spring does with the cherry trees.' cited ~Pablo Neruda* + + +> Et harum quidem *rerum facilis* est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit + +Unordered list + +* Red +* Green +* Blue + +Ordered list + +1. Red +2. Green +3. Blue diff --git a/content/posts/post-6.md b/content/posts/post-6.md new file mode 100644 index 0000000..3630bc9 --- /dev/null +++ b/content/posts/post-6.md @@ -0,0 +1,33 @@ +--- +date: "2018-03-18T12:13:36+05:30" +description: Here is a demo of all shortcodes available in Hugo. +title: Hugo shortcodes +--- + +## Images + + + + + + +## Github Gist + +{{< gist spf13 7896402 >}} + +## Youtube video + +{{< youtube w7Ft2ymGmfc >}} + + +## Vimeo + +{{< vimeo id="146022717" >}} + +## Instagram + +{{< instagram BWNjjyYFxVx >}} + +## Callouts + +{{< callout emoji="⚡️" text="I guess this works" >}} diff --git a/content/posts/post-7.md b/content/posts/post-7.md new file mode 100644 index 0000000..46c8e01 --- /dev/null +++ b/content/posts/post-7.md @@ -0,0 +1,16 @@ +--- +date: "2018-03-18T12:13:38+05:30" +summary: Here is how you can setup dark mode for Ink and test on various OS like iOS, + Android, macOS and Windows 10. +title: How to test dark mode? +tldr: Wubba lubba dub dub +--- + +You can set dark mode as default by setting `params.mode` to `dark` in `config.toml` or set it to `auto` which will detect based on your OS and switch to dark mode. For more details [refer documentation](https://github.com/knadh/hugo-ink#configuration) + +Here is how you can switch based on your OS + +* [iOS](https://www.howtogeek.com/440078/how-to-enable-dark-mode-on-your-iphone-and-ipad/) +* [Android](https://9to5google.com/2018/12/17/android-dark-mode-theme-pie/) +* [macOS](https://support.apple.com/en-in/HT208976) +* [Windows 10](https://www.cnet.com/how-to/turn-on-the-dark-mode-in-windows-10/) diff --git a/content/posts/tg-gh.md b/content/posts/tg-gh.md new file mode 100644 index 0000000..ea88cb8 --- /dev/null +++ b/content/posts/tg-gh.md @@ -0,0 +1,383 @@ +--- +date: "2020-04-01" +description: Make a Telegram bot with Node.js and use it with GitHub Actions for sending + notifications to you about the repo. +title: Telegram Bot for GitHub Actions +tldr: Making GitHub Actions with Js Code +--- +## Telegram +[Telegram](https://telegram.org/) is a cloud-based mobile and desktop messaging app with a focus on security and speed. It is free to use and extensively hackable. It also has a good bot support system. The API is also easy to implement and has many wrappers for building bots with the API. + +## GitHub Actions +[GitHub Actions](https://github.com/features/actions) is a CI/CD runtime for your GitHub repository. You can run almost anything from scripts to docker containers. You can build, test and deploy your code with GitHub Actions. All these actions are called workflows and workflows differ in the job they're doing. These maybe test workflows, build ones or deployment ones. You can find all the actions on GitHub in the [marketplace](https://github.com/marketplace?type=actions) + +## Building the Bot +### Prerequisites +- Basic JavaScript Knowledge +- Basic GitHub Knowledge +- Telegram Account + +> There are templates for building actions. Here we're gonna start from scratch + +### Environment Setup +- **Node**, You can download node from their [website](https://nodejs.org/en/download/) +- NPM comes with node, so you don't have to worry about it. +- Initialize the Project +```shell +$ git init ## initialize a new git repository for version management +--- +$ npm init +``` +- **dotenv**, Dotenv can be downloaded via +```shell +$ npm i dotenv +--- +$ yarn add dotenv +``` +- **node-telegram-bot-api**, node-telegram-bot-api is a simple wrapper for building telegram bots. You can download it via +```shell +$ npm i node-telegram-bot-api +--- +$ yarn add node-telegram-bot-api +``` +- **@zeit/ncc**, NCC is a Simple CLI for compiling a Node.js module into a single file, together with all its dependencies, GCC-style. It's a dev dependency and can be downloaded +```shell +yarn add --dev @zeit/ncc +--- +npm i -D @zeit/ncc +``` + + +#### Folder Structure +The `dist` folder will be automatically created. `action.yml` will be made + +``` +. +├── dist +│ └── index.js +├── index.js +├── action.yml +├── README.md +└── package.json + +``` +- `index.js` is the file we're defining the bot +- `action.yml` is the file we'll define the action and it's behaviours + +## Making the Bot +We need to get an API bot token from telegram. For that Go to Telegram and Search for `Botfather`. It's a bot. +![](bfather.png) +Create a new bot with the `/newbot` command and get the API key. We'll need that, also talk to `jsondump` bot and get your chat id. The output may be like this, so +```json +{ + "update_id": 143943779, + "message": { + "message_id": 181575, + "from": { + "id": 123456 // this is what we need + "is_bot": false, + "first_name": "Tg Name", + "username": "TG Username", + "language_code": "en" + }, + "chat": { + "id": 123456, + "first_name": "Tg Name", + "username": "TG Username", + "type": "private" + }, + "date": 1584119424, + "text": "message" + } +} +``` +This will be needed for further use and We need to add it to the repo secrets which can be found in the repo settings. Be careful to add it as `token` and `chat` like as shown below +![](scr.png) + +### Writing the Action and Building the Bot +Fire up the terminal/cmd and make a new folder. Install the dependencies. Run the following command +```shell +$ touch index.js action.yml +``` +Open your favourite text editor within the folder or with the file. We'll define the bot in `index.js` + +```javaScript +require("dotenv").config +const Bot = require('node-telegram-bot-api'); +const { + INPUT_STATUS: ipstatus, + INPUT_TOKEN: tgtoken,//Telegram api token + INPUT_CHAT: chatid,// Telegram Chat ID + INPUT_IU_TITLE: ititle,// Issue title + INPUT_IU_NUM: inum,// Issue Number + INPUT_IU_ACTOR: iactor,// Issue made by + INPUT_IU_BODY: ibody,// Issue Body + INPUT_PR_NUM: pnum,// PR Number + INPUT_PR_STATE: prstate,// PR Opened, reponed or closed + INPUT_PR_TITLE: ptitle,// PR Title + INPUT_PR_BODY: pbody,// Body of the PR + GITHUB_EVENT_NAME: ghevent,// Name of the trigger event + GITHUB_REPOSITORY: repo,// Repository the trigger was made from + GITHUB_ACTOR: ghactor,// User who triggered the action + GITHUB_SHA: sha,// Commit ID + GITHUB_WORKFLOW: ghwrkflw// Workflow Name +} = process.env; + +const bot = new Bot(tgtoken) +``` +First, we're defining the dotenv for config and initializing Telegram Bot. Here we're defining the alias variables for the *environment variables*. You might notice an `INPUT_` for almost every environment variable, this is because GitHub Actions pass the env variable with an INPUT prefix. Other env variables are action's default environment variables. Then we initialized the bot with the API token. + +GitHub actions could be triggered with Issues, Pull Request or Pushes. You can find the trigger events [here](https://help.github.com/en/actions/reference/events-that-trigger-workflows). Here we're gonna get a message from the bot when an *Issue* or *Pull Request* or a *Push* event has happened. + +```js +const evresp = (gevent) => { + switch (gevent) { + + case "issues": + return ` +❗️❗️❗️❗️❗️❗️ + +Issue ${prstate} + +Issue Title and Number : ${ititle} | #${inum} + +Commented or Created By : \`${iactor}\` + +Issue Body : *${ibody}* + +[Link to Issue](https://github.com/${repo}/issues/${inum}) +[Link to Repo ](https://github.com/${repo}/) +[Build log here](https://github.com/${repo}/commit/${sha}/checks)` + case "pull_request": + return ` +🔃🔀🔃🔀🔃🔀 +PR ${prstate} + +PR Number: ${pnum} + +PR Title: ${ptitle} + +PR Body: *${pbody}* + +PR By: ${ghactor} + +[Link to Issue](https://github.com/${repo}/pull/${pnum}) +[Link to Repo ](https://github.com/${repo}/) +[Build log here](https://github.com/${repo}/commit/${sha}/checks)` + default: + return ` +⬆️⇅⬆️⇅ + +ID: ${ghwrkflw} + +Action was a *${ipstatus}!* + +\`Repository: ${repo}\` + +On: *${ghevent}* + +By: *${ghactor}* + +Tag: ${process.env.GITHUB_REF} + +[Link to Repo ](https://github.com/${repo}/) + ` + } +} +``` +In these lines of code, we're just initializing a switch statement for the responses. We're also declaring an anonymous function to use the switch responses via a function later. We're using all the defined variables in the switch. You can check the [trigger Events](https://help.github.com/en/actions/reference/events-that-trigger-workflows) to get how the event is triggered and what keyword should be used. + +Now for the last part of the Js file, we just take the response from the switch and assign it to a constant. Then we use the `sendMessage` function of the `node-telegram-bot-api` to send the message to the bot with the chatid and the output as the arguments. +```js +const output = evresp(ghevent) +``` +bot.sendMessage(chatid,output,{parse_mode : "Markdown"}) +## Compiling and Minifying the Js code +Since we have installed `@zeit/ncc` and this is used for the making the whole program with all the APIs to a single file and we need to use NCC for that. We just need to run +```shell +yarn run ncc build index.js -C -m -o dist +``` +or you might wanna add the following to you `package.json` file, and run `npm run test` to compile and minify the code. +```json +"scripts": { + "test": "ncc build index.js -C -m -o dist" + }, +``` +This will create a `dist` folder with and `index.js` file which contains the compiled code. + +## Making it a valid action +For making this Js file a valid action, we need to add an `action.yml` file. The action.yml for this action is like this +```yml +name: 'Action Name' +description: 'Action Descreption' +author: '' +inputs: + chat: + description: 'Chat to send: chat id or @channel_name' + required: true + token: + description: 'Telegram Bot token' + required: true + status: + description: 'Job status' + required: true + iu_title: + description: 'Issue Title' + default: ${{ github.event.issue.title }} + iu_num: + description: 'Issue Number' + default: ${{ github.event.issue.number }} + iu_actor: + description: 'Issue Triggerer' + default: ${{ github.event.issue.user.login }} + iu_com: + description: 'Issue Comment' + default: ${{github.event.comment.body}} + pr_state: + description: 'State of the PR' + default: ${{ github.event.action }} + pr_num: + description: 'PR Number' + default: ${{ github.event.number }} + pr_title: + description: 'Title of the PR' + default: ${{ github.event.pull_request.title }} + pr_body: + description: 'Body/Contents of the PR' + default: ${{ github.event.pull_request.body }} +runs: + using: "node12" + main: "dist/index.js" +branding: + icon: 'repeat' + color: 'green' +``` +Here we're defining the Input variables to be loaded for the action in GitHub's runtime environemt. All these `default` data are taken from the response of the webhooks which are send by GitHub when a trigger event is occured. You can find out more in the [Action Documentation Here](https://help.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context). + +```yml +runs: + using: "node12" + main: "dist/index.js" +``` +Here we are defining that this is a node action and should run in an environment with node, and the file which should be run, here the `index.js` file in the `dist` folder. That should do it. Create a new commit and push it to a repo. **Create a new tag** and this action will appear in the [marketplace](https://github.com/marketplace?type=actions). + +### Defining a workflow to test your action +GitHub Action workflows are defined using the `.yml` syntax. Here is an example of a sample workflow for this action + +```yml +name: + +on: + push: + pull_request: + types: [opened, closed] + issues: + types: [opened, closed, reopened] +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: + uses: /@master + if: always() + with: + chat: ${{ secrets.chat }} + token: ${{ secrets.token }} + status: ${{ job.status }} +``` + + +The Complete code for the bot is +```js +//Initializing dotenv and the bot +require("dotenv").config +const Bot = require('node-telegram-bot-api'); +// aliasing the environment variables +const { + INPUT_STATUS: ipstatus, + INPUT_TOKEN: tgtoken, //Telegram api token + INPUT_CHAT: chatid,// Telegram Chat ID + INPUT_IU_TITLE: ititle,// Issue title + INPUT_IU_NUM: inum,// Issue Number + INPUT_IU_ACTOR: iactor, // Issue made by + INPUT_IU_BODY: ibody, // Issue Body + INPUT_PR_NUM: pnum, // PR Number + INPUT_PR_STATE: prstate, // PR Opened, reponed or closed + INPUT_PR_TITLE: ptitle, // PR Title + INPUT_PR_BODY: pbody, // Body of the PR + GITHUB_EVENT_NAME: ghevent, // Name of the trigger event + GITHUB_REPOSITORY: repo, // Repository the trigger was made from + GITHUB_ACTOR: ghactor, // User who triggered the action + GITHUB_SHA: sha, // Commit ID + GITHUB_WORKFLOW: ghwrkflw // Workflow Name +} = process.env; + +const bot = new Bot(tgtoken) +// Function to return the response for the specific trigger +const evresp = (gevent) => { + switch (gevent) { +//Switch statement for issues + case "issues": + return ` +❗️❗️❗️❗️❗️❗️ + +Issue ${prstate} + +Issue Title and Number : ${ititle} | #${inum} + +Commented or Created By : \`${iactor}\` + +Issue Body : *${ibody}* + +[Link to Issue](https://github.com/${repo}/issues/${inum}) +[Link to Repo ](https://github.com/${repo}/) +[Build log here](https://github.com/${repo}/commit/${sha}/checks)` +// Switch statement for Pull Requests + case "pull_request": + return ` +🔃🔀🔃🔀🔃🔀 +PR ${prstate} + +PR Number: ${pnum} + +PR Title: ${ptitle} + +PR Body: *${pbody}* + +PR By: ${ghactor} + +[Link to Issue](https://github.com/${repo}/pull/${pnum}) +[Link to Repo ](https://github.com/${repo}/) +[Build log here](https://github.com/${repo}/commit/${sha}/checks)` + default: +// switch statement for Pushes + return ` +⬆️⇅⬆️⇅ + +ID: ${ghwrkflw} + +Action was a *${ipstatus}!* + +\`Repository: ${repo}\` + +On: *${ghevent}* + +By: *${ghactor}* + +Tag: ${process.env.GITHUB_REF} + +[Link to Repo ](https://github.com/${repo}/) + ` + } +} +// assigning the output to a variable +const output = evresp(ghevent) +// sending the message +bot.sendMessage(chatid,output,{parse_mode : "Markdown"}) +``` + + +------ + +You can try out many different items using actions and this is just a sample action to get you started. Maybe sending Cat GIFs if the build succeded on the pull request or sending a welcome message to a first time contributor. You imagination is the limit😄 and **Never Stop being ⚡️** \ No newline at end of file diff --git a/index.Rmd b/index.Rmd new file mode 100644 index 0000000..6d70c4b --- /dev/null +++ b/index.Rmd @@ -0,0 +1,5 @@ +--- +site: blogdown:::blogdown_site +--- + + diff --git a/layouts/shortcodes/blogdown/postref.html b/layouts/shortcodes/blogdown/postref.html new file mode 100644 index 0000000..858ad3e --- /dev/null +++ b/layouts/shortcodes/blogdown/postref.html @@ -0,0 +1 @@ +{{ if eq (getenv "HUGO_BLOGDOWN_POST_RELREF") "true" }}{{ .Page.RelPermalink }}{{ else }}{{ .Page.Permalink }}{{ end }} \ No newline at end of file diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 0000000..941e700 --- /dev/null +++ b/netlify.toml @@ -0,0 +1,17 @@ +[build] +command = 'hugo' +publish = 'public' + +[build.environment] +HUGO_VERSION = '0.128.2' + +[context] +[context.branch-deploy] +command = 'hugo -F -b $DEPLOY_PRIME_URL' + +[context.deploy-preview] +command = 'hugo -F -b $DEPLOY_PRIME_URL' + +[context.production] +[context.production.environment] +HUGO_ENV = 'production' diff --git a/public/about-hugo/index.html b/public/about-hugo/index.html new file mode 100644 index 0000000..dc16752 --- /dev/null +++ b/public/about-hugo/index.html @@ -0,0 +1,10 @@ + + + + http://localhost:4321/about/ + + + + + + diff --git a/public/about-us/index.html b/public/about-us/index.html new file mode 100644 index 0000000..dc16752 --- /dev/null +++ b/public/about-us/index.html @@ -0,0 +1,10 @@ + + + + http://localhost:4321/about/ + + + + + + diff --git a/public/about/index.html b/public/about/index.html new file mode 100644 index 0000000..5d58c10 --- /dev/null +++ b/public/about/index.html @@ -0,0 +1,101 @@ + + + + About - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ +
+
+
+

About

+
Posted on Feb 28, 2019
+
+ + +
+

Written in Go, Hugo is an open source static site generator available under the Apache Licence 2.0. Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows.

+

Hugo makes use of a variety of open source projects including:

+ +

Hugo is ideal for blogs, corporate websites, creative portfolios, online magazines, single page applications or even a website with thousands of pages.

+

Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases.

+

Websites built with Hugo are extremelly fast, secure and can be deployed anywhere including, AWS, GitHub Pages, Heroku, Netlify and any other hosting provider.

+

Learn more and contribute on GitHub.

+ +
+ + +
+
+ +
+ + diff --git a/public/archives/index.html b/public/archives/index.html new file mode 100644 index 0000000..fbf3ed3 --- /dev/null +++ b/public/archives/index.html @@ -0,0 +1,88 @@ + + + + - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ +
+
+
+

+
Posted on May 28, 2019
+
+ + +
+ +
+ + +
+
+ +
+ + diff --git a/public/categories/index.html b/public/categories/index.html new file mode 100644 index 0000000..31ce601 --- /dev/null +++ b/public/categories/index.html @@ -0,0 +1,82 @@ + + + + Categories - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ +

All tags

+ + + + + + + + +
+
    + +
+
+ +
+ + diff --git a/public/categories/index.xml b/public/categories/index.xml new file mode 100644 index 0000000..1cd275b --- /dev/null +++ b/public/categories/index.xml @@ -0,0 +1,12 @@ + + + + Categories on Archie + http://localhost:4321/categories/ + Recent content in Categories on Archie + Hugo + en-us + © Athul + + + diff --git a/public/contact/index.html b/public/contact/index.html new file mode 100644 index 0000000..dc16752 --- /dev/null +++ b/public/contact/index.html @@ -0,0 +1,10 @@ + + + + http://localhost:4321/about/ + + + + + + diff --git a/public/css/dark.726cd11ca6eb7c4f7d48eb420354f814e5c1b94281aaf8fd0511c1319f7f78a4.css b/public/css/dark.726cd11ca6eb7c4f7d48eb420354f814e5c1b94281aaf8fd0511c1319f7f78a4.css new file mode 100644 index 0000000..f93adf1 --- /dev/null +++ b/public/css/dark.726cd11ca6eb7c4f7d48eb420354f814e5c1b94281aaf8fd0511c1319f7f78a4.css @@ -0,0 +1,159 @@ +body { + color: white; + background-color: #202124; +} + +::-moz-selection { + background: blue; + color: #fff; + text-shadow: none; +} + +::selection { + background: red; + color: #fff; + text-shadow: none; +} + +hr { + border-top: 3px dotted blue; +} +code { + background-color: lightblue; + color: black; + text-decoration: bold; + padding: 0.1em 0.2em; +} +pre { + background-color: #272822; + line-height: 1.4; + overflow-x: auto; + padding: 1em; +} +blockquote { + border-color: blue; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + color: #ddd; +} +h1::before { + color: var(--darkMaincolor); + content: "# "; +} +h2::before { + color: var(--darkMaincolor); + content: "## "; +} +h3::before { + color: var(--darkMaincolor); + content: "### "; +} +h4::before { + color: var(--darkMaincolor); + content: "#### "; +} +h5::before { + color: var(--darkMaincolor); + content: "##### "; +} +h6::before { + color: var(--darkMaincolor); + content: "###### "; +} + +a { + border-bottom: 3px solid var(--darkMaincolor); + color: inherit; +} +a:hover { + background-color: var(--darkMaincolor); + color: black; +} + +.site-description a { + color: #ddd; +} +.site-description a:hover { + color: black; +} + +.tags a { + border-bottom: 3px solid var(--darkMaincolor); +} +.tags a:hover { + background-color: var(--darkMaincolor); + color: black; +} + +.site-title a { + color: white; + text-decoration: none !important; +} + +.header nav, +.footer { + border-color: #333; +} + +.highlight { + background-color: #333; +} +.soc:hover { + color: black; +} +.draft-label { + color: var(--darkMaincolor); + background-color: blue; +} +.highlight pre code[class=language-javaScript]::before, +.highlight pre code[class="language-js"]::before { + content: "js"; + background: #f7df1e; + color: black; +} +.highlight pre code[class*='language-yml']::before, +.highlight pre code[class*='language-yaml']::before { + content: 'yaml'; + background: #f71e6a; + color: white; +} +.highlight pre code[class*='language-shell']::before, +.highlight pre code[class*='language-bash']::before, +.highlight pre code[class*='language-sh']::before { + content: 'shell'; + background: green; + color:white +} +.highlight pre code[class*='language-json']::before{ + content: 'json'; + background: dodgerblue; + color: #000000 +} +.highlight pre code[class*='language-python']::before, +.highlight pre code[class*='language-py']::before { + content: 'py'; + background: blue; + color: yellow ; +} +.highlight pre code[class*='language-css']::before{ + content: 'css'; + background: cyan; + color: black ; +} +.highlight pre code[class*='language-go']::before{ + content: 'Go'; + background: cyan; + color: royalblue ; +} +.highlight pre code[class*='language-md']::before, +.highlight pre code[class*='language-md']::before{ + content: 'Markdown'; + background: royalblue; + color: whitesmoke ; +} \ No newline at end of file diff --git a/public/css/fonts.2c2227b81b1970a03e760aa2e6121cd01f87c88586803cbb282aa224720a765f.css b/public/css/fonts.2c2227b81b1970a03e760aa2e6121cd01f87c88586803cbb282aa224720a765f.css new file mode 100644 index 0000000..f758f58 --- /dev/null +++ b/public/css/fonts.2c2227b81b1970a03e760aa2e6121cd01f87c88586803cbb282aa224720a765f.css @@ -0,0 +1,41 @@ +/* fira-sans-regular - latin */ +@font-face { + font-display: swap; + font-family: 'Fira Sans'; + font-style: normal; + font-weight: 400; + src: url('../fonts/fira-sans-v10-latin-regular.eot'); /* IE9 Compat Modes */ + src: local('Fira Sans Regular'), local('FiraSans-Regular'), + url('../fonts/fira-sans-v10-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/fira-sans-v10-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/fira-sans-v10-latin-regular.woff') format('woff'), /* Modern Browsers */ + url('../fonts/fira-sans-v10-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/fira-sans-v10-latin-regular.svg#FiraSans') format('svg'); /* Legacy iOS */ +} +/* roboto-mono-regular - latin */ +@font-face { + font-display: swap; + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + src: url('../fonts/roboto-mono-v12-latin-regular.eot'); /* IE9 Compat Modes */ + src: url('../fonts/roboto-mono-v12-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/roboto-mono-v12-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/roboto-mono-v12-latin-regular.woff') format('woff'), /* Modern Browsers */ + url('../fonts/roboto-mono-v12-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/roboto-mono-v12-latin-regular.svg#RobotoMono') format('svg'); /* Legacy iOS */ +} +/* ibm-plex-mono-500italic - latin */ +@font-face { + font-display: swap; + font-family: 'IBM Plex Mono'; + font-style: italic; + font-weight: 500; + src: url('../fonts/ibm-plex-mono-v6-latin-500italic.eot'); /* IE9 Compat Modes */ + src: local('IBM Plex Mono Medium Italic'), local('IBMPlexMono-MediumItalic'), + url('../fonts/ibm-plex-mono-v6-latin-500italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/ibm-plex-mono-v6-latin-500italic.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/ibm-plex-mono-v6-latin-500italic.woff') format('woff'), /* Modern Browsers */ + url('../fonts/ibm-plex-mono-v6-latin-500italic.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/ibm-plex-mono-v6-latin-500italic.svg#IBMPlexMono') format('svg'); /* Legacy iOS */ +} diff --git a/public/css/main.ac08a4c9714baa859217f92f051deb58df2938ec352b506df655005dcaf98cc0.css b/public/css/main.ac08a4c9714baa859217f92f051deb58df2938ec352b506df655005dcaf98cc0.css new file mode 100644 index 0000000..3a7d1cd --- /dev/null +++ b/public/css/main.ac08a4c9714baa859217f92f051deb58df2938ec352b506df655005dcaf98cc0.css @@ -0,0 +1,333 @@ +/* Markdown */ +:root{ +--maincolor: red; +--bordercl:rebeccapurple; +--callouctcolor:dodgerblue; +--hovercolor:navy; +--darkMaincolor: #50fa7b; +} +html { + color: #232333; + font-family: 'Roboto Mono', monospace; + font-size: 15px; + line-height: 1.6em; +} +body{ + display: block; + margin: 8px; +} +* { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +::selection { + background: var(--maincolor); + color: #fff; +} + +p { + font-family: 'Fira Sans', sans-serif; + line-height: 1.5; +} + +hr { + border: 0; + border-top: 3px dotted var(--bordercl); + margin: 1em 0; +} + +blockquote { + border-left: 3px solid var(--bordercl); + color: #737373; + margin: 0; + padding-left: 1em; +} + +a { + border-bottom: 3px solid var(--maincolor); + color: inherit; + text-decoration: none; +} +a:hover { + background-color: var(--hovercolor); + color: #fff; +} + +ul { + list-style: none; + padding-left: 2ch; +} +ul li { + text-indent: -2ch; +} +ul > li::before { + content: '* '; + font-weight: bold; +} + +/* Images */ +img { + border: 3px solid #ececec; + max-width: 100%; +} + +figure { + box-sizing: border-box; + display: inline-block; + margin: 0; + max-width: 100%; +} + +figure img { + max-height: 500px; +} + +@media screen and (min-width: 600px) { + figure { + padding: 0 40px; + } +} + +figure h4 { + font-size: 1rem; + margin: 0; + margin-bottom: 1em; +} +figure h4::before { + content: '↳ '; +} + +/* Code blocks */ +code { + background-color: #f1f1f1; + padding: .1em .2em; +} + +pre { + background-color: #ececec; + line-height: 1.4; + overflow-x: auto; + padding: 1em; +} + +.highlight pre ::selection { + background: rgba(255, 255, 255, 0.2); + color: inherit; +} + +pre code { + background-color: transparent; + color: inherit; + font-size: 100%; + padding: 0; +} + +/* Containers */ +.content { + margin-bottom: 4em; + margin-left: auto; + margin-right: auto; + max-width: 800px; + padding: 0 1ch; + word-wrap: break-word; +} + +/* Header */ +header { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + margin: 1em 0; + line-height: 2.5em; +} + +header .main { + font-size: 1.5rem; +} +h1, h2, h3, h4, h5, h6 { + font-size: 1.2rem; + margin-top: 2em; +} + +h1::before { color: var(--maincolor); content: '# '; } +h2::before { color: var(--maincolor); content: '## '; } +h3::before { color: var(--maincolor); content: '### '; } +h4::before { color: var(--maincolor); content: '#### '; } +h5::before { color: var(--maincolor); content: '##### '; } +h6::before { color: var(--maincolor); content: '###### '; } + +.meta { + color: #999; + letter-spacing: -0.5px; +} + +/* Footer */ +footer { + display: flex; + align-items: center; + border-top: 0.4rem dotted var(--bordercl); + padding: 2rem 0rem; + margin-top: 2rem; +} +.soc { + display: flex; + align-items: center; + border-bottom: none; +} +.border { + margin-left: 0.5rem; + margin-right: 0.5rem; + border: 1px solid; +} +.footer-info { + padding: var(--footer-padding); +} + +/* Common */ +.title h1 { + margin-bottom: 0; +} + +time { + color: grey; +} + +/* Posts */ +article .title { + margin-bottom: 1em; +} + + +/* Callout */ +.callout { + background-color: var(--callouctcolor); + color: #fff; + padding: 1em; +} + +.callout p { + font-family: 'IBM Plex Mono', monospace; + margin: 0; +} + +.callout a { + border-bottom: 3px solid #fff; +} + +.callout a:hover { + background-color: #fff; + color: var(--callouctcolor); +} + +.site-description { +display: flex; +justify-content: space-between; +} +.tags li::before{ + content: "🏷 "; +} +.tags a{ + border-bottom: 3px solid var(--maincolor); +} +.tags a:hover{ + color:white; + background-color: var(--hovercolor); +} +svg{ + max-height: 15px; +} +.soc:hover{ + color: white; +} +.draft-label{ + color: var(--bordercl); + text-decoration: none; + padding: 2px 4px; + border-radius: 4px; + margin-left: 6px; + background-color: #f9f2f4; +} +.highlight { + position: relative; + -webkit-overflow-scrolling: touch; +} +.highlight pre code[class*="language-"] { + -webkit-overflow-scrolling: touch; +} +.highlight pre code[class*="language-"]::before { + background: black; + border-radius: 0 0 0.25rem 0.25rem; + color: white; + font-size: 12px; + letter-spacing: 0.025rem; + padding: 0.1rem 0.5rem; + position: absolute; + right: 1rem; + text-align: right; + text-transform: uppercase; + top: 0; +} + +.highlight pre code[class=language-javaScript]::before, +.highlight pre code[class="language-js"]::before { +content: "js"; +background: #f7df1e; +color: black; +} +.highlight pre code[class*='language-yml']::before, +.highlight pre code[class*='language-yaml']::before { +content: 'yaml'; +background: #f71e6a; +color: white; +} +.highlight pre code[class*='language-shell']::before, +.highlight pre code[class*='language-bash']::before, +.highlight pre code[class*='language-sh']::before { +content: 'shell'; +background: green; +color:white +} +.highlight pre code[class*='language-json']::before{ +content: 'json'; +background: dodgerblue; + color: #000000 +} +.highlight pre code[class*='language-python']::before, +.highlight pre code[class*='language-py']::before { +content: 'py'; +background: blue; +color: yellow ; +} +.highlight pre code[class*='language-css']::before{ +content: 'css'; +background: cyan; +color: black ; +} +.highlight pre code[class*='language-go']::before{ +content: 'Go'; +background: cyan; +color: royalblue ; +} +.highlight pre code[class*='language-md']::before, +.highlight pre code[class*='language-md']::before{ +content: 'Markdown'; +background: royalblue; +color: whitesmoke ; +} + +/* table */ +table { + border-spacing: 0; + border-collapse: collapse; +} + +table th{ + padding: 6px 13px; + border: 1px solid #dfe2e5; + font-size: large; +} + +table td{ + padding: 6px 13px; + border: 1px solid #dfe2e5; +} diff --git a/public/fonts/fira-sans-v10-latin-regular.eot b/public/fonts/fira-sans-v10-latin-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..7abf4c2f680499a76935acc91681c8bfb0550805 GIT binary patch literal 25059 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/fira-sans-v10-latin-regular.ttf b/public/fonts/fira-sans-v10-latin-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..572e442e3837d91662372d03d3dd55819edb6d00 GIT binary patch literal 54984 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

RZ*{H~sVOolRHl;y;Lo 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 L4TU>HljMH@LtIwx literal 0 HcmV?d00001 diff --git a/public/fonts/fira-sans-v10-latin-regular.woff b/public/fonts/fira-sans-v10-latin-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..d99ba57a35e2939c53310de3518fcb4fab1fb956 GIT binary patch literal 25888 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 literal 0 HcmV?d00001 diff --git a/public/fonts/fira-sans-v10-latin-regular.woff2 b/public/fonts/fira-sans-v10-latin-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9bb576032e1ce51c88f5bfd92670c425f4b11489 GIT binary patch literal 21244 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 TX4m*_A3w(B$xKg)1*2jBzR>Q; literal 0 HcmV?d00001 diff --git a/public/fonts/ibm-plex-mono-v6-latin-500italic.svg b/public/fonts/ibm-plex-mono-v6-latin-500italic.svg new file mode 100644 index 0000000..6423805 --- /dev/null +++ b/public/fonts/ibm-plex-mono-v6-latin-500italic.svg @@ -0,0 +1,365 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/ibm-plex-mono-v6-latin-500italic.ttf b/public/fonts/ibm-plex-mono-v6-latin-500italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e4d1ddf0d20dce9656ee115a40c1988e44862c4d GIT binary patch literal 40032 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�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 literal 0 HcmV?d00001 diff --git a/public/fonts/ibm-plex-mono-v6-latin-500italic.woff b/public/fonts/ibm-plex-mono-v6-latin-500italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..4504b4135cf2596a93849e9a2b62d402ca984d9d GIT binary patch literal 19900 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 E0GyIn2ZU={X41-u3 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 Zu*D#1Vm$I63(p*5oVzHX|99}`{{US2? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/roboto-mono-v12-latin-regular.ttf b/public/fonts/roboto-mono-v12-latin-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d5dee83ec67c40a30de82a1af6e01d1d7c4d5616 GIT binary patch literal 22224 zcmb`v2Yggj+Ax04y))^_v`p{4_e@PDGwHoT3OxyF5FmjNst8hSfC!2pO;Axl5KvKq zWmVL75zDT+>*~5LZu8xD-PLuQO6KPO+&hyntn2^xe&6q#$z<+*?kUfC&U2o6&R__` zusm!NMqpi4Gule;<8KyVSbH--{Y^8Ro|W&mti-Su2Hbbem{~IO^O3h4@cd4=uU@#c zdnEW((bw?27sGJ>K=w!!m5aG#FhSPOnv!I=S5oN=qHpvf={ZPR#>YIDUq)-mJDBIbYes92;cMb|0&Px1y)LLH#Vl9| z!@O$0Kj8Np3k*hs!RVuJ0)F~N%~J~mLV+MXKP^2iEnUswcDgq{C1fn@HyEtQX)+Cl$=}BP116)>Wi<8{prEhdP=CpY-CUka z2n!7Q`Jw(jPNyABe2eSUny%tVms+hy_+#i@B$3M6BcXP=LWwYh4NZQ*n8$n#i^6!d zfKXbRRzo9dF!+20)F|N3>!DB}BG!W>~>#c69bw%mm>EcM4*KS{5U45kGYRi%8>UDOzw=7b066Wk6(0&AH z&&RCOlm~2lJ{ns<*r*mJXiSZPPmhrzz4jn#S#+Vge3?$GM@GH*u352tZRFV(_ExNP zmd=s#`3U9b3!D7jEzNt8%Whp)SADu`sP|lL$2PM!-8;vszrGrLOkjv$uJT}{7F!YyJ3>x%~?B_BYW3kiybMFrq&XiH}rc^3s7ZvTB zJ?r60bN!ES!69;7ZO+NbK*(+|^ag`tfhYVcgTX$7!EQAehNAt)3&T;r!@04x_E^iw z)?+obw>q3Ygv=IE35;ncj6a&7n3|*IP#-V+XGG7&pLp^~yp4G-ehZ zP+pNJ&*KAy`3V|7iQ32~h!OG;G>>`i*!A53kco&Q3jrdDfNu~AYk&U?>tBmeF6)^; zOk$KY!YlB)IFn$Y)1c3i`n%59`c0y`rWC$F#(o5*z{nqZ^4O(w1Ow&+OT| zgTWSwRE$6pNm_%!-ARZ<{4C1OV>z|Dg(W3DIvpiJ5R5O+rPKAq5|F$ceCuP4M{8?u zbGZTmm;1Kb+J_n+YdkUqaBTv>KTi~_2mt#T9S)gv*4D=Zd4!gnF7YHtg zky5K}El`GyDPg1udF@NcYc&vds^5IDAI(Zhj27>9Ydh6j;JuU}kRI-t`TL4o4f{K+iF4xpIdRys2rx__RoOo>z*uY<&uNS>p}>(c87D$0S! z-BSWu-(Oxq-{)oH`!+QnudmUb_K4r_r)b@}A9o;~R=23K zv`-6i9C&^e@bDs_bq(}OE7kw7+>>Y|geI-!{)39+=hIq`mJ-B?0<(FMzkJkY3ueAZ zG?dm}8SHqnqN1avwCv#)_psAd3~Jff=PO-gFgP+^!duJB&n;*_RaQ1*Mrp}I4ZcyA zD}qLfI%IOGUawnJKL5c`X{Fok+SAj0zc)}NW|m{m1ClXPDe0N51t8XYPeX1XNsRCR!LN6I0T_{s2-H5a}?-;uJI{A`-Prm#Hh?mPXRg5T< zh1p;nfwF*}7fdQ4&&$&i=|(_@`uE*SPi1GFfARd;MQPdRkDbd-TXc?*T^zaocfdeU zR7m^@{)dS#pq&nAXBV_X=~w8I61bGi#g~(BeuN$;8-Iz)Q0XtoCiM8n#28)}cf>V# zW&9HUDgGYRjzDc{)dR*ZxsecLbOrt)KGBE&IBvy>%ZC}a?>ut-)_Xx-qq~ZbEm^@5853o3N=xo zP^OT|8r^L+oBj4#R+k~p&T`?voNl*Gz``i*NyG*K}aQsvz*CcR^Rz?=tA|29v z{&-F<+iz0TJ6z2wm7B|PtCY9= zsd05(Xvm0&zZ9-08D+!@TZ-@pxgLyfCi`dM62j zcOj^K&XoBryn!#+G>Nsny*L!DOj?Yi%Qhdje5BtK znv7;(K5Rd%$)PkW2Ep-ACE*|L-X56}XA3M*>4zIq8ABNu2js_tmEklA)eS(U*4}$D*1U2re`zLGr?;(JXpUAM!$n>XUOT5+;r0{02?Qaf}}i6 zPvLtXN1L94LCPFKp;XgzM^P|vbYWq?Me5|6^oGTy`dYodTGOQ;2nLo|`cFiP%1&hR ztRmaelD?zCVBxr$nng#wQt9GyT?%D`i<(RI)Le>%ER$$njxh!1>+5nPooUm`+)Y08(?Bo~WV3Tk5{WsN&0>U)#nX=- zB@Q5&y{O18w&a1Enai?3+wYTgL?^T@$0$Yt-I%KWZ=R^>{(xDK6)iGqG;<5`+!AR4 zCs*tc%EHRt!vTNjeSeUC`JvZ|u7*V_l@#HKN$h8&<2W7)_>T@UN|4+hiP-JYD8-%U zV0?>#lK<`vps&%+KauI^+0V$sYcE|w-;(M0YIK=Aw3#^l9fnp>b!pl_UC=f+C^Jom zH0;>*lA}kNT~Kl!^s)lD6Ji~-UyveP>FFv+#2gYv&A&}xl0{)M5%Ji$G+r*ptyb7s zY}Pq~%VxXON++AeKBv1IN}i;`T0f*_gs;Cr%wx;IjAXGn1)7PU5tg(} zrr6A8K}`zqbHda(s#B>^K8IxzicNW39*RLgB*9^3z!*5p>rGV#|Bjte`{X#!tI&6P z3+Jemssw*Um%CIUQSM_zhBhn^%VkPsZ#D4N*(Ha)UKi4;_#w?vio4c<%xZ;R#FS)D zk)2dHAVsF%v@$`!r$Ia*v7XnJ$D+@Tu6Q;UEiaG8sHq{C6%7reM%v9Dt#4Qf z7r0R{_G1vFGiz&qJSG?encCJ?TYF`@plNp?P*M^I>~0b?!(}W6mlSSi$Sy_{aFb)O z5O`irs^CaPF5Rd_sVEs!sdZ*N-yyLM756{n2iEih{}m2c6a|9JllVtkoo=MT)ufWy zI6RL^USn+>(d)Ei7oH)|vqTa=^vX*9+N(7+tzr?|E?X7eU>N2RE?HVo@@+9`RK&&xB3<0SLrA&^}nQBro@8w`~4c|5N&{y*vfkCP81z85$P zfu+T81Fn3yfzXuENIA;W3j$OEF}iBJ6lI*d#0}`p%gTM-ez9zr(Ks+my8HSY__LlC znM$3Vb0LRvvS~|)vf!ZAo4p6x8Aw=ZiPu_2$QTvqGs zGMaph@n})u>1ACHhr=ZyzyC;Y{X)4yq)^Cb6^7=hRJ!pELA?xP#G2oBr1udOk1_y;VAG}t)r!7 zeR_kR$I=S~J{Z|Our|!h810WisDToX6mChw(?|>V#3JxfS{3iTME(xRd=AHkYHNql zSSplod4pMgG= zj4%d9B@7r^@&R?yF%Af>}!$9WYnU+yKV8qAa*Cd(H8P0a+y}MvJ>AH z->~*fFzB1r3~l$oy!S!dH+dh*ooM_;@~2!5`Q}Sd`6p#%gbT`o1;cn8%7XWy{=WBt z1bZHr%1-Y2!=r1Y^3$u&NCme(itjsdBEEUs1HewYU&!my>mjZGZSU ziV87nMl6;>9v|xo$J=JC5-T7F0 zJO{Sg-}?``jb?*EKU__sp(Ab`1fO-oHR!yojRm9p2_T;a-WjM&h;A|YdJd7sihqPQ zFwcE(a`*KjiV|%=2`fYcAd3J@of?Elnu#~LWC^DQ@fp^*9^DaGXwcgtq0sSx5o$b_ zv^wojP0<34S}Tx9+GC`4A39OAwzzm>Nyq(uf22ARd1P++GNZv_)@m2{Z8IFsWmWON zYy&LjPkups3s`{nj`&HfoI*OEHf1R$r3)>=QuP8z7k|>u1yPfzjc(ssF={s1jXGU_ zG)je=#%qd;Pj>a3EH17T%H#{G3fmwa6bpwR?&&*TSXgoiDA-*XS)fvD!0R8XB-{_E z)ar%h6@40wTBlae4|P3IP~Zp4=19M%-{GhgitDVF*_OToF!fP?;Jz85xoWjmsZ@2B z1mMa*X|_6`@c_(279FRA;3OTE@B+CZta|A6_)2{L_|=K?=!^pWk@&9()>86G)VdFU zFc^0NZJr12Yl7OaMtQ<%xjj8ZaL-Z$wKpijgZcdGez8+3Ept>Z(d&&`jkdpZY%k|r zR#S20$gGv8L&0DX2-Ci%HC8j;6zAg~8w8r1oLrC9wyL~toz>>tbW7iUkH=F}5_@WJ z*)y?dr9q6gK0}RZCt#&#p2v(>4CajH75pYw@CG8VauaBKiG&N3IXdNjCI-P4{)$46G55$Z1b`?A7rBVgO z`y((f5W}I?M?wgA8PyXeB0v84tIX=bhrjz8*8X{#`mbS5h~_MSa^Kfrv|vg#0a6*1 zNF8emfBq1h;V2D57-QbyU?`@LN*i6l*(#N$I$C_Pr|U$txJIi|&j~_2z~$d(*6I5r zF^Z>Y?v6l=(yRg7a<)GnbtV&ZgAWAfQcbE=b3&ncz~6ec zW-i4AdnYGBXHs$75|E@?Sh}zTxi{I8sgwyM!Zp0q5Khu7rm2X=c)Vw>SFNfpEe#$Y z895oG`QY%9-~ywuSj2Qygr09HTc}d2bXrYsNeCj=c21$*FzeCd3!As1wv%P6zicj_ z(NbRV+(0J;AKQfa`91|c_jFyP41H4Qa;=Y5Z*bTPf(5?)-9=6aC@3+6HscTC|71Q% za{(nK104LHT=K|=_=5z0Y*Q%yIFu>E4-$_tpQofGa0*Bn_)BH*{~&wP5ubRBTz=MC zB@s*MaCgP9(P%ls<${?dce2@R9zV}4A+O;FH|;i7X*E@*K!;MPHfwcVez}{&&1bW~ zZRI;<;OLTnT>@B?;k$^3n3w*aOG!L$roAE`0!nOdNT&_)*xVyti+Ly%8?l(3`Fw6b zC$+IfVyn@(Bvv$NFxn62W^;mCm7Bxi3WZ#+lF_#^Uy!R4iHvz{E|;CB<3~CnkgJr- z+k^Uukgv+hl5s?Z>cC7n&|D^O^>XA{Ty9=&o>3^XdZ?QVS ziJD*JYE%fcxkUCAt(TpX!{zcTY&$ZHVo4$XioMf?!sUY?cr;37yEjLu2SRbcol_UU zXgWg$Gvtu&6!G%3T#37n&B|8g3k)o-U@2FZ$Kp^UW8+T|FTluXuM2z^fpE&KylJKU zu-ApyF1u}GbJMLho6~8tZ)}1qyXz5Xr_63I6AFaTV42NP4gkj37>GK%$78pxuO6#e zZ?}0oHv9UQ#>`bxi9#WfR++~vRTAn_QU&r&2Qu&hkmG5X8=|sQbc0#}KfvVQ(?027 zR3IZlqiph(SBZ1vgNKbVp-==V^#z5+y;`0A9t5Ovt0d+;7CVoXYm$<2@|QTiB0h=# z34deJs5k!GIDd4DHl|d@bnYgpOrck*+uc$dhsDXu$=H~yOnkhWMmCcd4CdzM7^Qq&F04~_wu&2Q5=%ugiKNk^E9A2!8JS|1z^8E6OT-eHSW@fY$g*?u zSa~^Wp3sn+ojcKyoCTbUE;60~-N~YT2A`S$YlHg0eh@W};PDtwkOvWRkniEBCH_ME zCvU7re)QeH@O?OMANp`VBzU{Yhj14DYP=Y@&#aWoBf_g&enBAI^stFE>}7b!WCHD?1OVrTH$2ET(J! zpP6^LT|R*zN5$i7bMkpsqiMJz11dlalPf5--0ybSZ)>SoZZz3Mpzq{T8&@WOK*Y}v zD6I_&xwfP+=zg0Z%vpvva@`W!OS&3~b+2 zxe3C4T82)s2`&7AQ+z+nCcM;W1T>HgZGmr@aO}}kh(1vcxWQq!**486n5E|%*(_bY zp*!TNS19b909z*%hP84Bm#4_eV4^n-M$_6E)@F^s$YJUD`niGDO;(%z5|_sFbARvBX#<{S!zVq!>#iUj&Rsk}52IYs{Tjj~a*+37InyQQ)c?Hjgc zjXWx0^BiXLC|;shC>t$p3{6yOZxpatFy}QuSqt;8kUxP8B?=g+l|+Sq(}fTU5l+v1 zik<>WfU3e#s)7Yt!3s(^T0lXf;r*IFM0YiZ93AE_Yfx74Y+>lZ&P7j`l-5+2mRwj; zwJ8wo(TJsEK-3Q{ILts;*yf$=!G%zPl(?*3K?j~6|86^|3q(N z3q?c0L-Xbx3I(J4VTZ&*zpqDcuv7Lg9kWamBx05*)gnynaY1E zMd1^Uj|+VYYky(?A-~T*uF-0j)q7eYWXa_^70M=O1MJ4qKzff3QwoJ_s}!&QrWVhZ zm{|fL6~VkK5wjEvAV!R*sr)>?kd9d*>?G`sss~(Q51$(1f2m$JOkZMkQEMW_W1+cX z+E$@mA8LWo0w8s;d=BbHs~4)GVv!=B#n!Rd`3{YyS);MT7PxY!rb4OmaV`1fW>crR zext+TwI`k$MIuws?cQA1c5i{NkP$ujC@7vfk0B~o1mucRWBGvDQl-&0I1Mq8NXp8| zmS!JhOER;vEf&kIZ6&>CbEQ^W>+m#KEJIE08!Z-dw5aIZ$n{rX>am9>U5tvfLm1?z zQX`egSb`7?g%mR$hBZC1BxMr2`HVhoLPbmy2xvrX2bXKG#M^5$dB#fvfnAMzJ9c?I zfj~jQ1M?e}YP2f3OtBzVI9H`qUqnSA+nSoaE!!MUZ`kj9U|#JKjYf%92Ral=l}xQ3 zp1J&CpFf!Kqn9&_Jnp+YX5H@f)+;3em8#L>ouN?c947PfveENJ_E6R*pJWw#ym!u= zb!UOEUM>o$)eSJx`zEs?3vZxyR{n6d_QpVxBbg#VAepn>_`RI1&*j?MJl?h2<${eE zuH9YZHCx>7@DF8eYc_km6*-^&hP$w;`s@PBf^$_>3%P&#@0?PXb1at3-Xd%{tj}9O z-$4EWl&+eXRwlrCH-(3J;7tl?UQE~W)qzCT)Cc=B3(1!=^eWXXud73&HeRBfxvs89 z3k%CKj~>s+$j;VF>lkS$uE^!3XJ_Lp_9JH5kX~n$%H*@69rt*>5c3E<+)rNL{~J|{ zP9IF)w~uEN>1R-`9VIhps|KvfWbTwQX<+Au7Pf965FXSUPa8+u$o24f6&?S8e93`3 z$d^7q$H~{wE#y{o3#wdmaxMOo`1!VWyfN-tdvXm(ih;@BGxjio5M71{qFzYtV4_wK zEqtlyi7{Q6ScK`q0KMW+DrHjEB=N}5)|EPw&2-DwHAVL}H}5JM+p@-DGZ{v<3>NQg zYkMI66OYZhx}stgfZllmEcq0(nY+rAOyJQ!|73Q2Dze2<0)dZvjo%QIbe)Pr3G?JPbj#t zdiD;t+v|2XZ=YFECl(1+N?A*RXST^)t96v=^z+D#Q^Urwx5zaNjM0$9T$^Cw?*)kh zi3iDq0zKD>;iY1Ze=ts@XQ<@%IXb-)A~g?ockB%WqG;TpRJB-x9Wtp@E0dNg-GwYx z=Fh_+ikhJ?e#}@Tk$U9Tg~8CKB<4;Bg}F#9R4QbxKJRR^xlU^@)9L1-%|LJm5FX+S zJ>)sqM*B-TDh^@~Fc-ouvMpCkuF>ZC)^ks{9jS~~K~Nc?uO|OY*jjAgH)ZjA*X*0><21=GR+;pv-q_{9SB1(x7_zYqK?-? z*Li{bDgHk88C6GrQ=Rw6oz6v;7}TlXyRZHJ${O7~k7oepzJ|dfjsa#ytbY=+_%P@F z*uyke*cs`>4(Q(qvb2kSGC=Ju1`0UIcZosl*U$@a%T4{<0b9 zfPdIyG`AS^)S-U2NmcUk^ZrO76yrSqs^X7iMA#d|< z<`14Nv6PF}$$Ba(o*G&*LE#Vs99oh%B-oiUWfGe?0Gk{3IklEyw&0Iwaq8d{fq%qf zR9C94t@3=eSSYB_8`~{L&v3v`<4}?H;6D~EeX^>eN48wr;4L}3tl^V8@>c(JcK0JC zu^#1eS$Ac{`6WX%4yVW;6aKVKFjo}6g9oYQ5Potc+VLyqfA9aMdVkuT6sCKjlqOk< z56MnQf}p*heu{RcZQB3sn*He)p-dUMhxj}#LdRJH36qT4WKDY?H1-KLrADO%(-OV~ zFi7G(esPOPoR5~RTsfR0;I~!t`|hzht#|F*d6&cPyocN~ipM}1QS-M8&Vo9{i@{77lV%oH5_u;dano0>>p!u?5-IYHwj3ZT4Uc9Yab zW&ECdoDLf#k%p>U$J9ch-D}_8onJjuz|VEK#APO9iNx*Xi^Q$hNAdQuvPYUvR`zSO zYP8$xRL?0oHS=^uq@Dnz-JV+_ry93;ApXj>NZhwKoh)AO_QU|o9oU0JjG&@ma03}7 zT= z&(abVGS6VV{X&{EQ3m}-jvS%|-Wg4~F1JAsBQ6E6}SRO)v>B!iFapE#9}ofoio7-7aj3J;zT zp#Y-7c9pT6k4coF@T+C612E}nSQ7Kzy4g0f1^prs58 zaR%B>@H(H8?+nYt7GeW@a*iD%yN@0P>YTz}BfewQQMq@$Pj3w9eUJ_KE`G@8!+R&r zz4qD{T+Uaok+<)G$-|z)UT5eT^;Fpaf^tk@I`b)FbYdrdM^RCH?dxd$9<=U9U-3A9 zr%JzwRuk6=6|D{ESt71ayozr_tI^40g^W75&>BrI6oo6gs7~u)v+`hz78Lcswk~ob9vF^a zVVr6R^+RsM4rd}l4WR)eb!i;9y+K(h6iB54VWF}?84?JkQlTIe&u_d@7%mfq`|oH} zh7*OuO1MlE4x1Ud#n=CaAzVhTz|SXWPwgVa&+jEyq!)klDy73F$*=K?^fQXHKs*MZ z1X!-{BEKet=kb5WvncMK4KuI>qGDdiDldeRH<^(Mg)`;9rc6arN+rx5{SSB+#*~0h z>O2zjmqE6~uQ!BvJTAmALk7K{!)7m2$f#YTU23%s660OP#a$}7B0i(MsOXUe^B*ZH zDyOdIFQBeETC1xrFQ;~{wzgJPzq)+r)#{pd^t{%~;c_4kQEBcpL6%GbcV3Nurb4Z; z8I4259nr-GqfM=nw;$+!A{MKuiN&7i?l~PRsjDrCo#`2SyS|~bv!VX&v9Y)6>pExD z*1ikbfexV0Ca}JRkg<(WyOel8Fshp(#wq@l-YfJHw3nf!qDMZUW+Eh#{_mq$ez~f; zwc|gH7d38Jv+Tao$}LOZ9~!JF;<4B^5iT2hyRN>ov%U@xe!ITDqoW>Bhv7tPYND~z zJv}hQ+FBT*HI9^m#$fk?_%<~E1zUix%E`__l=K-O_R+iTbKukn_+r2$1VP~lhn_$T zdEtuq)$Eabca6;6UO?_AZ@q60Q%$bI#pH6dEB-mUi(HL<+|oh@(T^#PTSUA}^niy& zQ3@g?lp;-<#VL&QLsUYG%v#O70`DA+#$?iH=6DO{!QPcy_*{-lDs^x<5a8rGq*51$ z%V)gohi4{}Rx{t{TcFdLA;Y=ACv$VT`T1O~TPAgKfTVZPfLHagc{COfJTCk7vKS&n!qnN?`od-O~rq|-MXul{D%7XTZC7T z|N0W(k_wbjfew)U=)hg5XFEDdc2S@0N*azJFX1mWz#0f38g^5NB;ie_)27i7wG(b(WYnjM$Y%WNLS@b4$fPCT zo^Pv{NtHH}d1Y1WR;Sa;Ve!Ixox4S;Gof>lxv(`Qo5L>l$WWQcE7dn21v9F|sxE*8 zMrL-lNjWAq_xzGii~!O-C=9To2g!J zpXZV2>n)xYz5!sTj&f##0KbWedQk9f12q}avp~%6Xrz=;By)Z|y z$!{3jnNMN!spvkUPyf<-15Z!mPV-{Ya!$C(3F0NhTY_FmIB!bjq^I3r<3LLAl}VGG zs!60)WZVJ!u}WTAx8dFT<^^fY!m`r$?^9K4wK1_u;8!S$6(h%eJ{OZwTNZt&8#exU zJq(l&0#MJEWoBg&Hc4k$)he4kn3={A3aZ_jVyVE$P8YEFVO?#%TBVA&W~imoCLc?l zXF%DKJYhf~(q?C85d3}r>g-&wqIVH_?dXH#6Hx%diw8&H3lsZl4fnOq}3Y=r-vS!3md@B@tz<)!OZMHmP-CzL_$vm)F&d8ja@hifHWF6-%Fq z#i|r?wo$0?|`gBRGN-To2E^;s5 zY>WS}>bCTzAYY={NJ~e2%Fvvfy^eO7ld|qaJF+*BtkF z?QW;@&d%_Bz08@PtKpdjQ3YGh%8}$LYFwr=alSk=Pn641arB)v=5h&7nvn;tD#G3e z(eV?IQ*4ZmH_~QP(l+uEf=lF=tDcKSOG={A=T>zv&s7yipXlp94O`c!x}W36iQhwA zup8l=Rsc?nA?@dOU47(Ln1)wR!>?j@pgGg<8|B}@SSfJWB%N&M%H)G+_H_B})9`n(JoM-^ymcD>7Iq)% z2KW%!K%MvpI2=C*|LP}xh)E^RtX zQ`jfq6qX72mC0RbHil2W4jPL(E6Agw3CZ6_2qX^}!{$xCm-4EU$Mh2kiF7UJ6l&T3 z<&4%2ggRPhe7T=I`}^Oc{h#bzbs7$3fbSFxonEyUEu7W)uLp)6_}8q?g?Rk7efz-X zZ?33(ad_$QOO=%^2qyrmC!u!*JvuNl>Csiuqf5Z4(Iwzlu^M_5|6cx`$@fy=)aVlB zuT0LN=U^AKUz|?S8hk=%|1E3@O>6o*b-EAWumb3Q??Mn8Oq{b$pEnJ^ifu%;Jd)l90?X|NRpS-knhpbDD|b;@c?ROi*!Pdh~B$`_L+Y z)2Ce1^8qeMQuh&5Hw`bEhF`^wqo!&2jq>kc_7u2qy8M;N=TIY*r>v~C=}Lf0lI<@? z?Et4wc``o*xGV|34dYM2)6%BlSFtUacnUsUJ`H;(`v&y0Wa%{Q%3je_*|eHz=(|}x z(@^$w%WuKSekH(n!CHoMi~xrXpVV5eqv%DS+++S4peh>r<}HFLXj=L-^y;mWDQHUB zchYV^e=}Y7%DoiESAiaF%qsx>S#sQ`sJLMg{?}>vRftBh!?<6X zTA}7NYJ_GQ=eO2V(3GP%O+57|1ULf@8j?iXNl^!7y9OC z-@ZSepK_px!;0624lhp}DS{KQ=LH2aILbOTZklq`2r1dKmF5ll>;>~p7&#TiPs83E zLr^*a{dyXDbv1JudZR2z^J(bY(`B#RMa>_5hJkLkfbQ>2>@JLI`DQrGHjfET&O?kJ z5q4%GS3qcag#GNVzhV3cWs&~`RgDh7Q_s{>FTz_d?m#)rE95^>7HIWX7{4PF%s*2W z0Q??KI^PSP2BG+7ffHUms+d?Gx+ z$;~tHjU`G|nZ;2DhouKm$R@Sr^WZ>nf!Yo`sFlq36+$zM#Z`b05BaDWc9EkbFDqLN zo0oJ-MJr&Bm}=rG=(MRk$kn)?son+Wr;w8I6>$Q*rEKs%Dc=(WFZe`&4>RQ&DZ!4U zBXj7! z+7eH=Og=O=K5kx717@<=#>;&CQnpH4T{-|13Pn5HT;`I1w?m zag#a`aob5UK%loC*%v>J7y@D#pBdjVe|-E_G}lJ1q59bfF`f|kG;mH30w45yI-~_z zgCtw?!DymC(;kX(YM+y8be@X_)D;Qx^~(ro${&D=^29ki#{G?OKD9~#zv43xGsk4|fD&93wsGaDQxm5djI6sDl=MozAjbtE zC%8}MGU2|P&VePffN(!R7ll&THS9cC7&>8DB9om@4KD=HJsw({4|DFP)iwOZxfrUuUQ@ zq8T$Y&SYH6bYyPL{5T6`Ez3HQ_4BMRvN_qV?B4A4*&k;AF~^p3Fy~S(Gj||&ZC*y+ z;=Eh(e#COH4zm8pE@h8#m>e7Dk6b_Zx4ahKoxD%;+w-sT)%+3uVg9!Qp};5DBluFt z5K4pwp;uTgoFlwlc%Sg7@Qm=1@J-?GgrrC$a*K*Zb)waxjiNh5SH#(3h1extA%0!_ zk@(LNrUdqYOIjtHB=<{BNnVk>C;3eBl@yacBt0X2Mb;wwk?aq0mwcvtr^2B4NO?l} zhVm1YMdeqOsv1?ZRsE_Jstu~URC`s&RA*FQsJ>A%)NHj(ZBiGgW9oW!r~0b;L-lXf zU#hQb(ltDdQe)NlH6@yQO{Zp|W|?NKW~*kG=Ahh)ZtpOR}gd9DK zAj?KvLj?<1MgPFELE*sbwXZl1>igqgM4y;o#($Pp1zb;^&Zhi0cro6lzgocB8G>IS zdlr6Es26_C>Pa}6cp84$>3*=$76WWP{1(nCIMc8lEc6=K0UUu}6*+{Rg{Rwrr}kqz zpvG13l+VHcd2qcBJA>_jQ>|yQd$4DqEf<_QEXR&wyWzZB8?;u3JrBK%08j3P^mh^b z-iZvcVV}DTb|9!=&tntjfPPLuD<>hdd>`ycQey+?59n*a3wbHJ%3RKAC(|G)lay=orp+pvrb=<50?b z7tks3z6vy=-V~K?yq^I&QSWlB96bc1dIh^1l(P~YK-3I}|_@cbD zkLjndqBDBpV9zq%o?w!wrIUw!ULp0irTK}yTo=T*W(XDt?q5sgzYk(Da z_LHx`=XtosCLblgA+;nk{*U-q*FL!R&b7C%HC=1G)^IIyEpRP-tq{KZt~q|)_i5j! zi_s^ri-8(nDSYO`XAnLkusZ(FU)0IYKJ0F+8TQj}hjq6M8wNXc73{I;1}bfY5zfVK zfiZ3XPTT=~Y=U*L3#fMmR^Jxj;d`-PVeP=1t=LR#23X8Hv3Ia-uowG1pzf#G?bzGc zo!A>=RaW7u(6fsbI1V~>J@pJEtMH*aYkS4Dj(&u+GoJdVLyu4mkJ%tdHlh zi`Y0uoq~D+dl^>QOW3Qha@PS@zkyxGUc+9;{tJFZ?8g{(5lwD8$Jj~HE(h=c&S6k| z2*($b*9f#0l_#d)IGoLVGkHw_5Bwr|4JSbmH+jv(Bq*4?PQ!GlHF=$f&4eGQpxc4T z%R$L@P&QouJPFUc(LUk;{5L?$VW9h3p!XusrGsF@sW1=lA9W5#1ymn|`BMS?he5^- z!_#57Yk>dMOsZgBSHSmTD6^2RSprtrN~kjo@KJbfqFY=EJ&eL=obVoiey9>-(4GTo z4P#4b=rCLjU`wE-ez;l&Wkvx`wLaDFQW`!Cp67qYrWNWAK)XwTw^o47R4|s)ed#2F)pI9Ql<2lTK|Xopy*6dB|($bAhlNmzTE)n z2AWVbcR;%0Y@E zG#P`ce8X0wn}Yh_2jXy@Pyg3p`09bdl~i+!R(3A|UIaN!%TJJ|C=cW{hQ9z0DS3(m KM^Y~+{Qm&}HGy~l literal 0 HcmV?d00001 diff --git a/public/fonts/roboto-mono-v12-latin-regular.woff b/public/fonts/roboto-mono-v12-latin-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..f319fbfa46a9c546ad2b4f68e2b6f9267cdfc5d8 GIT binary patch literal 15160 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 literal 0 HcmV?d00001 diff --git a/public/fonts/roboto-mono-v12-latin-regular.woff2 b/public/fonts/roboto-mono-v12-latin-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ed384d22fd9f566df41a3a37de9f614adc7f630b GIT binary patch literal 12312 zcmV+zFz3&APew8T0RR9105BK;4gdfE09Tv<0581&0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..5c65ff1 --- /dev/null +++ b/public/index.html @@ -0,0 +1,175 @@ + + + + + Archie | Home + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+
+
+ Archie +
+ +
+ + +
+

Minimal and Clean blog theme for Hugo

+ + + +
+

Telegram Bot for GitHub Actions

+ +
+ + Make a Telegram bot with Node.js and use it with GitHub Actions for sending notifications to you about the repo. + +
+ Read more ⟶ +
+ +
+

Primer: When You Have Too Much to Do

+ +
+ + You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more. + +
+ Read more ⟶ +
+ +
+

Getting Started with Traveling Ultralight

+ +
+ + Start by getting a small backpack (less than 20 liters) and then just travel with what fits in that. + +
+ Read more ⟶ +
+ +
+

How to test dark mode?

+ +
+ + Here is how you can setup dark mode for Ink and test on various OS like iOS, Android, macOS and Windows 10.… + +
+ Read more ⟶ +
+ +
+

Typography

+ +
+ + Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. +Heading 1 Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio.… + +
+ Read more ⟶ +
+ +
+

Hugo shortcodes

+ +
+ + Here is a demo of all shortcodes available in Hugo. + +
+ Read more ⟶ +
+ +
+

How I Learned to Stop Procrastinating, & Love Letting Go

+ +
+ + The art of letting go. + +
+ Read more ⟶ +
+ +
+

Fearlessness: How to Stop Running from Space

+ +
+ + We spend our days filling in every available space, cramming in more tasks, responding to messages, checking social media and online sites, watching videos. +We are afraid of empty space in our lives. +The result is often a continual busyness, constant distraction and avoidance, lack of focus, lack of satisfaction with our lives. +We run from silence. We run from the spaces between tasks and appointments. We run from solitude and stillness.… + +
+ Read more ⟶ +
+ + + + +
+ + +
+ + + diff --git a/public/index.xml b/public/index.xml new file mode 100644 index 0000000..a624b81 --- /dev/null +++ b/public/index.xml @@ -0,0 +1,83 @@ + + + + Archie + http://localhost:4321/ + Recent content on Archie + Hugo + en-us + © Athul + Wed, 01 Apr 2020 00:00:00 +0000 + + + Telegram Bot for GitHub Actions + http://localhost:4321/posts/tg-gh/ + Wed, 01 Apr 2020 00:00:00 +0000 + http://localhost:4321/posts/tg-gh/ + Telegram Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed. It is free to use and extensively hackable. It also has a good bot support system. The API is also easy to implement and has many wrappers for building bots with the API. GitHub Actions GitHub Actions is a CI/CD runtime for your GitHub repository. You can run almost anything from scripts to docker containers. + + + Primer: When You Have Too Much to Do + http://localhost:4321/posts/post-1/ + Wed, 01 Apr 2020 02:01:58 +0530 + http://localhost:4321/posts/post-1/ + You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more. It all keeps piling up, and it can feel overwhelming. How do you keep up with it all? How do you find focus and peace and get stuff accomplished when you have too much on your plate? + + + Getting Started with Traveling Ultralight + http://localhost:4321/posts/post-4/ + Wed, 18 Mar 2020 12:13:35 +0530 + http://localhost:4321/posts/post-4/ + I’m on a trip at the moment, and a friend who generously let me sleep on his couch looked at my small travel backpack and commented on how little I travel with: “That’s impressive,” he said. I was a little surprised, because though I’ve gotten that comment before, it’s become normal for me to travel with just a small bag (10 lbs. or less, usually), and I have friends who travel with even less. + + + + http://localhost:4321/archives/ + Tue, 28 May 2019 00:00:00 +0000 + http://localhost:4321/archives/ + + + + About + http://localhost:4321/about/ + Thu, 28 Feb 2019 00:00:00 +0000 + http://localhost:4321/about/ + Written in Go, Hugo is an open source static site generator available under the Apache Licence 2.0. Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows. Hugo makes use of a variety of open source projects including: https://github.com/yuin/goldmark https://github. + + + How to test dark mode? + http://localhost:4321/posts/post-7/ + Sun, 18 Mar 2018 12:13:38 +0530 + http://localhost:4321/posts/post-7/ + Here is how you can setup dark mode for Ink and test on various OS like iOS, Android, macOS and Windows 10. + + + Typography + http://localhost:4321/posts/post-5/ + Sun, 18 Mar 2018 12:13:38 +0530 + http://localhost:4321/posts/post-5/ + Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. Heading 1 Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. + + + Hugo shortcodes + http://localhost:4321/posts/post-6/ + Sun, 18 Mar 2018 12:13:36 +0530 + http://localhost:4321/posts/post-6/ + Images Github Gist Youtube video Vimeo Instagram View this post on Instagram Callouts 💡 I guess this works + + + How I Learned to Stop Procrastinating, & Love Letting Go + http://localhost:4321/posts/post-3/ + Sun, 18 Mar 2018 12:13:32 +0530 + http://localhost:4321/posts/post-3/ + The end of procrastination is the art of letting go. I’ve been a lifelong procrastinator, at least until recent years. I would put things off until deadline, because I knew I could come through. I came through on tests after cramming last minute, I turned articles in at the deadline after waiting until the last hour, I got things done. Until I didn’t. It turns out procrastinating caused me to miss deadlines, over and over. + + + Fearlessness: How to Stop Running from Space + http://localhost:4321/posts/post-2/ + Sun, 18 Mar 2018 12:13:30 +0530 + http://localhost:4321/posts/post-2/ + We spend our days filling in every available space, cramming in more tasks, responding to messages, checking social media and online sites, watching videos. We are afraid of empty space in our lives. The result is often a continual busyness, constant distraction and avoidance, lack of focus, lack of satisfaction with our lives. We run from silence. We run from the spaces between tasks and appointments. We run from solitude and stillness. + + + diff --git a/public/js/feather.min.js b/public/js/feather.min.js new file mode 100644 index 0000000..d229492 --- /dev/null +++ b/public/js/feather.min.js @@ -0,0 +1,13 @@ +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.feather=n():e.feather=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function i(l){if(n[l])return n[l].exports;var t=n[l]={i:l,l:!1,exports:{}};return e[l].call(t.exports,t,t.exports,i),t.l=!0,t.exports}return i.m=e,i.c=n,i.d=function(e,n,l){i.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:l})},i.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i.p="",i(i.s=61)}([function(e,n,i){var l=i(20)("wks"),t=i(11),r=i(1).Symbol,o="function"==typeof r;(e.exports=function(e){return l[e]||(l[e]=o&&r[e]||(o?r:t)("Symbol."+e))}).store=l},function(e,n){var i=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(e,n){var i=e.exports={version:"2.5.6"};"number"==typeof __e&&(__e=i)},function(e,n){var i={}.hasOwnProperty;e.exports=function(e,n){return i.call(e,n)}},function(e,n,i){e.exports=!i(27)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,n,i){var l=i(13);e.exports=function(e){if(!l(e))throw TypeError(e+" is not an object!");return e}},function(e,n,i){var l=i(5),t=i(56),r=i(55),o=Object.defineProperty;n.f=i(4)?Object.defineProperty:function(e,n,i){if(l(e),n=r(n,!0),l(i),t)try{return o(e,n,i)}catch(e){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[n]=i.value),e}},function(e,n,i){var l=i(6),t=i(12);e.exports=i(4)?function(e,n,i){return l.f(e,n,t(1,i))}:function(e,n,i){return e[n]=i,e}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var l=o(i(35)),t=o(i(33)),r=o(i(32));function o(e){return e&&e.__esModule?e:{default:e}}n.default=Object.keys(t.default).map(function(e){return new l.default(e,t.default[e],r.default[e])}).reduce(function(e,n){return e[n.name]=n,e},{})},function(e,n,i){var l=i(20)("keys"),t=i(11);e.exports=function(e){return l[e]||(l[e]=t(e))}},function(e,n){e.exports={}},function(e,n){var i=0,l=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++i+l).toString(36))}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,n){var i=Math.ceil,l=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?l:i)(e)}},function(e,n,i){var l; +/*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +/*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +!function(){"use strict";var i=function(){function e(){}function n(e,n){for(var i=n.length,l=0;l0?t(l(e),9007199254740991):0}},function(e,n){var i={}.toString;e.exports=function(e){return i.call(e).slice(8,-1)}},function(e,n,i){var l=i(48),t=i(14);e.exports=function(e){return l(t(e))}},function(e,n,i){var l=i(54);e.exports=function(e,n,i){if(l(e),void 0===n)return e;switch(i){case 1:return function(i){return e.call(n,i)};case 2:return function(i,l){return e.call(n,i,l)};case 3:return function(i,l,t){return e.call(n,i,l,t)}}return function(){return e.apply(n,arguments)}}},function(e,n,i){var l=i(1),t=i(7),r=i(3),o=i(11)("src"),a=Function.toString,c=(""+a).split("toString");i(2).inspectSource=function(e){return a.call(e)},(e.exports=function(e,n,i,a){var y="function"==typeof i;y&&(r(i,"name")||t(i,"name",n)),e[n]!==i&&(y&&(r(i,o)||t(i,o,e[n]?""+e[n]:c.join(String(n)))),e===l?e[n]=i:a?e[n]?e[n]=i:t(e,n,i):(delete e[n],t(e,n,i)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[o]||a.call(this)})},function(e,n,i){var l=i(13),t=i(1).document,r=l(t)&&l(t.createElement);e.exports=function(e){return r?t.createElement(e):{}}},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n,i){var l=i(1),t=i(2),r=i(7),o=i(25),a=i(24),c=function(e,n,i){var y,p,h,x,s=e&c.F,u=e&c.G,d=e&c.S,f=e&c.P,v=e&c.B,g=u?l:d?l[n]||(l[n]={}):(l[n]||{}).prototype,m=u?t:t[n]||(t[n]={}),M=m.prototype||(m.prototype={});for(y in u&&(i=n),i)h=((p=!s&&g&&void 0!==g[y])?g:i)[y],x=v&&p?a(h,l):f&&"function"==typeof h?a(Function.call,h):h,g&&o(g,y,h,e&c.U),m[y]!=h&&r(m,y,x),f&&M[y]!=h&&(M[y]=h)};l.core=t,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,n){e.exports=!1},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var l=Object.assign||function(e){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{};if("undefined"==typeof document)throw new Error("`feather.replace()` only works in a browser environment.");var n=document.querySelectorAll("[data-feather]");Array.from(n).forEach(function(n){return function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=function(e){return Array.from(e.attributes).reduce(function(e,n){return e[n.name]=n.value,e},{})}(e),o=i["data-feather"];delete i["data-feather"];var a=r.default[o].toSvg(l({},n,i,{class:(0,t.default)(n.class,i.class)})),c=(new DOMParser).parseFromString(a,"image/svg+xml").querySelector("svg");e.parentNode.replaceChild(c,e)}(n,e)})}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var l,t=i(8),r=(l=t)&&l.__esModule?l:{default:l};n.default=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead."),!e)throw new Error("The required `key` (icon name) parameter is missing.");if(!r.default[e])throw new Error("No icon matching '"+e+"'. See the complete list of icons at https://feathericons.com");return r.default[e].toSvg(n)}},function(e){e.exports={activity:["pulse","health","action","motion"],airplay:["stream","cast","mirroring"],"alert-circle":["warning"],"alert-octagon":["warning"],"alert-triangle":["warning"],"at-sign":["mention"],award:["achievement","badge"],aperture:["camera","photo"],bell:["alarm","notification"],"bell-off":["alarm","notification","silent"],bluetooth:["wireless"],"book-open":["read"],book:["read","dictionary","booklet","magazine"],bookmark:["read","clip","marker","tag"],briefcase:["work","bag","baggage","folder"],clipboard:["copy"],clock:["time","watch","alarm"],"cloud-drizzle":["weather","shower"],"cloud-lightning":["weather","bolt"],"cloud-rain":["weather"],"cloud-snow":["weather","blizzard"],cloud:["weather"],codepen:["logo"],codesandbox:["logo"],coffee:["drink","cup","mug","tea","cafe","hot","beverage"],command:["keyboard","cmd"],compass:["navigation","safari","travel"],copy:["clone","duplicate"],"corner-down-left":["arrow"],"corner-down-right":["arrow"],"corner-left-down":["arrow"],"corner-left-up":["arrow"],"corner-right-down":["arrow"],"corner-right-up":["arrow"],"corner-up-left":["arrow"],"corner-up-right":["arrow"],"credit-card":["purchase","payment","cc"],crop:["photo","image"],crosshair:["aim","target"],database:["storage"],delete:["remove"],disc:["album","cd","dvd","music"],"dollar-sign":["currency","money","payment"],droplet:["water"],edit:["pencil","change"],"edit-2":["pencil","change"],"edit-3":["pencil","change"],eye:["view","watch"],"eye-off":["view","watch"],"external-link":["outbound"],facebook:["logo"],"fast-forward":["music"],figma:["logo","design","tool"],film:["movie","video"],"folder-minus":["directory"],"folder-plus":["directory"],folder:["directory"],frown:["emoji","face","bad","sad","emotion"],gift:["present","box","birthday","party"],"git-branch":["code","version control"],"git-commit":["code","version control"],"git-merge":["code","version control"],"git-pull-request":["code","version control"],github:["logo","version control"],gitlab:["logo","version control"],global:["world","browser","language","translate"],"hard-drive":["computer","server"],hash:["hashtag","number","pound"],headphones:["music","audio"],heart:["like","love"],"help-circle":["question mark"],hexagon:["shape","node.js","logo"],home:["house"],image:["picture"],inbox:["email"],instagram:["logo","camera"],key:["password","login","authentication"],"life-bouy":["help","life ring","support"],linkedin:["logo"],lock:["security","password"],"log-in":["sign in","arrow"],"log-out":["sign out","arrow"],mail:["email"],"map-pin":["location","navigation","travel","marker"],map:["location","navigation","travel"],maximize:["fullscreen"],"maximize-2":["fullscreen","arrows"],meh:["emoji","face","neutral","emotion"],menu:["bars","navigation","hamburger"],"message-circle":["comment","chat"],"message-square":["comment","chat"],"mic-off":["record"],mic:["record"],minimize:["exit fullscreen"],"minimize-2":["exit fullscreen","arrows"],monitor:["tv"],moon:["dark","night"],"more-horizontal":["ellipsis"],"more-vertical":["ellipsis"],"mouse-pointer":["arrow","cursor"],move:["arrows"],navigation:["location","travel"],"navigation-2":["location","travel"],octagon:["stop"],package:["box"],paperclip:["attachment"],pause:["music","stop"],"pause-circle":["music","stop"],"pen-tool":["vector","drawing"],play:["music","start"],"play-circle":["music","start"],plus:["add","new"],"plus-circle":["add","new"],"plus-square":["add","new"],pocket:["logo","save"],power:["on","off"],radio:["signal"],rewind:["music"],rss:["feed","subscribe"],save:["floppy disk"],search:["find","magnifier","magnifying glass"],send:["message","mail","paper airplane"],settings:["cog","edit","gear","preferences"],shield:["security"],"shield-off":["security"],"shopping-bag":["ecommerce","cart","purchase","store"],"shopping-cart":["ecommerce","cart","purchase","store"],shuffle:["music"],"skip-back":["music"],"skip-forward":["music"],slash:["ban","no"],sliders:["settings","controls"],smile:["emoji","face","happy","good","emotion"],speaker:["music"],star:["bookmark","favorite","like"],sun:["brightness","weather","light"],sunrise:["weather"],sunset:["weather"],tag:["label"],target:["bullseye"],terminal:["code","command line"],"thumbs-down":["dislike","bad"],"thumbs-up":["like","good"],"toggle-left":["on","off","switch"],"toggle-right":["on","off","switch"],trash:["garbage","delete","remove"],"trash-2":["garbage","delete","remove"],triangle:["delta"],truck:["delivery","van","shipping"],twitter:["logo"],umbrella:["rain","weather"],"video-off":["camera","movie","film"],video:["camera","movie","film"],voicemail:["phone"],volume:["music","sound","mute"],"volume-1":["music","sound"],"volume-2":["music","sound"],"volume-x":["music","sound","mute"],watch:["clock","time"],wind:["weather","air"],"x-circle":["cancel","close","delete","remove","times"],"x-octagon":["delete","stop","alert","warning","times"],"x-square":["cancel","close","delete","remove","times"],x:["cancel","close","delete","remove","times"],youtube:["logo","video","play"],"zap-off":["flash","camera","lightning"],zap:["flash","camera","lightning"]}},function(e){e.exports={activity:'',airplay:'',"alert-circle":'',"alert-octagon":'',"alert-triangle":'',"align-center":'',"align-justify":'',"align-left":'',"align-right":'',anchor:'',aperture:'',archive:'',"arrow-down-circle":'',"arrow-down-left":'',"arrow-down-right":'',"arrow-down":'',"arrow-left-circle":'',"arrow-left":'',"arrow-right-circle":'',"arrow-right":'',"arrow-up-circle":'',"arrow-up-left":'',"arrow-up-right":'',"arrow-up":'',"at-sign":'',award:'',"bar-chart-2":'',"bar-chart":'',"battery-charging":'',battery:'',"bell-off":'',bell:'',bluetooth:'',bold:'',"book-open":'',book:'',bookmark:'',box:'',briefcase:'',calendar:'',"camera-off":'',camera:'',cast:'',"check-circle":'',"check-square":'',check:'',"chevron-down":'',"chevron-left":'',"chevron-right":'',"chevron-up":'',"chevrons-down":'',"chevrons-left":'',"chevrons-right":'',"chevrons-up":'',chrome:'',circle:'',clipboard:'',clock:'',"cloud-drizzle":'',"cloud-lightning":'',"cloud-off":'',"cloud-rain":'',"cloud-snow":'',cloud:'',code:'',codepen:'',codesandbox:'',coffee:'',columns:'',command:'',compass:'',copy:'',"corner-down-left":'',"corner-down-right":'',"corner-left-down":'',"corner-left-up":'',"corner-right-down":'',"corner-right-up":'',"corner-up-left":'',"corner-up-right":'',cpu:'',"credit-card":'',crop:'',crosshair:'',database:'',delete:'',disc:'',"dollar-sign":'',"download-cloud":'',download:'',droplet:'',"edit-2":'',"edit-3":'',edit:'',"external-link":'',"eye-off":'',eye:'',facebook:'',"fast-forward":'',feather:'',figma:'',"file-minus":'',"file-plus":'',"file-text":'',file:'',film:'',filter:'',flag:'',"folder-minus":'',"folder-plus":'',folder:'',frown:'',gift:'',"git-branch":'',"git-commit":'',"git-merge":'',"git-pull-request":'',github:'',gitlab:'',globe:'',grid:'',"hard-drive":'',hash:'',headphones:'',heart:'',"help-circle":'',hexagon:'',home:'',image:'',inbox:'',info:'',instagram:'',italic:'',key:'',layers:'',layout:'',"life-buoy":'',"link-2":'',link:'',linkedin:'',list:'',loader:'',lock:'',"log-in":'',"log-out":'',mail:'',"map-pin":'',map:'',"maximize-2":'',maximize:'',meh:'',menu:'',"message-circle":'',"message-square":'',"mic-off":'',mic:'',"minimize-2":'',minimize:'',"minus-circle":'',"minus-square":'',minus:'',monitor:'',moon:'',"more-horizontal":'',"more-vertical":'',"mouse-pointer":'',move:'',music:'',"navigation-2":'',navigation:'',octagon:'',package:'',paperclip:'',"pause-circle":'',pause:'',"pen-tool":'',percent:'',"phone-call":'',"phone-forwarded":'',"phone-incoming":'',"phone-missed":'',"phone-off":'',"phone-outgoing":'',phone:'',"pie-chart":'',"play-circle":'',play:'',"plus-circle":'',"plus-square":'',plus:'',pocket:'',power:'',printer:'',radio:'',"refresh-ccw":'',"refresh-cw":'',repeat:'',rewind:'',"rotate-ccw":'',"rotate-cw":'',rss:'',save:'',scissors:'',search:'',send:'',server:'',settings:'',"share-2":'',share:'',"shield-off":'',shield:'',"shopping-bag":'',"shopping-cart":'',shuffle:'',sidebar:'',"skip-back":'',"skip-forward":'',slack:'',slash:'',sliders:'',smartphone:'',smile:'',speaker:'',square:'',star:'',"stop-circle":'',sun:'',sunrise:'',sunset:'',tablet:'',tag:'',target:'',terminal:'',thermometer:'',"thumbs-down":'',"thumbs-up":'',"toggle-left":'',"toggle-right":'',"trash-2":'',trash:'',trello:'',"trending-down":'',"trending-up":'',triangle:'',truck:'',tv:'',twitter:'',type:'',umbrella:'',underline:'',unlock:'',"upload-cloud":'',upload:'',"user-check":'',"user-minus":'',"user-plus":'',"user-x":'',user:'',users:'',"video-off":'',video:'',voicemail:'',"volume-1":'',"volume-2":'',"volume-x":'',volume:'',watch:'',"wifi-off":'',wifi:'',wind:'',"x-circle":'',"x-octagon":'',"x-square":'',x:'',youtube:'',"zap-off":'',zap:'',"zoom-in":'',"zoom-out":''}},function(e){e.exports={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var l=Object.assign||function(e){for(var n=1;n2&&void 0!==arguments[2]?arguments[2]:[];!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.name=n,this.contents=i,this.tags=t,this.attrs=l({},o.default,{class:"feather feather-"+n})}return t(e,[{key:"toSvg",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return""+this.contents+""}},{key:"toString",value:function(){return this.contents}}]),e}();n.default=c},function(e,n,i){"use strict";var l=o(i(8)),t=o(i(31)),r=o(i(30));function o(e){return e&&e.__esModule?e:{default:e}}e.exports={icons:l.default,toSvg:t.default,replace:r.default}},function(e,n,i){var l=i(0)("iterator"),t=!1;try{var r=[7][l]();r.return=function(){t=!0},Array.from(r,function(){throw 2})}catch(e){}e.exports=function(e,n){if(!n&&!t)return!1;var i=!1;try{var r=[7],o=r[l]();o.next=function(){return{done:i=!0}},r[l]=function(){return o},e(r)}catch(e){}return i}},function(e,n,i){var l=i(22),t=i(0)("toStringTag"),r="Arguments"==l(function(){return arguments}());e.exports=function(e){var n,i,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,n){try{return e[n]}catch(e){}}(n=Object(e),t))?i:r?l(n):"Object"==(o=l(n))&&"function"==typeof n.callee?"Arguments":o}},function(e,n,i){var l=i(38),t=i(0)("iterator"),r=i(10);e.exports=i(2).getIteratorMethod=function(e){if(void 0!=e)return e[t]||e["@@iterator"]||r[l(e)]}},function(e,n,i){"use strict";var l=i(6),t=i(12);e.exports=function(e,n,i){n in e?l.f(e,n,t(0,i)):e[n]=i}},function(e,n,i){var l=i(10),t=i(0)("iterator"),r=Array.prototype;e.exports=function(e){return void 0!==e&&(l.Array===e||r[t]===e)}},function(e,n,i){var l=i(5);e.exports=function(e,n,i,t){try{return t?n(l(i)[0],i[1]):n(i)}catch(n){var r=e.return;throw void 0!==r&&l(r.call(e)),n}}},function(e,n,i){"use strict";var l=i(24),t=i(28),r=i(17),o=i(42),a=i(41),c=i(21),y=i(40),p=i(39);t(t.S+t.F*!i(37)(function(e){Array.from(e)}),"Array",{from:function(e){var n,i,t,h,x=r(e),s="function"==typeof this?this:Array,u=arguments.length,d=u>1?arguments[1]:void 0,f=void 0!==d,v=0,g=p(x);if(f&&(d=l(d,u>2?arguments[2]:void 0,2)),void 0==g||s==Array&&a(g))for(i=new s(n=c(x.length));n>v;v++)y(i,v,f?d(x[v],v):x[v]);else for(h=g.call(x),i=new s;!(t=h.next()).done;v++)y(i,v,f?o(h,d,[t.value,v],!0):t.value);return i.length=v,i}})},function(e,n,i){var l=i(3),t=i(17),r=i(9)("IE_PROTO"),o=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=t(e),l(e,r)?e[r]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?o:null}},function(e,n,i){var l=i(1).document;e.exports=l&&l.documentElement},function(e,n,i){var l=i(15),t=Math.max,r=Math.min;e.exports=function(e,n){return(e=l(e))<0?t(e+n,0):r(e,n)}},function(e,n,i){var l=i(23),t=i(21),r=i(46);e.exports=function(e){return function(n,i,o){var a,c=l(n),y=t(c.length),p=r(o,y);if(e&&i!=i){for(;y>p;)if((a=c[p++])!=a)return!0}else for(;y>p;p++)if((e||p in c)&&c[p]===i)return e||p||0;return!e&&-1}}},function(e,n,i){var l=i(22);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==l(e)?e.split(""):Object(e)}},function(e,n,i){var l=i(3),t=i(23),r=i(47)(!1),o=i(9)("IE_PROTO");e.exports=function(e,n){var i,a=t(e),c=0,y=[];for(i in a)i!=o&&l(a,i)&&y.push(i);for(;n.length>c;)l(a,i=n[c++])&&(~r(y,i)||y.push(i));return y}},function(e,n,i){var l=i(49),t=i(19);e.exports=Object.keys||function(e){return l(e,t)}},function(e,n,i){var l=i(6),t=i(5),r=i(50);e.exports=i(4)?Object.defineProperties:function(e,n){t(e);for(var i,o=r(n),a=o.length,c=0;a>c;)l.f(e,i=o[c++],n[i]);return e}},function(e,n,i){var l=i(5),t=i(51),r=i(19),o=i(9)("IE_PROTO"),a=function(){},c=function(){var e,n=i(26)("iframe"),l=r.length;for(n.style.display="none",i(45).appendChild(n),n.src="javascript:",(e=n.contentWindow.document).open(),e.write(" + + Posts - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ + +

All articles

+ + + + +
+ + diff --git a/public/posts/index.xml b/public/posts/index.xml new file mode 100644 index 0000000..f7cb971 --- /dev/null +++ b/public/posts/index.xml @@ -0,0 +1,69 @@ + + + + Posts on Archie + http://localhost:4321/posts/ + Recent content in Posts on Archie + Hugo + en-us + © Athul + Wed, 01 Apr 2020 00:00:00 +0000 + + + Telegram Bot for GitHub Actions + http://localhost:4321/posts/tg-gh/ + Wed, 01 Apr 2020 00:00:00 +0000 + http://localhost:4321/posts/tg-gh/ + Telegram Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed. It is free to use and extensively hackable. It also has a good bot support system. The API is also easy to implement and has many wrappers for building bots with the API. GitHub Actions GitHub Actions is a CI/CD runtime for your GitHub repository. You can run almost anything from scripts to docker containers. + + + Primer: When You Have Too Much to Do + http://localhost:4321/posts/post-1/ + Wed, 01 Apr 2020 02:01:58 +0530 + http://localhost:4321/posts/post-1/ + You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more. It all keeps piling up, and it can feel overwhelming. How do you keep up with it all? How do you find focus and peace and get stuff accomplished when you have too much on your plate? + + + Getting Started with Traveling Ultralight + http://localhost:4321/posts/post-4/ + Wed, 18 Mar 2020 12:13:35 +0530 + http://localhost:4321/posts/post-4/ + I’m on a trip at the moment, and a friend who generously let me sleep on his couch looked at my small travel backpack and commented on how little I travel with: “That’s impressive,” he said. I was a little surprised, because though I’ve gotten that comment before, it’s become normal for me to travel with just a small bag (10 lbs. or less, usually), and I have friends who travel with even less. + + + How to test dark mode? + http://localhost:4321/posts/post-7/ + Sun, 18 Mar 2018 12:13:38 +0530 + http://localhost:4321/posts/post-7/ + Here is how you can setup dark mode for Ink and test on various OS like iOS, Android, macOS and Windows 10. + + + Typography + http://localhost:4321/posts/post-5/ + Sun, 18 Mar 2018 12:13:38 +0530 + http://localhost:4321/posts/post-5/ + Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. Heading 1 Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. + + + Hugo shortcodes + http://localhost:4321/posts/post-6/ + Sun, 18 Mar 2018 12:13:36 +0530 + http://localhost:4321/posts/post-6/ + Images Github Gist Youtube video Vimeo Instagram View this post on Instagram Callouts 💡 I guess this works + + + How I Learned to Stop Procrastinating, & Love Letting Go + http://localhost:4321/posts/post-3/ + Sun, 18 Mar 2018 12:13:32 +0530 + http://localhost:4321/posts/post-3/ + The end of procrastination is the art of letting go. I’ve been a lifelong procrastinator, at least until recent years. I would put things off until deadline, because I knew I could come through. I came through on tests after cramming last minute, I turned articles in at the deadline after waiting until the last hour, I got things done. Until I didn’t. It turns out procrastinating caused me to miss deadlines, over and over. + + + Fearlessness: How to Stop Running from Space + http://localhost:4321/posts/post-2/ + Sun, 18 Mar 2018 12:13:30 +0530 + http://localhost:4321/posts/post-2/ + We spend our days filling in every available space, cramming in more tasks, responding to messages, checking social media and online sites, watching videos. We are afraid of empty space in our lives. The result is often a continual busyness, constant distraction and avoidance, lack of focus, lack of satisfaction with our lives. We run from silence. We run from the spaces between tasks and appointments. We run from solitude and stillness. + + + diff --git a/public/posts/post-1/index.html b/public/posts/post-1/index.html new file mode 100644 index 0000000..2c541ca --- /dev/null +++ b/public/posts/post-1/index.html @@ -0,0 +1,137 @@ + + + + Primer: When You Have Too Much to Do - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ +
+
+
+

Primer: When You Have Too Much to Do

+
Posted on Apr 1, 2020
+
+ + +
+

You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more.

+

It all keeps piling up, and it can feel overwhelming.

+

How do you keep up with it all? How do you find focus and peace and get stuff accomplished when you have too much on your plate?

+

In this primer, I’ll look at some key strategies and tactics for taking on an overloaded life with an open heart, lots of energy, and a smile on your face.

+

The First Step: Triage

+

Whether you’re just starting your day, or you’re in the middle of the chaos and just need to find some sanity … the first step is to get into triage mode.

+

Triage, as you probably know, is sorting through the chaos to prioritize: what needs to be done now, what needs to be done today, what needs to be done this week, and what can wait? You’re looking at urgency, but also what’s meaningful and important.

+

Here’s what you might do:

+
    +
  • Pick out the things that need to be done today. Start a Short List for things you’re going to do today. That might be important tasks for big projects, urgent tasks that could result in damage if you don’t act, smaller admin tasks that you really should take care of today, and responding to important messages. I would recommend being ruthless and cutting out as much as you can, having just 5 things on your plate if that’s at all possible. Not everything needs to be done today, and not every email needs to be responded to.
  • +
  • Push some things to tomorrow and the rest of the week. If you have deadlines that can be pushed back (or renegotiated), do that. Spread the work out over the week, even into next week. What needs to be done tomorrow? What can wait a day or two longer?
  • +
  • Eliminate what you can. That might mean just not replying to some messages that aren’t that important and don’t really require a reply. It might mean telling some people that you can’t take on this project after all, or that you need to get out of the commitment that you said you’d do. Yes, this is uncomfortable. For now, just put them on a list called, “To Not Do,” and plan to figure out how to get out of them later.
  • +
+

OK, you have some breathing room and a manageable list now! Let’s shrink that down even further and just pick one thing.

+

Next: Focus on One Thing

+

With a lot on your plate, it’s hard to pick one thing to focus on. But that’s exactly what I’m going to ask you to do.

+

Pick one thing, and give it your focus. Yes, there are a lot of other things you can focus on. Yes, they’re stressing you out and making it hard to focus. But think about it this way: if you allow it all to be in your head all the time, that will always be your mode of being. You’ll always be thinking about everything, stressing out about it all, with a frazzled mind … unless you start shifting.

+

The shift:

+
    +
  • Pick something to focus on. Look at the triaged list from the first section … if you have 5-6 things on this Short List, you can assess whether there’s any super urgent, time-sensitive things you need to take care of. If there are, pick one of them. If not, pick the most important one — probably the one you have been putting off doing.
  • +
  • Clear everything else away. Just for a little bit. Close all browser tabs, turn off notifications, close open applications, put your phone away.
  • +
  • Put that one task before you, and allow yourself to be with it completely. Pour yourself into it. Think of it as a practice, of letting go (of everything else), of focus, of radical simplicity.
  • +
+

When you’re done (or after 15-20 minutes have gone by at least), you can switch to something else. But don’t allow yourself to switch until then.

+

By closing off all exits, by choosing one thing, by giving yourself completely to that thing … you’re now in a different mode that isn’t so stressful or spread thin. You’ve started a shift that will lead to focus and sanity.

+

Third: Schedule Time to Simplify

+

Remember the To Not Do list above? Schedule some time this week to start reducing your projects, saying no to people, getting out of commitments, crossing stuff off your task list … so that you can have some sanity back.

+

There are lots of little things that you’ve said “yes” to that you probably shouldn’t have. That’s why you’re overloaded. Protect your more important work, and your time off, and your peace of mind, by saying “no” to things that aren’t as important.

+

Schedule the time to simplify — you don’t have to do it today, but sometime soon — and you can then not have to worry about the things on your To Not Do list until then.

+

Fourth: Practice Mindful Focus

+

Go through the rest of the day with an attitude of “mindful focus.” That means that you are doing one thing at a time, being as present as you can, switching as little as you can.

+

Think of it as a settling of the mind. A new mode of being. A mindfulness practice (which means you won’t be perfect at it).

+

As you practice mindful focus, you’ll learn to practice doing things with an open heart, with curiosity and gratitude, and even joy. Try these one at a time as you get to do each task on your Short List.

+

You’ll find that you’re not so overloaded, but that each task is just perfect for that moment. And that’s a completely new relationship with the work that you do, and a new relationship with life.

+ +
+ + +
+
+ +
+ + diff --git a/public/posts/post-2/index.html b/public/posts/post-2/index.html new file mode 100644 index 0000000..5fdb1df --- /dev/null +++ b/public/posts/post-2/index.html @@ -0,0 +1,132 @@ + + + + Fearlessness: How to Stop Running from Space - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ +
+
+
+

Fearlessness: How to Stop Running from Space

+
Posted on Mar 18, 2018
+
+ + +
+

We spend our days filling in every available space, cramming in more tasks, responding to messages, checking social media and online sites, watching videos.

+

We are afraid of empty space in our lives.

+

The result is often a continual busyness, constant distraction and avoidance, lack of focus, lack of satisfaction with our lives.

+

We run from silence. We run from the spaces between tasks and appointments. We run from solitude and stillness. We try to fill every second with activity, with something useful, as if silence and space are not valuable.

+

But what are we afraid of?

+

And who would we be if we didn’t have that fear?

+

We’re afraid of space and stillness and silence because it highlights the uncertainty, instability, groundlessness, insecurity, shakiness that lie underneath every second of our lives. We’re afraid of having to face this instability and uncertainty, of having to feel the fear of it.

+

Without the fear of all of the uncertainty that is highlighted by space … we become free.

+

I know in my life, when I allow myself to have stillness, silence, solitude, simplicity and space … it leaves room to face whatever is coming up for me. It gives me room to fully feel any feelings that I’ve been avoiding. It allows me to be more honest with myself, instead of using distractions and busyness to cover up what I don’t want to see.

+

And in the end, I develop trust that the space is not something to be feared, but rather something to be treasured. A gift, filled with learning and not knowing and shakiness and beauty.

+

You might try allowing more space to be in your day, without filling it:

+
    +
  • Take some time between tasks for stillness.
  • +
  • Sit out in nature, in silence, without technology.
  • +
  • When you notice yourself reaching for your phone, pause. See if you can just be still, just savor some space.
  • +
  • When you feel uncertainty or instability in your life (hint: it’s always there), let yourself feel it. Be present with it, without needing to run or avoid.
  • +
  • When you feel fear, be open-hearted with it and allow yourself fully feel it, being friendly with it. Your relationship with fear will change if you become friendly with it.
  • +
  • Do less, and trust that things won’t fall apart. Or if they do fall apart, you can be present with that instability.
  • +
  • When you’re in line, driving, eating, walking, exercising … see if you can do those things in silence, without technology, without needing to do something “useful.” Find the value in these spaces.
  • +
  • Notice who you are without the fear of space.
  • +
+

Savor these spaces, their deliciousness. Savor the groundlessness, as something filled with freedom if we learn not to fear it. Be present with the fear and uncertainty, as good friends not as enemies.

+

Let your heart be open raw tender and vulnerable, and your mind embracing the spaciousness of the vast blue sky of open awareness.

+ +
+ + +
+
+ +
+ + diff --git a/public/posts/post-3/index.html b/public/posts/post-3/index.html new file mode 100644 index 0000000..5e1396d --- /dev/null +++ b/public/posts/post-3/index.html @@ -0,0 +1,118 @@ + + + + How I Learned to Stop Procrastinating, & Love Letting Go - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ +
+
+
+

How I Learned to Stop Procrastinating, & Love Letting Go

+
Posted on Mar 18, 2018
+
+ + +
+

The end of procrastination is the art of letting go.

+

I’ve been a lifelong procrastinator, at least until recent years. I would put things off until deadline, because I knew I could come through. I came through on tests after cramming last minute, I turned articles in at the deadline after waiting until the last hour, I got things done.

+

Until I didn’t. It turns out procrastinating caused me to miss deadlines, over and over. It stressed me out. My work was less-than-desirable when I did it last minute. Slowly, I started to realize that procrastination wasn’t doing me any favors. In fact, it was causing me a lot of grief.

+

But I couldn’t quit. I tried a lot of things. I tried time boxing and goal setting and accountability and the Pomodoro Technique and Getting Things Done. All are great methods, but they only last so long. Nothing really worked over the long term.

+

That’s because I wasn’t getting to the root problem.

+

I hadn’t figured out the skill that would save me from the procrastination.

+

Until I learned about letting go.

+

Letting go first came to me when I was quitting smoking. I had to let go of the “need” to smoke, the use of my crutch of cigarettes to deal with stress and problems.

+

Then I learned I needed to let go of other false needs that were causing me problems: sugar, junk food, meat, shopping, beer, possessions. I’m not saying I can never do these things again once I let go of these needs, but I let go of the idea that they’re really necessary. I let go of an unhealthy attachment to them.

+

Then I learned that distractions and the false need to check my email and news and other things online … were causing me problems. They were causing my procrastination.

+

So I learned to let go of those too.

+

Here’s the process I used to let go of the distractions and false needs that cause procrastination:

+

I paid attention to the pain they cause me, later, instead of only the temporary comfort/pleasure they gave me right away. +I thought about the person I want to be, the life I want to live. I set my intentions to do the good work I think I should do. +I watched my urges to check things, to go to the comfort of distractions. I saw that I wanted to escape discomfort of something hard, and go to the comfort of something familiar and easy. +I realized I didn’t need that comfort. I could be in discomfort and nothing bad would happen. In fact, the best things happen when I’m in discomfort. +And then I smile, and breathe, and let go.

+

And one step at a time, become the person I want to be.

+ +
+ + +
+
+ +
+ + diff --git a/public/posts/post-4/index.html b/public/posts/post-4/index.html new file mode 100644 index 0000000..289c597 --- /dev/null +++ b/public/posts/post-4/index.html @@ -0,0 +1,107 @@ + + + + Getting Started with Traveling Ultralight - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ +
+
+
+

Getting Started with Traveling Ultralight

+
Posted on Mar 18, 2020
+
+ + +
+

I’m on a trip at the moment, and a friend who generously let me sleep on his couch looked at my small travel backpack and commented on how little I travel with: “That’s impressive,” he said.

+

I was a little surprised, because though I’ve gotten that comment before, it’s become normal for me to travel with just a small bag (10 lbs. or less, usually), and I have friends who travel with even less. But then I remembered that I’m far from normal in this way.

+

I gave him a tip for getting started, and I recommend it for all of you, who want to travel light — or ultralight, as I call it, because for many people traveling light is taking a carry-on roller luggage. For me, having those roller bags is lugging too much, because you can run up stairs with it with ease, or carry it all over a city without worrying about stowing away your luggage somewhere first. It’s so much easier to travel ultralight.

+

Here’s the tip I gave him to get started: start by getting a small backpack (less than 20 liters) and then just travel with what fits in that.

+

That’s how to start. But you’ll probably want some guidance on what to put into the bag, and how to travel with so little. Here’s some guidance to get started:

+
    +
  • I travel with a lightweight laptop (Macbook Air), a few clothes, my phone, earbuds and some charging cords, toiletries, and almost nothing else. A lightweight windbreaker for wind and light rain (Patagonia Houdini). An eye mask and ear plugs. A collapsible water bottle. My passport. That’s about it. No extra shoes. No books. No suit. No travel pillow. No extra camera other than my phone. I’m not sure what else everyone else brings, but none of that.
  • +
  • I bring clothes that I can wash in the sink or shower and that will dry overnight. Lightweight stuff that I can layer. Often they’re workout-style clothes or things from companies like Outlier or Patagonia that travel well. I don’t bring enough underwear or socks for every day of the trip, because I wash them every couple of days. I only bring one or two extra T-shirts, generally wearing the same two shirts the whole trip, even if it’s a month long. No one has ever once cared what I wear when I’m traveling.
  • +
  • I bring minimal toiletries: a small shaver for my head, razor, toothbrush, floss small tubes of toothpaste and shaving cream, deodorant, nail clippers, ibuprofen.
  • +
  • For cold places, I have thermal underwear and a couple long-sleeve layers (generally all Patagonia capilene stuff), and a beanie. I don’t usually go to places where it’s snowing (I don’t know why, maybe snow isn’t my thing), so I don’t have clothes to deal with that weather.
  • +
  • For warm places, I will bring flip flops and swim trunks, and leave most of the colder layers behind.
  • +
+

That’s enough for a monthlong trip, which I’ve done multiple times with this kind of setup. For a shorter trip of a few days, I might bring even less.

+

I really love traveling this way, and am more than willing to sacrifice bringing extra things for the luxury of traveling lightweight.

+

By the way, you don’t need much more than this kind of setup even in everyday life.

+

For more info on this, check out my Ultralight ebook, and my friend Tynan has a great book called Forever Nomad.

+ +
+ + +
+
+ +
+ + diff --git a/public/posts/post-5/index.html b/public/posts/post-5/index.html new file mode 100644 index 0000000..ed6e4ae --- /dev/null +++ b/public/posts/post-5/index.html @@ -0,0 +1,146 @@ + + + + Typography - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ +
+
+
+

Typography

+
Posted on Mar 18, 2018
+
+ + +
+

Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.

+

Heading 1

+

Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.

+

Heading 2

+

Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.

+

Heading 3

+

Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.

+

Heading 4

+

Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.

+
Heading 5
+

Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.

+
Heading 6
+

Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.

+

Typography

+

Lid est laborum et dolorum fuga, This is an example inline link. Et harum quidem rerum facilis, This is bold and emphasis cumque nihilse impedit quo minus id quod amets untra dolor amet sad. While this is code block() and following is a pre tag

+
print 'this is pre tag'
+
+

Following is the syntax highlighted code block

+
func getCookie(name string, r interface{}) (*http.Cookie, error) {
+	rd := r.(*http.Request)
+	cookie, err := rd.Cookie(name)
+	if err != nil {
+		return nil, err
+	}
+	return cookie, nil
+}
+
+func setCookie(cookie *http.Cookie, w interface{}) error {
+	// Get write interface registered using `Acquire` method in handlers.
+	wr := w.(http.ResponseWriter)
+	http.SetCookie(wr, cookie)
+	return nil
+}
+

This is blockquote, Will make it better now

+
+

‘I want to do with you what spring does with the cherry trees.’ cited ~Pablo Neruda*

+
+
+

Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit

+
+

Unordered list

+
    +
  • Red
  • +
  • Green
  • +
  • Blue
  • +
+

Ordered list

+
    +
  1. Red
  2. +
  3. Green
  4. +
  5. Blue
  6. +
+ +
+ + +
+
+ +
+ + diff --git a/public/posts/post-6/index.html b/public/posts/post-6/index.html new file mode 100644 index 0000000..79043a6 --- /dev/null +++ b/public/posts/post-6/index.html @@ -0,0 +1,346 @@ + + + + Hugo shortcodes - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ +
+ +
+ +
+ + diff --git a/public/posts/post-7/index.html b/public/posts/post-7/index.html new file mode 100644 index 0000000..d18011c --- /dev/null +++ b/public/posts/post-7/index.html @@ -0,0 +1,103 @@ + + + + How to test dark mode? - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ +
+
+
+

How to test dark mode?

+
Posted on Mar 18, 2018
+
+ +
+ tl;dr: + Wubba lubba dub dub +
+ +
+

You can set dark mode as default by setting params.mode to dark in config.toml or set it to auto which will detect based on your OS and switch to dark mode. For more details refer documentation

+

Here is how you can switch based on your OS

+ + +
+ + +
+
+ +
+ + diff --git a/public/posts/tg-gh/index.html b/public/posts/tg-gh/index.html new file mode 100644 index 0000000..6ae3610 --- /dev/null +++ b/public/posts/tg-gh/index.html @@ -0,0 +1,430 @@ + + + + Telegram Bot for GitHub Actions - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ +
+
+
+

Telegram Bot for GitHub Actions

+
Posted on Apr 1, 2020
+
+ +
+ tl;dr: + Making GitHub Actions with Js Code +
+ +
+

Telegram

+

Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed. It is free to use and extensively hackable. It also has a good bot support system. The API is also easy to implement and has many wrappers for building bots with the API.

+

GitHub Actions

+

GitHub Actions is a CI/CD runtime for your GitHub repository. You can run almost anything from scripts to docker containers. You can build, test and deploy your code with GitHub Actions. All these actions are called workflows and workflows differ in the job they’re doing. These maybe test workflows, build ones or deployment ones. You can find all the actions on GitHub in the marketplace

+

Building the Bot

+

Prerequisites

+
    +
  • Basic JavaScript Knowledge
  • +
  • Basic GitHub Knowledge
  • +
  • Telegram Account
  • +
+
+

There are templates for building actions. Here we’re gonna start from scratch

+
+

Environment Setup

+
    +
  • Node, You can download node from their website
  • +
  • NPM comes with node, so you don’t have to worry about it.
  • +
  • Initialize the Project
  • +
+
$ git init ## initialize a new git repository for version management
+---
+$ npm init
+
    +
  • dotenv, Dotenv can be downloaded via
  • +
+
$ npm i dotenv
+---
+$ yarn add dotenv
+
    +
  • node-telegram-bot-api, node-telegram-bot-api is a simple wrapper for building telegram bots. You can download it via
  • +
+
$ npm i node-telegram-bot-api
+---
+$ yarn add node-telegram-bot-api
+
    +
  • @zeit/ncc, NCC is a Simple CLI for compiling a Node.js module into a single file, together with all its dependencies, GCC-style. It’s a dev dependency and can be downloaded
  • +
+
yarn add --dev @zeit/ncc
+---
+npm i -D @zeit/ncc
+

Folder Structure

+

The dist folder will be automatically created. action.yml will be made

+
.
+├── dist
+│   └── index.js
+├── index.js
+├── action.yml
+├── README.md
+└── package.json
+
    +
  • index.js is the file we’re defining the bot
  • +
  • action.yml is the file we’ll define the action and it’s behaviours
  • +
+

Making the Bot

+

We need to get an API bot token from telegram. For that Go to Telegram and Search for Botfather. It’s a bot. + +Create a new bot with the /newbot command and get the API key. We’ll need that, also talk to jsondump bot and get your chat id. The output may be like this, so

+
{
+  "update_id": 143943779,
+  "message": {
+    "message_id": 181575,
+    "from": {
+      "id": 123456 // this is what we need
+      "is_bot": false,
+      "first_name": "Tg Name",
+      "username": "TG Username",
+      "language_code": "en"
+    },
+    "chat": {
+      "id": 123456,
+      "first_name": "Tg Name",
+      "username": "TG Username",
+      "type": "private"
+    },
+    "date": 1584119424,
+    "text": "message"
+  }
+}
+

This will be needed for further use and We need to add it to the repo secrets which can be found in the repo settings. Be careful to add it as token and chat like as shown below +

+

Writing the Action and Building the Bot

+

Fire up the terminal/cmd and make a new folder. Install the dependencies. Run the following command

+
$ touch index.js action.yml
+

Open your favourite text editor within the folder or with the file. We’ll define the bot in index.js

+
require("dotenv").config
+const Bot = require('node-telegram-bot-api');
+const {
+    INPUT_STATUS: ipstatus,
+    INPUT_TOKEN: tgtoken,//Telegram api token
+    INPUT_CHAT: chatid,// Telegram Chat ID
+    INPUT_IU_TITLE: ititle,// Issue title
+    INPUT_IU_NUM: inum,// Issue Number
+    INPUT_IU_ACTOR: iactor,// Issue made by
+    INPUT_IU_BODY: ibody,// Issue Body
+    INPUT_PR_NUM: pnum,// PR Number
+    INPUT_PR_STATE: prstate,// PR Opened, reponed or closed
+    INPUT_PR_TITLE: ptitle,// PR Title
+    INPUT_PR_BODY: pbody,// Body of the PR
+    GITHUB_EVENT_NAME: ghevent,// Name of the trigger event
+    GITHUB_REPOSITORY: repo,// Repository the trigger was made from
+    GITHUB_ACTOR: ghactor,// User who triggered the action
+    GITHUB_SHA: sha,// Commit ID
+    GITHUB_WORKFLOW: ghwrkflw// Workflow Name
+} = process.env;
+
+const bot = new Bot(tgtoken)
+

First, we’re defining the dotenv for config and initializing Telegram Bot. Here we’re defining the alias variables for the environment variables. You might notice an INPUT_ for almost every environment variable, this is because GitHub Actions pass the env variable with an INPUT prefix. Other env variables are action’s default environment variables. Then we initialized the bot with the API token.

+

GitHub actions could be triggered with Issues, Pull Request or Pushes. You can find the trigger events here. Here we’re gonna get a message from the bot when an Issue or Pull Request or a Push event has happened.

+
const evresp = (gevent) => {
+    switch (gevent) {
+
+        case "issues":
+            return `
+❗️❗️❗️❗️❗️❗️
+        
+Issue ${prstate}
+
+Issue Title and Number  : ${ititle} | #${inum}
+
+Commented or Created By : \`${iactor}\`
+
+Issue Body : *${ibody}*
+
+[Link to Issue](https://github.com/${repo}/issues/${inum})
+[Link to Repo ](https://github.com/${repo}/)
+[Build log here](https://github.com/${repo}/commit/${sha}/checks)`
+        case "pull_request":
+            return `
+🔃🔀🔃🔀🔃🔀
+PR ${prstate} 
+        
+PR Number:      ${pnum}
+        
+PR Title:       ${ptitle}
+        
+PR Body:        *${pbody}*
+        
+PR By:          ${ghactor}
+        
+[Link to Issue](https://github.com/${repo}/pull/${pnum})
+[Link to Repo ](https://github.com/${repo}/)
+[Build log here](https://github.com/${repo}/commit/${sha}/checks)`
+        default:
+            return `
+⬆️⇅⬆️⇅
+            
+ID: ${ghwrkflw}
+        
+Action was a *${ipstatus}!*
+        
+\`Repository:  ${repo}\` 
+        
+On:          *${ghevent}*
+        
+By:            *${ghactor}* 
+        
+Tag:        ${process.env.GITHUB_REF}
+        
+[Link to Repo ](https://github.com/${repo}/)
+            `
+    }
+}
+

In these lines of code, we’re just initializing a switch statement for the responses. We’re also declaring an anonymous function to use the switch responses via a function later. We’re using all the defined variables in the switch. You can check the trigger Events to get how the event is triggered and what keyword should be used.

+

Now for the last part of the Js file, we just take the response from the switch and assign it to a constant. Then we use the sendMessage function of the node-telegram-bot-api to send the message to the bot with the chatid and the output as the arguments.

+
const output = evresp(ghevent)
+

bot.sendMessage(chatid,output,{parse_mode : “Markdown”})

+

Compiling and Minifying the Js code

+

Since we have installed @zeit/ncc and this is used for the making the whole program with all the APIs to a single file and we need to use NCC for that. We just need to run

+
yarn run ncc build index.js -C -m -o dist
+

or you might wanna add the following to you package.json file, and run npm run test to compile and minify the code.

+
"scripts": {
+    "test": "ncc build index.js -C -m -o dist"
+  },
+

This will create a dist folder with and index.js file which contains the compiled code.

+

Making it a valid action

+

For making this Js file a valid action, we need to add an action.yml file. The action.yml for this action is like this

+
name: 'Action Name'
+description: 'Action Descreption'
+author: '<author name>'
+inputs: 
+  chat:
+    description: 'Chat to send: chat id or @channel_name'
+    required: true
+  token:
+    description: 'Telegram Bot token'
+    required: true
+  status:
+    description: 'Job status'
+    required: true
+  iu_title: 
+    description: 'Issue Title'
+    default: ${{ github.event.issue.title }}
+  iu_num:
+    description: 'Issue Number'
+    default: ${{ github.event.issue.number }}
+  iu_actor: 
+    description: 'Issue Triggerer'
+    default: ${{ github.event.issue.user.login }}
+  iu_com:
+    description: 'Issue Comment'
+    default: ${{github.event.comment.body}}
+  pr_state:
+    description: 'State of the PR'
+    default: ${{ github.event.action }}
+  pr_num:
+    description: 'PR Number'
+    default: ${{ github.event.number }}
+  pr_title:
+    description: 'Title of the PR'
+    default: ${{ github.event.pull_request.title }}
+  pr_body:
+    description: 'Body/Contents of the PR'
+    default: ${{ github.event.pull_request.body }}
+runs:
+  using: "node12"
+  main: "dist/index.js"
+branding:
+  icon: 'repeat'  
+  color: 'green'
+

Here we’re defining the Input variables to be loaded for the action in GitHub’s runtime environemt. All these default data are taken from the response of the webhooks which are send by GitHub when a trigger event is occured. You can find out more in the Action Documentation Here.

+
runs:
+  using: "node12"
+  main: "dist/index.js"
+

Here we are defining that this is a node action and should run in an environment with node, and the file which should be run, here the index.js file in the dist folder. That should do it. Create a new commit and push it to a repo. Create a new tag and this action will appear in the marketplace.

+

Defining a workflow to test your action

+

GitHub Action workflows are defined using the .yml syntax. Here is an example of a sample workflow for this action

+
name: <Workflow Name>
+
+on:
+  push:
+  pull_request:
+    types: [opened, closed]
+  issues:
+    types: [opened, closed, reopened]
+jobs:
+  build:
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: <AnyName>
+        uses: <username>/<repo>@master
+        if: always()
+        with:
+          chat: ${{ secrets.chat }}
+          token: ${{ secrets.token }}
+          status: ${{ job.status }}
+

The Complete code for the bot is

+
//Initializing dotenv and the bot
+require("dotenv").config
+const Bot = require('node-telegram-bot-api');
+// aliasing the environment variables 
+const {
+    INPUT_STATUS: ipstatus, 
+    INPUT_TOKEN: tgtoken, //Telegram api token
+    INPUT_CHAT: chatid,// Telegram Chat ID
+    INPUT_IU_TITLE: ititle,// Issue title
+    INPUT_IU_NUM: inum,// Issue Number
+    INPUT_IU_ACTOR: iactor, // Issue made by
+    INPUT_IU_BODY: ibody, // Issue Body
+    INPUT_PR_NUM: pnum, // PR Number
+    INPUT_PR_STATE: prstate, // PR Opened, reponed or closed
+    INPUT_PR_TITLE: ptitle, // PR Title
+    INPUT_PR_BODY: pbody, // Body of the PR
+    GITHUB_EVENT_NAME: ghevent, // Name of the trigger event
+    GITHUB_REPOSITORY: repo, // Repository the trigger was made from
+    GITHUB_ACTOR: ghactor, // User who triggered the action
+    GITHUB_SHA: sha, // Commit ID
+    GITHUB_WORKFLOW: ghwrkflw // Workflow Name
+} = process.env;
+
+const bot = new Bot(tgtoken)
+// Function to return the response for the specific trigger
+const evresp = (gevent) => {
+    switch (gevent) {
+//Switch statement for issues
+        case "issues":
+            return `
+❗️❗️❗️❗️❗️❗️
+        
+Issue ${prstate}
+
+Issue Title and Number  : ${ititle} | #${inum}
+
+Commented or Created By : \`${iactor}\`
+
+Issue Body : *${ibody}*
+
+[Link to Issue](https://github.com/${repo}/issues/${inum})
+[Link to Repo ](https://github.com/${repo}/)
+[Build log here](https://github.com/${repo}/commit/${sha}/checks)`
+// Switch statement for Pull Requests
+        case "pull_request":
+            return `
+🔃🔀🔃🔀🔃🔀
+PR ${prstate} 
+        
+PR Number:      ${pnum}
+        
+PR Title:       ${ptitle}
+        
+PR Body:        *${pbody}*
+        
+PR By:          ${ghactor}
+        
+[Link to Issue](https://github.com/${repo}/pull/${pnum})
+[Link to Repo ](https://github.com/${repo}/)
+[Build log here](https://github.com/${repo}/commit/${sha}/checks)`
+        default:
+// switch statement for Pushes
+            return `
+⬆️⇅⬆️⇅
+            
+ID: ${ghwrkflw}
+        
+Action was a *${ipstatus}!*
+        
+\`Repository:  ${repo}\` 
+        
+On:          *${ghevent}*
+        
+By:            *${ghactor}* 
+        
+Tag:        ${process.env.GITHUB_REF}
+        
+[Link to Repo ](https://github.com/${repo}/)
+            `
+    }
+}
+// assigning the output to a variable
+const output = evresp(ghevent)
+// sending the message
+bot.sendMessage(chatid,output,{parse_mode : "Markdown"})
+

+

You can try out many different items using actions and this is just a sample action to get you started. Maybe sending Cat GIFs if the build succeded on the pull request or sending a welcome message to a first time contributor. You imagination is the limit😄 and Never Stop being ⚡️

+ +
+ + +
+
+ +
+ + diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 0000000..3c7f49a --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1,58 @@ + + + + http://localhost:4321/ + 2020-04-01T00:00:00+00:00 + + http://localhost:4321/posts/ + 2020-04-01T00:00:00+00:00 + + http://localhost:4321/posts/tg-gh/ + 2020-04-01T00:00:00+00:00 + + http://localhost:4321/tags/primer/ + 2020-04-01T02:01:58+05:30 + + http://localhost:4321/posts/post-1/ + 2020-04-01T02:01:58+05:30 + + http://localhost:4321/tags/ + 2020-04-01T02:01:58+05:30 + + http://localhost:4321/tags/todo/ + 2020-04-01T02:01:58+05:30 + + http://localhost:4321/posts/post-4/ + 2020-03-18T12:13:35+05:30 + + http://localhost:4321/archives/ + 2019-05-28T00:00:00+00:00 + + http://localhost:4321/about/ + 2019-02-28T00:00:00+00:00 + + http://localhost:4321/posts/post-7/ + 2018-03-18T12:13:38+05:30 + + http://localhost:4321/posts/post-5/ + 2018-03-18T12:13:38+05:30 + + http://localhost:4321/posts/post-6/ + 2018-03-18T12:13:36+05:30 + + http://localhost:4321/posts/post-3/ + 2018-03-18T12:13:32+05:30 + + http://localhost:4321/tags/procrastinating/ + 2018-03-18T12:13:32+05:30 + + http://localhost:4321/posts/post-2/ + 2018-03-18T12:13:30+05:30 + + http://localhost:4321/tags/space/ + 2018-03-18T12:13:30+05:30 + + http://localhost:4321/categories/ + + diff --git a/public/tags/index.html b/public/tags/index.html new file mode 100644 index 0000000..c64fbb2 --- /dev/null +++ b/public/tags/index.html @@ -0,0 +1,98 @@ + + + + Tags - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ +

All tags

+ + + + + + + + +
+ +
+ +
+ + diff --git a/public/tags/index.xml b/public/tags/index.xml new file mode 100644 index 0000000..90931af --- /dev/null +++ b/public/tags/index.xml @@ -0,0 +1,41 @@ + + + + Tags on Archie + http://localhost:4321/tags/ + Recent content in Tags on Archie + Hugo + en-us + © Athul + Wed, 01 Apr 2020 02:01:58 +0530 + + + Primer + http://localhost:4321/tags/primer/ + Wed, 01 Apr 2020 02:01:58 +0530 + http://localhost:4321/tags/primer/ + + + + Todo + http://localhost:4321/tags/todo/ + Wed, 01 Apr 2020 02:01:58 +0530 + http://localhost:4321/tags/todo/ + + + + Procrastinating + http://localhost:4321/tags/procrastinating/ + Sun, 18 Mar 2018 12:13:32 +0530 + http://localhost:4321/tags/procrastinating/ + + + + Space + http://localhost:4321/tags/space/ + Sun, 18 Mar 2018 12:13:30 +0530 + http://localhost:4321/tags/space/ + + + + diff --git a/public/tags/primer/index.html b/public/tags/primer/index.html new file mode 100644 index 0000000..0731a21 --- /dev/null +++ b/public/tags/primer/index.html @@ -0,0 +1,75 @@ + + + + Primer - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ + +

Entries tagged - "Primer"

+ + + + +
+ + diff --git a/public/tags/primer/index.xml b/public/tags/primer/index.xml new file mode 100644 index 0000000..d2ce133 --- /dev/null +++ b/public/tags/primer/index.xml @@ -0,0 +1,20 @@ + + + + Primer on Archie + http://localhost:4321/tags/primer/ + Recent content in Primer on Archie + Hugo + en-us + © Athul + Wed, 01 Apr 2020 02:01:58 +0530 + + + Primer: When You Have Too Much to Do + http://localhost:4321/posts/post-1/ + Wed, 01 Apr 2020 02:01:58 +0530 + http://localhost:4321/posts/post-1/ + You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more. It all keeps piling up, and it can feel overwhelming. How do you keep up with it all? How do you find focus and peace and get stuff accomplished when you have too much on your plate? + + + diff --git a/public/tags/procrastinating/index.html b/public/tags/procrastinating/index.html new file mode 100644 index 0000000..2439e76 --- /dev/null +++ b/public/tags/procrastinating/index.html @@ -0,0 +1,75 @@ + + + + Procrastinating - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ + +

Entries tagged - "Procrastinating"

+ + + + +
+ + diff --git a/public/tags/procrastinating/index.xml b/public/tags/procrastinating/index.xml new file mode 100644 index 0000000..29633f4 --- /dev/null +++ b/public/tags/procrastinating/index.xml @@ -0,0 +1,20 @@ + + + + Procrastinating on Archie + http://localhost:4321/tags/procrastinating/ + Recent content in Procrastinating on Archie + Hugo + en-us + © Athul + Sun, 18 Mar 2018 12:13:32 +0530 + + + How I Learned to Stop Procrastinating, & Love Letting Go + http://localhost:4321/posts/post-3/ + Sun, 18 Mar 2018 12:13:32 +0530 + http://localhost:4321/posts/post-3/ + The end of procrastination is the art of letting go. I’ve been a lifelong procrastinator, at least until recent years. I would put things off until deadline, because I knew I could come through. I came through on tests after cramming last minute, I turned articles in at the deadline after waiting until the last hour, I got things done. Until I didn’t. It turns out procrastinating caused me to miss deadlines, over and over. + + + diff --git a/public/tags/space/index.html b/public/tags/space/index.html new file mode 100644 index 0000000..b9fc5c8 --- /dev/null +++ b/public/tags/space/index.html @@ -0,0 +1,75 @@ + + + + Space - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ + +

Entries tagged - "Space"

+ + + + +
+ + diff --git a/public/tags/space/index.xml b/public/tags/space/index.xml new file mode 100644 index 0000000..55fc5e6 --- /dev/null +++ b/public/tags/space/index.xml @@ -0,0 +1,20 @@ + + + + Space on Archie + http://localhost:4321/tags/space/ + Recent content in Space on Archie + Hugo + en-us + © Athul + Sun, 18 Mar 2018 12:13:30 +0530 + + + Fearlessness: How to Stop Running from Space + http://localhost:4321/posts/post-2/ + Sun, 18 Mar 2018 12:13:30 +0530 + http://localhost:4321/posts/post-2/ + We spend our days filling in every available space, cramming in more tasks, responding to messages, checking social media and online sites, watching videos. We are afraid of empty space in our lives. The result is often a continual busyness, constant distraction and avoidance, lack of focus, lack of satisfaction with our lives. We run from silence. We run from the spaces between tasks and appointments. We run from solitude and stillness. + + + diff --git a/public/tags/todo/index.html b/public/tags/todo/index.html new file mode 100644 index 0000000..670fa4e --- /dev/null +++ b/public/tags/todo/index.html @@ -0,0 +1,75 @@ + + + + Todo - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ + +

Entries tagged - "todo"

+ + + + +
+ + diff --git a/public/tags/todo/index.xml b/public/tags/todo/index.xml new file mode 100644 index 0000000..2d736af --- /dev/null +++ b/public/tags/todo/index.xml @@ -0,0 +1,20 @@ + + + + Todo on Archie + http://localhost:4321/tags/todo/ + Recent content in Todo on Archie + Hugo + en-us + © Athul + Wed, 01 Apr 2020 02:01:58 +0530 + + + Primer: When You Have Too Much to Do + http://localhost:4321/posts/post-1/ + Wed, 01 Apr 2020 02:01:58 +0530 + http://localhost:4321/posts/post-1/ + You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more. It all keeps piling up, and it can feel overwhelming. How do you keep up with it all? How do you find focus and peace and get stuff accomplished when you have too much on your plate? + + + diff --git a/themedianduck.Rproj b/themedianduck.Rproj new file mode 100644 index 0000000..79001da --- /dev/null +++ b/themedianduck.Rproj @@ -0,0 +1,13 @@ +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 4 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX From c627241bf598289b04d1701e8dc2efecacf5a000 Mon Sep 17 00:00:00 2001 From: bluevolvo87 <159496503+bluevolvo87@users.noreply.github.com> Date: Sat, 6 Jul 2024 17:14:52 -0700 Subject: [PATCH 02/17] Add workflow. --- .github/workflows/hugo.yaml | 78 +++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 .github/workflows/hugo.yaml diff --git a/.github/workflows/hugo.yaml b/.github/workflows/hugo.yaml new file mode 100644 index 0000000..fe1fe78 --- /dev/null +++ b/.github/workflows/hugo.yaml @@ -0,0 +1,78 @@ +# Sample workflow for building and deploying a Hugo site to GitHub Pages +name: Deploy Hugo site to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: + - main + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +# Default to bash +defaults: + run: + shell: bash + +jobs: + # Build job + build: + runs-on: ubuntu-latest + env: + HUGO_VERSION: 0.128.0 + steps: + - name: Install Hugo CLI + run: | + wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \ + && sudo dpkg -i ${{ runner.temp }}/hugo.deb + - name: Install Dart Sass + run: sudo snap install dart-sass + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + - name: Setup Pages + id: pages + uses: actions/configure-pages@v5 + - name: Install Node.js dependencies + run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" + - name: Build with Hugo + env: + HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache + HUGO_ENVIRONMENT: production + TZ: America/Los_Angeles + run: | + hugo \ + --gc \ + --minify \ + --baseURL "${{ steps.pages.outputs.base_url }}/" + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./public + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 From 207684b5349faed440f9cbbdf00cc4c0f156afa7 Mon Sep 17 00:00:00 2001 From: bluevolvo87 <159496503+bluevolvo87@users.noreply.github.com> Date: Sat, 6 Jul 2024 17:17:15 -0700 Subject: [PATCH 03/17] Branch activate. --- .github/workflows/hugo.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/hugo.yaml b/.github/workflows/hugo.yaml index fe1fe78..32966b9 100644 --- a/.github/workflows/hugo.yaml +++ b/.github/workflows/hugo.yaml @@ -5,7 +5,7 @@ on: # Runs on pushes targeting the default branch push: branches: - - main + - hugo # Allows you to run this workflow manually from the Actions tab workflow_dispatch: From 77119e7305b52d156dd7acc5ce71a92e02ffe7f9 Mon Sep 17 00:00:00 2001 From: Christopher Nam Date: Sat, 6 Jul 2024 17:18:34 -0700 Subject: [PATCH 04/17] Add Archie Theme directory --- themes/archie/LICENSE | 20 + themes/archie/README.md | 134 ++++++ themes/archie/archetypes/default.md | 2 + .../archie/exampleSite/archetypes/default.md | 5 + themes/archie/exampleSite/config.toml | 47 ++ themes/archie/exampleSite/content/_index.md | 4 + themes/archie/exampleSite/content/about.md | 28 ++ themes/archie/exampleSite/content/archives.md | 5 + .../exampleSite/content/homepage/about.md | 7 + .../exampleSite/content/homepage/index.md | 3 + .../exampleSite/content/homepage/work.md | 7 + .../exampleSite/content/posts/post-1.md | 62 +++ .../exampleSite/content/posts/post-2.md | 40 ++ .../exampleSite/content/posts/post-3.md | 38 ++ .../exampleSite/content/posts/post-4.md | 30 ++ .../exampleSite/content/posts/post-5.md | 75 ++++ .../exampleSite/content/posts/post-6.md | 36 ++ .../exampleSite/content/posts/post-7.md | 15 + .../archie/exampleSite/content/posts/tg-gh.md | 382 +++++++++++++++++ themes/archie/images/archie-dark.png | Bin 0 -> 109628 bytes themes/archie/images/theme.png | Bin 0 -> 128732 bytes themes/archie/layouts/404.html | 0 themes/archie/layouts/_default/baseof.html | 11 + themes/archie/layouts/_default/list.html | 17 + themes/archie/layouts/_default/single.html | 42 ++ themes/archie/layouts/_default/term.html | 17 + themes/archie/layouts/_default/terms.html | 20 + themes/archie/layouts/index.html | 30 ++ themes/archie/layouts/partials/disqus.html | 19 + themes/archie/layouts/partials/footer.html | 21 + themes/archie/layouts/partials/head.html | 14 + themes/archie/layouts/partials/header.html | 104 +++++ .../layouts/partials/pagedescription.html | 7 + themes/archie/layouts/partials/paginator.html | 15 + themes/archie/layouts/shortcodes/callout.html | 6 + .../fonts/fira-sans-v10-latin-regular.eot | Bin 0 -> 25059 bytes .../fonts/fira-sans-v10-latin-regular.svg | 330 ++++++++++++++ .../fonts/fira-sans-v10-latin-regular.ttf | Bin 0 -> 54984 bytes .../fonts/fira-sans-v10-latin-regular.woff | Bin 0 -> 25888 bytes .../fonts/fira-sans-v10-latin-regular.woff2 | Bin 0 -> 21244 bytes .../ibm-plex-mono-v6-latin-500italic.eot | Bin 0 -> 17474 bytes .../ibm-plex-mono-v6-latin-500italic.svg | 365 ++++++++++++++++ .../ibm-plex-mono-v6-latin-500italic.ttf | Bin 0 -> 40032 bytes .../ibm-plex-mono-v6-latin-500italic.woff | Bin 0 -> 19900 bytes .../ibm-plex-mono-v6-latin-500italic.woff2 | Bin 0 -> 15224 bytes .../fonts/roboto-mono-v12-latin-regular.eot | Bin 0 -> 13517 bytes .../fonts/roboto-mono-v12-latin-regular.svg | 405 ++++++++++++++++++ .../fonts/roboto-mono-v12-latin-regular.ttf | Bin 0 -> 22224 bytes .../fonts/roboto-mono-v12-latin-regular.woff | Bin 0 -> 15160 bytes .../fonts/roboto-mono-v12-latin-regular.woff2 | Bin 0 -> 12312 bytes themes/archie/static/js/feather.min.js | 13 + themes/archie/static/js/main.js | 0 themes/archie/static/js/themetoggle.js | 23 + themes/archie/theme.toml | 15 + 54 files changed, 2414 insertions(+) create mode 100644 themes/archie/LICENSE create mode 100644 themes/archie/README.md create mode 100644 themes/archie/archetypes/default.md create mode 100644 themes/archie/exampleSite/archetypes/default.md create mode 100644 themes/archie/exampleSite/config.toml create mode 100644 themes/archie/exampleSite/content/_index.md create mode 100644 themes/archie/exampleSite/content/about.md create mode 100644 themes/archie/exampleSite/content/archives.md create mode 100644 themes/archie/exampleSite/content/homepage/about.md create mode 100644 themes/archie/exampleSite/content/homepage/index.md create mode 100644 themes/archie/exampleSite/content/homepage/work.md create mode 100644 themes/archie/exampleSite/content/posts/post-1.md create mode 100644 themes/archie/exampleSite/content/posts/post-2.md create mode 100644 themes/archie/exampleSite/content/posts/post-3.md create mode 100644 themes/archie/exampleSite/content/posts/post-4.md create mode 100644 themes/archie/exampleSite/content/posts/post-5.md create mode 100644 themes/archie/exampleSite/content/posts/post-6.md create mode 100644 themes/archie/exampleSite/content/posts/post-7.md create mode 100644 themes/archie/exampleSite/content/posts/tg-gh.md create mode 100644 themes/archie/images/archie-dark.png create mode 100644 themes/archie/images/theme.png create mode 100644 themes/archie/layouts/404.html create mode 100644 themes/archie/layouts/_default/baseof.html create mode 100644 themes/archie/layouts/_default/list.html create mode 100644 themes/archie/layouts/_default/single.html create mode 100644 themes/archie/layouts/_default/term.html create mode 100644 themes/archie/layouts/_default/terms.html create mode 100644 themes/archie/layouts/index.html create mode 100644 themes/archie/layouts/partials/disqus.html create mode 100644 themes/archie/layouts/partials/footer.html create mode 100644 themes/archie/layouts/partials/head.html create mode 100644 themes/archie/layouts/partials/header.html create mode 100644 themes/archie/layouts/partials/pagedescription.html create mode 100644 themes/archie/layouts/partials/paginator.html create mode 100644 themes/archie/layouts/shortcodes/callout.html create mode 100644 themes/archie/static/fonts/fira-sans-v10-latin-regular.eot create mode 100644 themes/archie/static/fonts/fira-sans-v10-latin-regular.svg create mode 100644 themes/archie/static/fonts/fira-sans-v10-latin-regular.ttf create mode 100644 themes/archie/static/fonts/fira-sans-v10-latin-regular.woff create mode 100644 themes/archie/static/fonts/fira-sans-v10-latin-regular.woff2 create mode 100644 themes/archie/static/fonts/ibm-plex-mono-v6-latin-500italic.eot create mode 100644 themes/archie/static/fonts/ibm-plex-mono-v6-latin-500italic.svg create mode 100644 themes/archie/static/fonts/ibm-plex-mono-v6-latin-500italic.ttf create mode 100644 themes/archie/static/fonts/ibm-plex-mono-v6-latin-500italic.woff create mode 100644 themes/archie/static/fonts/ibm-plex-mono-v6-latin-500italic.woff2 create mode 100644 themes/archie/static/fonts/roboto-mono-v12-latin-regular.eot create mode 100644 themes/archie/static/fonts/roboto-mono-v12-latin-regular.svg create mode 100644 themes/archie/static/fonts/roboto-mono-v12-latin-regular.ttf create mode 100644 themes/archie/static/fonts/roboto-mono-v12-latin-regular.woff create mode 100644 themes/archie/static/fonts/roboto-mono-v12-latin-regular.woff2 create mode 100644 themes/archie/static/js/feather.min.js create mode 100644 themes/archie/static/js/main.js create mode 100644 themes/archie/static/js/themetoggle.js create mode 100644 themes/archie/theme.toml diff --git a/themes/archie/LICENSE b/themes/archie/LICENSE new file mode 100644 index 0000000..646ad35 --- /dev/null +++ b/themes/archie/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2020 ATHUL CYRIAC AJAY + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/themes/archie/README.md b/themes/archie/README.md new file mode 100644 index 0000000..ef3e4d6 --- /dev/null +++ b/themes/archie/README.md @@ -0,0 +1,134 @@ +# Archie - Hugo theme +Archie is a minimal and clean theme for hugo with a markdown-ish UI. + +Forked from [Ezhil Theme](https://github.com/vividvilla/ezhil) + +## Demo + +[Check the Demo](https://athul.github.io/archie/) hosted on GitHub Pages :smile: . You can find the source code to that in the `site` branch of this repository + +![](/images/theme.png) +![](/images/archie-dark.png) +## Feature +- Google Analytics Script +- Callouts +- Tags +- Auto Dark Mode(based on system theme) +- Dark/Light Mode toggle +- tl:dr; frontamatter +- Cache busting for CSS files +- Disqus Comments + +## Installation +In your Hugo website directory, create a new folder named theme and clone the repo +```bash +$ mkdir themes +$ cd themes +$ git clone https://github.com/athul/archie.git +``` +Edit the `config.toml` file with `theme="archie"` +For more information read the official [setup guide](https://gohugo.io/installation/) of Hugo. + +If you encounter any issues with Google Analytics, update Hugo to v0.125.0 or +later and make sure your using the latest version of the theme. + +## Writing Posts +Create a new `.md` file in the *content/posts* folder +```yml +--- +title: Title of the post +description: +date: +tldr: (optional) +draft: true/false (optional) +tags: [tag names] (optional) +--- +``` + +## Credits +Forked from [Ezhil Theme](https://github.com/vividvilla/ezhil) and Licensed under MIT License +Inspired by design of blog.jse.li + +---- + +## Config Options + +### Custom CSS +Custom CSS files can be included though the `customcss` config parameter. + +Note: CSS files should be placed under the `assets` directory e.g. `assets/css/first.css`. + +```toml +[params] + customcss = ["css/first.css", "css/second.css"] +``` + + +## Config of the Demo Site + +```toml +baseURL = "https://athul.github.io/archie/" +languageCode = "en-us" +title = "Archie" +theme="archie" +copyright = "© Athul" +# Code Highlight +pygmentsstyle = "monokai" +pygmentscodefences = true +pygmentscodefencesguesssyntax = true + +disqusShortname = "yourDisqusShortname" + +paginate=3 # articles per page + +[params] + mode="auto" # color-mode → light,dark,toggle or auto + useCDN=false # don't use CDNs for fonts and icons, instead serve them locally. + subtitle = "Minimal and Clean [blog theme for Hugo](https://github.com/athul/archie)" + mathjax = true # enable MathJax support + katex = true # enable KaTeX support + +# Social Tags + +[[params.social]] +name = "GitHub" +icon = "github" +url = "https://github.com/athul/archie" + +[[params.social]] +name = "Twitter" +icon = "twitter" +url = "https://twitter.com/athulcajay/" + +[[params.social]] +name = "GitLab" +icon = "gitlab" +url = "https://gitlab.com/athul/" + +# Main menu Items + +[[menu.main]] +name = "Home" +url = "/" +weight = 1 + +[[menu.main]] +name = "All posts" +url = "/posts" +weight = 2 + +[[menu.main]] +name = "About" +url = "/about" +weight = 3 + +[[menu.main]] +name = "Tags" +url = "/tags" +weight = 4 +``` +--- + +If you liked my work please consider supporting me on [BuymeACoffee](https://www.buymeacoffee.com/athulca) + +Buy Me A Coffee diff --git a/themes/archie/archetypes/default.md b/themes/archie/archetypes/default.md new file mode 100644 index 0000000..ac36e06 --- /dev/null +++ b/themes/archie/archetypes/default.md @@ -0,0 +1,2 @@ ++++ ++++ diff --git a/themes/archie/exampleSite/archetypes/default.md b/themes/archie/exampleSite/archetypes/default.md new file mode 100644 index 0000000..26f317f --- /dev/null +++ b/themes/archie/exampleSite/archetypes/default.md @@ -0,0 +1,5 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- diff --git a/themes/archie/exampleSite/config.toml b/themes/archie/exampleSite/config.toml new file mode 100644 index 0000000..ec4ec0b --- /dev/null +++ b/themes/archie/exampleSite/config.toml @@ -0,0 +1,47 @@ +baseURL = "https://example.com" +languageCode = "en-us" +title = "Archie" +theme="archie" +copyright = "© Athul" +pygmentsstyle = "monokai" +pygmentscodefences = true +pygmentscodefencesguesssyntax = true +[params] + mode="auto" + useCDN=false + subtitle = "Minimal and Clean [blog theme for Hugo](https://github.com/athul/archie)" + +[[params.social]] +name = "GitHub" +icon = "github" +url = "https://github.com/athul/archie" + +[[params.social]] +name = "Twitter" +icon = "twitter" +url = "https://twitter.com/athulcajay/" + +[[params.social]] +name = "GitLab" +icon = "gitlab" +url = "https://gitlab.com/athul/" + +[[menu.main]] +name = "Home" +url = "/" +weight = 1 + +[[menu.main]] +name = "All posts" +url = "/posts" +weight = 2 + +[[menu.main]] +name = "About" +url = "/about" +weight = 3 + +[[menu.main]] +name = "Tags" +url = "/tags" +weight = 4 diff --git a/themes/archie/exampleSite/content/_index.md b/themes/archie/exampleSite/content/_index.md new file mode 100644 index 0000000..6abc75e --- /dev/null +++ b/themes/archie/exampleSite/content/_index.md @@ -0,0 +1,4 @@ ++++ +author = "Hugo Authors" ++++ + diff --git a/themes/archie/exampleSite/content/about.md b/themes/archie/exampleSite/content/about.md new file mode 100644 index 0000000..a412806 --- /dev/null +++ b/themes/archie/exampleSite/content/about.md @@ -0,0 +1,28 @@ ++++ +title = "About" +description = "Hugo, the world’s fastest framework for building websites" +date = "2019-02-28" +aliases = ["about-us","about-hugo","contact"] +author = "Hugo Authors" ++++ + +Written in Go, Hugo is an open source static site generator available under the [Apache Licence 2.0.](https://github.com/gohugoio/hugo/blob/master/LICENSE) Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows. + +Hugo makes use of a variety of open source projects including: + +* https://github.com/yuin/goldmark +* https://github.com/alecthomas/chroma +* https://github.com/muesli/smartcrop +* https://github.com/spf13/cobra +* https://github.com/spf13/viper + +Hugo is ideal for blogs, corporate websites, creative portfolios, online magazines, single page applications or even a website with thousands of pages. + +Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases. + +Websites built with Hugo are extremelly fast, secure and can be deployed anywhere including, AWS, GitHub Pages, Heroku, Netlify and any other hosting provider. + +Learn more and contribute on [GitHub](https://github.com/gohugoio). + + + diff --git a/themes/archie/exampleSite/content/archives.md b/themes/archie/exampleSite/content/archives.md new file mode 100644 index 0000000..98a1ee9 --- /dev/null +++ b/themes/archie/exampleSite/content/archives.md @@ -0,0 +1,5 @@ +--- +date: 2019-05-28 +type: section +layout: "archives" +--- \ No newline at end of file diff --git a/themes/archie/exampleSite/content/homepage/about.md b/themes/archie/exampleSite/content/homepage/about.md new file mode 100644 index 0000000..c2ba680 --- /dev/null +++ b/themes/archie/exampleSite/content/homepage/about.md @@ -0,0 +1,7 @@ +--- +title: 'Our Difference' +button: 'About us' +weight: 2 +--- + +Lorem ipsum dolor sit amet, et essent mediocritatem quo, choro volumus oporteat an mei. ipsum dolor sit amet, et essent mediocritatem quo, \ No newline at end of file diff --git a/themes/archie/exampleSite/content/homepage/index.md b/themes/archie/exampleSite/content/homepage/index.md new file mode 100644 index 0000000..01ffa31 --- /dev/null +++ b/themes/archie/exampleSite/content/homepage/index.md @@ -0,0 +1,3 @@ +--- +headless : true +--- diff --git a/themes/archie/exampleSite/content/homepage/work.md b/themes/archie/exampleSite/content/homepage/work.md new file mode 100644 index 0000000..f2fee73 --- /dev/null +++ b/themes/archie/exampleSite/content/homepage/work.md @@ -0,0 +1,7 @@ +--- +title: 'We Help Business Grow' +button: 'Our Work' +weight: 1 +--- + +Lorem ipsum dolor sit amet, et essent mediocritatem quo, choro volumus oporteat an mei. Numquam dolores mel eu, mea docendi omittantur et, mea ea duis erat. Elit melius cu ius. Per ex novum tantas putant, ei his nullam aliquam apeirian. Aeterno quaestio constituto sea an, no eum intellegat assueverit. \ No newline at end of file diff --git a/themes/archie/exampleSite/content/posts/post-1.md b/themes/archie/exampleSite/content/posts/post-1.md new file mode 100644 index 0000000..293bdc3 --- /dev/null +++ b/themes/archie/exampleSite/content/posts/post-1.md @@ -0,0 +1,62 @@ +--- +title: "Primer: When You Have Too Much to Do" +date: 2020-04-01T02:01:58+05:30 +description: "You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more." +tags: [Primer, todo] +--- + +You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more. + +It all keeps piling up, and it can feel overwhelming. + +How do you keep up with it all? How do you find focus and peace and get stuff accomplished when you have too much on your plate? + +In this primer, I’ll look at some key strategies and tactics for taking on an overloaded life with an open heart, lots of energy, and a smile on your face. + +## The First Step: Triage + +Whether you’re just starting your day, or you’re in the middle of the chaos and just need to find some sanity … the first step is to get into triage mode. + +Triage, as you probably know, is sorting through the chaos to prioritize: what needs to be done now, what needs to be done today, what needs to be done this week, and what can wait? You’re looking at urgency, but also what’s meaningful and important. + +Here’s what you might do: + +* Pick out the things that need to be done today. Start a Short List for things you’re going to do today. That might be important tasks for big projects, urgent tasks that could result in damage if you don’t act, smaller admin tasks that you really should take care of today, and responding to important messages. I would recommend being ruthless and cutting out as much as you can, having just 5 things on your plate if that’s at all possible. Not everything needs to be done today, and not every email needs to be responded to. +* Push some things to tomorrow and the rest of the week. If you have deadlines that can be pushed back (or renegotiated), do that. Spread the work out over the week, even into next week. What needs to be done tomorrow? What can wait a day or two longer? +* Eliminate what you can. That might mean just not replying to some messages that aren’t that important and don’t really require a reply. It might mean telling some people that you can’t take on this project after all, or that you need to get out of the commitment that you said you’d do. Yes, this is uncomfortable. For now, just put them on a list called, “To Not Do,” and plan to figure out how to get out of them later. + +OK, you have some breathing room and a manageable list now! Let’s shrink that down even further and just pick one thing. + +## Next: Focus on One Thing + +With a lot on your plate, it’s hard to pick one thing to focus on. But that’s exactly what I’m going to ask you to do. + +Pick one thing, and give it your focus. Yes, there are a lot of other things you can focus on. Yes, they’re stressing you out and making it hard to focus. But think about it this way: if you allow it all to be in your head all the time, that will always be your mode of being. You’ll always be thinking about everything, stressing out about it all, with a frazzled mind … unless you start shifting. + +The shift: + +* Pick something to focus on. Look at the triaged list from the first section … if you have 5-6 things on this Short List, you can assess whether there’s any super urgent, time-sensitive things you need to take care of. If there are, pick one of them. If not, pick the most important one — probably the one you have been putting off doing. +* Clear everything else away. Just for a little bit. Close all browser tabs, turn off notifications, close open applications, put your phone away. +* Put that one task before you, and allow yourself to be with it completely. Pour yourself into it. Think of it as a practice, of letting go (of everything else), of focus, of radical simplicity. + +When you’re done (or after 15-20 minutes have gone by at least), you can switch to something else. But don’t allow yourself to switch until then. + +By closing off all exits, by choosing one thing, by giving yourself completely to that thing … you’re now in a different mode that isn’t so stressful or spread thin. You’ve started a shift that will lead to focus and sanity. + +## Third: Schedule Time to Simplify + +Remember the To Not Do list above? Schedule some time this week to start reducing your projects, saying no to people, getting out of commitments, crossing stuff off your task list … so that you can have some sanity back. + +There are lots of little things that you’ve said “yes” to that you probably shouldn’t have. That’s why you’re overloaded. Protect your more important work, and your time off, and your peace of mind, by saying “no” to things that aren’t as important. + +Schedule the time to simplify — you don’t have to do it today, but sometime soon — and you can then not have to worry about the things on your To Not Do list until then. + +## Fourth: Practice Mindful Focus + +Go through the rest of the day with an attitude of “mindful focus.” That means that you are doing one thing at a time, being as present as you can, switching as little as you can. + +Think of it as a settling of the mind. A new mode of being. A mindfulness practice (which means you won’t be perfect at it). + +As you practice mindful focus, you’ll learn to practice doing things with an open heart, with curiosity and gratitude, and even joy. Try these one at a time as you get to do each task on your Short List. + +You’ll find that you’re not so overloaded, but that each task is just perfect for that moment. And that’s a completely new relationship with the work that you do, and a new relationship with life. diff --git a/themes/archie/exampleSite/content/posts/post-2.md b/themes/archie/exampleSite/content/posts/post-2.md new file mode 100644 index 0000000..54f4fde --- /dev/null +++ b/themes/archie/exampleSite/content/posts/post-2.md @@ -0,0 +1,40 @@ +--- +title: "Fearlessness: How to Stop Running from Space" +date: 2018-03-18T12:13:30+05:30 +tags: [Space] +--- + +We spend our days filling in every available space, cramming in more tasks, responding to messages, checking social media and online sites, watching videos. + +We are afraid of empty space in our lives. + +The result is often a continual busyness, constant distraction and avoidance, lack of focus, lack of satisfaction with our lives. + +We run from silence. We run from the spaces between tasks and appointments. We run from solitude and stillness. We try to fill every second with activity, with something useful, as if silence and space are not valuable. + +But what are we afraid of? + +And who would we be if we didn’t have that fear? + +We’re afraid of space and stillness and silence because it highlights the uncertainty, instability, groundlessness, insecurity, shakiness that lie underneath every second of our lives. We’re afraid of having to face this instability and uncertainty, of having to feel the fear of it. + +Without the fear of all of the uncertainty that is highlighted by space … we become free. + +I know in my life, when I allow myself to have stillness, silence, solitude, simplicity and space … it leaves room to face whatever is coming up for me. It gives me room to fully feel any feelings that I’ve been avoiding. It allows me to be more honest with myself, instead of using distractions and busyness to cover up what I don’t want to see. + +And in the end, I develop trust that the space is not something to be feared, but rather something to be treasured. A gift, filled with learning and not knowing and shakiness and beauty. + +You might try allowing more space to be in your day, without filling it: + +* Take some time between tasks for stillness. +* Sit out in nature, in silence, without technology. +* When you notice yourself reaching for your phone, pause. See if you can just be still, just savor some space. +* When you feel uncertainty or instability in your life (hint: it’s always there), let yourself feel it. Be present with it, without needing to run or avoid. +* When you feel fear, be open-hearted with it and allow yourself fully feel it, being friendly with it. Your relationship with fear will change if you become friendly with it. +* Do less, and trust that things won’t fall apart. Or if they do fall apart, you can be present with that instability. +* When you’re in line, driving, eating, walking, exercising … see if you can do those things in silence, without technology, without needing to do something “useful.” Find the value in these spaces. +* Notice who you are without the fear of space. + +Savor these spaces, their deliciousness. Savor the groundlessness, as something filled with freedom if we learn not to fear it. Be present with the fear and uncertainty, as good friends not as enemies. + +Let your heart be open raw tender and vulnerable, and your mind embracing the spaciousness of the vast blue sky of open awareness. diff --git a/themes/archie/exampleSite/content/posts/post-3.md b/themes/archie/exampleSite/content/posts/post-3.md new file mode 100644 index 0000000..2eb633f --- /dev/null +++ b/themes/archie/exampleSite/content/posts/post-3.md @@ -0,0 +1,38 @@ +--- +title: "How I Learned to Stop Procrastinating, & Love Letting Go" +date: 2018-03-18T12:13:32+05:30 +description: "The art of letting go." +tags: [Procrastinating] +--- + +The end of procrastination is the art of letting go. + +I’ve been a lifelong procrastinator, at least until recent years. I would put things off until deadline, because I knew I could come through. I came through on tests after cramming last minute, I turned articles in at the deadline after waiting until the last hour, I got things done. + +Until I didn’t. It turns out procrastinating caused me to miss deadlines, over and over. It stressed me out. My work was less-than-desirable when I did it last minute. Slowly, I started to realize that procrastination wasn’t doing me any favors. In fact, it was causing me a lot of grief. + +But I couldn’t quit. I tried a lot of things. I tried time boxing and goal setting and accountability and the Pomodoro Technique and Getting Things Done. All are great methods, but they only last so long. Nothing really worked over the long term. + +That’s because I wasn’t getting to the root problem. + +I hadn’t figured out the skill that would save me from the procrastination. + +Until I learned about letting go. + +Letting go first came to me when I was quitting smoking. I had to let go of the “need” to smoke, the use of my crutch of cigarettes to deal with stress and problems. + +Then I learned I needed to let go of other false needs that were causing me problems: sugar, junk food, meat, shopping, beer, possessions. I’m not saying I can never do these things again once I let go of these needs, but I let go of the idea that they’re really necessary. I let go of an unhealthy attachment to them. + +Then I learned that distractions and the false need to check my email and news and other things online … were causing me problems. They were causing my procrastination. + +So I learned to let go of those too. + +Here’s the process I used to let go of the distractions and false needs that cause procrastination: + +I paid attention to the pain they cause me, later, instead of only the temporary comfort/pleasure they gave me right away. +I thought about the person I want to be, the life I want to live. I set my intentions to do the good work I think I should do. +I watched my urges to check things, to go to the comfort of distractions. I saw that I wanted to escape discomfort of something hard, and go to the comfort of something familiar and easy. +I realized I didn’t need that comfort. I could be in discomfort and nothing bad would happen. In fact, the best things happen when I’m in discomfort. +And then I smile, and breathe, and let go. + +And one step at a time, become the person I want to be. diff --git a/themes/archie/exampleSite/content/posts/post-4.md b/themes/archie/exampleSite/content/posts/post-4.md new file mode 100644 index 0000000..e6609a7 --- /dev/null +++ b/themes/archie/exampleSite/content/posts/post-4.md @@ -0,0 +1,30 @@ +--- +title: "Getting Started with Traveling Ultralight" +date: 2020-03-18T12:13:35+05:30 +description: "Start by getting a small backpack (less than 20 liters) and then just travel with what fits in that." +--- + +I’m on a trip at the moment, and a friend who generously let me sleep on his couch looked at my small travel backpack and commented on how little I travel with: “That’s impressive,” he said. + +I was a little surprised, because though I’ve gotten that comment before, it’s become normal for me to travel with just a small bag (10 lbs. or less, usually), and I have friends who travel with even less. But then I remembered that I’m far from normal in this way. + +I gave him a tip for getting started, and I recommend it for all of you, who want to travel light — or ultralight, as I call it, because for many people traveling light is taking a carry-on roller luggage. For me, having those roller bags is lugging too much, because you can run up stairs with it with ease, or carry it all over a city without worrying about stowing away your luggage somewhere first. It’s so much easier to travel ultralight. + +Here’s the tip I gave him to get started: start by getting a small backpack (less than 20 liters) and then just travel with what fits in that. + +That’s how to start. But you’ll probably want some guidance on what to put into the bag, and how to travel with so little. Here’s some guidance to get started: + +* I travel with a lightweight laptop (Macbook Air), a few clothes, my phone, earbuds and some charging cords, toiletries, and almost nothing else. A lightweight windbreaker for wind and light rain (Patagonia Houdini). An eye mask and ear plugs. A collapsible water bottle. My passport. That’s about it. No extra shoes. No books. No suit. No travel pillow. No extra camera other than my phone. I’m not sure what else everyone else brings, but none of that. +* I bring clothes that I can wash in the sink or shower and that will dry overnight. Lightweight stuff that I can layer. Often they’re workout-style clothes or things from companies like Outlier or Patagonia that travel well. I don’t bring enough underwear or socks for every day of the trip, because I wash them every couple of days. I only bring one or two extra T-shirts, generally wearing the same two shirts the whole trip, even if it’s a month long. No one has ever once cared what I wear when I’m traveling. +* I bring minimal toiletries: a small shaver for my head, razor, toothbrush, floss small tubes of toothpaste and shaving cream, deodorant, nail clippers, ibuprofen. +* For cold places, I have thermal underwear and a couple long-sleeve layers (generally all Patagonia capilene stuff), and a beanie. I don’t usually go to places where it’s snowing (I don’t know why, maybe snow isn’t my thing), so I don’t have clothes to deal with that weather. +* For warm places, I will bring flip flops and swim trunks, and leave most of the colder layers behind. + +That’s enough for a monthlong trip, which I’ve done multiple times with this kind of setup. For a shorter trip of a few days, I might bring even less. + +I really love traveling this way, and am more than willing to sacrifice bringing extra things for the luxury of traveling lightweight. + +By the way, you don’t need much more than this kind of setup even in everyday life. + +For more info on this, check out my Ultralight ebook, and my friend Tynan has a great book called Forever Nomad. + diff --git a/themes/archie/exampleSite/content/posts/post-5.md b/themes/archie/exampleSite/content/posts/post-5.md new file mode 100644 index 0000000..8623c19 --- /dev/null +++ b/themes/archie/exampleSite/content/posts/post-5.md @@ -0,0 +1,75 @@ +--- +title: "Typography" +date: 2018-03-18T12:13:38+05:30 +--- + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +# Heading 1 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +## Heading 2 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +### Heading 3 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +#### Heading 4 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +##### Heading 5 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +###### Heading 6 + +Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. + +## Typography + +Lid est laborum et dolorum fuga, This is [an example](http://example.com/ "Title") inline link. Et harum quidem rerum facilis, **This is bold** and *emphasis* cumque nihilse impedit quo minus id quod amets untra dolor amet sad. While this is `code block()` and following is a `pre` tag + + print 'this is pre tag' + +Following is the syntax highlighted code block + +```go +func getCookie(name string, r interface{}) (*http.Cookie, error) { + rd := r.(*http.Request) + cookie, err := rd.Cookie(name) + if err != nil { + return nil, err + } + return cookie, nil +} + +func setCookie(cookie *http.Cookie, w interface{}) error { + // Get write interface registered using `Acquire` method in handlers. + wr := w.(http.ResponseWriter) + http.SetCookie(wr, cookie) + return nil +} +``` + +This is blockquote, Will make it *better now* + +> 'I want to do with you what spring does with the cherry trees.' cited ~Pablo Neruda* + + +> Et harum quidem *rerum facilis* est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit + +Unordered list + +* Red +* Green +* Blue + +Ordered list + +1. Red +2. Green +3. Blue diff --git a/themes/archie/exampleSite/content/posts/post-6.md b/themes/archie/exampleSite/content/posts/post-6.md new file mode 100644 index 0000000..5566a71 --- /dev/null +++ b/themes/archie/exampleSite/content/posts/post-6.md @@ -0,0 +1,36 @@ +--- +title: "Hugo shortcodes" +date: 2018-03-18T12:13:36+05:30 +description: Here is a demo of all shortcodes available in Hugo. +--- + +## Images + + + + + + +## Github Gist + +{{< gist spf13 7896402 >}} + +## Youtube video + +{{< youtube w7Ft2ymGmfc >}} + +## Tweet + +{{< tweet 877500564405444608 >}} + +## Vimeo + +{{< vimeo id="146022717" >}} + +## Instagram + +{{< instagram BWNjjyYFxVx >}} + +## Callouts + +{{< callout emoji="⚡️" text="I guess this works" >}} diff --git a/themes/archie/exampleSite/content/posts/post-7.md b/themes/archie/exampleSite/content/posts/post-7.md new file mode 100644 index 0000000..4884040 --- /dev/null +++ b/themes/archie/exampleSite/content/posts/post-7.md @@ -0,0 +1,15 @@ +--- +title: "How to test dark mode?" +summary: "Here is how you can setup dark mode for Ink and test on various OS like iOS, Android, macOS and Windows 10." +date: 2018-03-18T12:13:38+05:30 +tldr: "Wubba lubba dub dub" +--- + +You can set dark mode as default by setting `params.mode` to `dark` in `config.toml` or set it to `auto` which will detect based on your OS and switch to dark mode. For more details [refer documentation](https://github.com/knadh/hugo-ink#configuration) + +Here is how you can switch based on your OS + +* [iOS](https://www.howtogeek.com/440078/how-to-enable-dark-mode-on-your-iphone-and-ipad/) +* [Android](https://9to5google.com/2018/12/17/android-dark-mode-theme-pie/) +* [macOS](https://support.apple.com/en-in/HT208976) +* [Windows 10](https://www.cnet.com/how-to/turn-on-the-dark-mode-in-windows-10/) diff --git a/themes/archie/exampleSite/content/posts/tg-gh.md b/themes/archie/exampleSite/content/posts/tg-gh.md new file mode 100644 index 0000000..4400148 --- /dev/null +++ b/themes/archie/exampleSite/content/posts/tg-gh.md @@ -0,0 +1,382 @@ +--- +title: Telegram Bot for GitHub Actions +date: "2020-04-01" +description: Make a Telegram bot with Node.js and use it with GitHub Actions for sending notifications to you about the repo. +tldr: Making GitHub Actions with Js Code +--- +## Telegram +[Telegram](https://telegram.org/) is a cloud-based mobile and desktop messaging app with a focus on security and speed. It is free to use and extensively hackable. It also has a good bot support system. The API is also easy to implement and has many wrappers for building bots with the API. + +## GitHub Actions +[GitHub Actions](https://github.com/features/actions) is a CI/CD runtime for your GitHub repository. You can run almost anything from scripts to docker containers. You can build, test and deploy your code with GitHub Actions. All these actions are called workflows and workflows differ in the job they're doing. These maybe test workflows, build ones or deployment ones. You can find all the actions on GitHub in the [marketplace](https://github.com/marketplace?type=actions) + +## Building the Bot +### Prerequisites +- Basic JavaScript Knowledge +- Basic GitHub Knowledge +- Telegram Account + +> There are templates for building actions. Here we're gonna start from scratch + +### Environment Setup +- **Node**, You can download node from their [website](https://nodejs.org/en/download/) +- NPM comes with node, so you don't have to worry about it. +- Initialize the Project +```shell +$ git init ## initialize a new git repository for version management +--- +$ npm init +``` +- **dotenv**, Dotenv can be downloaded via +```shell +$ npm i dotenv +--- +$ yarn add dotenv +``` +- **node-telegram-bot-api**, node-telegram-bot-api is a simple wrapper for building telegram bots. You can download it via +```shell +$ npm i node-telegram-bot-api +--- +$ yarn add node-telegram-bot-api +``` +- **@zeit/ncc**, NCC is a Simple CLI for compiling a Node.js module into a single file, together with all its dependencies, GCC-style. It's a dev dependency and can be downloaded +```shell +yarn add --dev @zeit/ncc +--- +npm i -D @zeit/ncc +``` + + +#### Folder Structure +The `dist` folder will be automatically created. `action.yml` will be made + +``` +. +├── dist +│ └── index.js +├── index.js +├── action.yml +├── README.md +└── package.json + +``` +- `index.js` is the file we're defining the bot +- `action.yml` is the file we'll define the action and it's behaviours + +## Making the Bot +We need to get an API bot token from telegram. For that Go to Telegram and Search for `Botfather`. It's a bot. +![](bfather.png) +Create a new bot with the `/newbot` command and get the API key. We'll need that, also talk to `jsondump` bot and get your chat id. The output may be like this, so +```json +{ + "update_id": 143943779, + "message": { + "message_id": 181575, + "from": { + "id": 123456 // this is what we need + "is_bot": false, + "first_name": "Tg Name", + "username": "TG Username", + "language_code": "en" + }, + "chat": { + "id": 123456, + "first_name": "Tg Name", + "username": "TG Username", + "type": "private" + }, + "date": 1584119424, + "text": "message" + } +} +``` +This will be needed for further use and We need to add it to the repo secrets which can be found in the repo settings. Be careful to add it as `token` and `chat` like as shown below +![](scr.png) + +### Writing the Action and Building the Bot +Fire up the terminal/cmd and make a new folder. Install the dependencies. Run the following command +```shell +$ touch index.js action.yml +``` +Open your favourite text editor within the folder or with the file. We'll define the bot in `index.js` + +```javaScript +require("dotenv").config +const Bot = require('node-telegram-bot-api'); +const { + INPUT_STATUS: ipstatus, + INPUT_TOKEN: tgtoken,//Telegram api token + INPUT_CHAT: chatid,// Telegram Chat ID + INPUT_IU_TITLE: ititle,// Issue title + INPUT_IU_NUM: inum,// Issue Number + INPUT_IU_ACTOR: iactor,// Issue made by + INPUT_IU_BODY: ibody,// Issue Body + INPUT_PR_NUM: pnum,// PR Number + INPUT_PR_STATE: prstate,// PR Opened, reponed or closed + INPUT_PR_TITLE: ptitle,// PR Title + INPUT_PR_BODY: pbody,// Body of the PR + GITHUB_EVENT_NAME: ghevent,// Name of the trigger event + GITHUB_REPOSITORY: repo,// Repository the trigger was made from + GITHUB_ACTOR: ghactor,// User who triggered the action + GITHUB_SHA: sha,// Commit ID + GITHUB_WORKFLOW: ghwrkflw// Workflow Name +} = process.env; + +const bot = new Bot(tgtoken) +``` +First, we're defining the dotenv for config and initializing Telegram Bot. Here we're defining the alias variables for the *environment variables*. You might notice an `INPUT_` for almost every environment variable, this is because GitHub Actions pass the env variable with an INPUT prefix. Other env variables are action's default environment variables. Then we initialized the bot with the API token. + +GitHub actions could be triggered with Issues, Pull Request or Pushes. You can find the trigger events [here](https://help.github.com/en/actions/reference/events-that-trigger-workflows). Here we're gonna get a message from the bot when an *Issue* or *Pull Request* or a *Push* event has happened. + +```js +const evresp = (gevent) => { + switch (gevent) { + + case "issues": + return ` +❗️❗️❗️❗️❗️❗️ + +Issue ${prstate} + +Issue Title and Number : ${ititle} | #${inum} + +Commented or Created By : \`${iactor}\` + +Issue Body : *${ibody}* + +[Link to Issue](https://github.com/${repo}/issues/${inum}) +[Link to Repo ](https://github.com/${repo}/) +[Build log here](https://github.com/${repo}/commit/${sha}/checks)` + case "pull_request": + return ` +🔃🔀🔃🔀🔃🔀 +PR ${prstate} + +PR Number: ${pnum} + +PR Title: ${ptitle} + +PR Body: *${pbody}* + +PR By: ${ghactor} + +[Link to Issue](https://github.com/${repo}/pull/${pnum}) +[Link to Repo ](https://github.com/${repo}/) +[Build log here](https://github.com/${repo}/commit/${sha}/checks)` + default: + return ` +⬆️⇅⬆️⇅ + +ID: ${ghwrkflw} + +Action was a *${ipstatus}!* + +\`Repository: ${repo}\` + +On: *${ghevent}* + +By: *${ghactor}* + +Tag: ${process.env.GITHUB_REF} + +[Link to Repo ](https://github.com/${repo}/) + ` + } +} +``` +In these lines of code, we're just initializing a switch statement for the responses. We're also declaring an anonymous function to use the switch responses via a function later. We're using all the defined variables in the switch. You can check the [trigger Events](https://help.github.com/en/actions/reference/events-that-trigger-workflows) to get how the event is triggered and what keyword should be used. + +Now for the last part of the Js file, we just take the response from the switch and assign it to a constant. Then we use the `sendMessage` function of the `node-telegram-bot-api` to send the message to the bot with the chatid and the output as the arguments. +```js +const output = evresp(ghevent) +``` +bot.sendMessage(chatid,output,{parse_mode : "Markdown"}) +## Compiling and Minifying the Js code +Since we have installed `@zeit/ncc` and this is used for the making the whole program with all the APIs to a single file and we need to use NCC for that. We just need to run +```shell +yarn run ncc build index.js -C -m -o dist +``` +or you might wanna add the following to you `package.json` file, and run `npm run test` to compile and minify the code. +```json +"scripts": { + "test": "ncc build index.js -C -m -o dist" + }, +``` +This will create a `dist` folder with and `index.js` file which contains the compiled code. + +## Making it a valid action +For making this Js file a valid action, we need to add an `action.yml` file. The action.yml for this action is like this +```yml +name: 'Action Name' +description: 'Action Descreption' +author: '' +inputs: + chat: + description: 'Chat to send: chat id or @channel_name' + required: true + token: + description: 'Telegram Bot token' + required: true + status: + description: 'Job status' + required: true + iu_title: + description: 'Issue Title' + default: ${{ github.event.issue.title }} + iu_num: + description: 'Issue Number' + default: ${{ github.event.issue.number }} + iu_actor: + description: 'Issue Triggerer' + default: ${{ github.event.issue.user.login }} + iu_com: + description: 'Issue Comment' + default: ${{github.event.comment.body}} + pr_state: + description: 'State of the PR' + default: ${{ github.event.action }} + pr_num: + description: 'PR Number' + default: ${{ github.event.number }} + pr_title: + description: 'Title of the PR' + default: ${{ github.event.pull_request.title }} + pr_body: + description: 'Body/Contents of the PR' + default: ${{ github.event.pull_request.body }} +runs: + using: "node12" + main: "dist/index.js" +branding: + icon: 'repeat' + color: 'green' +``` +Here we're defining the Input variables to be loaded for the action in GitHub's runtime environemt. All these `default` data are taken from the response of the webhooks which are send by GitHub when a trigger event is occured. You can find out more in the [Action Documentation Here](https://help.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context). + +```yml +runs: + using: "node12" + main: "dist/index.js" +``` +Here we are defining that this is a node action and should run in an environment with node, and the file which should be run, here the `index.js` file in the `dist` folder. That should do it. Create a new commit and push it to a repo. **Create a new tag** and this action will appear in the [marketplace](https://github.com/marketplace?type=actions). + +### Defining a workflow to test your action +GitHub Action workflows are defined using the `.yml` syntax. Here is an example of a sample workflow for this action + +```yml +name: + +on: + push: + pull_request: + types: [opened, closed] + issues: + types: [opened, closed, reopened] +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: + uses: /@master + if: always() + with: + chat: ${{ secrets.chat }} + token: ${{ secrets.token }} + status: ${{ job.status }} +``` + + +The Complete code for the bot is +```js +//Initializing dotenv and the bot +require("dotenv").config +const Bot = require('node-telegram-bot-api'); +// aliasing the environment variables +const { + INPUT_STATUS: ipstatus, + INPUT_TOKEN: tgtoken, //Telegram api token + INPUT_CHAT: chatid,// Telegram Chat ID + INPUT_IU_TITLE: ititle,// Issue title + INPUT_IU_NUM: inum,// Issue Number + INPUT_IU_ACTOR: iactor, // Issue made by + INPUT_IU_BODY: ibody, // Issue Body + INPUT_PR_NUM: pnum, // PR Number + INPUT_PR_STATE: prstate, // PR Opened, reponed or closed + INPUT_PR_TITLE: ptitle, // PR Title + INPUT_PR_BODY: pbody, // Body of the PR + GITHUB_EVENT_NAME: ghevent, // Name of the trigger event + GITHUB_REPOSITORY: repo, // Repository the trigger was made from + GITHUB_ACTOR: ghactor, // User who triggered the action + GITHUB_SHA: sha, // Commit ID + GITHUB_WORKFLOW: ghwrkflw // Workflow Name +} = process.env; + +const bot = new Bot(tgtoken) +// Function to return the response for the specific trigger +const evresp = (gevent) => { + switch (gevent) { +//Switch statement for issues + case "issues": + return ` +❗️❗️❗️❗️❗️❗️ + +Issue ${prstate} + +Issue Title and Number : ${ititle} | #${inum} + +Commented or Created By : \`${iactor}\` + +Issue Body : *${ibody}* + +[Link to Issue](https://github.com/${repo}/issues/${inum}) +[Link to Repo ](https://github.com/${repo}/) +[Build log here](https://github.com/${repo}/commit/${sha}/checks)` +// Switch statement for Pull Requests + case "pull_request": + return ` +🔃🔀🔃🔀🔃🔀 +PR ${prstate} + +PR Number: ${pnum} + +PR Title: ${ptitle} + +PR Body: *${pbody}* + +PR By: ${ghactor} + +[Link to Issue](https://github.com/${repo}/pull/${pnum}) +[Link to Repo ](https://github.com/${repo}/) +[Build log here](https://github.com/${repo}/commit/${sha}/checks)` + default: +// switch statement for Pushes + return ` +⬆️⇅⬆️⇅ + +ID: ${ghwrkflw} + +Action was a *${ipstatus}!* + +\`Repository: ${repo}\` + +On: *${ghevent}* + +By: *${ghactor}* + +Tag: ${process.env.GITHUB_REF} + +[Link to Repo ](https://github.com/${repo}/) + ` + } +} +// assigning the output to a variable +const output = evresp(ghevent) +// sending the message +bot.sendMessage(chatid,output,{parse_mode : "Markdown"}) +``` + + +------ + +You can try out many different items using actions and this is just a sample action to get you started. Maybe sending Cat GIFs if the build succeded on the pull request or sending a welcome message to a first time contributor. You imagination is the limit😄 and **Never Stop being ⚡️** \ No newline at end of file diff --git a/themes/archie/images/archie-dark.png b/themes/archie/images/archie-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..2bff9edfdb8cd976b3728bf04f61d939e0693b63 GIT binary patch literal 109628 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
*tGtjMq2$YO6=j_$r4kZS0b8=1T$4hE5}4# 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 literal 0 HcmV?d00001 diff --git a/themes/archie/images/theme.png b/themes/archie/images/theme.png new file mode 100644 index 0000000000000000000000000000000000000000..c195540d86a9fdeaf1d1447271af0a4ad8c59c2e GIT binary patch literal 128732 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 + + {{- partial "header.html" . -}} + +

+ {{- partial "head.html" . -}} + {{- block "main" . }}{{- end }} + {{- partial "footer.html" . -}} +
+ + diff --git a/themes/archie/layouts/_default/list.html b/themes/archie/layouts/_default/list.html new file mode 100644 index 0000000..41a4c6f --- /dev/null +++ b/themes/archie/layouts/_default/list.html @@ -0,0 +1,17 @@ +{{ define "main" }} +{{ if isset .Data "Term" }} +

Entries tagged - "{{ .Data.Term }}"

+{{ else }} +

All articles

+{{ end }} + +
    + {{- range .Data.Pages -}} + {{- if (not (in (.Site.Params.excludedTypes | default (slice "page")) .Type)) -}} +
  • + {{.Title}} {{ dateFormat "Jan 2, 2006" .Date }}{{ if .Draft }} DRAFT {{ end }} +
  • + {{- end -}} + {{- end -}} +
+{{ end }} diff --git a/themes/archie/layouts/_default/single.html b/themes/archie/layouts/_default/single.html new file mode 100644 index 0000000..0e96234 --- /dev/null +++ b/themes/archie/layouts/_default/single.html @@ -0,0 +1,42 @@ +{{ define "main" }} +
+
+
+

{{ .Title }}

+
Posted on {{ dateFormat "Jan 2, 2006" .Date }}{{ if .Draft }} DRAFT {{ end }}
+
+ {{ if isset .Params "tldr" }} +
+ tl;dr: + {{ .Params.tldr }} +
{{ end }} + +
+ {{ .Content }} +
+ + + {{- $.Scratch.Set "isDisqus" true -}} + + {{ if not .Site.DisqusShortname }} + {{- $.Scratch.Set "isDisqus" false -}} + {{ end }} + + {{- if eq ($.Scratch.Get "isDisqus") true -}} + {{- partial "disqus.html" . -}} + {{- end -}} +
+
+{{ end }} diff --git a/themes/archie/layouts/_default/term.html b/themes/archie/layouts/_default/term.html new file mode 100644 index 0000000..41a4c6f --- /dev/null +++ b/themes/archie/layouts/_default/term.html @@ -0,0 +1,17 @@ +{{ define "main" }} +{{ if isset .Data "Term" }} +

Entries tagged - "{{ .Data.Term }}"

+{{ else }} +

All articles

+{{ end }} + +
    + {{- range .Data.Pages -}} + {{- if (not (in (.Site.Params.excludedTypes | default (slice "page")) .Type)) -}} +
  • + {{.Title}} {{ dateFormat "Jan 2, 2006" .Date }}{{ if .Draft }} DRAFT {{ end }} +
  • + {{- end -}} + {{- end -}} +
+{{ end }} diff --git a/themes/archie/layouts/_default/terms.html b/themes/archie/layouts/_default/terms.html new file mode 100644 index 0000000..fea9c2f --- /dev/null +++ b/themes/archie/layouts/_default/terms.html @@ -0,0 +1,20 @@ +{{ define "main" }} +

All tags

+ +{{ $biggest := 1 }} +{{ $smallest := 1 }} +{{ $max := 3 }} +{{ $min := 1 }} +{{ $size := $min }} + +{{ $data := .Data }} +
+
    + {{ range $key, $value := .Data.Terms.ByCount }} + {{ $size := (add (mul (div $value.Count $biggest) (sub $max $min)) $min) }} + {{ $size := (cond (eq $biggest $smallest) $min $size) }} +
  • {{ $value.Name }}
  • + {{ end }} +
+
+{{ end }} diff --git a/themes/archie/layouts/index.html b/themes/archie/layouts/index.html new file mode 100644 index 0000000..bd4d1da --- /dev/null +++ b/themes/archie/layouts/index.html @@ -0,0 +1,30 @@ + + + {{ partial "header.html" . }} + +
+ {{ partial "head.html" . }} + +
+
+ {{- if isset .Site.Params "subtitle" -}} +

{{ .Site.Params.Subtitle | markdownify }}

+ {{- end -}} +
+ {{ $pages := where .Site.RegularPages "Type" "in" .Site.Params.mainSections }} + {{ $paginator := .Paginate (where $pages "Params.hidden" "ne" true) }} + {{ range $paginator.Pages }} +
+

{{.Title}}

+ +
{{ template "partials/pagedescription.html" . }} + Read more ⟶ +
+ {{ end }} + {{ template "partials/paginator.html" . }} +
+ {{ partial "footer.html" . }} +
+ + + diff --git a/themes/archie/layouts/partials/disqus.html b/themes/archie/layouts/partials/disqus.html new file mode 100644 index 0000000..11bd488 --- /dev/null +++ b/themes/archie/layouts/partials/disqus.html @@ -0,0 +1,19 @@ +
+ + +comments powered by Disqus \ No newline at end of file diff --git a/themes/archie/layouts/partials/footer.html b/themes/archie/layouts/partials/footer.html new file mode 100644 index 0000000..b84cd91 --- /dev/null +++ b/themes/archie/layouts/partials/footer.html @@ -0,0 +1,21 @@ +
+
+ {{- range $index, $key := .Site.Params.Social -}} + + + {{- end -}} +
+ +
+{{ if not .Site.IsServer }} +{{ template "_internal/google_analytics.html" . }} +{{ end }} + +{{- if (isset .Site.Params "social") -}} + +{{- end -}} diff --git a/themes/archie/layouts/partials/head.html b/themes/archie/layouts/partials/head.html new file mode 100644 index 0000000..30476c8 --- /dev/null +++ b/themes/archie/layouts/partials/head.html @@ -0,0 +1,14 @@ +
+ + +
diff --git a/themes/archie/layouts/partials/header.html b/themes/archie/layouts/partials/header.html new file mode 100644 index 0000000..ad3ae4c --- /dev/null +++ b/themes/archie/layouts/partials/header.html @@ -0,0 +1,104 @@ + + + + {{- $title := ( .Title ) -}} + {{- $siteTitle := ( .Site.Title ) -}} + {{- if .IsHome -}} + {{ $siteTitle }} | Home + {{- else -}} + {{ $title }} - {{ $siteTitle }} + {{- end -}} + + {{- if isset .Site.Params "favicon" -}} + + {{- end -}} + + + + + {{ with .OutputFormats.Get "rss" -}} + {{ printf `` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }} + {{ end -}} + + {{- template "_internal/opengraph.html" . -}} + {{- template "_internal/twitter_cards.html" . -}} + {{ if and (isset .Site.Params "social") (.Site.Params.useCDN | default false) -}} + + {{- else if or (isset .Site.Params "social") (eq .Site.Params.mode "toggle") -}} + + {{ end }} + {{ if .Site.Params.useCDN | default false -}} + + + + {{- else -}} + {{ $fontstyle := resources.Get "css/fonts.css" | fingerprint }} + + {{ end }} + + {{ $style := resources.Get "css/main.css" | fingerprint }} + + + {{- if or (eq .Site.Params.mode "auto") (eq .Site.Params.mode "dark") (eq .Site.Params.mode "toggle") -}} + {{ $darkstyle := resources.Get "css/dark.css" | fingerprint }} + + {{ end }} + + + {{ with .Site.Params.mathjax }} + + + + + {{ end }} + + + {{ with .Site.Params.katex }} + + + + + + + {{ end }} + + + {{- if isset .Site.Params "customcss" }} + {{ range .Site.Params.customCSS }} + {{ $customstyle := resources.Get . | fingerprint }} + + {{ end }} + {{- end -}} + {{- range .Site.Params.customJS }} + {{- if or (hasPrefix . "http://") (hasPrefix . "https://") }} + + {{- else if (hasPrefix . " + {{- end }} + {{- end }} + diff --git a/themes/archie/layouts/partials/pagedescription.html b/themes/archie/layouts/partials/pagedescription.html new file mode 100644 index 0000000..d69bb9a --- /dev/null +++ b/themes/archie/layouts/partials/pagedescription.html @@ -0,0 +1,7 @@ +
+ {{ if isset .Params "description" }} + {{ .Description }} + {{ else }} + {{ .Summary }}… + {{ end }} +
\ No newline at end of file diff --git a/themes/archie/layouts/partials/paginator.html b/themes/archie/layouts/partials/paginator.html new file mode 100644 index 0000000..5acc06d --- /dev/null +++ b/themes/archie/layouts/partials/paginator.html @@ -0,0 +1,15 @@ +{{ $pag := $.Paginator }} +{{ if gt $pag.TotalPages 1 }} +
    + + {{ if $pag.HasPrev }} + + {{ end }} + + + {{ if $pag.HasNext }} + + {{ end }} + +
+{{ end }} diff --git a/themes/archie/layouts/shortcodes/callout.html b/themes/archie/layouts/shortcodes/callout.html new file mode 100644 index 0000000..5557aad --- /dev/null +++ b/themes/archie/layouts/shortcodes/callout.html @@ -0,0 +1,6 @@ + +
+
+ 💡 {{ .Get "text" }} +
+
\ No newline at end of file diff --git a/themes/archie/static/fonts/fira-sans-v10-latin-regular.eot b/themes/archie/static/fonts/fira-sans-v10-latin-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..7abf4c2f680499a76935acc91681c8bfb0550805 GIT binary patch literal 25059 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/archie/static/fonts/fira-sans-v10-latin-regular.ttf b/themes/archie/static/fonts/fira-sans-v10-latin-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..572e442e3837d91662372d03d3dd55819edb6d00 GIT binary patch literal 54984 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

RZ*{H~sVOolRHl;y;Lo zM@EL%@NW@+7Bvfg9!~Icko|Hx@ognNP0CD3C%&zuYbDIJQj6eF8Nq6FCuX~$$I>PctN-wZmCJVdQp zg_)08pJ0Y)FrB667;}WKO0_8!qE6X)^CeeYdGXDg7p|K>aY$$-?Ps4PwL;oL7h1r4 zmaJ&OK$?kOqqML>nCIl=Kr;dPf@Yy65UgR|{k=UOxM$llXZGB5^EQ4selxF%Kf@Pz zNBk^Ug;FcQtz+(}LyMum5C(Kimy<&}50^mz0te1#r=Q(<|NUS_LdUQLPd`k26T5s>|Jw4*0m1WLCI!-xTMlC(^4C_#3&qGmy<2ciVknaRkn<@o>S z)QBNI$j9T*pN7uIJMVaB~I*;xVevYu$C1@)WJNRb8>D~MXHg4P2)6Knux z!**(vjMUu&q~|AjQ(1PZ1d!eq3+wtLz{|qQMJc6Jl;FD(O+L#(COJU_UDeZ$M#fI z5={!IWhZD78X=TF&fh0!RY|ukr%U|nDd{Yk&f@$lDe33xVf?<7^sZ!iXqoRyN!Ki= ztN7E@KEWdw0*e7w!J61-2Vy>mZgVkLYurVWN?o0)0~YmgMX37i7fLs%`X`i+O5wjs zW2&_67;nb)Y+eUMYo@eZquD)>ZovFfv<0{??9rNkRu}}4C_0eN4Tj~})kWa-Q-%}WkH<8F&AzBR zFgDjVQ{>s$Iy`yV^1vP}YuL7JVN+}Cfwb4->pF|FXp}j#ZCGouMLMc0YC`9RdTi|E zCHB>8Kk{m@va(sGA&2@4K53F(2G_N-s}&u}XtQR(deMP4rGB7B>a$0e)8Ls>(tuY| zxNM|KOpz)LVq&nK)QcoNAHl0dUiixTWOHrTkM zt98CHw5feleR@N6Ut51oi)mf7r>;#Jkn+3Bk99RlV^7{ZdUjf_& z`dP_~67EiOg7NS_rZSs-m)6d9?%c2NmSvW5`uN%_`V>Aw5`%F1MEl`oh>zQu8YP%ov;D2P6HzFds1{}h{&ID|O^(KF4kt89NLOOX z)SdgJx{YrTD4qZyfhbG@~m90Oz#5auQe9tJ#F>|yj# zc?B_tO-Z%ht>_p@1K(0t7f~fV__Z}|NmtZYvw6>EPjPx?_gL-P(D7sIW=ltHtqr5S z_0^-D-9-iEWwo0dTE`-R_)i-eYwH>g@YmBcrJIK5(scIBGG9mO(5Sm7;_&8{lz4p& zW%-r4w%%~JW0;{UUb zsE~}GZ^`MP&M`d6Y>E8=cL4|cyp)BMgx3-@1|BBLr+O_vKPhFM{WA)pE;BwSvHuT@Ny>IoR4|BTkZZ*^Q2?dc%+~+$K4iz=T11v z;H`TZIM9awr=rkofl5V3~3*|rZ`AL4$7k|9(yI+)EKAR)` z@&~_*{||S(0=USY;zrb)!MstI0h5^br@=~LeFXIs6f>?Er5P;UPu^h*ynzv6u3<6B z{jR3Tteo5|n=_E!5|J)7oW0Cq(nNEBAF6j3>UEKOUidvv#6OYndwwF}_XK@OOW>x( zY$B>Ju;!$xKv-Zdq}f=AXQ-!iT8*q$&km?yJ<^EVqxqPfvx47fkSmb_narGs(n>-x zD{>igUHDILu#>}#XfZ*G$$MC6d{(T2NsFr|`~7vrll_6ZqRC-h)8?w~tm1*NWZ%$F zG`cNR319HuZRHj5lTy~uM0KdVitwh)4LdwLLysh;h5~r5m>d{kS)NVK4ttaYGpLqx z6|^;#YI)vFL^A+#F3X|0Ln{^uc$0GnfGU%xw4@Z1XINJ-TAea|LIl+6(n^v|So4-P zOMk{lI$2DC#Q-gm7v;gck)WaDO_O{}=#Q|%Fv?n>dMmB|0N=2X2;Cql;^7LTCy(xO zDauAsAYUl&$&xS@K|Bl=GcDI%s0ci9woDl1na)fHB!0ftoMQyA=@vc6N-U~twQi{1 z;QT6O&{iPf3a25fq_)uJvhn-YOs1ma&kkFL!?FIbIp5~^;WB4Qq6V}m#!4ppW*R+_ zvAhG)2gV>Jr7X~22Dn9XEl~KTg)m5J9|C4`rYR?zpoN<%u@(p>t}LVyBd-Qy=C@y3 zziZXPW%axIZ#;402FZT=6;O@EPyf?jfBNfyM6@Wl#;kyZ^Unz`qonHrp^|QA-%Uv; zZl$D4{I@CT#H~a+LUzW3?QF-!br2!kZ{XdD%6sQB*^ zz5A;?jd3i5hdM~TvvI8^LnkT98Eg%>_Q8T+bZRuo`3JWBl zCm^$UVw$BAm@r6}K}%V47mz`TxFBSc1*?PS0rs~n`B6jsd9ObOG{DxnR0a#mE-a{| ztqn7ZC(S6R@vIlNcB*M5(o$^g1lE(rwt`k*oh)#Hc41Pj%m&ttMg(QSzOq@+dNwT? z!*yo#8JvQt7CmpLvB; z($lptry$fp>~JKIwJR%068UCG(&nHS(i9kh=mO{Px7ni>3=%p7-XQ`^ggJwZiD){~ zKsgXsLeo=1HAu@-B-OOdXtPu`8z+bL=DteFuGy&R8;pNn%G%x345^t1tsn;Yyh)FM z8O<^iLDiqy*b0BRmwDW!Z}A9N6PojK0LeLLxM#iJ?`ijhYO12+8;)%_I$YJcrl!SG zS2H$HwV_V37Zo*HEnbJiW3&u*tX|t)A1?FSoq3s-{)UoHuaNGL3?^L9lZ zL?$Q)P*hix2TSv9W~c}zs0d^;XvKnP>Y{)WmZB^PL=sVJLivFPF|{V>a@fo+x39ug zwYH+E%$^@84Of(xg$fGo`L%&PlRKxSmwoMllFEEjey-JJ%P;M!tQjt|Ml))vLiNt# znt;=1vv>-<{+rJJTC&eA5T5iH&z;h(ke^uDFe7%0(>#~@Xn|Kkpq3z_b1qdkR^f7; zWC(kO^rUc>+K90FXaOL?ch+=t4opr?UY>TS&{gcWd4^W;*4~Q^SNF#MtHf(g=&LV6 zkIrG;k7Sc#lT;XUND~orkWG^&B9ui-A`!2|6!|m|4}EsxvpHCTNGzl$JRONehzM5M zUL4jIt*-B0J?SeOicGGp3XKi%OX8>NLYw$el0&51z9^*lAtGAz71r`{I!S9KT}ni{ zDCJ37i*!iq=Tpi%lj)$YFQ7if>V5%zJbw*BOi0D-Ie!g;zwpq)BXcKjR1BbaCqILF zOqkeYb6j8zV%c6mgKxJ6Aw72V^2w=7E}fj(v3+)$YUYo}yQHjm6@P{+wG`nsts`8mveHWdA>jo#`|l+&(hs9CPs$V^j?OJ^}%RXQK1AKi4p_oh#zpME0yEr>Q|I)9XBeq^GHSZCYCT*=w=V18uq; zsK;8ISY0Y%zloZl;lQ+#SrJ#Oa=_f#P1^84QJOzrbfJ3TOUb>i##YogfRX5aBK*0l$ydzMRGAqP@)R zPRqbz@3{ppGrYj$>P~P@P?06M{v{(qkT(R%s-l+FeRpL;O(-*%+XHQ@W;f+ID|fky z-^-82Pe>Uyzr);GaKp!~7EO!FUQkrj8Hsj1UOUoP=!m~L1RTR-#~&A~n*E-F7!~FJ5liPM|nwy=isyf4u zN{b6yrw;C)nL5~g^UXK+b)CI^Xb7}G_5cSDvXckSMjC%QhvP@;H)bQOqL)O^@bb#~ zIyRW&vISIWwla?xo?4+_`k^k6YHx&<3h8F#FXpc|=vB7fGIuCjuiG>^JW@3|GLoL} zckt4BtG%GPd>2&v_&X-1`JVWFKp(yi$h*wKWaWji{tpqhy95-U#p`U3|R7I3w3^bkO1ppKB0%|Y4CSzTztUjvPG9Lx%W~>-SeS zSC_Q9n@i?erH@vQ*0k)u`tZ=Io35IU)HJ#LmEmeYnT4@=98i|PUd;CUBv}QfD}y{p zrB=qO2-69}0e~<&;l%bGnK5yN_ev5xopHw0bLZ6;`DffO0cWYKZO=b zj20R=ls7SO?nvSR_9K?YdGSO=Z&T-3{f@4dZN7-JyQHnJtG(Lbs_AYH``cZW>vl;W zEni*UGMuRy>ucOn8w!P8j^5^uy583Mib#PYGE5@@&ldk1`j|D z-~O4;P&@g+<<~$@Mc4p?HE9(mXSX^jl)VTWkP%CD93_>o0Z3 zfow_=MsYGaj3OX}OiJu=Sf-3Zz%G{KmP?8~5Q+SWs3{M#B+s4aDk?xrR=3xugpdj9 zPWs2H6Go!4o=mO<@+@p0t8SQSI| zNLZKT0h|pjvj7vhw7FUK=OUWq?l;E%9RIO&SNGYw3#2HRhlqgSZvcz=%+G4s`l!Cb znV$|*nfQ!ggQSrqFqi7f02@T4AEqEyGE>uG&jkW@d!RN@WB1#AL2yAVXewb{Vm&jt z=A*0&X??WpV}(ZGxp z)!SCpMOt7qAoAn){HN%*nK{_zXu35`7+PA5a6wVWP3RRNXjV{;*gqkb{P3g@jFP`0 z*?E}_Lj+i`H_PI%6x;JqvnjYN0*G1EMTE3cT&g*dIv)r{tTyl6*Z-cY&DWn&TUS@r zj8!$xGb{;{>PPv~>wGJ} zUr4UfsQ;~^se=ukFPHS^$!!6J!rr)P_3FVvT!;$t`8*yUzkgxp&i(s$?p$ct=pWe2TAas2xQGEP|hLz-|?` zwF&ZvC|&A*i+pJkQG-@y@f$5_y|N1lvL(DywuHGn;Oy@^ql>>f)>rH)%=ekABJ245 zT{W(@k@nWcHA8g;MJ|)g*M+ugfVWAs?PZfRZ)zj_>@>iViuW_F*EYz#Y1Ht-reH&^*z8Y^?iQlESIs%@eyi#+Zagg8N z9P(ACscOn2tC~wod`?esy|XC4C?_{q1Bgq3t$9HFZ^#G*U&}HA04g%V4H=;oGGe}V z@N-vo9N4ApdVllubREyhdv)hd8WROC_dq9TjW&^l$lx+UNFD(^cO+-ZxTT?hX5beFa4gZ}9Cqvie%vM;gllWhJY# z{)cG03S%^d9#ga}eBK%0@R{K7xrlEmfE|JzEN{!ZF+^f27F&vxsfcJPU6OJV`q(+H zZ2|WIY{azlyGNrV16$VCmJ~XR%fhOXX1%+u!X>%<+|n2AShss>=kffioW5wqud7Pe zggVLR*SYj}J|t!XW?+I>!|6vRJy4p;mX&E?l4)8HPlo+G^r7DOevaQ0iQi)5V=Z7f zrReoG^xDLnEJXT1z;42VB{=e187{i%a+%GpkSl0*njIx>jown`0WB(BRMwhkuigdt zEZD5zKHJ87d)JqhbgXS^TGO}H?ewJQTb#w7Qcs1cuGI6`s+#Vu8gGr!6|HKnuWoYR z25(xSL7nZi<`u=CbQcslv$XjQMJ|k2_0pgC7C@d0{Q_}FW{g#u@Qe$#`cD|A34Rm=`dmJD5x;*!|GGWx z=6Z8)iz%$TW;1 zV-s9$S=2VZJy%0aXbM+DE#uOo;A*gF%;&foRmAwrvR2(L5f}N-n40wH1(+JmUKoXw zXxq!WqU{&vYAA*OY1^WrDYuh#C4xbk1wjA5vo-0_f5O%PN-6L)519WMU&E?0ZI5jh zav+tjaiRNOh_CTaq%gK5W){KMK$&mD*I*jR5-q$5rMHnbUI@*nQ}zGA*rbbBGB!|Q z6-H?abf;yvV=S^0RG6Kh!cNdA?cdZePt=*hP2Ng~Z{;J>VuFvLl~S~_O|)`HvK9GJ zE?PluHE3~*$bEM*7jMbjcHV)R@Jm2=3b`EwA%B#25QO+Pg4}WG_sBhcf!rG202-v+ zTQ87Xif`vd?rrDiB8FsQ=|Nrw51h<24F4!y(of3@RI7h$*>d)m(+!obDIsMLzz{h$%-_~ZK%RP0;Y$j-1U5Kw@q z8}c6V{?r~&$P7dL5d|EWsRwl=q$oNGiV$9Wx03Q_Q>ois;j> zS@G3{%SU}mQL2VYAl7}`iqEKbs2GmJqJn~g;(}tFAds)@_s-1`4txA$8!1-Mt;Mc1 z47#{#!x1QlkuWK!+OUj7{`z1+=a6}|`A%HX{(|;?(`wV5xH=yxxU+yi`J?U+jEsUO1@9n&TGX&EE1cd&{+nBdX%~9l(oyL5UC@JtKTpP9JX%Rq zsTo|9U1rp{YVcHDuIypybVWE>2%+2AT#~*M9 z!*gqk{r=*$bJE#j?o8G_sFxQu0c=fvm@QqlMrAj5wO%pYb^x2V%fr+ z6Du`vDuX1zC^jUVe6mEMrHB<303NQhSpz-~>z5e~WoeortgcM%Al zK^KA0OR$w@W`qQ6fTw-wW}YoqV%ZCO!O7HD+?#}sb%YM^O)e33Q?}uWy_#+#&pvwe z8M$)k&DRFyd#P{LsEeo8MP6WXN5br)@mdx$DRqexCSZ8+XO13~E8mwi*d5#^Be;t_g$m6Hy~~`?yUyi;?XS!Q z{DGwfULX(Q6avjdMm@owiS3lw`McbKf|?e$yQQYFqqnN6w?p<09lLY;wmUB!3~V{} zv4w??9iu&WD{3JuEcZcp@zIHU#n+9Ax};YU-v$ORy>r|4JC6+oP>TcFtT>VnXei`DPQTXcnQBkXVR7I19m0z2a@H zPn*`+9LV?QzkB(K|K6LQo@c)04pULSH|3FF2aLM_qn}`xt_QsXdg*$WLw1IAJ?Nd3 zN$~*ep-1d-(WB;vX+uh~JLeX?L|+g{giOJrDXd%cgBHRFexW444a6(p6qrSOk4k?Q zPysq+7AnAq88QbMwHwt!v!(Fkx7Tb%v!vN-mIHrpTSm|B6qL}&H!N+#9y-e(Ns;wbg3X4XxZEa0FyKW#d=x`5HvG%%=$cW2192u(VInmeN-nS~+j{O~w(ewNday<*O zx@b7xDyih6LY)?!lgLuxt7uHF1RFf7Z#ywHJL>U81DAT(Qr6#onfblb!S34N5|YmWZctitMgXXe&;*ytv3y= z$|$TTJJP%`y1k^dydb}!c7O9lXiMx9&xMs{VY?qTQ{XnBr%h%~@DS`QfM&i83)`@s zKydSjG1TkP331|+J?f-)roZMwMU^sGsRXODFbmGQNdD2_aG4;c%Po3?9*N!TxlbNA zdGh3zn{K-4;FH_#{jhXb{0vZi-F3h`PE`5{hqrXu8zZrgpl;6k*%X{ck?d-cCHKpY7*8JbgP}K9`FS%`^5!wuS0GNa-U1)!kZ@a zHsGz5o#qcqTHwte^_)W(fK<*Un-z}NWsHHfK*wJmG48(Ywy|4pm9%#ZzUy6scTj!Y z#~_^yv##Xo`5dkje}gbOW1aa-}j^+%7^AH7Wc^4~Pz=`y@r z)^Is+)5_fZ5$R&)hi!HZt5ELz@4)!4K^aC!?N~)ZX!E}(wAEJjWkC5o?8f*tcIj&H zd$&?@Dp7LjZYl}5s@Wm_MTwY@<{?GrQJd9%uXmI$#BX)--uPpZ|A8$J^q(fD{fg2; zm*Q5nTI;Rl_c-H^@m?p+rt%Noa=QP4Ei|gF_~a3(2oM8O>#wSiruwqdO+!4kyca;_8*wX#Z`sxh@r3I$E46`RAQnBHU+}!l^y26>9oQ!n4 zxo8vhv6a08xZ4Sy0Ud)9u7wE?0$+!lkpGgfKbKGDf*TwGApDWh_)q!HpPd?_o+l%# zB#anrf7pS~%Nf#FK{d2@!H2U!Pe-xXDdRsCcD%wT4)>;z9Ox>;?mKK9RU05()LMl0 zQ8XHKFA6!LEhb<(I3o^{18K;F*#(rG|5ZxKiKxr(x7)L`RVsg#zcN&2_u0M9;%w}O zu$WZv#0An}M{{_4Q+;0vR|6TDVudx~ElEk1=A-ed=vA9G^?|GO2C>OyjVHu^wQ*x# zAJP)<(pO8*c9lx+pBx&Rq^q^LqP%5yc}x7~$&|Jxklx_b{!&E(b3wq5`2Lx;X|U5V4_yQZ>SI7E!1PLPwVH(EZ>5et~syX*FM%#`iv>6mZm>8`Gr z8Y`*vm4s`mOQF%VRSdenhJ%QD%9_^sKeA>#@9>(Pbz3Sb%GcGmZVpxsR(5UZs`Pmp z{KYNa(u(-UyMvKdkLO9EyNydF(pvbtGMF#wrV|iVoI)-5wV1uiP6Henh-a8HxzPJ* ze+}(Q(c;(w8a!$3=)utg3)dc$7T>%sLvDNX+Zp`NntkIly97-=#-EYy1Luw+#wWKJ zGq$Cs!huuOIF6-(0|vTCDRhw>G>HFa6P_Sxn)Zj=Pyu-m;j%&|xva>iiUkPlY4sp3 z%7dehlB>>8hKb)11tqj$1-gVXC`bw{krt#am=D4)f|8&?GkQF}?S-W0AK z?JM!v^LLES^t+wWK&U#mCOo=o@K^r&GLOlU6AHNvG+R*lu^%S z1;-zEah0~*jR>*|OfqUTU}W3&j4KlUv6^M(7dDBrHBj>R|}8dOQ%Lh zPpw~ndTi|U`o2RQ9f$gQ>9^NcXLtJoCDm1>d47|lrn7%zustji*LN=yy#` z$I-#Ti#j?k8XP>@(Q7hQ*rOe7h?c7?pWE2HJ_xgN?WXb5VD^s&-3L(^OsER8!NI+CTX9hj#7arm@me zb1ufs%}eDVW}OyRukPVI9Yj4ie)8Baw;yv0`!DdH#S9x>97M?vrym=-Le}FvKbddr zoW-xMFMH>v(LK^)lvI#t{Mh%cj)LO&uXw)GTl#%|L;Mv48=$oaznotIZbtFW^@8F; zG`rF0c4(^*#v+_d@G+SWuROp;oEb^T%MnwmE^)Gg#w~D{pqto0dHFzDnfUcqS9`tH zVGqCDx2mdYmCx6YUvF!5MMan{n!+Dkx|6*sRw1oXlkl04u5cLFvWFck=G9RwN*}|aQ=kwgsJqq!wq;h(FCX2npL^uWJ3riYQGflq@`pZ}xpU^0PiF6kKiD6* z@o+_u|9o)&=MR4TeUmp0l&vbC+pC`#d+7ax9rfG0HEDxUKgd9e-zD9$^a5rRMWNRS zER-l7IdEO^0LDxHIyQWMMBnnXf~zT^Bq_@`N@RZg6{pjd=XB=%9+wTzGIQGKe(nM_ zEX_!#&_0f2PL2Ul1lqj9ZbR2a$ zK~ISleHl)kUw^gW2eR{E)%v$B(OdF^0@*pVzKTlRAzgwxY@m&Nft4)iKwQNT|HuyK z(CRyZ!u^pjs*a!W-_UX*a9p}1bl^Z}3|Ngz`|)*`z-mN%9|YABy(W~_R4)EDh)wOM zP!ALt=iU;HR#)T7D=5gb6&B>lT`i$d3tiPk`T0e30sh;i(|`cbC+!NW1qDWH2gvNb$ac-8`kZsGT&yBdvMY(crwl2$-S)W_)l1^u4 z7}6}Zf!{;4P%+L&SwX>oFG;;m1WvTv;J-q8J+yCM2vP2!-k0&! z7e$Y8j^Mvfxv2EtrrIxFkZR>jw0te77N@NKA1M}*mj4m8%9$6WR#qepuusWrq5B2} zwZdlxV#9`N+)^F>;0Q@?zalA9S1h`gUGLIBs_z}Pa*=eLXA+kJrwfXeoFeH}q+rBh z-X>C(ve;{&dxTYRD3Ic-*ZD4tsLa#&2_;2N=d<#0=!$WE6;6cJA-*tn9PR~CI$5JG zS)-hX6M42EPD>4QUX7sgX9OE~L6OwXzAfv|Q9M?x{MYwg6O#26?=4VDJj?n5&ctA_M=x_NTFUSDW}mF>^T&Dp%knQ{gc%f#+^KZDA6qt;S%)r zRqQ6fdpg4cO%@!Ctrh=W#omGFu>05|VnM!+(V4(r3NF=4S4f|dJ}3Q`^gZcWStGBL zuaxhUKO#RUKOsLY|4x;sYETWRu2g+e^_c2^)oQg-U8pWm*Q)PSe?$|}9MF7P^QN{* zd#m;{+UK=@)c&tdtuyLsb=!2e>K@a5MfX?zuzr(%yZ(^=3jIy`cc=BGeKzeMhRud2 z(jDnL(hsL!nSOKnd(vOZcz4D#89&WR4`z>N&t>n=zAXC}*?%yO7-PnG&i0;CUrtg~K z<}|a#+-<(w;+s>x(vvZKv(0d0BZ!@_v+X_Bc z@O)uw;ie;|>GVu_ zF7>?I^N{CB&o?~Jd0z8!@2Gc|_e0)A@6VP05U~3$-(UQ@{oe}s0_A~;z~R7MflmZJ zA9yFog^-T4CK}D+Y>kr=4yJ;$``8AlrzXe^fACx=R ziu<+~+-K9{A5f2|M(|ElDE_27*`=$Nl26!!!R9u0P@3$Z=Y@G=%iOD3_eZTBQf@4PBqXcmL#)uR?w| z%F*=@o;Ty}WOVvOd~fUzW{Ce5?31dgoB0N?vmFaZ!Nr1&$0%(r1gNW z5qIZXFFwrDBpvGSNBMjPxKp1<@WuHPrpin$H(@wkBYDeh$(5f8Lco`7PE@1)Pd zj-Y!V>i;K~d^_?1m$(2EzZ!LYA8oI}eJ9gPJ?Q^=7k>%xeGAc{zeXGto|mtO@m(A8 zMv(Sb){d)Q8bsaYu=W<28?i`v{8ix81kUyv%a_bZe;nWVftw5#LiB1mu6A4zTs62# z6Zb0II}`8Kxc|H5R@B9=U7A3!Onc(0!ATA#;CUze6Jmh7;7!LJmrr^D_dnw#4qTE3 z7Aoa`0~@~SI>nmVPjOK>e2dG7sNg(YAzbaas`*Xu;-_9+=r1nW!W<~?;O|647cSrm z2f?7PV~Ohyl)D3K{J67U!2|ItaSzZuO8yDjsbqyxF7Ot`rNcPe;E6%s_^nvEIi0vt zpI^ne{#9Iki95YlC$3hUGv%gq8Y|Fs2%64~;(C+yNIzj~q-Q|`X4WH@vPtPG)+rxk zZpi?c-^o5m7v@1gzM57h<99)l&ESqWRB<8RIv&S$JFf2{&wxA1Tp<6Oz-=&bVb=uY za}gx6k~W091J_Ah=jCCwtcd*)=_zFd-XHDVm+Ja zNDVG^QW{6nfO6+sfEzf#B?BBjxIvyW*w6R`m-y=(>*_#UQbv49X+!=f*E<;h0A=Fr ztwr1%&<5yR(k-y11HbgO32pAdy&m~0?4rzoAF=^@%M!0bhs{wSzHGSAm-KIN zu`yh1$xXlUwehZa=W|ap_S|E*ZhG$IbMJg^>vL7lmH*<0znJ>PmS?~J?ALH^D8UZ* zIW!7vN8)$z_t3ZW$8S?EJpG5Z<&2YZd@vA?ma*wdh{ud~;AA!4lmz&_0G<(ced_E+`^ ztet&`UCqA1?q?rmA7hU&ctt@=dRR3&mWJ^$A^t1}`dI;XTI9pamBrkwgn2+RVz?0oH+4jwl?0?eIf(vpz(%4l9nyJMQ}ac4~SPORND?sPltC&wMJkr5CfqSL zGCn^s5sJw{N4F!U^3DJRELo{h<+PGojEPC8DafyGL-7oA))K0RWeSvxWAo^Vb$V$soYlo%cNOqbGx z;cY&TdGHlJUhZ1zN9jaD?v4iyX)*@e?siU;IzzFH;G!gT$L40bLb1#sI^b}`(mVU9 zUwCkLOvEziZ7tq1@D_??p_*)g5(h9a3$SCEozsq!(~ejskQRz%2M5N+7gcjz6P{Sc zy!&Vw(`=@U!^%AG(@dI5hgQdbVu+YBJMeXbiQ?u@b4 z2Vpe}YRCb7dhQ6z%$*g!9|(ww&0?Q?s>sQHQn>!1E9M-xTvLjL2yw=_rl)F%`I`R}_osJIm%zmb)E}=98$eVPz3Vxl&h5g^y6u5t}Ba5nVI>kmQgZ_J<^& zoIlY)j8q4njCRqoy9ZMk!@6=lf_d;VMQ%u)({t{a+&MD`UM6+U*zr6)0S0jXH!}bW z?A_fnQ*U>pg&y<|H_-~}yFeoVggCAWTmplj24z7&oCgVNoWaLl0R(;_w1`!nYYU{& zn8bqv5U70#Jh+>IqNe4nm=4^+;plPqQlm6_&B;8`nFNN}*m$|486uaUmy|?QdTt0b zUc9YB*0OY02JfvDH|?ek5npA-EyPO=}RxpZk!eUP>yK{WR4w30- zo+w`|=O#?hwiUT+?ISC4qbqWg-=@}g{uk}RSbbS)f#gTY20MbWhO(0&J)*CZn9^?t z8wRvIh9ePUoubP`zR58mvUFo!m1CYM-RJ_}fe0a57j*vb6LIf_Na{bKTf#80sAhM) z-I+om&WQw!-QcbDWl22r;H?4wvR?udiJmNXx)+@`D-#^*2Ig{Zd8`KWx$kY#SD`u_ zo*Jt~nf_obg4+P$4d=;~J9;2jlb9L|5(&o!fY_lRqVT)$uo@4X9)^Pta*;BE2a&Rd z%5)=ZEtR2%Q7S_ZV^oG7)&(B|-)qOydOTs*44yUwAA(6jPvdw}(k7@Jr?ib!PCRX* za^h){%894V)Mh7&ZJ{>lVT#(MhiPh)9%iUa4<5Es8G4wdGW0MTKBPz3a6(z_D2wUlW3p%DXi`j5lmU#PudRh<$Zvr( zQ_P?Jhfd?A?hTz)Fy%_cd-nCZgSsuceqFt`R9&Rf>JrJPHJ532XvQ?{>MGeI ziR8?VcD?hdf~TxcSL#0hGeUvX<7gN0hlDg|5^&Hj_yU?xw z_-}^Iz-C@0)hIp_sdec!;nzq>S5hb^kv9u_x}WuvuLEb+F+}RY+ajHTN7ugeSLF>Q z&XsvZ!s%rxrCxcPaxbr}O-_GnIrgKaIw_?bdv+;wp>on9??AbY;0jIw-S2q=%Hf38 z1bp~+>tRj9GovC8+xu}T&m4C9`xDO+)bvj!o@LnTk0+j0@JNuqg1%L=d@ejZc-Fwb zSDr}Egb#ByEc%_W*LT8J-wBVyJS=zzt{J?~;AvKPB#yx+L8W#e)dBy8;^n}ZC*r9N zw!H&hn;rPt0iVDE>e&fz#vV~a58jW!v!T?v6L0%aYDT2cSMw-0kA716PP9j@j>6;6 zj;jYL2NNmu#Uc1i<^jhMQTIXkC&~p3VR%|PQCAnd6iv%tjfz$d!7sD&tGCwbIIqNd zv_f8(B(&$+Nq+lwbrXgT!-vxdUr+^Vm=&1YkF-O8m1^9B`vOw8BYzmM4l+rZ8A}hN zFBkaZP9!3*4<4qk!+WxoeG;{P3MV>v5gR-Qf6edUubGFx>S=g;O5nFC!+3m?eT#h? zewGkgt3YTDjo3ES{~a#lJpb+3#dRxuTrqg6{+RIcMBuaf0sC)^;tvzPt7dqVS_FOU z2GqNN|Gn&k@cqz;_QEUHm+(~`!0haYPiqkVsl)L1T+CG%p&_n@cW4-K-0*dAEj(Il z*)gtzPwO(!$35@}En=Ks#;B41=tg*u#^LR{5IVANq6l6F#CEoLe}Y zIXp9a|Z!^_~63+9rKwBE4~or z!X2IZOXd$Ql+W#3*sELEH?KS#zF0{~JG|rIyppEhws7R2$klJ#c~PR=p`AxXQre;U zi{|$!kMldX?>MX!+_y7Pq0+{_BYO{uHpBz9K@W*G=uv4yd7?H%Ich_cQ`!)ZN*kh} zXoH?ae=0i~68GxFJxurN%1BM-{+WaG`}WLlQ-I47uLqZbP06O(QnSz1-rl9u+Fq&D zTG>JOp6;F=RrisD3nH<)s#d>$&yhn4Humn^mwcQ*aAanWf*6rc)ut)=;!(*z*H}lb zcIM#0g^Q2;f8Cu6uw7Mo$M<>MoJZ~}$<6EDgxov`ki>XNfCK?cQ0WwDrAlX%kr_h> zG-C)fP+uLNV=1+2Tia@DnQ1%YV+OSov~?<(;#AX4N$bUtc8okF8HF+zAu+uWFS`5t z|JU04>~kL{HvzHjT66YZdp*AOt=G4{?^};^OT+K$Z+_>V-t9NtvUBgP+xJ|*@zz^M zT(*(TBU_Et=8-Lp8~1L1$Icx$-*jEWZ7o*}3-z&iWLx95UAwP$oEUOmcyHR$t)2t4 zjXSpAy0bS26+Ux#{)|yK6+gCxh&gzF8uq5kE^CIqC&=A9c3!`0_wMZu@7u9!?~dQT z>4x1q-{tR~>v!$kyYtpvxB9DTB(AAnAO5UqO&O88U9Rs1G2?j1?>wU=Lc zbuzf)-FtT@Yj51U^X>51AWo@jrLP0Zp+O9!Q4Nr@q{>>bA0>Gy?c_usZZi- zE@3|=v}_&pL>xmmG?TyLaL8TZ-SwXEo_jfQ>QJRs#NNc5bs2R0jg;s*sQq53^oO8D zPT6;Fc=vODOpwkv6yB@f7Tz1V@=X3C&xZE}9}VwUeI~xY5#ASR?+5WN(&;GP7he$G zmn;hJ%c;T2Eh>5C6O~87eGN5pC>=}h`!G$z@8#^_|3|_mHQ~{Y9fR zDH}G6rU*yzI~&SH9i@jtth~M+>6|JLrJj{KeI$LRz5MCX04p7jkg0j)LcPls+a-hJ zwxPXb+-`Q$?x$F%0Rk}cGEIh%;giLj=?#vfE|;;+VyU)T5CzMnQMuG(DO(nE_U~eQ z&6uhx$j;-aUCP;Q7BHf=k5XGllPYl-L+aPU$MC8-RQ=EPgRCn)%$lFpIiG?@ImTM3 zc%j?i2DSb7J!ji#T& zbwD|hRRa|RhdLl zPOAiyVYD*IU9SB??s-6*C&G6TzgCQZH*N8-{92G0!$-4rbcjZ9!L)xlMjr0k7zO62 z;XRN(;PD?*2O1GR9CIwy&dj2jIs>}B(&w?U&**X8@da5_De|DUuIv6B-4A6{Ybs{vbRMV0%-=GBiu85dFg?)aGEULg%;=hy%+#Rs`URT4(wt?bhb7xJ7w?x4NP%po$1 z!E8CRMKJu^Z{=*2w{k^A_j;3m`b0V*u7~!5*YP|&UTn*l@}w{KtFiQ7=si!WZ@HE8 z@e+H9`rKIhOebKio((?Z=~MKxywAmSZqbkjxl9gi1D+mh`#h}=>gGr3kDPP>oYa30 zFc!p{kMjI4^;Of(l^{=k z7Poe!twgW)O~%Zl$r1FIx*PMu*g9IX--Y7bj;*1c`#q@09oP~nKSIhsz*adk@G(++ zJoyxD_2)or8e+qm!bb89;5LE#eL^1xdNWd}6{M^~Rm3B5_Zrl#!l<2U13j4jnNcYI zS{Eo8r4&WrN&xU1<|)IiBs^F0(`}9X)3PblY6aQ!!B6Tpli`j?_2-CPCkiDxCN4Tq zs#Q>`n)y}v4uPf4TX0b_y5hCyg*PRaqQB*z)4{z*x?!}l`}u~e;&}zVq=NRc2fbzw znoUXTSEN7V`8)Kta`&KMb+79_OsPXj0Z*nBN`qTD|xBe znNkVe(={IHN7E;b5xqS#9!){Q6h5ZP#F@bTEI7TuYLQ0mSo)JJ#p%C8iGlu1;EV(* zj0);VGxfm$JB-`-e9joY01g`WrWnK)ewsbT()*y;qJ_f#SoG!e8dh`6L_1}1j>lsz z6F{Tx?Pm%@e9c)=-Nn2FBE#Q*zWo#?qFxic++zFg&4|I%bM zwZG2_?xeb)*L;Z{^JUAy`_exVjL;v`@4DxS$KHqQF@EMy_dM^m1we*D-&aPjhWR7qV2H-qXhlG&6n3 zkfUDL9GONqbrB?^9E$_#-Im41)5p_?h@p0pG&ey#-7C{f=y2t-X(x|-z*Hka2A5Tv>wx7Yz-#JAge!;EOtyt5$(x;S9 zXp0thAuhB^R4bGx%w3u-UT}{)A=p`pNx61to5?MrZ}p0pFEsgA6T$8|z=5qdFS z9xGrdd_}c1id2FVsb)`LDGshlCdVS+5=%(BEN-iBxE6pTEDmHf!MFN=TS7Uuz&n4{ zn|&?y^|nIg@<F4otJ-CXOFa0$754|@?`l3toozLFli2ftn< zp1J5Qw^eVE+B4j4%-{&Be4I#O3qYLik*g7!IAnpoess@tOO5m+R-^0JHu)}38 zvdjkHyaL;e9J3L)+Ho_Noh~Efb}p9xsloQK$7Kuh-d5~VxUl3YrfU?rpKH{bDjo!8> z`bj?KpKR5u%kL|Hk@mQd{tdUqNYq$3giHK`v_uWu-||S%_mjB9GoUx(_gwljeosJ4 ztA){#XL6d3N!0H&q0Ax~fGDOmq79m( zn7v}Ef`ovt*1uwiG=w(9Hcp~gXv;N|h~fc7trS{E^F6H+Q_S!x%nT|i^MvMr5INAo z_Jn~}#_%kjXknP+?ZelE%7X-oo`fE+U2+M#Dc-=>HCT=?vU{$`3^n4Om9>g-ItrCDLGBqX{wH0acu7GL2FY1+8ULgu`7C6GR-TS=IKAHx6+$M z?Yd0o=9tda7<;c{y!|qHY~%#$uQR%TgPnKX?6`XiPwl9kN3L%tbPskTJN#~8yzRv< zWcT7bf%-1&Ag5E`4ZVI3b{RYR-iwb)c7}C$o2~#Am)J6Kd9_#Z~Sf4j+ecmuD8Fx{0U%)n!FJiZ_uJI+t{oi8G_x{DztZ{q=s`z)< z)vR{>J(TLJ*jKu~=5c!WYs9<UpUOE)cb&c5W9g@ zl7E9P{yTO9t0mvUJ&IlJ+MmbX$p>(M7rW8(M%nA)=Xzayx%G}Ktalvd9Ptl;`2=&DH5f^rUD%uTRZ& z(-`Bq$upkjehg(YT{Nx(gbzUJHbD(8cJlC)^9*FeHOU%lIwy!F+I5txv<{*zJg-Yj0fu6!M3BQ5^FU`qk8~R;mhy>t$)(l}JqL}Q zLi{|Ara5w>Ey(oVsMEwR&%G7?GPrs>|) z4^ep5hw^yT6+Cz`QK4=p=owXwAxTKorN)xudOU`8oMKYX!qKBc-L|v=#l*qwmJmsIU)qW=+G0eFxK-v-A3bl2Z`cj!5Qxr-l zs)`;YBxvQ$2(+HWyomHv&{^u7T2+spj2Z3bI*QrGy;|8`QY*?)C~bP^6KUHea+-Il6Z_$5b138(vDALzIy~cR`PRK9HRhJL(7)fx4&ed#!}mhlwCj1jxuI8Zn&U_C zL}hqFrQxz~&WMzCb_;IxD$h&eIlI_n{6?U>30q@t^wn@g;zH}30C_V$;zjG^@m4s` zYdM3_;4H*-#1}_8m$N4~!>Nid?cr9E-(vO?ciL<2w9njWzq!+S=1%9EJM9O{_mj&9 zunpr{Hm=&weG#k0;+7LQ!FIbDUU;%?fPwT0Ba~Bi3qP&uZU(xf>=F3nktwO>;U{P# z%-)-smj`n@L|vUlEy}LX+6Q>cDf^jlu1$Db{&|>M>9>3?8NFzwBbmwiui*$~$2j%V z1;4uht6Aj&-UGa)g*gZAR$7Z;ek%=I@Dl4!_yb?8v^V-KaD1ha^e!_mym+qT7w`($ zD4lke>++U5VfvO1Lgs90U52{^;m5i59jl&JF8z_lT?WJaa7b)VvqC>b<~K zOE_I|FR*t0R^razGW|?4YY(lU9lz>P>e;$SDafyD=s}Ck7cI6dyU0C5cSmj|rDWNv zHFtfMXuB-Y&ap&Wvqal(8dJ9v+q4whZ<^6xkYeYVLd-RV=r)B|U1AK z!xCiEGGEg)quuiFb2w%XVqJ)%c{3CHdoM>*i(oPmYPIk>Dm>=Z7AMsOw_nW z9XgU;?CJFClb%YL4g4A7#Caixi$Y{0CCqz6(4v`3p*F4hCjjlKm44W%3p1#qWkxd( z<<`@)bmq_Z7-RoX_-6ez?$K(6+f|(gp*ZgoQ zrei&|0I581)6%P=zW_Va>R1z>2VYA(#BsYghPknTJHAL&{Q`KYbRIjyDeeBcK3GREbRrc#1fC5V+Rkuc}VU1MX8mR`i!YQ9J z<4shxWU8u@8akwRoXzKz>wgDf>oJ&kw7n-(K;6}C(Uep%0)<*hFVf#&C z=a|AaOkr!*94Y@pbTTgQmz0P7?3NEnco+UT)CT zdB|McTyt^DOryI^qkBxFdrhOeO`{i^M%PTE7fqqj4b$j_=I%IiQU17SZ+Ty(mzrEo zn?{)lPC+_-^TulHlN+?XTB%cyWp9$eea?P(qFTS4;(~Sk^3@;!bIi77p^Fdy12ra#hLjXC65kL-*jn>QII<| zinYoz#TYMZ8N%pnMexX1>*Q?_)@obdt+?$jT2lG#S9>~Smh-gZHp9AdR=dpl&t$Yo z^&99IE|n!{UVhQLV9Ur7lQ}S*rsq%5OeIRD5(`Zw7PhS>h)OIgP>F{5u;R)>pQ*$G zQ;8*}5=~QyMWzyqO(g~_*$sF-q~G*mvFSq%>Tn&LpVl3gm_95veOO}pu-Norp6SD& z>BCafhq~!QScB*`eW;s0%r|{##hFyGWiTM z$@G}%RI&DGC#>v*9oe5HjrMX6vy$>nXJ-brp7TSH1RADeU5| zd)235Saq+;)V(Ux@M=okt0|3$=bMe^9`0#q=SZ~<81!$}o~e-j{sjB{w)!jM91iPC zCURM#!u-u=JO!ziY@K|p`{ZL+LE5RuR&AYdthJqREK}=Rt15eys^nFwir1$qUX3bw zrK#){rHa>*Dqbfld!4B4bt2~VIp0<}YyGuPBVAkou6G8UU!Lcw$(=6`PA^d|8p;1Z zO%;8#w7CbFi=rfoYXU#cKrkb*ONw8x|3_*-t3)r4Y0cd~|NKI!%y*5#e;tJXI-p!7 zpSZQNqQ)1s-;vxR>;s$WoS8X2P0u9m8izcY6LVnRereNB%s$ z?>2si(3m&9n_9h6)R~i-U=_F`XB7BP>cUhmXw~58#D(fkhOoXJ_H&NMy(xFTjC~`X zI6l2PIki;jZK}IdOLO|MJL@k`AMTWtWw?sFkb)EB->)LiehoRd+j4F{^Wi8`qjpsc zdL|t5Ot_qxP`Br6f5Zyr=Pz(OiDqftVy+Wata<}e`^v%^X%}2apLv8LzavC~4z2-r z6wa&8m8VV1mHAA52hCWsPC%tiN@i{5CSS+}Nb2cr1o5p&2R1o`_hPCwWDPsRFcmChZzH%iFmIG>j4t;*MsF2ur#4cL%x+|+HMGua z3%(`FwiI3Px$Hq}#g(+6f4SCvm-CYPw##2XoLs)`n%4~{*Su!i)x*i2*SwMEhhD$! zn&IS=TwBJju&d>NFBg{$vv)4!sQ=0yLiX6q*pZL^?Vul-^=x2X%qnE?>w?ZKXT|G$ zM%%AMKmO$nDzgqA`_=5d3-M}b%=ACTTi8|l`si0jHXNqUZ%r=crn?ZYf#kdrsro{0 zEBw{y*Mt_VVpUMLDg9dX)Bi-SrdR8h!Z##W?byEiw$kC3;JM?bTS`yuc+pSYla``2Aa?xG6uIui~y?ze(Iq2uGpKJZx;O8b?q*mVg;-3tI zu-jele)^nr37SJHamLcOW-VzD^wel5F|X;Vc`fK7!p$~877rt^#0)mT&5yF{_+82G zGu-@moSOl!D*a|@U+GZk`SO+J50}4P)~Q`V5(VfbhqcL0-Gqowl`(j|?n`uDnwi&F zM<8v;M#7~7(K%=3d2I|CwC`Xc{djU1okEsJ8BF`wC;Eq!`;U`PaD(EX zCVz%5$l!phW&RR#QNhpH>NX3dRyzoH zty=0&~Py^OeHClH;??`MwK3t)_>3GYnVdK3YxhD=i|zGTL0w8nk%pMoiy_ zISJ+s#JVAekion<_feU`DUYmfgo|)cuUW%Sb(5uQtCfHYG3o^@0uHTmpFwGx?q}6x z7`J*@mHi*VRfZy~u9Tl@@d9QT-L>~YG>jjbu1^&116>ww1SKW^t_Y^DrtWu4*XIh@ L4TU>HljMH@LtIwx literal 0 HcmV?d00001 diff --git a/themes/archie/static/fonts/fira-sans-v10-latin-regular.woff b/themes/archie/static/fonts/fira-sans-v10-latin-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..d99ba57a35e2939c53310de3518fcb4fab1fb956 GIT binary patch literal 25888 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 literal 0 HcmV?d00001 diff --git a/themes/archie/static/fonts/fira-sans-v10-latin-regular.woff2 b/themes/archie/static/fonts/fira-sans-v10-latin-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9bb576032e1ce51c88f5bfd92670c425f4b11489 GIT binary patch literal 21244 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 TX4m*_A3w(B$xKg)1*2jBzR>Q; literal 0 HcmV?d00001 diff --git a/themes/archie/static/fonts/ibm-plex-mono-v6-latin-500italic.svg b/themes/archie/static/fonts/ibm-plex-mono-v6-latin-500italic.svg new file mode 100644 index 0000000..6423805 --- /dev/null +++ b/themes/archie/static/fonts/ibm-plex-mono-v6-latin-500italic.svg @@ -0,0 +1,365 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/archie/static/fonts/ibm-plex-mono-v6-latin-500italic.ttf b/themes/archie/static/fonts/ibm-plex-mono-v6-latin-500italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e4d1ddf0d20dce9656ee115a40c1988e44862c4d GIT binary patch literal 40032 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�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 literal 0 HcmV?d00001 diff --git a/themes/archie/static/fonts/ibm-plex-mono-v6-latin-500italic.woff b/themes/archie/static/fonts/ibm-plex-mono-v6-latin-500italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..4504b4135cf2596a93849e9a2b62d402ca984d9d GIT binary patch literal 19900 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 E0GyIn2ZU={X41-u3 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 Zu*D#1Vm$I63(p*5oVzHX|99}`{{US2? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/archie/static/fonts/roboto-mono-v12-latin-regular.ttf b/themes/archie/static/fonts/roboto-mono-v12-latin-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d5dee83ec67c40a30de82a1af6e01d1d7c4d5616 GIT binary patch literal 22224 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 KM^Y~+{Qm&}HGy~l literal 0 HcmV?d00001 diff --git a/themes/archie/static/fonts/roboto-mono-v12-latin-regular.woff b/themes/archie/static/fonts/roboto-mono-v12-latin-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..f319fbfa46a9c546ad2b4f68e2b6f9267cdfc5d8 GIT binary patch literal 15160 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 literal 0 HcmV?d00001 diff --git a/themes/archie/static/fonts/roboto-mono-v12-latin-regular.woff2 b/themes/archie/static/fonts/roboto-mono-v12-latin-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ed384d22fd9f566df41a3a37de9f614adc7f630b GIT binary patch literal 12312 zcmV+zFz3&APew8T0RR9105BK;4gdfE09Tv<0581&0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/themes/archie/static/js/feather.min.js b/themes/archie/static/js/feather.min.js new file mode 100644 index 0000000..d229492 --- /dev/null +++ b/themes/archie/static/js/feather.min.js @@ -0,0 +1,13 @@ +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.feather=n():e.feather=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function i(l){if(n[l])return n[l].exports;var t=n[l]={i:l,l:!1,exports:{}};return e[l].call(t.exports,t,t.exports,i),t.l=!0,t.exports}return i.m=e,i.c=n,i.d=function(e,n,l){i.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:l})},i.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i.p="",i(i.s=61)}([function(e,n,i){var l=i(20)("wks"),t=i(11),r=i(1).Symbol,o="function"==typeof r;(e.exports=function(e){return l[e]||(l[e]=o&&r[e]||(o?r:t)("Symbol."+e))}).store=l},function(e,n){var i=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(e,n){var i=e.exports={version:"2.5.6"};"number"==typeof __e&&(__e=i)},function(e,n){var i={}.hasOwnProperty;e.exports=function(e,n){return i.call(e,n)}},function(e,n,i){e.exports=!i(27)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,n,i){var l=i(13);e.exports=function(e){if(!l(e))throw TypeError(e+" is not an object!");return e}},function(e,n,i){var l=i(5),t=i(56),r=i(55),o=Object.defineProperty;n.f=i(4)?Object.defineProperty:function(e,n,i){if(l(e),n=r(n,!0),l(i),t)try{return o(e,n,i)}catch(e){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[n]=i.value),e}},function(e,n,i){var l=i(6),t=i(12);e.exports=i(4)?function(e,n,i){return l.f(e,n,t(1,i))}:function(e,n,i){return e[n]=i,e}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var l=o(i(35)),t=o(i(33)),r=o(i(32));function o(e){return e&&e.__esModule?e:{default:e}}n.default=Object.keys(t.default).map(function(e){return new l.default(e,t.default[e],r.default[e])}).reduce(function(e,n){return e[n.name]=n,e},{})},function(e,n,i){var l=i(20)("keys"),t=i(11);e.exports=function(e){return l[e]||(l[e]=t(e))}},function(e,n){e.exports={}},function(e,n){var i=0,l=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++i+l).toString(36))}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,n){var i=Math.ceil,l=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?l:i)(e)}},function(e,n,i){var l; +/*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +/*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +!function(){"use strict";var i=function(){function e(){}function n(e,n){for(var i=n.length,l=0;l0?t(l(e),9007199254740991):0}},function(e,n){var i={}.toString;e.exports=function(e){return i.call(e).slice(8,-1)}},function(e,n,i){var l=i(48),t=i(14);e.exports=function(e){return l(t(e))}},function(e,n,i){var l=i(54);e.exports=function(e,n,i){if(l(e),void 0===n)return e;switch(i){case 1:return function(i){return e.call(n,i)};case 2:return function(i,l){return e.call(n,i,l)};case 3:return function(i,l,t){return e.call(n,i,l,t)}}return function(){return e.apply(n,arguments)}}},function(e,n,i){var l=i(1),t=i(7),r=i(3),o=i(11)("src"),a=Function.toString,c=(""+a).split("toString");i(2).inspectSource=function(e){return a.call(e)},(e.exports=function(e,n,i,a){var y="function"==typeof i;y&&(r(i,"name")||t(i,"name",n)),e[n]!==i&&(y&&(r(i,o)||t(i,o,e[n]?""+e[n]:c.join(String(n)))),e===l?e[n]=i:a?e[n]?e[n]=i:t(e,n,i):(delete e[n],t(e,n,i)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[o]||a.call(this)})},function(e,n,i){var l=i(13),t=i(1).document,r=l(t)&&l(t.createElement);e.exports=function(e){return r?t.createElement(e):{}}},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n,i){var l=i(1),t=i(2),r=i(7),o=i(25),a=i(24),c=function(e,n,i){var y,p,h,x,s=e&c.F,u=e&c.G,d=e&c.S,f=e&c.P,v=e&c.B,g=u?l:d?l[n]||(l[n]={}):(l[n]||{}).prototype,m=u?t:t[n]||(t[n]={}),M=m.prototype||(m.prototype={});for(y in u&&(i=n),i)h=((p=!s&&g&&void 0!==g[y])?g:i)[y],x=v&&p?a(h,l):f&&"function"==typeof h?a(Function.call,h):h,g&&o(g,y,h,e&c.U),m[y]!=h&&r(m,y,x),f&&M[y]!=h&&(M[y]=h)};l.core=t,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,n){e.exports=!1},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var l=Object.assign||function(e){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{};if("undefined"==typeof document)throw new Error("`feather.replace()` only works in a browser environment.");var n=document.querySelectorAll("[data-feather]");Array.from(n).forEach(function(n){return function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=function(e){return Array.from(e.attributes).reduce(function(e,n){return e[n.name]=n.value,e},{})}(e),o=i["data-feather"];delete i["data-feather"];var a=r.default[o].toSvg(l({},n,i,{class:(0,t.default)(n.class,i.class)})),c=(new DOMParser).parseFromString(a,"image/svg+xml").querySelector("svg");e.parentNode.replaceChild(c,e)}(n,e)})}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var l,t=i(8),r=(l=t)&&l.__esModule?l:{default:l};n.default=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead."),!e)throw new Error("The required `key` (icon name) parameter is missing.");if(!r.default[e])throw new Error("No icon matching '"+e+"'. See the complete list of icons at https://feathericons.com");return r.default[e].toSvg(n)}},function(e){e.exports={activity:["pulse","health","action","motion"],airplay:["stream","cast","mirroring"],"alert-circle":["warning"],"alert-octagon":["warning"],"alert-triangle":["warning"],"at-sign":["mention"],award:["achievement","badge"],aperture:["camera","photo"],bell:["alarm","notification"],"bell-off":["alarm","notification","silent"],bluetooth:["wireless"],"book-open":["read"],book:["read","dictionary","booklet","magazine"],bookmark:["read","clip","marker","tag"],briefcase:["work","bag","baggage","folder"],clipboard:["copy"],clock:["time","watch","alarm"],"cloud-drizzle":["weather","shower"],"cloud-lightning":["weather","bolt"],"cloud-rain":["weather"],"cloud-snow":["weather","blizzard"],cloud:["weather"],codepen:["logo"],codesandbox:["logo"],coffee:["drink","cup","mug","tea","cafe","hot","beverage"],command:["keyboard","cmd"],compass:["navigation","safari","travel"],copy:["clone","duplicate"],"corner-down-left":["arrow"],"corner-down-right":["arrow"],"corner-left-down":["arrow"],"corner-left-up":["arrow"],"corner-right-down":["arrow"],"corner-right-up":["arrow"],"corner-up-left":["arrow"],"corner-up-right":["arrow"],"credit-card":["purchase","payment","cc"],crop:["photo","image"],crosshair:["aim","target"],database:["storage"],delete:["remove"],disc:["album","cd","dvd","music"],"dollar-sign":["currency","money","payment"],droplet:["water"],edit:["pencil","change"],"edit-2":["pencil","change"],"edit-3":["pencil","change"],eye:["view","watch"],"eye-off":["view","watch"],"external-link":["outbound"],facebook:["logo"],"fast-forward":["music"],figma:["logo","design","tool"],film:["movie","video"],"folder-minus":["directory"],"folder-plus":["directory"],folder:["directory"],frown:["emoji","face","bad","sad","emotion"],gift:["present","box","birthday","party"],"git-branch":["code","version control"],"git-commit":["code","version control"],"git-merge":["code","version control"],"git-pull-request":["code","version control"],github:["logo","version control"],gitlab:["logo","version control"],global:["world","browser","language","translate"],"hard-drive":["computer","server"],hash:["hashtag","number","pound"],headphones:["music","audio"],heart:["like","love"],"help-circle":["question mark"],hexagon:["shape","node.js","logo"],home:["house"],image:["picture"],inbox:["email"],instagram:["logo","camera"],key:["password","login","authentication"],"life-bouy":["help","life ring","support"],linkedin:["logo"],lock:["security","password"],"log-in":["sign in","arrow"],"log-out":["sign out","arrow"],mail:["email"],"map-pin":["location","navigation","travel","marker"],map:["location","navigation","travel"],maximize:["fullscreen"],"maximize-2":["fullscreen","arrows"],meh:["emoji","face","neutral","emotion"],menu:["bars","navigation","hamburger"],"message-circle":["comment","chat"],"message-square":["comment","chat"],"mic-off":["record"],mic:["record"],minimize:["exit fullscreen"],"minimize-2":["exit fullscreen","arrows"],monitor:["tv"],moon:["dark","night"],"more-horizontal":["ellipsis"],"more-vertical":["ellipsis"],"mouse-pointer":["arrow","cursor"],move:["arrows"],navigation:["location","travel"],"navigation-2":["location","travel"],octagon:["stop"],package:["box"],paperclip:["attachment"],pause:["music","stop"],"pause-circle":["music","stop"],"pen-tool":["vector","drawing"],play:["music","start"],"play-circle":["music","start"],plus:["add","new"],"plus-circle":["add","new"],"plus-square":["add","new"],pocket:["logo","save"],power:["on","off"],radio:["signal"],rewind:["music"],rss:["feed","subscribe"],save:["floppy disk"],search:["find","magnifier","magnifying glass"],send:["message","mail","paper airplane"],settings:["cog","edit","gear","preferences"],shield:["security"],"shield-off":["security"],"shopping-bag":["ecommerce","cart","purchase","store"],"shopping-cart":["ecommerce","cart","purchase","store"],shuffle:["music"],"skip-back":["music"],"skip-forward":["music"],slash:["ban","no"],sliders:["settings","controls"],smile:["emoji","face","happy","good","emotion"],speaker:["music"],star:["bookmark","favorite","like"],sun:["brightness","weather","light"],sunrise:["weather"],sunset:["weather"],tag:["label"],target:["bullseye"],terminal:["code","command line"],"thumbs-down":["dislike","bad"],"thumbs-up":["like","good"],"toggle-left":["on","off","switch"],"toggle-right":["on","off","switch"],trash:["garbage","delete","remove"],"trash-2":["garbage","delete","remove"],triangle:["delta"],truck:["delivery","van","shipping"],twitter:["logo"],umbrella:["rain","weather"],"video-off":["camera","movie","film"],video:["camera","movie","film"],voicemail:["phone"],volume:["music","sound","mute"],"volume-1":["music","sound"],"volume-2":["music","sound"],"volume-x":["music","sound","mute"],watch:["clock","time"],wind:["weather","air"],"x-circle":["cancel","close","delete","remove","times"],"x-octagon":["delete","stop","alert","warning","times"],"x-square":["cancel","close","delete","remove","times"],x:["cancel","close","delete","remove","times"],youtube:["logo","video","play"],"zap-off":["flash","camera","lightning"],zap:["flash","camera","lightning"]}},function(e){e.exports={activity:'',airplay:'',"alert-circle":'',"alert-octagon":'',"alert-triangle":'',"align-center":'',"align-justify":'',"align-left":'',"align-right":'',anchor:'',aperture:'',archive:'',"arrow-down-circle":'',"arrow-down-left":'',"arrow-down-right":'',"arrow-down":'',"arrow-left-circle":'',"arrow-left":'',"arrow-right-circle":'',"arrow-right":'',"arrow-up-circle":'',"arrow-up-left":'',"arrow-up-right":'',"arrow-up":'',"at-sign":'',award:'',"bar-chart-2":'',"bar-chart":'',"battery-charging":'',battery:'',"bell-off":'',bell:'',bluetooth:'',bold:'',"book-open":'',book:'',bookmark:'',box:'',briefcase:'',calendar:'',"camera-off":'',camera:'',cast:'',"check-circle":'',"check-square":'',check:'',"chevron-down":'',"chevron-left":'',"chevron-right":'',"chevron-up":'',"chevrons-down":'',"chevrons-left":'',"chevrons-right":'',"chevrons-up":'',chrome:'',circle:'',clipboard:'',clock:'',"cloud-drizzle":'',"cloud-lightning":'',"cloud-off":'',"cloud-rain":'',"cloud-snow":'',cloud:'',code:'',codepen:'',codesandbox:'',coffee:'',columns:'',command:'',compass:'',copy:'',"corner-down-left":'',"corner-down-right":'',"corner-left-down":'',"corner-left-up":'',"corner-right-down":'',"corner-right-up":'',"corner-up-left":'',"corner-up-right":'',cpu:'',"credit-card":'',crop:'',crosshair:'',database:'',delete:'',disc:'',"dollar-sign":'',"download-cloud":'',download:'',droplet:'',"edit-2":'',"edit-3":'',edit:'',"external-link":'',"eye-off":'',eye:'',facebook:'',"fast-forward":'',feather:'',figma:'',"file-minus":'',"file-plus":'',"file-text":'',file:'',film:'',filter:'',flag:'',"folder-minus":'',"folder-plus":'',folder:'',frown:'',gift:'',"git-branch":'',"git-commit":'',"git-merge":'',"git-pull-request":'',github:'',gitlab:'',globe:'',grid:'',"hard-drive":'',hash:'',headphones:'',heart:'',"help-circle":'',hexagon:'',home:'',image:'',inbox:'',info:'',instagram:'',italic:'',key:'',layers:'',layout:'',"life-buoy":'',"link-2":'',link:'',linkedin:'',list:'',loader:'',lock:'',"log-in":'',"log-out":'',mail:'',"map-pin":'',map:'',"maximize-2":'',maximize:'',meh:'',menu:'',"message-circle":'',"message-square":'',"mic-off":'',mic:'',"minimize-2":'',minimize:'',"minus-circle":'',"minus-square":'',minus:'',monitor:'',moon:'',"more-horizontal":'',"more-vertical":'',"mouse-pointer":'',move:'',music:'',"navigation-2":'',navigation:'',octagon:'',package:'',paperclip:'',"pause-circle":'',pause:'',"pen-tool":'',percent:'',"phone-call":'',"phone-forwarded":'',"phone-incoming":'',"phone-missed":'',"phone-off":'',"phone-outgoing":'',phone:'',"pie-chart":'',"play-circle":'',play:'',"plus-circle":'',"plus-square":'',plus:'',pocket:'',power:'',printer:'',radio:'',"refresh-ccw":'',"refresh-cw":'',repeat:'',rewind:'',"rotate-ccw":'',"rotate-cw":'',rss:'',save:'',scissors:'',search:'',send:'',server:'',settings:'',"share-2":'',share:'',"shield-off":'',shield:'',"shopping-bag":'',"shopping-cart":'',shuffle:'',sidebar:'',"skip-back":'',"skip-forward":'',slack:'',slash:'',sliders:'',smartphone:'',smile:'',speaker:'',square:'',star:'',"stop-circle":'',sun:'',sunrise:'',sunset:'',tablet:'',tag:'',target:'',terminal:'',thermometer:'',"thumbs-down":'',"thumbs-up":'',"toggle-left":'',"toggle-right":'',"trash-2":'',trash:'',trello:'',"trending-down":'',"trending-up":'',triangle:'',truck:'',tv:'',twitter:'',type:'',umbrella:'',underline:'',unlock:'',"upload-cloud":'',upload:'',"user-check":'',"user-minus":'',"user-plus":'',"user-x":'',user:'',users:'',"video-off":'',video:'',voicemail:'',"volume-1":'',"volume-2":'',"volume-x":'',volume:'',watch:'',"wifi-off":'',wifi:'',wind:'',"x-circle":'',"x-octagon":'',"x-square":'',x:'',youtube:'',"zap-off":'',zap:'',"zoom-in":'',"zoom-out":''}},function(e){e.exports={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var l=Object.assign||function(e){for(var n=1;n2&&void 0!==arguments[2]?arguments[2]:[];!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.name=n,this.contents=i,this.tags=t,this.attrs=l({},o.default,{class:"feather feather-"+n})}return t(e,[{key:"toSvg",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return""+this.contents+""}},{key:"toString",value:function(){return this.contents}}]),e}();n.default=c},function(e,n,i){"use strict";var l=o(i(8)),t=o(i(31)),r=o(i(30));function o(e){return e&&e.__esModule?e:{default:e}}e.exports={icons:l.default,toSvg:t.default,replace:r.default}},function(e,n,i){var l=i(0)("iterator"),t=!1;try{var r=[7][l]();r.return=function(){t=!0},Array.from(r,function(){throw 2})}catch(e){}e.exports=function(e,n){if(!n&&!t)return!1;var i=!1;try{var r=[7],o=r[l]();o.next=function(){return{done:i=!0}},r[l]=function(){return o},e(r)}catch(e){}return i}},function(e,n,i){var l=i(22),t=i(0)("toStringTag"),r="Arguments"==l(function(){return arguments}());e.exports=function(e){var n,i,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,n){try{return e[n]}catch(e){}}(n=Object(e),t))?i:r?l(n):"Object"==(o=l(n))&&"function"==typeof n.callee?"Arguments":o}},function(e,n,i){var l=i(38),t=i(0)("iterator"),r=i(10);e.exports=i(2).getIteratorMethod=function(e){if(void 0!=e)return e[t]||e["@@iterator"]||r[l(e)]}},function(e,n,i){"use strict";var l=i(6),t=i(12);e.exports=function(e,n,i){n in e?l.f(e,n,t(0,i)):e[n]=i}},function(e,n,i){var l=i(10),t=i(0)("iterator"),r=Array.prototype;e.exports=function(e){return void 0!==e&&(l.Array===e||r[t]===e)}},function(e,n,i){var l=i(5);e.exports=function(e,n,i,t){try{return t?n(l(i)[0],i[1]):n(i)}catch(n){var r=e.return;throw void 0!==r&&l(r.call(e)),n}}},function(e,n,i){"use strict";var l=i(24),t=i(28),r=i(17),o=i(42),a=i(41),c=i(21),y=i(40),p=i(39);t(t.S+t.F*!i(37)(function(e){Array.from(e)}),"Array",{from:function(e){var n,i,t,h,x=r(e),s="function"==typeof this?this:Array,u=arguments.length,d=u>1?arguments[1]:void 0,f=void 0!==d,v=0,g=p(x);if(f&&(d=l(d,u>2?arguments[2]:void 0,2)),void 0==g||s==Array&&a(g))for(i=new s(n=c(x.length));n>v;v++)y(i,v,f?d(x[v],v):x[v]);else for(h=g.call(x),i=new s;!(t=h.next()).done;v++)y(i,v,f?o(h,d,[t.value,v],!0):t.value);return i.length=v,i}})},function(e,n,i){var l=i(3),t=i(17),r=i(9)("IE_PROTO"),o=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=t(e),l(e,r)?e[r]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?o:null}},function(e,n,i){var l=i(1).document;e.exports=l&&l.documentElement},function(e,n,i){var l=i(15),t=Math.max,r=Math.min;e.exports=function(e,n){return(e=l(e))<0?t(e+n,0):r(e,n)}},function(e,n,i){var l=i(23),t=i(21),r=i(46);e.exports=function(e){return function(n,i,o){var a,c=l(n),y=t(c.length),p=r(o,y);if(e&&i!=i){for(;y>p;)if((a=c[p++])!=a)return!0}else for(;y>p;p++)if((e||p in c)&&c[p]===i)return e||p||0;return!e&&-1}}},function(e,n,i){var l=i(22);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==l(e)?e.split(""):Object(e)}},function(e,n,i){var l=i(3),t=i(23),r=i(47)(!1),o=i(9)("IE_PROTO");e.exports=function(e,n){var i,a=t(e),c=0,y=[];for(i in a)i!=o&&l(a,i)&&y.push(i);for(;n.length>c;)l(a,i=n[c++])&&(~r(y,i)||y.push(i));return y}},function(e,n,i){var l=i(49),t=i(19);e.exports=Object.keys||function(e){return l(e,t)}},function(e,n,i){var l=i(6),t=i(5),r=i(50);e.exports=i(4)?Object.defineProperties:function(e,n){t(e);for(var i,o=r(n),a=o.length,c=0;a>c;)l.f(e,i=o[c++],n[i]);return e}},function(e,n,i){var l=i(5),t=i(51),r=i(19),o=i(9)("IE_PROTO"),a=function(){},c=function(){var e,n=i(26)("iframe"),l=r.length;for(n.style.display="none",i(45).appendChild(n),n.src="javascript:",(e=n.contentWindow.document).open(),e.write(" + + R - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+
+ Archie +
+ +
+ + +

Entries tagged - "R"

+ + + + +
+ + diff --git a/public/categories/r/index.xml b/public/categories/r/index.xml new file mode 100644 index 0000000..c993210 --- /dev/null +++ b/public/categories/r/index.xml @@ -0,0 +1,20 @@ + + + + R on Archie + http://localhost:4321/categories/r/ + Recent content in R on Archie + Hugo + en-us + © Athul + Tue, 01 Dec 2020 21:13:14 -0500 + + + Hello R Markdown + http://localhost:4321/posts/2020-12-01-r-rmarkdown/ + Tue, 01 Dec 2020 21:13:14 -0500 + http://localhost:4321/posts/2020-12-01-r-rmarkdown/ + R Markdown This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com. You can embed an R code chunk like this: summary(cars) ## speed dist ## Min. : 4.0 Min. : 2.00 ## 1st Qu.:12.0 1st Qu.: 26.00 ## Median :15.0 Median : 36.00 ## Mean :15.4 Mean : 42.98 ## 3rd Qu. + + + diff --git a/public/categories/test/index.html b/public/categories/test/index.html new file mode 100644 index 0000000..2bec3cf --- /dev/null +++ b/public/categories/test/index.html @@ -0,0 +1,75 @@ + + + + Test - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ + +

Entries tagged - "test"

+ + + + +
+ + diff --git a/public/categories/test/index.xml b/public/categories/test/index.xml new file mode 100644 index 0000000..2c791af --- /dev/null +++ b/public/categories/test/index.xml @@ -0,0 +1,20 @@ + + + + Test on Archie + http://localhost:4321/categories/test/ + Recent content in Test on Archie + Hugo + en-us + © Athul + Sat, 06 Jul 2024 00:00:00 +0000 + + + New Post on Archie + http://localhost:4321/posts/2024-07-06-new-post-on-archie/ + Sat, 06 Jul 2024 00:00:00 +0000 + http://localhost:4321/posts/2024-07-06-new-post-on-archie/ + Intro This is my first post in the Archie template in hugo. Here&rsquo;s a random sample from the standard Normal distribution. rnorm(5) ## [1] 1.0725100 0.3514227 -1.8940204 0.3166614 -0.4964550 Here&rsquo;s an image of a duck. + + + diff --git a/public/categories/trial/index.html b/public/categories/trial/index.html new file mode 100644 index 0000000..26271c9 --- /dev/null +++ b/public/categories/trial/index.html @@ -0,0 +1,75 @@ + + + + Trial - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ + +

Entries tagged - "trial"

+ + + + +
+ + diff --git a/public/categories/trial/index.xml b/public/categories/trial/index.xml new file mode 100644 index 0000000..045e220 --- /dev/null +++ b/public/categories/trial/index.xml @@ -0,0 +1,20 @@ + + + + Trial on Archie + http://localhost:4321/categories/trial/ + Recent content in Trial on Archie + Hugo + en-us + © Athul + Sat, 06 Jul 2024 00:00:00 +0000 + + + New Post on Archie + http://localhost:4321/posts/2024-07-06-new-post-on-archie/ + Sat, 06 Jul 2024 00:00:00 +0000 + http://localhost:4321/posts/2024-07-06-new-post-on-archie/ + Intro This is my first post in the Archie template in hugo. Here&rsquo;s a random sample from the standard Normal distribution. rnorm(5) ## [1] 1.0725100 0.3514227 -1.8940204 0.3166614 -0.4964550 Here&rsquo;s an image of a duck. + + + diff --git a/public/index.html b/public/index.html index 5c65ff1..f8af391 100644 --- a/public/index.html +++ b/public/index.html @@ -60,9 +60,35 @@ +
+

New Post on Archie

+ +
+ + Intro This is my first post in the Archie template in hugo. +Here’s a random sample from the standard Normal distribution. +rnorm(5) ## [1] -0.4895228 -0.1800012 0.3154719 1.0259020 2.0400095 Here’s an image of a duck.… + +
+ Read more ⟶ +
+ +
+

Hello R Markdown

+ +
+ + R Markdown This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com. +You can embed an R code chunk like this: +summary(cars) ## speed dist ## Min. : 4.0 Min. : 2.00 ## 1st Qu.:12.0 1st Qu.: 26.00 ## Median :15.0 Median : 36.00 ## Mean :15.4 Mean : 42.98 ## 3rd Qu.… + +
+ Read more ⟶ +
+

Telegram Bot for GitHub Actions

- +
Make a Telegram bot with Node.js and use it with GitHub Actions for sending notifications to you about the repo. @@ -73,7 +99,7 @@

Telegram Bot for GitHub Actions

Primer: When You Have Too Much to Do

- +
You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more. @@ -84,7 +110,7 @@

Primer: When You Have Too Much to Do<

Getting Started with Traveling Ultralight

- +
Start by getting a small backpack (less than 20 liters) and then just travel with what fits in that. @@ -95,7 +121,7 @@

Getting Started with Traveling Ultral

How to test dark mode?

- +
Here is how you can setup dark mode for Ink and test on various OS like iOS, Android, macOS and Windows 10.… @@ -106,7 +132,7 @@

How to test dark mode?

Typography

- +
Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits. @@ -118,7 +144,7 @@

Typography

Hugo shortcodes

- +
Here is a demo of all shortcodes available in Hugo. @@ -129,7 +155,7 @@

Hugo shortcodes

How I Learned to Stop Procrastinating, & Love Letting Go

- +
The art of letting go. @@ -140,7 +166,7 @@

How I Learned to Stop Procrastinating

Fearlessness: How to Stop Running from Space

- +
We spend our days filling in every available space, cramming in more tasks, responding to messages, checking social media and online sites, watching videos. diff --git a/public/index.xml b/public/index.xml index a624b81..c933ef3 100644 --- a/public/index.xml +++ b/public/index.xml @@ -7,8 +7,22 @@ Hugo en-us © Athul - Wed, 01 Apr 2020 00:00:00 +0000 + Sat, 06 Jul 2024 00:00:00 +0000 + + New Post on Archie + http://localhost:4321/posts/2024-07-06-new-post-on-archie/ + Sat, 06 Jul 2024 00:00:00 +0000 + http://localhost:4321/posts/2024-07-06-new-post-on-archie/ + Intro This is my first post in the Archie template in hugo. Here&rsquo;s a random sample from the standard Normal distribution. rnorm(5) ## [1] -0.4895228 -0.1800012 0.3154719 1.0259020 2.0400095 Here&rsquo;s an image of a duck. + + + Hello R Markdown + http://localhost:4321/posts/2020-12-01-r-rmarkdown/ + Tue, 01 Dec 2020 21:13:14 -0500 + http://localhost:4321/posts/2020-12-01-r-rmarkdown/ + R Markdown This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com. You can embed an R code chunk like this: summary(cars) ## speed dist ## Min. : 4.0 Min. : 2.00 ## 1st Qu.:12.0 1st Qu.: 26.00 ## Median :15.0 Median : 36.00 ## Mean :15.4 Mean : 42.98 ## 3rd Qu. + Telegram Bot for GitHub Actions http://localhost:4321/posts/tg-gh/ diff --git a/public/post/2024-07-06-new-post-on-archie/index.Rmarkdown b/public/post/2024-07-06-new-post-on-archie/index.Rmarkdown new file mode 100644 index 0000000..6c907ee --- /dev/null +++ b/public/post/2024-07-06-new-post-on-archie/index.Rmarkdown @@ -0,0 +1,21 @@ +--- +title: New Post on Archie +author: Christopher Nam +date: '2024-07-06' +slug: [] +categories: [] +tags: [] +draft: yes +--- + +# Intro +This is my first post in the Archie template in hugo. + +Here's a random sample from the standard Normal distribution. +```{r} +rnorm(5) +``` + +Here's an image of a duck. + +\[https://i.ebayimg.com/images/g/vToAAOSwr6hdW8L8/s-l1600.jpg] \ No newline at end of file diff --git a/public/post/2024-07-06-new-post-on-archie/index.html b/public/post/2024-07-06-new-post-on-archie/index.html new file mode 100644 index 0000000..fcf92d8 --- /dev/null +++ b/public/post/2024-07-06-new-post-on-archie/index.html @@ -0,0 +1,107 @@ + + + + New Post on Archie - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ +
+
+
+

New Post on Archie

+
Posted on Jul 6, 2024 DRAFT
+
+ + +
+

Intro

+

This is my first post in the Archie template in hugo.

+

Here’s a random sample from the standard Normal distribution.

+
rnorm(5)
+
## [1] -1.8403621  1.0484933  1.0183752  0.2850864 -0.4652938
+

Here’s an image of a duck.

+

[https://i.ebayimg.com/images/g/vToAAOSwr6hdW8L8/s-l1600.jpg]

+ +
+ + +
+
+ +
+ + diff --git a/public/post/index.html b/public/post/index.html new file mode 100644 index 0000000..6ebbc1e --- /dev/null +++ b/public/post/index.html @@ -0,0 +1,73 @@ + + + + Posts - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Archie +
+ +
+ + +

All articles

+ + +
    + +
    + + diff --git a/public/post/index.xml b/public/post/index.xml new file mode 100644 index 0000000..0e4f658 --- /dev/null +++ b/public/post/index.xml @@ -0,0 +1,12 @@ + + + + Posts on Archie + http://localhost:4321/post/ + Recent content in Posts on Archie + Hugo + en-us + © Athul + + + diff --git a/public/posts/2020-12-01-r-rmarkdown/index.Rmd b/public/posts/2020-12-01-r-rmarkdown/index.Rmd index cc06f2e..8768d78 100644 --- a/public/posts/2020-12-01-r-rmarkdown/index.Rmd +++ b/public/posts/2020-12-01-r-rmarkdown/index.Rmd @@ -1,37 +1,38 @@ ---- -title: "Hello R Markdown" -author: "Frida Gomam" -date: 2020-12-01T21:13:14-05:00 -categories: ["R"] -tags: ["R Markdown", "plot", "regression"] ---- - -```{r setup, include=FALSE} -knitr::opts_chunk$set(collapse = TRUE) -``` - -# R Markdown - -This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see . - -You can embed an R code chunk like this: - -```{r cars} -summary(cars) -fit <- lm(dist ~ speed, data = cars) -fit -``` - -# Including Plots - -You can also embed plots. See Figure \@ref(fig:pie) for example: - -```{r pie, fig.cap='A fancy pie chart.', tidy=FALSE} -par(mar = c(0, 1, 0, 1)) -pie( - c(280, 60, 20), - c('Sky', 'Sunny side of pyramid', 'Shady side of pyramid'), - col = c('#0292D8', '#F7EA39', '#C4B632'), - init.angle = -50, border = NA -) -``` +--- +title: "Hello R Markdown" +author: "Frida Gomam" +date: 2020-12-01T21:13:14-05:00 +categories: ["R"] +tags: ["R Markdown", "plot", "regression"] +draft: yes +--- + +```{r setup, include=FALSE} +knitr::opts_chunk$set(collapse = TRUE) +``` + +# R Markdown + +This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see . + +You can embed an R code chunk like this: + +```{r cars} +summary(cars) +fit <- lm(dist ~ speed, data = cars) +fit +``` + +# Including Plots + +You can also embed plots. See Figure \@ref(fig:pie) for example: + +```{r pie, fig.cap='A fancy pie chart.', tidy=FALSE} +par(mar = c(0, 1, 0, 1)) +pie( + c(280, 60, 20), + c('Sky', 'Sunny side of pyramid', 'Shady side of pyramid'), + col = c('#0292D8', '#F7EA39', '#C4B632'), + init.angle = -50, border = NA +) +``` diff --git a/public/posts/2020-12-01-r-rmarkdown/index.html b/public/posts/2020-12-01-r-rmarkdown/index.html new file mode 100644 index 0000000..0351e5d --- /dev/null +++ b/public/posts/2020-12-01-r-rmarkdown/index.html @@ -0,0 +1,142 @@ + + + + Hello R Markdown - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + Archie +
    + +
    + +
    +
    +
    +

    Hello R Markdown

    +
    Posted on Dec 1, 2020 DRAFT
    +
    + + +
    +

    R Markdown

    +

    This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

    +

    You can embed an R code chunk like this:

    +
    summary(cars)
    +##      speed           dist       
    +##  Min.   : 4.0   Min.   :  2.00  
    +##  1st Qu.:12.0   1st Qu.: 26.00  
    +##  Median :15.0   Median : 36.00  
    +##  Mean   :15.4   Mean   : 42.98  
    +##  3rd Qu.:19.0   3rd Qu.: 56.00  
    +##  Max.   :25.0   Max.   :120.00
    +fit <- lm(dist ~ speed, data = cars)
    +fit
    +## 
    +## Call:
    +## lm(formula = dist ~ speed, data = cars)
    +## 
    +## Coefficients:
    +## (Intercept)        speed  
    +##     -17.579        3.932
    +

    Including Plots

    +

    You can also embed plots. See Figure 1 for example:

    +
    par(mar = c(0, 1, 0, 1))
    +pie(
    +  c(280, 60, 20),
    +  c('Sky', 'Sunny side of pyramid', 'Shady side of pyramid'),
    +  col = c('#0292D8', '#F7EA39', '#C4B632'),
    +  init.angle = -50, border = NA
    +)
    +
    + +
    + + +
    +
    + +
    + + diff --git a/public/posts/2020-12-01-r-rmarkdown/index_files/figure-html/pie-1.png b/public/posts/2020-12-01-r-rmarkdown/index_files/figure-html/pie-1.png new file mode 100644 index 0000000000000000000000000000000000000000..eef072f8759e03335a76b6d1fa8a869d4e6dd9c9 GIT binary patch literal 15125 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 KyzszJ(f + + + New Post on Archie - Archie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + Archie +
    + +
    + +
    +
    +
    +

    New Post on Archie

    +
    Posted on Jul 6, 2024
    +
    + + +
    +

    Intro

    +

    This is my first post in the Archie template in hugo.

    +

    Here’s a random sample from the standard Normal distribution.

    +
    rnorm(5)
    +
    ## [1] -0.4895228 -0.1800012  0.3154719  1.0259020  2.0400095
    +

    Here’s an image of a duck.

    +

    + +
    + + +
    +
    + +
    + + diff --git a/public/posts/index.html b/public/posts/index.html index 644259b..b812c9d 100644 --- a/public/posts/index.html +++ b/public/posts/index.html @@ -56,21 +56,25 @@

    All articles

    + + + +

    + + + +
    - - - - + +
    + + + +
    + + + +

    @@ -122,8 +129,9 @@

    Table of Contents

    diff --git a/public/2018/03/18/how-i-learned-to-stop-procrastinating-love-letting-go/index.html b/public/2018/03/18/how-i-learned-to-stop-procrastinating-love-letting-go/index.html index f04d425..0dbbfa7 100644 --- a/public/2018/03/18/how-i-learned-to-stop-procrastinating-love-letting-go/index.html +++ b/public/2018/03/18/how-i-learned-to-stop-procrastinating-love-letting-go/index.html @@ -25,8 +25,8 @@ - - + + @@ -63,6 +63,14 @@

    vires in notitia

    + +
    @@ -71,15 +79,14 @@

    How I Learned to Stop Procrastinating, & Love Letting Go -
    - - -
    +
    +

    Table of Contents

    - + +
    -
    +

    The end of procrastination is the art of letting go.

    I’ve been a lifelong procrastinator, at least until recent years. I would put things off until deadline, because I knew I could come through. I came through on tests after cramming last minute, I turned articles in at the deadline after waiting until the last hour, I got things done.

    Until I didn’t. It turns out procrastinating caused me to miss deadlines, over and over. It stressed me out. My work was less-than-desirable when I did it last minute. Slowly, I started to realize that procrastination wasn’t doing me any favors. In fact, it was causing me a lot of grief.

    @@ -99,7 +106,7 @@

    Table of Contents

    And then I smile, and breathe, and let go.

    And one step at a time, become the person I want to be.

    -
    +

    @@ -108,8 +115,9 @@

    Table of Contents

    diff --git a/public/2018/03/18/how-to-test-dark-mode/index.html b/public/2018/03/18/how-to-test-dark-mode/index.html index d3bef86..eb7bae2 100644 --- a/public/2018/03/18/how-to-test-dark-mode/index.html +++ b/public/2018/03/18/how-to-test-dark-mode/index.html @@ -24,8 +24,8 @@ - - + + @@ -62,6 +62,14 @@

    vires in notitia

    + +
    @@ -74,15 +82,14 @@

    How to test dark mode?

    Wubba lubba dub dub
    -
    - - -
    +
    +

    Table of Contents

    - + +
    -
    +

    You can set dark mode as default by setting params.mode to dark in config.toml or set it to auto which will detect based on your OS and switch to dark mode. For more details refer documentation

    Here is how you can switch based on your OS

    -
    + diff --git a/public/2018/03/18/hugo-shortcodes/index.html b/public/2018/03/18/hugo-shortcodes/index.html index 78f328e..06c4f97 100644 --- a/public/2018/03/18/hugo-shortcodes/index.html +++ b/public/2018/03/18/hugo-shortcodes/index.html @@ -24,8 +24,8 @@ - - + + @@ -62,6 +62,14 @@

    vires in notitia

    + +
    @@ -70,10 +78,8 @@

    Hugo shortcodes

    -
    - - -
    +
    +

    Table of Contents

    + +
    -
    +

    Images

    Github Gist

    @@ -348,7 +355,7 @@

    Callouts

    -
    + diff --git a/public/2018/03/18/typography/index.html b/public/2018/03/18/typography/index.html index fd6b79f..d118a04 100644 --- a/public/2018/03/18/typography/index.html +++ b/public/2018/03/18/typography/index.html @@ -27,8 +27,8 @@ - - + + @@ -65,6 +65,14 @@

    vires in notitia

    + +
    @@ -73,10 +81,8 @@

    Typography

    -
    - - -
    +
    +

    Table of Contents

    + +
    -
    +

    Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.

    Heading 1

    Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.

    @@ -144,7 +151,7 @@

    Typography

  • Blue
  • -
    + diff --git a/public/2018/03/fearlessness-how-to-stop-running-from-space/index.html b/public/2018/03/fearlessness-how-to-stop-running-from-space/index.html new file mode 100644 index 0000000..070a90a --- /dev/null +++ b/public/2018/03/fearlessness-how-to-stop-running-from-space/index.html @@ -0,0 +1,159 @@ + + + + Fearlessness: How to Stop Running from Space - The Median Duck + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +

    vires in notitia

    + + +
    +
    +
    +

    Fearlessness: How to Stop Running from Space

    +
    Posted on Mar 18, 2018 DRAFT
    +
    + + +
    + +

    Table of Contents

    + + +
    + +
    +

    We spend our days filling in every available space, cramming in more tasks, responding to messages, checking social media and online sites, watching videos.

    +

    We are afraid of empty space in our lives.

    +

    The result is often a continual busyness, constant distraction and avoidance, lack of focus, lack of satisfaction with our lives.

    +

    We run from silence. We run from the spaces between tasks and appointments. We run from solitude and stillness. We try to fill every second with activity, with something useful, as if silence and space are not valuable.

    +

    But what are we afraid of?

    +

    And who would we be if we didn’t have that fear?

    +

    We’re afraid of space and stillness and silence because it highlights the uncertainty, instability, groundlessness, insecurity, shakiness that lie underneath every second of our lives. We’re afraid of having to face this instability and uncertainty, of having to feel the fear of it.

    +

    Without the fear of all of the uncertainty that is highlighted by space … we become free.

    +

    I know in my life, when I allow myself to have stillness, silence, solitude, simplicity and space … it leaves room to face whatever is coming up for me. It gives me room to fully feel any feelings that I’ve been avoiding. It allows me to be more honest with myself, instead of using distractions and busyness to cover up what I don’t want to see.

    +

    And in the end, I develop trust that the space is not something to be feared, but rather something to be treasured. A gift, filled with learning and not knowing and shakiness and beauty.

    +

    You might try allowing more space to be in your day, without filling it:

    +
      +
    • Take some time between tasks for stillness.
    • +
    • Sit out in nature, in silence, without technology.
    • +
    • When you notice yourself reaching for your phone, pause. See if you can just be still, just savor some space.
    • +
    • When you feel uncertainty or instability in your life (hint: it’s always there), let yourself feel it. Be present with it, without needing to run or avoid.
    • +
    • When you feel fear, be open-hearted with it and allow yourself fully feel it, being friendly with it. Your relationship with fear will change if you become friendly with it.
    • +
    • Do less, and trust that things won’t fall apart. Or if they do fall apart, you can be present with that instability.
    • +
    • When you’re in line, driving, eating, walking, exercising … see if you can do those things in silence, without technology, without needing to do something “useful.” Find the value in these spaces.
    • +
    • Notice who you are without the fear of space.
    • +
    +

    Savor these spaces, their deliciousness. Savor the groundlessness, as something filled with freedom if we learn not to fear it. Be present with the fear and uncertainty, as good friends not as enemies.

    +

    Let your heart be open raw tender and vulnerable, and your mind embracing the spaciousness of the vast blue sky of open awareness.

    + +
    + + + + +
    +
    + +
    + + diff --git a/public/2018/03/how-i-learned-to-stop-procrastinating-love-letting-go/index.html b/public/2018/03/how-i-learned-to-stop-procrastinating-love-letting-go/index.html new file mode 100644 index 0000000..365e2c2 --- /dev/null +++ b/public/2018/03/how-i-learned-to-stop-procrastinating-love-letting-go/index.html @@ -0,0 +1,145 @@ + + + + How I Learned to Stop Procrastinating, & Love Letting Go - The Median Duck + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +

    vires in notitia

    + + +
    +
    +
    +

    How I Learned to Stop Procrastinating, & Love Letting Go

    +
    Posted on Mar 18, 2018 DRAFT
    +
    + + +
    + +

    Table of Contents

    + + +
    + +
    +

    The end of procrastination is the art of letting go.

    +

    I’ve been a lifelong procrastinator, at least until recent years. I would put things off until deadline, because I knew I could come through. I came through on tests after cramming last minute, I turned articles in at the deadline after waiting until the last hour, I got things done.

    +

    Until I didn’t. It turns out procrastinating caused me to miss deadlines, over and over. It stressed me out. My work was less-than-desirable when I did it last minute. Slowly, I started to realize that procrastination wasn’t doing me any favors. In fact, it was causing me a lot of grief.

    +

    But I couldn’t quit. I tried a lot of things. I tried time boxing and goal setting and accountability and the Pomodoro Technique and Getting Things Done. All are great methods, but they only last so long. Nothing really worked over the long term.

    +

    That’s because I wasn’t getting to the root problem.

    +

    I hadn’t figured out the skill that would save me from the procrastination.

    +

    Until I learned about letting go.

    +

    Letting go first came to me when I was quitting smoking. I had to let go of the “need” to smoke, the use of my crutch of cigarettes to deal with stress and problems.

    +

    Then I learned I needed to let go of other false needs that were causing me problems: sugar, junk food, meat, shopping, beer, possessions. I’m not saying I can never do these things again once I let go of these needs, but I let go of the idea that they’re really necessary. I let go of an unhealthy attachment to them.

    +

    Then I learned that distractions and the false need to check my email and news and other things online … were causing me problems. They were causing my procrastination.

    +

    So I learned to let go of those too.

    +

    Here’s the process I used to let go of the distractions and false needs that cause procrastination:

    +

    I paid attention to the pain they cause me, later, instead of only the temporary comfort/pleasure they gave me right away. +I thought about the person I want to be, the life I want to live. I set my intentions to do the good work I think I should do. +I watched my urges to check things, to go to the comfort of distractions. I saw that I wanted to escape discomfort of something hard, and go to the comfort of something familiar and easy. +I realized I didn’t need that comfort. I could be in discomfort and nothing bad would happen. In fact, the best things happen when I’m in discomfort. +And then I smile, and breathe, and let go.

    +

    And one step at a time, become the person I want to be.

    + +
    + + + + +
    +
    + +
    + + diff --git a/public/2018/03/how-to-test-dark-mode/index.html b/public/2018/03/how-to-test-dark-mode/index.html new file mode 100644 index 0000000..dec6183 --- /dev/null +++ b/public/2018/03/how-to-test-dark-mode/index.html @@ -0,0 +1,129 @@ + + + + How to test dark mode? - The Median Duck + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +

    vires in notitia

    + + +
    +
    +
    +

    How to test dark mode?

    +
    Posted on Mar 18, 2018 DRAFT
    +
    + +
    + tl;dr: + Wubba lubba dub dub +
    + +
    + +

    Table of Contents

    + + +
    + +
    +

    You can set dark mode as default by setting params.mode to dark in config.toml or set it to auto which will detect based on your OS and switch to dark mode. For more details refer documentation

    +

    Here is how you can switch based on your OS

    + + +
    + + + + +
    +
    + +
    + + diff --git a/public/2018/03/hugo-shortcodes/index.html b/public/2018/03/hugo-shortcodes/index.html new file mode 100644 index 0000000..92be657 --- /dev/null +++ b/public/2018/03/hugo-shortcodes/index.html @@ -0,0 +1,385 @@ + + + + Hugo shortcodes - The Median Duck + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +

    vires in notitia

    + + +
    + +
    + +
    + + diff --git a/public/2018/03/typography/index.html b/public/2018/03/typography/index.html new file mode 100644 index 0000000..18b7d17 --- /dev/null +++ b/public/2018/03/typography/index.html @@ -0,0 +1,181 @@ + + + + Typography - The Median Duck + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +

    vires in notitia

    + + +
    +
    +
    +

    Typography

    +
    Posted on Mar 18, 2018 DRAFT
    +
    + + +
    + +

    Table of Contents

    + + +
    + +
    +

    Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.

    +

    Heading 1

    +

    Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.

    +

    Heading 2

    +

    Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.

    +

    Heading 3

    +

    Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.

    +

    Heading 4

    +

    Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.

    +
    Heading 5
    +

    Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.

    +
    Heading 6
    +

    Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.

    +

    Typography

    +

    Lid est laborum et dolorum fuga, This is an example inline link. Et harum quidem rerum facilis, This is bold and emphasis cumque nihilse impedit quo minus id quod amets untra dolor amet sad. While this is code block() and following is a pre tag

    +
    print 'this is pre tag'
    +
    +

    Following is the syntax highlighted code block

    +
    func getCookie(name string, r interface{}) (*http.Cookie, error) {
    +	rd := r.(*http.Request)
    +	cookie, err := rd.Cookie(name)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return cookie, nil
    +}
    +
    +func setCookie(cookie *http.Cookie, w interface{}) error {
    +	// Get write interface registered using `Acquire` method in handlers.
    +	wr := w.(http.ResponseWriter)
    +	http.SetCookie(wr, cookie)
    +	return nil
    +}
    +

    This is blockquote, Will make it better now

    +
    +

    ‘I want to do with you what spring does with the cherry trees.’ cited ~Pablo Neruda*

    +
    +
    +

    Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit

    +
    +

    Unordered list

    +
      +
    • Red
    • +
    • Green
    • +
    • Blue
    • +
    +

    Ordered list

    +
      +
    1. Red
    2. +
    3. Green
    4. +
    5. Blue
    6. +
    + +
    + + + + +
    +
    + +
    + + diff --git a/public/2020/03/18/getting-started-with-traveling-ultralight/index.html b/public/2020/03/18/getting-started-with-traveling-ultralight/index.html index abc344b..0918d31 100644 --- a/public/2020/03/18/getting-started-with-traveling-ultralight/index.html +++ b/public/2020/03/18/getting-started-with-traveling-ultralight/index.html @@ -24,8 +24,8 @@ - - + + @@ -62,6 +62,14 @@

    vires in notitia

    + +
    @@ -70,15 +78,14 @@

    Getting Started with Traveling Ultralight

    -
    - - -
    +
    +

    Table of Contents

    - + +
    -
    +

    I’m on a trip at the moment, and a friend who generously let me sleep on his couch looked at my small travel backpack and commented on how little I travel with: “That’s impressive,” he said.

    I was a little surprised, because though I’ve gotten that comment before, it’s become normal for me to travel with just a small bag (10 lbs. or less, usually), and I have friends who travel with even less. But then I remembered that I’m far from normal in this way.

    I gave him a tip for getting started, and I recommend it for all of you, who want to travel light — or ultralight, as I call it, because for many people traveling light is taking a carry-on roller luggage. For me, having those roller bags is lugging too much, because you can run up stairs with it with ease, or carry it all over a city without worrying about stowing away your luggage somewhere first. It’s so much easier to travel ultralight.

    @@ -96,7 +103,7 @@

    Table of Contents

    By the way, you don’t need much more than this kind of setup even in everyday life.

    For more info on this, check out my Ultralight ebook, and my friend Tynan has a great book called Forever Nomad.

    -
    + diff --git a/public/2020/03/getting-started-with-traveling-ultralight/index.html b/public/2020/03/getting-started-with-traveling-ultralight/index.html new file mode 100644 index 0000000..3160cd4 --- /dev/null +++ b/public/2020/03/getting-started-with-traveling-ultralight/index.html @@ -0,0 +1,133 @@ + + + + Getting Started with Traveling Ultralight - The Median Duck + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +

    vires in notitia

    + + +
    +
    +
    +

    Getting Started with Traveling Ultralight

    +
    Posted on Mar 18, 2020 DRAFT
    +
    + + +
    + +

    Table of Contents

    + + +
    + +
    +

    I’m on a trip at the moment, and a friend who generously let me sleep on his couch looked at my small travel backpack and commented on how little I travel with: “That’s impressive,” he said.

    +

    I was a little surprised, because though I’ve gotten that comment before, it’s become normal for me to travel with just a small bag (10 lbs. or less, usually), and I have friends who travel with even less. But then I remembered that I’m far from normal in this way.

    +

    I gave him a tip for getting started, and I recommend it for all of you, who want to travel light — or ultralight, as I call it, because for many people traveling light is taking a carry-on roller luggage. For me, having those roller bags is lugging too much, because you can run up stairs with it with ease, or carry it all over a city without worrying about stowing away your luggage somewhere first. It’s so much easier to travel ultralight.

    +

    Here’s the tip I gave him to get started: start by getting a small backpack (less than 20 liters) and then just travel with what fits in that.

    +

    That’s how to start. But you’ll probably want some guidance on what to put into the bag, and how to travel with so little. Here’s some guidance to get started:

    +
      +
    • I travel with a lightweight laptop (Macbook Air), a few clothes, my phone, earbuds and some charging cords, toiletries, and almost nothing else. A lightweight windbreaker for wind and light rain (Patagonia Houdini). An eye mask and ear plugs. A collapsible water bottle. My passport. That’s about it. No extra shoes. No books. No suit. No travel pillow. No extra camera other than my phone. I’m not sure what else everyone else brings, but none of that.
    • +
    • I bring clothes that I can wash in the sink or shower and that will dry overnight. Lightweight stuff that I can layer. Often they’re workout-style clothes or things from companies like Outlier or Patagonia that travel well. I don’t bring enough underwear or socks for every day of the trip, because I wash them every couple of days. I only bring one or two extra T-shirts, generally wearing the same two shirts the whole trip, even if it’s a month long. No one has ever once cared what I wear when I’m traveling.
    • +
    • I bring minimal toiletries: a small shaver for my head, razor, toothbrush, floss small tubes of toothpaste and shaving cream, deodorant, nail clippers, ibuprofen.
    • +
    • For cold places, I have thermal underwear and a couple long-sleeve layers (generally all Patagonia capilene stuff), and a beanie. I don’t usually go to places where it’s snowing (I don’t know why, maybe snow isn’t my thing), so I don’t have clothes to deal with that weather.
    • +
    • For warm places, I will bring flip flops and swim trunks, and leave most of the colder layers behind.
    • +
    +

    That’s enough for a monthlong trip, which I’ve done multiple times with this kind of setup. For a shorter trip of a few days, I might bring even less.

    +

    I really love traveling this way, and am more than willing to sacrifice bringing extra things for the luxury of traveling lightweight.

    +

    By the way, you don’t need much more than this kind of setup even in everyday life.

    +

    For more info on this, check out my Ultralight ebook, and my friend Tynan has a great book called Forever Nomad.

    + +
    + + + + +
    +
    + +
    + + diff --git a/public/2020/04/01/primer-when-you-have-too-much-to-do/index.html b/public/2020/04/01/primer-when-you-have-too-much-to-do/index.html index f094bc4..b37a24b 100644 --- a/public/2020/04/01/primer-when-you-have-too-much-to-do/index.html +++ b/public/2020/04/01/primer-when-you-have-too-much-to-do/index.html @@ -26,8 +26,8 @@ - - + + @@ -64,6 +64,14 @@

    vires in notitia

    + +
    @@ -72,10 +80,8 @@

    Primer: When You Have Too Much to Do

    -
    - - -
    +
    +

    Table of Contents

    + +
    -
    +

    You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more.

    It all keeps piling up, and it can feel overwhelming.

    How do you keep up with it all? How do you find focus and peace and get stuff accomplished when you have too much on your plate?

    @@ -127,7 +134,7 @@

    Fourth: Practice Mindful Focus

    As you practice mindful focus, you’ll learn to practice doing things with an open heart, with curiosity and gratitude, and even joy. Try these one at a time as you get to do each task on your Short List.

    You’ll find that you’re not so overloaded, but that each task is just perfect for that moment. And that’s a completely new relationship with the work that you do, and a new relationship with life.

    -
    + @@ -136,10 +143,11 @@

    Fourth: Practice Mindful Focus

    diff --git a/public/2020/04/01/telegram-bot-for-github-actions/index.html b/public/2020/04/01/telegram-bot-for-github-actions/index.html index 9fbd174..3e5df3c 100644 --- a/public/2020/04/01/telegram-bot-for-github-actions/index.html +++ b/public/2020/04/01/telegram-bot-for-github-actions/index.html @@ -24,8 +24,8 @@ - - + + @@ -62,6 +62,14 @@

    vires in notitia

    + +
    @@ -74,10 +82,8 @@

    Telegram Bot for GitHub Actions

    Making GitHub Actions with Js Code
    -
    - - -
    +
    +

    Table of Contents

    + +
    -
    +

    Telegram

    Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed. It is free to use and extensively hackable. It also has a good bot support system. The API is also easy to implement and has many wrappers for building bots with the API.

    GitHub Actions

    @@ -432,7 +439,7 @@

    Defining a workflow to test you


    You can try out many different items using actions and this is just a sample action to get you started. Maybe sending Cat GIFs if the build succeded on the pull request or sending a welcome message to a first time contributor. You imagination is the limit😄 and Never Stop being ⚡️

    -
    + diff --git a/public/2020/04/primer-when-you-have-too-much-to-do/index.html b/public/2020/04/primer-when-you-have-too-much-to-do/index.html new file mode 100644 index 0000000..afd4ba9 --- /dev/null +++ b/public/2020/04/primer-when-you-have-too-much-to-do/index.html @@ -0,0 +1,175 @@ + + + + Primer: When You Have Too Much to Do - The Median Duck + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +

    vires in notitia

    + + +
    +
    +
    +

    Primer: When You Have Too Much to Do

    +
    Posted on Apr 1, 2020 DRAFT
    +
    + + + + +
    +

    You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more.

    +

    It all keeps piling up, and it can feel overwhelming.

    +

    How do you keep up with it all? How do you find focus and peace and get stuff accomplished when you have too much on your plate?

    +

    In this primer, I’ll look at some key strategies and tactics for taking on an overloaded life with an open heart, lots of energy, and a smile on your face.

    +

    The First Step: Triage

    +

    Whether you’re just starting your day, or you’re in the middle of the chaos and just need to find some sanity … the first step is to get into triage mode.

    +

    Triage, as you probably know, is sorting through the chaos to prioritize: what needs to be done now, what needs to be done today, what needs to be done this week, and what can wait? You’re looking at urgency, but also what’s meaningful and important.

    +

    Here’s what you might do:

    +
      +
    • Pick out the things that need to be done today. Start a Short List for things you’re going to do today. That might be important tasks for big projects, urgent tasks that could result in damage if you don’t act, smaller admin tasks that you really should take care of today, and responding to important messages. I would recommend being ruthless and cutting out as much as you can, having just 5 things on your plate if that’s at all possible. Not everything needs to be done today, and not every email needs to be responded to.
    • +
    • Push some things to tomorrow and the rest of the week. If you have deadlines that can be pushed back (or renegotiated), do that. Spread the work out over the week, even into next week. What needs to be done tomorrow? What can wait a day or two longer?
    • +
    • Eliminate what you can. That might mean just not replying to some messages that aren’t that important and don’t really require a reply. It might mean telling some people that you can’t take on this project after all, or that you need to get out of the commitment that you said you’d do. Yes, this is uncomfortable. For now, just put them on a list called, “To Not Do,” and plan to figure out how to get out of them later.
    • +
    +

    OK, you have some breathing room and a manageable list now! Let’s shrink that down even further and just pick one thing.

    +

    Next: Focus on One Thing

    +

    With a lot on your plate, it’s hard to pick one thing to focus on. But that’s exactly what I’m going to ask you to do.

    +

    Pick one thing, and give it your focus. Yes, there are a lot of other things you can focus on. Yes, they’re stressing you out and making it hard to focus. But think about it this way: if you allow it all to be in your head all the time, that will always be your mode of being. You’ll always be thinking about everything, stressing out about it all, with a frazzled mind … unless you start shifting.

    +

    The shift:

    +
      +
    • Pick something to focus on. Look at the triaged list from the first section … if you have 5-6 things on this Short List, you can assess whether there’s any super urgent, time-sensitive things you need to take care of. If there are, pick one of them. If not, pick the most important one — probably the one you have been putting off doing.
    • +
    • Clear everything else away. Just for a little bit. Close all browser tabs, turn off notifications, close open applications, put your phone away.
    • +
    • Put that one task before you, and allow yourself to be with it completely. Pour yourself into it. Think of it as a practice, of letting go (of everything else), of focus, of radical simplicity.
    • +
    +

    When you’re done (or after 15-20 minutes have gone by at least), you can switch to something else. But don’t allow yourself to switch until then.

    +

    By closing off all exits, by choosing one thing, by giving yourself completely to that thing … you’re now in a different mode that isn’t so stressful or spread thin. You’ve started a shift that will lead to focus and sanity.

    +

    Third: Schedule Time to Simplify

    +

    Remember the To Not Do list above? Schedule some time this week to start reducing your projects, saying no to people, getting out of commitments, crossing stuff off your task list … so that you can have some sanity back.

    +

    There are lots of little things that you’ve said “yes” to that you probably shouldn’t have. That’s why you’re overloaded. Protect your more important work, and your time off, and your peace of mind, by saying “no” to things that aren’t as important.

    +

    Schedule the time to simplify — you don’t have to do it today, but sometime soon — and you can then not have to worry about the things on your To Not Do list until then.

    +

    Fourth: Practice Mindful Focus

    +

    Go through the rest of the day with an attitude of “mindful focus.” That means that you are doing one thing at a time, being as present as you can, switching as little as you can.

    +

    Think of it as a settling of the mind. A new mode of being. A mindfulness practice (which means you won’t be perfect at it).

    +

    As you practice mindful focus, you’ll learn to practice doing things with an open heart, with curiosity and gratitude, and even joy. Try these one at a time as you get to do each task on your Short List.

    +

    You’ll find that you’re not so overloaded, but that each task is just perfect for that moment. And that’s a completely new relationship with the work that you do, and a new relationship with life.

    + +
    + + + + +
    +
    + +
    + + diff --git a/public/2020/04/telegram-bot-for-github-actions/index.html b/public/2020/04/telegram-bot-for-github-actions/index.html new file mode 100644 index 0000000..f504aa4 --- /dev/null +++ b/public/2020/04/telegram-bot-for-github-actions/index.html @@ -0,0 +1,469 @@ + + + + Telegram Bot for GitHub Actions - The Median Duck + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +

    vires in notitia

    + + +
    +
    +
    +

    Telegram Bot for GitHub Actions

    +
    Posted on Apr 1, 2020 DRAFT
    +
    + +
    + tl;dr: + Making GitHub Actions with Js Code +
    + + + +
    +

    Telegram

    +

    Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed. It is free to use and extensively hackable. It also has a good bot support system. The API is also easy to implement and has many wrappers for building bots with the API.

    +

    GitHub Actions

    +

    GitHub Actions is a CI/CD runtime for your GitHub repository. You can run almost anything from scripts to docker containers. You can build, test and deploy your code with GitHub Actions. All these actions are called workflows and workflows differ in the job they’re doing. These maybe test workflows, build ones or deployment ones. You can find all the actions on GitHub in the marketplace

    +

    Building the Bot

    +

    Prerequisites

    +
      +
    • Basic JavaScript Knowledge
    • +
    • Basic GitHub Knowledge
    • +
    • Telegram Account
    • +
    +
    +

    There are templates for building actions. Here we’re gonna start from scratch

    +
    +

    Environment Setup

    +
      +
    • Node, You can download node from their website
    • +
    • NPM comes with node, so you don’t have to worry about it.
    • +
    • Initialize the Project
    • +
    +
    $ git init ## initialize a new git repository for version management
    +---
    +$ npm init
    +
      +
    • dotenv, Dotenv can be downloaded via
    • +
    +
    $ npm i dotenv
    +---
    +$ yarn add dotenv
    +
      +
    • node-telegram-bot-api, node-telegram-bot-api is a simple wrapper for building telegram bots. You can download it via
    • +
    +
    $ npm i node-telegram-bot-api
    +---
    +$ yarn add node-telegram-bot-api
    +
      +
    • @zeit/ncc, NCC is a Simple CLI for compiling a Node.js module into a single file, together with all its dependencies, GCC-style. It’s a dev dependency and can be downloaded
    • +
    +
    yarn add --dev @zeit/ncc
    +---
    +npm i -D @zeit/ncc
    +

    Folder Structure

    +

    The dist folder will be automatically created. action.yml will be made

    +
    .
    +├── dist
    +│   └── index.js
    +├── index.js
    +├── action.yml
    +├── README.md
    +└── package.json
    +
      +
    • index.js is the file we’re defining the bot
    • +
    • action.yml is the file we’ll define the action and it’s behaviours
    • +
    +

    Making the Bot

    +

    We need to get an API bot token from telegram. For that Go to Telegram and Search for Botfather. It’s a bot. + +Create a new bot with the /newbot command and get the API key. We’ll need that, also talk to jsondump bot and get your chat id. The output may be like this, so

    +
    {
    +  "update_id": 143943779,
    +  "message": {
    +    "message_id": 181575,
    +    "from": {
    +      "id": 123456 // this is what we need
    +      "is_bot": false,
    +      "first_name": "Tg Name",
    +      "username": "TG Username",
    +      "language_code": "en"
    +    },
    +    "chat": {
    +      "id": 123456,
    +      "first_name": "Tg Name",
    +      "username": "TG Username",
    +      "type": "private"
    +    },
    +    "date": 1584119424,
    +    "text": "message"
    +  }
    +}
    +

    This will be needed for further use and We need to add it to the repo secrets which can be found in the repo settings. Be careful to add it as token and chat like as shown below +

    +

    Writing the Action and Building the Bot

    +

    Fire up the terminal/cmd and make a new folder. Install the dependencies. Run the following command

    +
    $ touch index.js action.yml
    +

    Open your favourite text editor within the folder or with the file. We’ll define the bot in index.js

    +
    require("dotenv").config
    +const Bot = require('node-telegram-bot-api');
    +const {
    +    INPUT_STATUS: ipstatus,
    +    INPUT_TOKEN: tgtoken,//Telegram api token
    +    INPUT_CHAT: chatid,// Telegram Chat ID
    +    INPUT_IU_TITLE: ititle,// Issue title
    +    INPUT_IU_NUM: inum,// Issue Number
    +    INPUT_IU_ACTOR: iactor,// Issue made by
    +    INPUT_IU_BODY: ibody,// Issue Body
    +    INPUT_PR_NUM: pnum,// PR Number
    +    INPUT_PR_STATE: prstate,// PR Opened, reponed or closed
    +    INPUT_PR_TITLE: ptitle,// PR Title
    +    INPUT_PR_BODY: pbody,// Body of the PR
    +    GITHUB_EVENT_NAME: ghevent,// Name of the trigger event
    +    GITHUB_REPOSITORY: repo,// Repository the trigger was made from
    +    GITHUB_ACTOR: ghactor,// User who triggered the action
    +    GITHUB_SHA: sha,// Commit ID
    +    GITHUB_WORKFLOW: ghwrkflw// Workflow Name
    +} = process.env;
    +
    +const bot = new Bot(tgtoken)
    +

    First, we’re defining the dotenv for config and initializing Telegram Bot. Here we’re defining the alias variables for the environment variables. You might notice an INPUT_ for almost every environment variable, this is because GitHub Actions pass the env variable with an INPUT prefix. Other env variables are action’s default environment variables. Then we initialized the bot with the API token.

    +

    GitHub actions could be triggered with Issues, Pull Request or Pushes. You can find the trigger events here. Here we’re gonna get a message from the bot when an Issue or Pull Request or a Push event has happened.

    +
    const evresp = (gevent) => {
    +    switch (gevent) {
    +
    +        case "issues":
    +            return `
    +❗️❗️❗️❗️❗️❗️
    +        
    +Issue ${prstate}
    +
    +Issue Title and Number  : ${ititle} | #${inum}
    +
    +Commented or Created By : \`${iactor}\`
    +
    +Issue Body : *${ibody}*
    +
    +[Link to Issue](https://github.com/${repo}/issues/${inum})
    +[Link to Repo ](https://github.com/${repo}/)
    +[Build log here](https://github.com/${repo}/commit/${sha}/checks)`
    +        case "pull_request":
    +            return `
    +🔃🔀🔃🔀🔃🔀
    +PR ${prstate} 
    +        
    +PR Number:      ${pnum}
    +        
    +PR Title:       ${ptitle}
    +        
    +PR Body:        *${pbody}*
    +        
    +PR By:          ${ghactor}
    +        
    +[Link to Issue](https://github.com/${repo}/pull/${pnum})
    +[Link to Repo ](https://github.com/${repo}/)
    +[Build log here](https://github.com/${repo}/commit/${sha}/checks)`
    +        default:
    +            return `
    +⬆️⇅⬆️⇅
    +            
    +ID: ${ghwrkflw}
    +        
    +Action was a *${ipstatus}!*
    +        
    +\`Repository:  ${repo}\` 
    +        
    +On:          *${ghevent}*
    +        
    +By:            *${ghactor}* 
    +        
    +Tag:        ${process.env.GITHUB_REF}
    +        
    +[Link to Repo ](https://github.com/${repo}/)
    +            `
    +    }
    +}
    +

    In these lines of code, we’re just initializing a switch statement for the responses. We’re also declaring an anonymous function to use the switch responses via a function later. We’re using all the defined variables in the switch. You can check the trigger Events to get how the event is triggered and what keyword should be used.

    +

    Now for the last part of the Js file, we just take the response from the switch and assign it to a constant. Then we use the sendMessage function of the node-telegram-bot-api to send the message to the bot with the chatid and the output as the arguments.

    +
    const output = evresp(ghevent)
    +

    bot.sendMessage(chatid,output,{parse_mode : “Markdown”})

    +

    Compiling and Minifying the Js code

    +

    Since we have installed @zeit/ncc and this is used for the making the whole program with all the APIs to a single file and we need to use NCC for that. We just need to run

    +
    yarn run ncc build index.js -C -m -o dist
    +

    or you might wanna add the following to you package.json file, and run npm run test to compile and minify the code.

    +
    "scripts": {
    +    "test": "ncc build index.js -C -m -o dist"
    +  },
    +

    This will create a dist folder with and index.js file which contains the compiled code.

    +

    Making it a valid action

    +

    For making this Js file a valid action, we need to add an action.yml file. The action.yml for this action is like this

    +
    name: 'Action Name'
    +description: 'Action Descreption'
    +author: '<author name>'
    +inputs: 
    +  chat:
    +    description: 'Chat to send: chat id or @channel_name'
    +    required: true
    +  token:
    +    description: 'Telegram Bot token'
    +    required: true
    +  status:
    +    description: 'Job status'
    +    required: true
    +  iu_title: 
    +    description: 'Issue Title'
    +    default: ${{ github.event.issue.title }}
    +  iu_num:
    +    description: 'Issue Number'
    +    default: ${{ github.event.issue.number }}
    +  iu_actor: 
    +    description: 'Issue Triggerer'
    +    default: ${{ github.event.issue.user.login }}
    +  iu_com:
    +    description: 'Issue Comment'
    +    default: ${{github.event.comment.body}}
    +  pr_state:
    +    description: 'State of the PR'
    +    default: ${{ github.event.action }}
    +  pr_num:
    +    description: 'PR Number'
    +    default: ${{ github.event.number }}
    +  pr_title:
    +    description: 'Title of the PR'
    +    default: ${{ github.event.pull_request.title }}
    +  pr_body:
    +    description: 'Body/Contents of the PR'
    +    default: ${{ github.event.pull_request.body }}
    +runs:
    +  using: "node12"
    +  main: "dist/index.js"
    +branding:
    +  icon: 'repeat'  
    +  color: 'green'
    +

    Here we’re defining the Input variables to be loaded for the action in GitHub’s runtime environemt. All these default data are taken from the response of the webhooks which are send by GitHub when a trigger event is occured. You can find out more in the Action Documentation Here.

    +
    runs:
    +  using: "node12"
    +  main: "dist/index.js"
    +

    Here we are defining that this is a node action and should run in an environment with node, and the file which should be run, here the index.js file in the dist folder. That should do it. Create a new commit and push it to a repo. Create a new tag and this action will appear in the marketplace.

    +

    Defining a workflow to test your action

    +

    GitHub Action workflows are defined using the .yml syntax. Here is an example of a sample workflow for this action

    +
    name: <Workflow Name>
    +
    +on:
    +  push:
    +  pull_request:
    +    types: [opened, closed]
    +  issues:
    +    types: [opened, closed, reopened]
    +jobs:
    +  build:
    +    runs-on: ubuntu-latest
    +
    +    steps:
    +      - name: <AnyName>
    +        uses: <username>/<repo>@master
    +        if: always()
    +        with:
    +          chat: ${{ secrets.chat }}
    +          token: ${{ secrets.token }}
    +          status: ${{ job.status }}
    +

    The Complete code for the bot is

    +
    //Initializing dotenv and the bot
    +require("dotenv").config
    +const Bot = require('node-telegram-bot-api');
    +// aliasing the environment variables 
    +const {
    +    INPUT_STATUS: ipstatus, 
    +    INPUT_TOKEN: tgtoken, //Telegram api token
    +    INPUT_CHAT: chatid,// Telegram Chat ID
    +    INPUT_IU_TITLE: ititle,// Issue title
    +    INPUT_IU_NUM: inum,// Issue Number
    +    INPUT_IU_ACTOR: iactor, // Issue made by
    +    INPUT_IU_BODY: ibody, // Issue Body
    +    INPUT_PR_NUM: pnum, // PR Number
    +    INPUT_PR_STATE: prstate, // PR Opened, reponed or closed
    +    INPUT_PR_TITLE: ptitle, // PR Title
    +    INPUT_PR_BODY: pbody, // Body of the PR
    +    GITHUB_EVENT_NAME: ghevent, // Name of the trigger event
    +    GITHUB_REPOSITORY: repo, // Repository the trigger was made from
    +    GITHUB_ACTOR: ghactor, // User who triggered the action
    +    GITHUB_SHA: sha, // Commit ID
    +    GITHUB_WORKFLOW: ghwrkflw // Workflow Name
    +} = process.env;
    +
    +const bot = new Bot(tgtoken)
    +// Function to return the response for the specific trigger
    +const evresp = (gevent) => {
    +    switch (gevent) {
    +//Switch statement for issues
    +        case "issues":
    +            return `
    +❗️❗️❗️❗️❗️❗️
    +        
    +Issue ${prstate}
    +
    +Issue Title and Number  : ${ititle} | #${inum}
    +
    +Commented or Created By : \`${iactor}\`
    +
    +Issue Body : *${ibody}*
    +
    +[Link to Issue](https://github.com/${repo}/issues/${inum})
    +[Link to Repo ](https://github.com/${repo}/)
    +[Build log here](https://github.com/${repo}/commit/${sha}/checks)`
    +// Switch statement for Pull Requests
    +        case "pull_request":
    +            return `
    +🔃🔀🔃🔀🔃🔀
    +PR ${prstate} 
    +        
    +PR Number:      ${pnum}
    +        
    +PR Title:       ${ptitle}
    +        
    +PR Body:        *${pbody}*
    +        
    +PR By:          ${ghactor}
    +        
    +[Link to Issue](https://github.com/${repo}/pull/${pnum})
    +[Link to Repo ](https://github.com/${repo}/)
    +[Build log here](https://github.com/${repo}/commit/${sha}/checks)`
    +        default:
    +// switch statement for Pushes
    +            return `
    +⬆️⇅⬆️⇅
    +            
    +ID: ${ghwrkflw}
    +        
    +Action was a *${ipstatus}!*
    +        
    +\`Repository:  ${repo}\` 
    +        
    +On:          *${ghevent}*
    +        
    +By:            *${ghactor}* 
    +        
    +Tag:        ${process.env.GITHUB_REF}
    +        
    +[Link to Repo ](https://github.com/${repo}/)
    +            `
    +    }
    +}
    +// assigning the output to a variable
    +const output = evresp(ghevent)
    +// sending the message
    +bot.sendMessage(chatid,output,{parse_mode : "Markdown"})
    +

    +

    You can try out many different items using actions and this is just a sample action to get you started. Maybe sending Cat GIFs if the build succeded on the pull request or sending a welcome message to a first time contributor. You imagination is the limit😄 and Never Stop being ⚡️

    + +
    + + + + +
    +
    + +
    + + diff --git a/public/2020/12/01/hello-r-markdown/index.html b/public/2020/12/01/hello-r-markdown/index.html index bfc321e..1faddc7 100644 --- a/public/2020/12/01/hello-r-markdown/index.html +++ b/public/2020/12/01/hello-r-markdown/index.html @@ -33,8 +33,8 @@ - - + + @@ -71,6 +71,14 @@

    vires in notitia

    + +
    @@ -79,20 +87,19 @@

    Hello R Markdown

    -
    - - -
    +
    +

    Table of Contents

    + +
    -
    +

    R Markdown

    This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

    You can embed an R code chunk like this:

    @@ -124,7 +131,7 @@

    R Markdown

    )
    -
    + @@ -133,12 +140,13 @@

    R Markdown

    diff --git a/public/2020/12/hello-r-markdown/index.Rmd b/public/2020/12/hello-r-markdown/index.Rmd new file mode 100644 index 0000000..8768d78 --- /dev/null +++ b/public/2020/12/hello-r-markdown/index.Rmd @@ -0,0 +1,38 @@ +--- +title: "Hello R Markdown" +author: "Frida Gomam" +date: 2020-12-01T21:13:14-05:00 +categories: ["R"] +tags: ["R Markdown", "plot", "regression"] +draft: yes +--- + +```{r setup, include=FALSE} +knitr::opts_chunk$set(collapse = TRUE) +``` + +# R Markdown + +This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see . + +You can embed an R code chunk like this: + +```{r cars} +summary(cars) +fit <- lm(dist ~ speed, data = cars) +fit +``` + +# Including Plots + +You can also embed plots. See Figure \@ref(fig:pie) for example: + +```{r pie, fig.cap='A fancy pie chart.', tidy=FALSE} +par(mar = c(0, 1, 0, 1)) +pie( + c(280, 60, 20), + c('Sky', 'Sunny side of pyramid', 'Shady side of pyramid'), + col = c('#0292D8', '#F7EA39', '#C4B632'), + init.angle = -50, border = NA +) +``` diff --git a/public/2020/12/hello-r-markdown/index.html b/public/2020/12/hello-r-markdown/index.html new file mode 100644 index 0000000..7047f5b --- /dev/null +++ b/public/2020/12/hello-r-markdown/index.html @@ -0,0 +1,174 @@ + + + + Hello R Markdown - The Median Duck + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +

    vires in notitia

    + + +
    +
    +
    +

    Hello R Markdown

    +
    Posted on Dec 1, 2020 DRAFT
    +
    + + +
    + +

    Table of Contents

    + + +
    + +
    +

    R Markdown

    +

    This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

    +

    You can embed an R code chunk like this:

    +
    summary(cars)
    +##      speed           dist       
    +##  Min.   : 4.0   Min.   :  2.00  
    +##  1st Qu.:12.0   1st Qu.: 26.00  
    +##  Median :15.0   Median : 36.00  
    +##  Mean   :15.4   Mean   : 42.98  
    +##  3rd Qu.:19.0   3rd Qu.: 56.00  
    +##  Max.   :25.0   Max.   :120.00
    +fit <- lm(dist ~ speed, data = cars)
    +fit
    +## 
    +## Call:
    +## lm(formula = dist ~ speed, data = cars)
    +## 
    +## Coefficients:
    +## (Intercept)        speed  
    +##     -17.579        3.932
    +

    Including Plots

    +

    You can also embed plots. See Figure 1 for example:

    +
    par(mar = c(0, 1, 0, 1))
    +pie(
    +  c(280, 60, 20),
    +  c('Sky', 'Sunny side of pyramid', 'Shady side of pyramid'),
    +  col = c('#0292D8', '#F7EA39', '#C4B632'),
    +  init.angle = -50, border = NA
    +)
    +
    + +
    + + + + +
    +
    + +
    + + diff --git a/public/2020/12/hello-r-markdown/index_files/figure-html/pie-1.png b/public/2020/12/hello-r-markdown/index_files/figure-html/pie-1.png new file mode 100644 index 0000000000000000000000000000000000000000..eef072f8759e03335a76b6d1fa8a869d4e6dd9c9 GIT binary patch literal 15125 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 KyzszJ(f - + + @@ -72,6 +72,14 @@

    vires in notitia

    + +
    @@ -80,19 +88,18 @@

    New Post on Archie

    -
    - - -
    +
    +

    Table of Contents

    + +
    -
    +

    Intro

    This is my first post in the Archie template in hugo.

    Here’s a random sample from the standard Normal distribution.

    @@ -102,7 +109,7 @@

    Intro

    Did I create a html from this?

    -
    + @@ -111,8 +118,9 @@

    Intro

    diff --git a/public/2024/07/10/strength-in-data-connecting-to-the-taskmaster-database/index.Rmarkdown b/public/2024/07/10/strength-in-data-connecting-to-the-taskmaster-database/index.Rmarkdown index d7b7141..3228ebe 100644 --- a/public/2024/07/10/strength-in-data-connecting-to-the-taskmaster-database/index.Rmarkdown +++ b/public/2024/07/10/strength-in-data-connecting-to-the-taskmaster-database/index.Rmarkdown @@ -7,12 +7,8 @@ section: - intro - setup - data -series: "Stength in Data" -tag: - - Introduction - - Setup - - Beginner - - Getting Started +series: "Strength in Data" +tags: ["Strength in Data", "Beginner"] draft: no output: blogdown::html_page: @@ -34,56 +30,26 @@ options(width = 1000) # Introduction and Objective -This article provides an overview of *Trabajo de las Mesas*, a pivotal Taskmaster database that will be central to performing a multitude of analysis and questions that we may want to answer regarding Taskmaster. +This article provides an overview of *Trabajo de las Mesas*, a pivotal database that will be central to this project. -The article will also provide guidance on how to connect to the database from within . +The article will also provide guidance on how to connect to the database from within `R`. # *Trabajo de las Mesas* Database -[*Trabajo de las Mesas*](https://tdlm.fly.dev/) (TdlM^\[Taskmaster fanatics will know that this is in reference to the hint in S2E5's task *Build a bridge for the potato.*, which has since become one of key pieces of advice for all Taskmaster contestants. It has been suitably adapted for working on data tables in a database, rather than a piece of furniture.\]) provides a plethora of data associated with Taskmaster in a database format. Data included in the database includes information pertaining to a series, episode, conntestant, task attempts, and even profanity uttered by a contestant. +[*Trabajo de las Mesas*](https://tdlm.fly.dev/) (TdlM [^1]) provides a plethora of data associated with Taskmaster in a database format. Data included in the database includes information pertaining to a series, episode, conntestant, task attempts, and even profanity uttered by a contestant. -The exhaustive nature of the data truly opens the door to potential questions we may want to answer in the Taskmaster universe. For this reasons, I am immensely grateful to the contributors of this project. - -## Data Quality - -As with any analysis and modelling project, the insights and conclusions generated are only as good as the data supplied to it. - -I do not know the specifics regarding how this data is collated and reviewed (my intention is that there will be a future article dedicated to this), but believe the data is inputted by fellow (hardcore) Taskmaster fans from [taskmaster.info](https://taskmaster.info/), an equally exhaustive Taskmaster resource. . - -For now, and to not derail me from my initial interest and excitement on The Median Duck project, I will assume that the data is of high quality (accurate, consistent etc.). - -If there are any instances where the data quality is suspect, and/or a contradictory insight or conclusion is identified, a deep dive will likely occurr and the deep dive process will like provide useful insight for any inspiring individuals hoping to get into data analytics more. +[^1]: Taskmaster fanatics will know that this is in reference to the hint in S2E5's task *Build a bridge for the potato.*, which has since become one of key pieces of advice for all Taskmaster contestants. It has been suitably adapted for working on data tables in a database, rather than a piece of furniture. -## Why This Datasource? -As the Taskmaster is a global phenomena, there is no doubt other datasources that could be used for this project. Most noticeably, Jack Bernhadt has an exhaustive [Google sheet document](https://docs.google.com/spreadsheets/d/1Us84BGInJw8Ef32xCVSVNo1W5mjri9CpUffYfLnq5xA/edit?usp=sharing) in which similar analysis and modelling could be performed. - -However, for the purposes of this project, being able to query from database has several advantages. This includes: - -- Quality: Data being in a structured tabular format which often leads to better data quality -- Manipulations: Greater manipulation and transformations could potentially be employed (joins, group bys etc) -- Automation, Repeatability and Scalabilty: if we wanted to repeat the same or similar analysis but on a new subset of data (for example updated data due to a new series being broadcast, or new parameters being employed), it is more convenient to do this in a structured data source such as a database. - -However, a database approach is by no means perfect either. The barrier to entry is considerably higher than data stored in a spreadsheet (both adding, manipulating and analysing data), and spreadsheets are good for ad-hoc, interactive analysis. - -Considering overall vision of The Median Duck, I believe that a database approach is ideal. - -## Potential Areas to Explore in the Future +The exhaustive nature of the data truly opens the door to potential questions we may want to answer in the Taskmaster universe. For this reasons, I am immensely grateful to the contributors of this project. -- Greater understanding of how the data is being collected. - - Is it manual, and are their quality checks in place? Is there any opportunity to automate? - - Can we introduce a SLA (service level agreement) of when the data can be expected to be populated. Data associated with more recent seasons don't appear to be present, despite being broadcasted already. - - Introduction of an ETL timestamp. -- Generate a data dictionary page - - What tables are available, samples of the data, what the table pertains to, and key columns. -- A dashboard on data quality. - - A highlevel overview of the quality and how recent the data is. +For some musings on TdlM, data quality and assumptions made, see this [post](/2024/07/data-quality-musings/). # Connecting to the Database from `R` ## Downloading the `.db` file -It is possible to view and query these the numerous tables in TdlM from the [website itself](https://tdlm.fly.dev/). However, this does not lead to intuitively to repeatable and reproduceable analysis. Connecting to the database from a statistical programming language such as `R` or `python`, naturally leads to repeatablility and reproduceability. +It is possible to view and query these the numerous tables in TdlM from the [website itself](https://tdlm.fly.dev/). However, this does not lead intuitively to repeatable and reproduceable analysis. Connecting to the database from a statistical programming language such as `R` or `python`, naturally leads to repeatablility and reproduceability. I opting choosing to choose `R` for this project due to my familarity with it, and the high level visualisations and modelling that can be employed. diff --git a/public/2024/07/10/strength-in-data-connecting-to-the-taskmaster-database/index.html b/public/2024/07/10/strength-in-data-connecting-to-the-taskmaster-database/index.html index 1184089..c8bb050 100644 --- a/public/2024/07/10/strength-in-data-connecting-to-the-taskmaster-database/index.html +++ b/public/2024/07/10/strength-in-data-connecting-to-the-taskmaster-database/index.html @@ -3,26 +3,31 @@ Strength in Data: Connecting to the Taskmaster Database - The Median Duck +Introduction and Objective This article provides an overview of Trabajo de las Mesas, a pivotal database that will be central to this project. +The article will also provide guidance on how to connect to the database from within R. +Trabajo de las Mesas Database Trabajo de las Mesas (TdlM 1) provides a plethora of data associated with Taskmaster in a database format." /> +Introduction and Objective This article provides an overview of Trabajo de las Mesas, a pivotal database that will be central to this project. +The article will also provide guidance on how to connect to the database from within R. +Trabajo de las Mesas Database Trabajo de las Mesas (TdlM 1) provides a plethora of data associated with Taskmaster in a database format."> + + +Introduction and Objective This article provides an overview of Trabajo de las Mesas, a pivotal database that will be central to this project. +The article will also provide guidance on how to connect to the database from within R. +Trabajo de las Mesas Database Trabajo de las Mesas (TdlM 1) provides a plethora of data associated with Taskmaster in a database format."> @@ -30,8 +35,8 @@ - - + + @@ -84,22 +89,14 @@

    Strength in Data: Connecting to the Taskmaster Database

    -
    - - -
    + -
    +

    Your Task

    Successfully connect to the Taskmaster database from within R. Fastest wins; your time starts now!

    Introduction and Objective

    -

    This article provides an overview of Trabajo de las Mesas, a pivotal Taskmaster database that will be central to performing a multitude of analysis and questions that we may want to answer regarding Taskmaster.

    -

    The article will also provide guidance on how to connect to the database from within .

    +

    This article provides an overview of Trabajo de las Mesas, a pivotal database that will be central to this project.

    +

    The article will also provide guidance on how to connect to the database from within R.

    Trabajo de las Mesas Database

    -

    Trabajo de las Mesas (TdlM^[Taskmaster fanatics will know that this is in reference to the hint in S2E5’s task Build a bridge for the potato., which has since become one of key pieces of advice for all Taskmaster contestants. It has been suitably adapted for working on data tables in a database, rather than a piece of furniture.]) provides a plethora of data associated with Taskmaster in a database format. Data included in the database includes information pertaining to a series, episode, conntestant, task attempts, and even profanity uttered by a contestant.

    +

    Trabajo de las Mesas (TdlM 1) provides a plethora of data associated with Taskmaster in a database format. Data included in the database includes information pertaining to a series, episode, conntestant, task attempts, and even profanity uttered by a contestant.

    The exhaustive nature of the data truly opens the door to potential questions we may want to answer in the Taskmaster universe. For this reasons, I am immensely grateful to the contributors of this project.

    -

    Data Quality

    -

    As with any analysis and modelling project, the insights and conclusions generated are only as good as the data supplied to it.

    -

    I do not know the specifics regarding how this data is collated and reviewed (my intention is that there will be a future article dedicated to this), but believe the data is inputted by fellow (hardcore) Taskmaster fans from taskmaster.info, an equally exhaustive Taskmaster resource. .

    -

    For now, and to not derail me from my initial interest and excitement on The Median Duck project, I will assume that the data is of high quality (accurate, consistent etc.).

    -

    If there are any instances where the data quality is suspect, and/or a contradictory insight or conclusion is identified, a deep dive will likely occurr and the deep dive process will like provide useful insight for any inspiring individuals hoping to get into data analytics more.

    -

    Why This Datasource?

    -

    As the Taskmaster is a global phenomena, there is no doubt other datasources that could be used for this project. Most noticeably, Jack Bernhadt has an exhaustive Google sheet document in which similar analysis and modelling could be performed.

    -

    However, for the purposes of this project, being able to query from database has several advantages. This includes:

    -
      -
    • Quality: Data being in a structured tabular format which often leads to better data quality
    • -
    • Manipulations: Greater manipulation and transformations could potentially be employed (joins, group bys etc)
    • -
    • Automation, Repeatability and Scalabilty: if we wanted to repeat the same or similar analysis but on a new subset of data (for example updated data due to a new series being broadcast, or new parameters being employed), it is more convenient to do this in a structured data source such as a database.
    • -
    -

    However, a database approach is by no means perfect either. The barrier to entry is considerably higher than data stored in a spreadsheet (both adding, manipulating and analysing data), and spreadsheets are good for ad-hoc, interactive analysis.

    -

    Considering overall vision of The Median Duck, I believe that a database approach is ideal.

    -

    Potential Areas to Explore in the Future

    -
      -
    • Greater understanding of how the data is being collected. -
        -
      • Is it manual, and are their quality checks in place? Is there any opportunity to automate?
      • -
      • Can we introduce a SLA (service level agreement) of when the data can be expected to be populated. Data associated with more recent seasons don’t appear to be present, despite being broadcasted already.
      • -
      • Introduction of an ETL timestamp.
      • -
      -
    • -
    • Generate a data dictionary page -
        -
      • What tables are available, samples of the data, what the table pertains to, and key columns.
      • -
      -
    • -
    • A dashboard on data quality. -
        -
      • A highlevel overview of the quality and how recent the data is.
      • -
      -
    • -
    +

    For some musings on TdlM, data quality and assumptions made, see this post.

    Connecting to the Database from R

    Downloading the .db file

    -

    It is possible to view and query these the numerous tables in TdlM from the website itself. However, this does not lead to intuitively to repeatable and reproduceable analysis. Connecting to the database from a statistical programming language such as R or python, naturally leads to repeatablility and reproduceability.

    +

    It is possible to view and query these the numerous tables in TdlM from the website itself. However, this does not lead intuitively to repeatable and reproduceable analysis. Connecting to the database from a statistical programming language such as R or python, naturally leads to repeatablility and reproduceability.

    I opting choosing to choose R for this project due to my familarity with it, and the high level visualisations and modelling that can be employed.

    The tables displayed on the website are powered from the following database file which can downloaded and stored locally. The following code chunk downloads the database file locally (based on the repo directory); a corresponding folder location will be created if it does not already exist.

    library(here)
    @@ -260,14 +224,33 @@ 

    A Basic SELECT query

    The results of this query already indicate interesting insights, namely that 204 days (approximately 29 weeks) occurred between the studio record and first air date for Series 13, which is a noticeable deviation from prior seasons (greater broadcast lag). Future series also seem delayed, although to a lesser extent. Could the pandemic have initiated this lag? Or where there other production changes that led to this lag?

    Times Up!

    And that concludes this task! Hopefully you’ve been able to connect to the TdlM database directly through R and potentially inspired to start performing your own analysis.

    +
    +
    +
      +
    1. +

      Taskmaster fanatics will know that this is in reference to the hint in S2E5’s task Build a bridge for the potato., which has since become one of key pieces of advice for all Taskmaster contestants. It has been suitably adapted for working on data tables in a database, rather than a piece of furniture. ↩︎

      +
    2. +
    +
    -
    +
    diff --git a/public/2024/07/17/data-quality-musings/index.Rmd b/public/2024/07/17/data-quality-musings/index.Rmd new file mode 100644 index 0000000..bc496f5 --- /dev/null +++ b/public/2024/07/17/data-quality-musings/index.Rmd @@ -0,0 +1,49 @@ +--- +title: "Sidenote: Musings on TdlM" +author: Christopher Nam +date: '2024-07-17' +slug: data-quality-musings +categories: [] +tags: ["Musings", "TdlM"] +draft: no +--- + +# Sidenote Introduction +A few remarks and musings on the [Trabajo de las Mesas database (TdlM)](https://tdlm.fly.dev/). + +## Data Quality + +As with any analysis and modelling project, the insights and conclusions generated are only as good as the data supplied to it. + +I do not know the specifics regarding how this data is collated and reviewed (my intention is that there will be a future article dedicated to this), but believe the data is inputted by fellow (hardcore) Taskmaster fans from [taskmaster.info](https://taskmaster.info/), an equally exhaustive Taskmaster resource. + +For now, and to not derail me from my initial interest and excitement on The Median Duck project, I will assume that the data is of high quality (accurate, consistent etc.). + +If there are any instances where the data quality is suspect, and/or a contradictory insight or conclusion is identified, a deep dive will likely occur and the deep dive process will like provide useful insight for any inspiring individuals hoping to get into data analytics more. + +## Why This Datasource? + +As Taskmaster is a global phenomena, there is no doubt other data sources that could be used for this project. Most noticeably, Jack Bernhadt has an exhaustive [Google sheet document](https://docs.google.com/spreadsheets/d/1Us84BGInJw8Ef32xCVSVNo1W5mjri9CpUffYfLnq5xA/edit?usp=sharing) in which similar analysis and modelling could be performed. + +However, for the purposes of this project, being able to query from database has several advantages. This includes: + +- **Quality:** Data being in a structured tabular format which often leads to better data quality +- **Manipulations:** Greater manipulation and transformations could potentially be employed (joins, group bys etc) +- **Automation, Repeatability and Scalabilty:** if we wanted to repeat the same or similar analysis but on a new subset of data (for example updated data due to a new series being broadcast, or new parameters being employed), it is more convenient to do this in a structured data source such as a database. + +However, a database approach is by no means perfect either. The barrier to entry is considerably higher than data stored in a spreadsheet (both adding, manipulating and analysing data), and spreadsheets are good for ad-hoc, interactive analysis through a visual interface. + +Considering overall vision of The Median Duck, I believe that a database approach is ideal. + +## Potential Articles to Explore in the Future + +- **Greater understanding of how the data is being collected.** + - Is it manual, and are their quality checks in place? Is there any opportunity to automate? + - Can we introduce a SLA (service level agreement) of when the data can be expected to be populated. Data associated with more recent seasons don't appear to be present, despite being broadcasted already. + - Introduction of an ETL timestamp. +- **Generate a data dictionary page** + - What tables are available, samples of the data, what the table pertains to, and key columns. +- **A dashboard on data quality.** + - A highlevel overview of the quality and how recent the data is. + - Can we be proactive in identifying data quality issues and resolve them before users of the data experience them. + diff --git a/public/2024/07/17/data-quality-musings/index.html b/public/2024/07/17/data-quality-musings/index.html new file mode 100644 index 0000000..5ac2668 --- /dev/null +++ b/public/2024/07/17/data-quality-musings/index.html @@ -0,0 +1,179 @@ + + + + Sidenote: Musings on TdlM - The Median Duck + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +

    vires in notitia

    + + +
    +
    +
    +

    Sidenote: Musings on TdlM

    +
    Posted on Jul 17, 2024
    +
    + + +
    + +
    + +
    + + + +
    +

    Sidenote Introduction

    +

    A few remarks and musings on the Trabajo de las Mesas database (TdlM).

    +
    +

    Data Quality

    +

    As with any analysis and modelling project, the insights and conclusions generated are only as good as the data supplied to it.

    +

    I do not know the specifics regarding how this data is collated and reviewed (my intention is that there will be a future article dedicated to this), but believe the data is inputted by fellow (hardcore) Taskmaster fans from taskmaster.info, an equally exhaustive Taskmaster resource.

    +

    For now, and to not derail me from my initial interest and excitement on The Median Duck project, I will assume that the data is of high quality (accurate, consistent etc.).

    +

    If there are any instances where the data quality is suspect, and/or a contradictory insight or conclusion is identified, a deep dive will likely occur and the deep dive process will like provide useful insight for any inspiring individuals hoping to get into data analytics more.

    +
    +
    +

    Why This Datasource?

    +

    As Taskmaster is a global phenomena, there is no doubt other data sources that could be used for this project. Most noticeably, Jack Bernhadt has an exhaustive Google sheet document in which similar analysis and modelling could be performed.

    +

    However, for the purposes of this project, being able to query from database has several advantages. This includes:

    +
      +
    • Quality: Data being in a structured tabular format which often leads to better data quality
    • +
    • Manipulations: Greater manipulation and transformations could potentially be employed (joins, group bys etc)
    • +
    • Automation, Repeatability and Scalabilty: if we wanted to repeat the same or similar analysis but on a new subset of data (for example updated data due to a new series being broadcast, or new parameters being employed), it is more convenient to do this in a structured data source such as a database.
    • +
    +

    However, a database approach is by no means perfect either. The barrier to entry is considerably higher than data stored in a spreadsheet (both adding, manipulating and analysing data), and spreadsheets are good for ad-hoc, interactive analysis through a visual interface.

    +

    Considering overall vision of The Median Duck, I believe that a database approach is ideal.

    +
    +
    +

    Potential Articles to Explore in the Future

    +
      +
    • Greater understanding of how the data is being collected. +
        +
      • Is it manual, and are their quality checks in place? Is there any opportunity to automate?
      • +
      • Can we introduce a SLA (service level agreement) of when the data can be expected to be populated. Data associated with more recent seasons don’t appear to be present, despite being broadcasted already.
      • +
      • Introduction of an ETL timestamp.
      • +
    • +
    • Generate a data dictionary page +
        +
      • What tables are available, samples of the data, what the table pertains to, and key columns.
      • +
    • +
    • A dashboard on data quality. +
        +
      • A highlevel overview of the quality and how recent the data is.
      • +
      • Can we be proactive in identifying data quality issues and resolve them before users of the data experience them.
      • +
    • +
    +
    +
    + +
    + + + + +
    +
    + +
    + + diff --git a/public/2024/07/31/data-quality-musings/index.Rmd b/public/2024/07/31/data-quality-musings/index.Rmd new file mode 100644 index 0000000..1730304 --- /dev/null +++ b/public/2024/07/31/data-quality-musings/index.Rmd @@ -0,0 +1,48 @@ +--- +title: "Sidenote: Musings on TdlM" +author: Christopher Nam +date: '2024-07-17' +slug: data-quality-musings +categories: [] +tags: ["musings", "TdlM"] +draft: no +--- + +# Sidenote Introduction +A few remarks and musings on the [Trabajo de las Mesas database (TdlM)](https://tdlm.fly.dev/). + +## Data Quality + +As with any analysis and modelling project, the insights and conclusions generated are only as good as the data supplied to it. + +I do not know the specifics regarding how this data is collated and reviewed (my intention is that there will be a future article dedicated to this), but believe the data is inputted by fellow (hardcore) Taskmaster fans from [taskmaster.info](https://taskmaster.info/), an equally exhaustive Taskmaster resource. + +For now, and to not derail me from my initial interest and excitement on The Median Duck project, I will assume that the data is of high quality (accurate, consistent etc.). + +If there are any instances where the data quality is suspect, and/or a contradictory insight or conclusion is identified, a deep dive will likely occurr and the deep dive process will like provide useful insight for any inspiring individuals hoping to get into data analytics more. + +## Why This Datasource? + +As the Taskmaster is a global phenomena, there is no doubt other datasources that could be used for this project. Most noticeably, Jack Bernhadt has an exhaustive [Google sheet document](https://docs.google.com/spreadsheets/d/1Us84BGInJw8Ef32xCVSVNo1W5mjri9CpUffYfLnq5xA/edit?usp=sharing) in which similar analysis and modelling could be performed. + +However, for the purposes of this project, being able to query from database has several advantages. This includes: + +- Quality: Data being in a structured tabular format which often leads to better data quality +- Manipulations: Greater manipulation and transformations could potentially be employed (joins, group bys etc) +- Automation, Repeatability and Scalabilty: if we wanted to repeat the same or similar analysis but on a new subset of data (for example updated data due to a new series being broadcast, or new parameters being employed), it is more convenient to do this in a structured data source such as a database. + +However, a database approach is by no means perfect either. The barrier to entry is considerably higher than data stored in a spreadsheet (both adding, manipulating and analysing data), and spreadsheets are good for ad-hoc, interactive analysis. + +Considering overall vision of The Median Duck, I believe that a database approach is ideal. + +## Potential Areas to Explore in the Future + +- Greater understanding of how the data is being collected. + - Is it manual, and are their quality checks in place? Is there any opportunity to automate? + - Can we introduce a SLA (service level agreement) of when the data can be expected to be populated. Data associated with more recent seasons don't appear to be present, despite being broadcasted already. + - Introduction of an ETL timestamp. +- Generate a data dictionary page + - What tables are available, samples of the data, what the table pertains to, and key columns. +- A dashboard on data quality. + - A highlevel overview of the quality and how recent the data is. + diff --git a/public/2024/07/31/data-quality-musings/index.html b/public/2024/07/31/data-quality-musings/index.html new file mode 100644 index 0000000..cec3782 --- /dev/null +++ b/public/2024/07/31/data-quality-musings/index.html @@ -0,0 +1,178 @@ + + + + Sidenote: Musings on TdlM - The Median Duck + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +

    vires in notitia

    + + +
    +
    +
    +

    Sidenote: Musings on TdlM

    +
    Posted on Jul 31, 2024
    +
    + + +
    + +
    + +
    + + + +
    +

    Sidenote Introduction

    +

    A few remarks and musings on the Trabajo de las Mesas database (TdlM).

    +
    +

    Data Quality

    +

    As with any analysis and modelling project, the insights and conclusions generated are only as good as the data supplied to it.

    +

    I do not know the specifics regarding how this data is collated and reviewed (my intention is that there will be a future article dedicated to this), but believe the data is inputted by fellow (hardcore) Taskmaster fans from taskmaster.info, an equally exhaustive Taskmaster resource.

    +

    For now, and to not derail me from my initial interest and excitement on The Median Duck project, I will assume that the data is of high quality (accurate, consistent etc.).

    +

    If there are any instances where the data quality is suspect, and/or a contradictory insight or conclusion is identified, a deep dive will likely occurr and the deep dive process will like provide useful insight for any inspiring individuals hoping to get into data analytics more.

    +
    +
    +

    Why This Datasource?

    +

    As the Taskmaster is a global phenomena, there is no doubt other datasources that could be used for this project. Most noticeably, Jack Bernhadt has an exhaustive Google sheet document in which similar analysis and modelling could be performed.

    +

    However, for the purposes of this project, being able to query from database has several advantages. This includes:

    +
      +
    • Quality: Data being in a structured tabular format which often leads to better data quality
    • +
    • Manipulations: Greater manipulation and transformations could potentially be employed (joins, group bys etc)
    • +
    • Automation, Repeatability and Scalabilty: if we wanted to repeat the same or similar analysis but on a new subset of data (for example updated data due to a new series being broadcast, or new parameters being employed), it is more convenient to do this in a structured data source such as a database.
    • +
    +

    However, a database approach is by no means perfect either. The barrier to entry is considerably higher than data stored in a spreadsheet (both adding, manipulating and analysing data), and spreadsheets are good for ad-hoc, interactive analysis.

    +

    Considering overall vision of The Median Duck, I believe that a database approach is ideal.

    +
    +
    +

    Potential Areas to Explore in the Future

    +
      +
    • Greater understanding of how the data is being collected. +
        +
      • Is it manual, and are their quality checks in place? Is there any opportunity to automate?
      • +
      • Can we introduce a SLA (service level agreement) of when the data can be expected to be populated. Data associated with more recent seasons don’t appear to be present, despite being broadcasted already.
      • +
      • Introduction of an ETL timestamp.
      • +
    • +
    • Generate a data dictionary page +
        +
      • What tables are available, samples of the data, what the table pertains to, and key columns.
      • +
    • +
    • A dashboard on data quality. +
        +
      • A highlevel overview of the quality and how recent the data is.
      • +
    • +
    +
    +
    + +
    + + + + +
    +
    + +
    + + diff --git a/public/2024/07/data-quality-musings/index.Rmd b/public/2024/07/data-quality-musings/index.Rmd new file mode 100644 index 0000000..bc496f5 --- /dev/null +++ b/public/2024/07/data-quality-musings/index.Rmd @@ -0,0 +1,49 @@ +--- +title: "Sidenote: Musings on TdlM" +author: Christopher Nam +date: '2024-07-17' +slug: data-quality-musings +categories: [] +tags: ["Musings", "TdlM"] +draft: no +--- + +# Sidenote Introduction +A few remarks and musings on the [Trabajo de las Mesas database (TdlM)](https://tdlm.fly.dev/). + +## Data Quality + +As with any analysis and modelling project, the insights and conclusions generated are only as good as the data supplied to it. + +I do not know the specifics regarding how this data is collated and reviewed (my intention is that there will be a future article dedicated to this), but believe the data is inputted by fellow (hardcore) Taskmaster fans from [taskmaster.info](https://taskmaster.info/), an equally exhaustive Taskmaster resource. + +For now, and to not derail me from my initial interest and excitement on The Median Duck project, I will assume that the data is of high quality (accurate, consistent etc.). + +If there are any instances where the data quality is suspect, and/or a contradictory insight or conclusion is identified, a deep dive will likely occur and the deep dive process will like provide useful insight for any inspiring individuals hoping to get into data analytics more. + +## Why This Datasource? + +As Taskmaster is a global phenomena, there is no doubt other data sources that could be used for this project. Most noticeably, Jack Bernhadt has an exhaustive [Google sheet document](https://docs.google.com/spreadsheets/d/1Us84BGInJw8Ef32xCVSVNo1W5mjri9CpUffYfLnq5xA/edit?usp=sharing) in which similar analysis and modelling could be performed. + +However, for the purposes of this project, being able to query from database has several advantages. This includes: + +- **Quality:** Data being in a structured tabular format which often leads to better data quality +- **Manipulations:** Greater manipulation and transformations could potentially be employed (joins, group bys etc) +- **Automation, Repeatability and Scalabilty:** if we wanted to repeat the same or similar analysis but on a new subset of data (for example updated data due to a new series being broadcast, or new parameters being employed), it is more convenient to do this in a structured data source such as a database. + +However, a database approach is by no means perfect either. The barrier to entry is considerably higher than data stored in a spreadsheet (both adding, manipulating and analysing data), and spreadsheets are good for ad-hoc, interactive analysis through a visual interface. + +Considering overall vision of The Median Duck, I believe that a database approach is ideal. + +## Potential Articles to Explore in the Future + +- **Greater understanding of how the data is being collected.** + - Is it manual, and are their quality checks in place? Is there any opportunity to automate? + - Can we introduce a SLA (service level agreement) of when the data can be expected to be populated. Data associated with more recent seasons don't appear to be present, despite being broadcasted already. + - Introduction of an ETL timestamp. +- **Generate a data dictionary page** + - What tables are available, samples of the data, what the table pertains to, and key columns. +- **A dashboard on data quality.** + - A highlevel overview of the quality and how recent the data is. + - Can we be proactive in identifying data quality issues and resolve them before users of the data experience them. + diff --git a/public/2024/07/data-quality-musings/index.html b/public/2024/07/data-quality-musings/index.html new file mode 100644 index 0000000..639cb72 --- /dev/null +++ b/public/2024/07/data-quality-musings/index.html @@ -0,0 +1,179 @@ + + + + Sidenote: Musings on TdlM - The Median Duck + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +

    vires in notitia

    + + +
    +
    +
    +

    Sidenote: Musings on TdlM

    +
    Posted on Jul 17, 2024
    +
    + + +
    + +
    + +
    + + + +
    +

    Sidenote Introduction

    +

    A few remarks and musings on the Trabajo de las Mesas database (TdlM).

    +
    +

    Data Quality

    +

    As with any analysis and modelling project, the insights and conclusions generated are only as good as the data supplied to it.

    +

    I do not know the specifics regarding how this data is collated and reviewed (my intention is that there will be a future article dedicated to this), but believe the data is inputted by fellow (hardcore) Taskmaster fans from taskmaster.info, an equally exhaustive Taskmaster resource.

    +

    For now, and to not derail me from my initial interest and excitement on The Median Duck project, I will assume that the data is of high quality (accurate, consistent etc.).

    +

    If there are any instances where the data quality is suspect, and/or a contradictory insight or conclusion is identified, a deep dive will likely occur and the deep dive process will like provide useful insight for any inspiring individuals hoping to get into data analytics more.

    +
    +
    +

    Why This Datasource?

    +

    As Taskmaster is a global phenomena, there is no doubt other data sources that could be used for this project. Most noticeably, Jack Bernhadt has an exhaustive Google sheet document in which similar analysis and modelling could be performed.

    +

    However, for the purposes of this project, being able to query from database has several advantages. This includes:

    +
      +
    • Quality: Data being in a structured tabular format which often leads to better data quality
    • +
    • Manipulations: Greater manipulation and transformations could potentially be employed (joins, group bys etc)
    • +
    • Automation, Repeatability and Scalabilty: if we wanted to repeat the same or similar analysis but on a new subset of data (for example updated data due to a new series being broadcast, or new parameters being employed), it is more convenient to do this in a structured data source such as a database.
    • +
    +

    However, a database approach is by no means perfect either. The barrier to entry is considerably higher than data stored in a spreadsheet (both adding, manipulating and analysing data), and spreadsheets are good for ad-hoc, interactive analysis through a visual interface.

    +

    Considering overall vision of The Median Duck, I believe that a database approach is ideal.

    +
    +
    +

    Potential Articles to Explore in the Future

    +
      +
    • Greater understanding of how the data is being collected. +
        +
      • Is it manual, and are their quality checks in place? Is there any opportunity to automate?
      • +
      • Can we introduce a SLA (service level agreement) of when the data can be expected to be populated. Data associated with more recent seasons don’t appear to be present, despite being broadcasted already.
      • +
      • Introduction of an ETL timestamp.
      • +
    • +
    • Generate a data dictionary page +
        +
      • What tables are available, samples of the data, what the table pertains to, and key columns.
      • +
    • +
    • A dashboard on data quality. +
        +
      • A highlevel overview of the quality and how recent the data is.
      • +
      • Can we be proactive in identifying data quality issues and resolve them before users of the data experience them.
      • +
    • +
    +
    +
    + +
    + + + + +
    +
    + +
    + + diff --git a/public/2024/07/new-post-on-archie/index.Rmarkdown b/public/2024/07/new-post-on-archie/index.Rmarkdown new file mode 100644 index 0000000..e9196ed --- /dev/null +++ b/public/2024/07/new-post-on-archie/index.Rmarkdown @@ -0,0 +1,25 @@ +--- +title: New Post on Archie +author: Christopher Nam +date: '2024-07-06' +slug: [] +categories: [trial, test] +tags: [hugo_test] +draft: no +--- + +# Intro + +This is my first post in the Archie template in hugo. + +Here's a random sample from the standard Normal distribution. + +```{r} +rnorm(5) +``` + +Here's an image of a duck. + +![](https://i.ebayimg.com/images/g/vToAAOSwr6hdW8L8/s-l1600.jpg) + +Did I create a html from this? \ No newline at end of file diff --git a/public/2024/07/new-post-on-archie/index.html b/public/2024/07/new-post-on-archie/index.html new file mode 100644 index 0000000..88e318d --- /dev/null +++ b/public/2024/07/new-post-on-archie/index.html @@ -0,0 +1,148 @@ + + + + New Post on Archie - The Median Duck + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +

    vires in notitia

    + + +
    +
    +
    +

    New Post on Archie

    +
    Posted on Jul 6, 2024
    +
    + + +
    + +

    Table of Contents

    + + +
    + +
    +

    Intro

    +

    This is my first post in the Archie template in hugo.

    +

    Here’s a random sample from the standard Normal distribution.

    +
    rnorm(5)
    +
    ## [1] -0.3637057 -0.4214060  0.6501004 -0.8329920  1.3021409
    +

    Here’s an image of a duck.

    +

    +

    Did I create a html from this?

    + +
    + + + + +
    +
    + +
    + + diff --git a/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index.Rmarkdown b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index.Rmarkdown new file mode 100644 index 0000000..53dfb90 --- /dev/null +++ b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index.Rmarkdown @@ -0,0 +1,162 @@ +--- +title: 'Strength in Data: Connecting to the Taskmaster Database' +author: Christopher Nam +date: '2024-07-10' +keywords: ["intro", "setup"] +section: + - intro + - setup + - data +series: "Strength in Data" +tags: ["Strength in Data", "Beginner"] +draft: no +output: + blogdown::html_page: + toc: true + toc_depth: 2 + number_sections: true + df_print: "default" +--- + +```{r setup, include=FALSE, echo = FALSE} +knitr::opts_chunk$set(echo = TRUE, root.dir = "../", + tidy = TRUE + ) +options(width = 1000) +``` + +# Your Task + +> Successfully connect to the Taskmaster database from within `R`. Fastest wins; your time starts now! + +This article provides an overview of *Trabajo de las Mesas*, a pivotal database that will be central to this project. + +The article will also provide guidance on how to connect to the database from within `R`. + +# *Trabajo de las Mesas* Database + +[*Trabajo de las Mesas*](https://tdlm.fly.dev/) (TdlM [^1]) provides a plethora of data associated with Taskmaster in a database format. Data included in the database includes information pertaining to a series, episode, conntestant, task attempts, and even profanity uttered by a contestant. + +[^1]: Taskmaster fanatics will know that this is in reference to the hint in S2E5's task *Build a bridge for the potato.*, which has since become one of key pieces of advice for all Taskmaster contestants. It has been suitably adapted for working on data tables in a database, rather than a piece of furniture. + +The exhaustive nature of the data truly opens the door to potential questions we may want to answer in the Taskmaster universe. For this reasons, I am immensely grateful to the contributors of this project. + +For some musings on TdlM, data quality and assumptions made, see this [post](/2024/07/data-quality-musings/). + +# Connecting to the Database from `R` + +## Downloading the `.db` file + +It is possible to view and query these the numerous tables in TdlM from the [website itself](https://tdlm.fly.dev/). However, this does not lead intuitively to repeatable and reproduceable analysis. Connecting to the database from a (statistical) programming language such as `R` or `python`, naturally leads to repeatablility and reproduceability. + +I am opting choosing to choose `R` for this project due to my familarity with it, and the high level visualisations and modelling that can be employed. + +The tables displayed on the website are powered from the following [database file](https://tdlm.fly.dev/taskmaster.db) which can downloaded and stored locally. The following code chunk downloads the database file locally (based on the repo directory); a corresponding folder location will be created if it does not already exist. + +```{r download, message = FALSE} +library(here) #library to help with identifying the repo working directory + +# URL where Database file resides. We will download from here. +db_url <- "https://tdlm.fly.dev/taskmaster.db" + +# Where the data will be stored locally +db_file_name <- "taskmaster.db" +data_dir <- here("static", "data") + +db_data_location <- file.path(data_dir, db_file_name) + + +# Create Data Directory if does not exist +if(!file.exists(file.path(data_dir))){ + dir.create(file.path(data_dir)) +} + +# Download file specified by URL, save in the local destination. +if(!file.exists(db_data_location)){ + download.file(url = db_url, destfile = db_data_location, mode = "wb") +} + +``` + +## Connecting to the `.db` file + +Now that the database file has been downloaded successfully, we can start to connect to it from `R` directory. The `DBI` package will be employed to establish this connection. + +```{r db_connect} +package_name <- "RSQLite" + +# Install packages if does not exist, then load. +if(!require(package_name, character.only = TRUE)){ + install.packages(package_name, character.only = TRUE) +} else{ + library(package_name, character.only = TRUE) +} + + +# Driver used to establish database connection +sqlite_driver <- dbDriver("SQLite") + +# Making the connection +tm_db <- dbConnect(sqlite_driver, dbname = db_data_location) + +``` + +If successful, we should be able to list all the tables included in the database. + +```{r list_tables} +# List all tables that are available in the database +dbListTables(tm_db) +``` + +## Querying the Database +With the database connection established, we are able to write queries and execute them directly from `R` to access the data. For example: + +### A Basic `SELECT` query + +```{r cols.print=25, series_output} + +# A Basic Select query on the series table. +query <- "SELECT * FROM series LIMIT 10" + +dbGetQuery(tm_db, query) +``` + +### Advanced query + +A more involved query involving `JOIN` and date manipulation is also possible. + +```{r max.print=25, advanced_query} +# A join, and data manipulation +query <- "SELECT ts.name, +ts.special as special_flag, +tp.name as champion_name, +tp.seat as chamption_seat, +DATE(ts.studio_end) as studio_end, +DATE(ts.air_start) as air_start, +-- Days between air start date, and last studio record date +JULIANDAY(ts.air_start) - JULIANDAY(ts.studio_end) as broadcast_lag_days +FROM series ts -- Series information +LEFT JOIN people tp -- People/Contestant information + ON ts.id = tp.series + AND ts.champion = tp.id +WHERE ts.special <> 1 -- Consider regular series +" + +results <- dbGetQuery(tm_db, query) + +results +``` + +```{r longest_lag, include = FALSE} +longest_lag_df <- results[which.max(results$broadcast_lag_days),] +``` + +# A recording to airing insight... +The results of this query already indicate interesting insights; `r longest_lag_df$name` has the largest known delay between studio recording and airing of `r longest_lag_df$broadcast_lag_days` days (approximately `r round(longest_lag_df$broadcast_lag_days/7)` weeks). This is a noticeable deviation from prior series. Future series also seem delayed, although to a lesser extent. + +**Potential followup questions:** +- Could the 2020 pandemic have initiated this lag? +- Were there other production changes that led to this lag? + +# Times Up! +And that concludes this task! Hopefully you've been able to connect to the TdlM database directly through `R` and potentially inspired to start performing your own analysis. diff --git a/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index.html b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index.html new file mode 100644 index 0000000..35bd0f9 --- /dev/null +++ b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index.html @@ -0,0 +1,282 @@ + + + + Strength in Data: Connecting to the Taskmaster Database - The Median Duck + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +

    vires in notitia

    + + +
    +
    +
    +

    Strength in Data: Connecting to the Taskmaster Database

    +
    Posted on Jul 10, 2024
    +
    + + + + +
    +

    Your Task

    +
    +

    Successfully connect to the Taskmaster database from within R. Fastest wins; your time starts now!

    +
    +

    This article provides an overview of Trabajo de las Mesas, a pivotal database that will be central to this project.

    +

    The article will also provide guidance on how to connect to the database from within R.

    +

    Trabajo de las Mesas Database

    +

    Trabajo de las Mesas (TdlM 1) provides a plethora of data associated with Taskmaster in a database format. Data included in the database includes information pertaining to a series, episode, conntestant, task attempts, and even profanity uttered by a contestant.

    +

    The exhaustive nature of the data truly opens the door to potential questions we may want to answer in the Taskmaster universe. For this reasons, I am immensely grateful to the contributors of this project.

    +

    For some musings on TdlM, data quality and assumptions made, see this post.

    +

    Connecting to the Database from R

    +

    Downloading the .db file

    +

    It is possible to view and query these the numerous tables in TdlM from the website itself. However, this does not lead intuitively to repeatable and reproduceable analysis. Connecting to the database from a (statistical) programming language such as R or python, naturally leads to repeatablility and reproduceability.

    +

    I am opting choosing to choose R for this project due to my familarity with it, and the high level visualisations and modelling that can be employed.

    +

    The tables displayed on the website are powered from the following database file which can downloaded and stored locally. The following code chunk downloads the database file locally (based on the repo directory); a corresponding folder location will be created if it does not already exist.

    +
    library(here)  #library to help with identifying the repo working directory
    +
    +# URL where Database file resides. We will download from here.
    +db_url <- "https://tdlm.fly.dev/taskmaster.db"
    +
    +# Where the data will be stored locally
    +db_file_name <- "taskmaster.db"
    +data_dir <- here("static", "data")
    +
    +db_data_location <- file.path(data_dir, db_file_name)
    +
    +
    +# Create Data Directory if does not exist
    +if (!file.exists(file.path(data_dir))) {
    +    dir.create(file.path(data_dir))
    +}
    +
    +# Download file specified by URL, save in the local destination.
    +if (!file.exists(db_data_location)) {
    +    download.file(url = db_url, destfile = db_data_location, mode = "wb")
    +}
    +

    Connecting to the .db file

    +

    Now that the database file has been downloaded successfully, we can start to connect to it from R directory. The DBI package will be employed to establish this connection.

    +
    package_name <- "RSQLite"
    +
    +# Install packages if does not exist, then load.
    +if (!require(package_name, character.only = TRUE)) {
    +    install.packages(package_name, character.only = TRUE)
    +} else {
    +    library(package_name, character.only = TRUE)
    +}
    +
    ## Loading required package: RSQLite
    +
    # Driver used to establish database connection
    +sqlite_driver <- dbDriver("SQLite")
    +
    +# Making the connection
    +tm_db <- dbConnect(sqlite_driver, dbname = db_data_location)
    +

    If successful, we should be able to list all the tables included in the database.

    +
    # List all tables that are available in the database
    +dbListTables(tm_db)
    +
    ##  [1] "attempts"           "discrepancies"      "episode_scores"     "episodes"           "intros"             "measurements"       "normalized_scores"  "objectives"         "people"             "podcast"            "profanity"          "series"             "series_scores"      "special_locations"  "task_briefs"        "task_readers"       "task_winners"       "tasks"              "tasks_by_objective" "team_tasks"         "teams"              "title_coiners"      "title_stats"
    +

    Querying the Database

    +

    With the database connection established, we are able to write queries and execute them directly from R to access the data. For example:

    +

    A Basic SELECT query

    +
    # A Basic Select query on the series table.
    +query <- "SELECT * FROM series LIMIT 10"
    +
    +dbGetQuery(tm_db, query)
    +
    ##    id     name episodes champion  air_start    air_end studio_start studio_end points tasks special TMI
    +## 1  -7  CoC III        0       NA 2024-??-?? 2024-??-??   2023-11-28 2023-11-28     NA    NA       1  88
    +## 2  -6 NYT 2024        0       NA 2024-01-01 2024-01-01   2023-11-27 2023-11-27     NA    NA       1  87
    +## 3  -5 NYT 2023        1       96 2023-01-01 2023-01-01   2022-11-22 2022-11-22     76     5       1  66
    +## 4  -4   CoC II        1       87 2022-06-23 2022-06-23   2021-09-15 2021-09-15     66     5       1  46
    +## 5  -3 NYT 2022        1       73 2022-01-01 2022-01-01         <NA>       <NA>     68     5       1  47
    +## 6  -2 NYT 2021        1       62 2021-01-01 2021-01-01         <NA>       <NA>     62     5       1  12
    +## 7  -1      CoC        2       29 2017-12-13 2017-12-20   2017-11-20 2017-11-20    164    10       1   6
    +## 8   1 Series 1        6        4 2015-07-28 2015-09-01   2015-03-23 2015-03-25    436    32       0   1
    +## 9   2 Series 2        5       11 2016-06-21 2016-07-19         <NA>       <NA>    417    28       0   2
    +## 10  3 Series 3        5       16 2016-10-04 2016-11-01         <NA>       <NA>    386    27       0   3
    +

    Advanced query

    +

    A more involved query involving JOIN and date manipulation is also possible.

    +
    # A join, and data manipulation
    +query <- "SELECT ts.name,
    +ts.special as special_flag,
    +tp.name as champion_name,
    +tp.seat as chamption_seat,
    +DATE(ts.studio_end) as studio_end, 
    +DATE(ts.air_start) as air_start, 
    +-- Days between air start date, and last studio record date
    +JULIANDAY(ts.air_start) - JULIANDAY(ts.studio_end) as broadcast_lag_days
    +FROM series ts -- Series information
    +LEFT JOIN people tp -- People/Contestant information
    +    ON ts.id = tp.series
    +    AND ts.champion = tp.id
    +WHERE ts.special <> 1 -- Consider regular series
    +"
    +
    +results <- dbGetQuery(tm_db, query)
    +
    +results
    +
    ##         name special_flag    champion_name chamption_seat studio_end  air_start broadcast_lag_days
    +## 1   Series 1            0  Josh Widdicombe              2 2015-03-25 2015-07-28                125
    +## 2   Series 2            0   Katherine Ryan              4       <NA> 2016-06-21                 NA
    +## 3   Series 3            0      Rob Beckett              4       <NA> 2016-10-04                 NA
    +## 4   Series 4            0    Noel Fielding              5       <NA> 2017-04-25                 NA
    +## 5   Series 5            0     Bob Mortimer              2 2017-07-06 2017-09-13                 69
    +## 6   Series 6            0     Liza Tarbuck              3 2018-03-28 2018-05-02                 35
    +## 7   Series 7            0   Kerry Godliman              3 2018-07-25 2018-09-05                 42
    +## 8   Series 8            0      Lou Sanders              3 2019-03-27 2019-05-08                 42
    +## 9   Series 9            0        Ed Gamble              2 2019-07-24 2019-09-04                 42
    +## 10 Series 10            0  Richard Herring              5 2020-07-29 2020-10-15                 78
    +## 11 Series 11            0    Sarah Kendall              5       <NA> 2021-03-18                 NA
    +## 12 Series 12            0 Morgana Robinson              4       <NA> 2021-09-23                 NA
    +## 13 Series 13            0     Sophie Duker              5 2021-09-22 2022-04-14                204
    +## 14 Series 14            0    Dara Ó Briain              1 2022-05-05 2022-09-29                147
    +## 15 Series 15            0       Mae Martin              5 2022-09-28 2023-03-30                183
    +## 16 Series 16            0     Sam Campbell              3 2023-05-12 2023-09-21                132
    +

    A recording to airing insight…

    +

    The results of this query already indicate interesting insights; Series 13 has the largest known delay between studio recording and airing of 204 days (approximately 29 weeks). This is a noticeable deviation from prior series. Future series also seem delayed, although to a lesser extent.

    +

    Potential followup questions:

    +
      +
    • Could the 2020 pandemic have initiated this lag?
    • +
    • Were there other production changes that led to this lag?
    • +
    +

    Times Up!

    +

    And that concludes this task! Hopefully you’ve been able to connect to the TdlM database directly through R and potentially inspired to start performing your own analysis.

    +
    +
    +
      +
    1. +

      Taskmaster fanatics will know that this is in reference to the hint in S2E5’s task Build a bridge for the potato., which has since become one of key pieces of advice for all Taskmaster contestants. It has been suitably adapted for working on data tables in a database, rather than a piece of furniture. ↩︎

      +
    2. +
    +
    + +
    + + + + +
    +
    + +
    + + diff --git a/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/crosstalk/css/crosstalk.min.css b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/crosstalk/css/crosstalk.min.css new file mode 100644 index 0000000..6b45382 --- /dev/null +++ b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/crosstalk/css/crosstalk.min.css @@ -0,0 +1 @@ +.container-fluid.crosstalk-bscols{margin-left:-30px;margin-right:-30px;white-space:normal}body>.container-fluid.crosstalk-bscols{margin-left:auto;margin-right:auto}.crosstalk-input-checkboxgroup .crosstalk-options-group .crosstalk-options-column{display:inline-block;padding-right:12px;vertical-align:top}@media only screen and (max-width: 480px){.crosstalk-input-checkboxgroup .crosstalk-options-group .crosstalk-options-column{display:block;padding-right:inherit}}.crosstalk-input{margin-bottom:15px}.crosstalk-input .control-label{margin-bottom:0;vertical-align:middle}.crosstalk-input input[type="checkbox"]{margin:4px 0 0;margin-top:1px;line-height:normal}.crosstalk-input .checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.crosstalk-input .checkbox>label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.crosstalk-input .checkbox input[type="checkbox"],.crosstalk-input .checkbox-inline input[type="checkbox"]{position:absolute;margin-top:2px;margin-left:-20px}.crosstalk-input .checkbox+.checkbox{margin-top:-5px}.crosstalk-input .checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.crosstalk-input .checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px} diff --git a/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/crosstalk/js/crosstalk.js b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/crosstalk/js/crosstalk.js new file mode 100644 index 0000000..fd9eb53 --- /dev/null +++ b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/crosstalk/js/crosstalk.js @@ -0,0 +1,1474 @@ +(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o b) { + return 1; + } +} + +/** + * @private + */ + +var FilterSet = function () { + function FilterSet() { + _classCallCheck(this, FilterSet); + + this.reset(); + } + + _createClass(FilterSet, [{ + key: "reset", + value: function reset() { + // Key: handle ID, Value: array of selected keys, or null + this._handles = {}; + // Key: key string, Value: count of handles that include it + this._keys = {}; + this._value = null; + this._activeHandles = 0; + } + }, { + key: "update", + value: function update(handleId, keys) { + if (keys !== null) { + keys = keys.slice(0); // clone before sorting + keys.sort(naturalComparator); + } + + var _diffSortedLists = (0, _util.diffSortedLists)(this._handles[handleId], keys), + added = _diffSortedLists.added, + removed = _diffSortedLists.removed; + + this._handles[handleId] = keys; + + for (var i = 0; i < added.length; i++) { + this._keys[added[i]] = (this._keys[added[i]] || 0) + 1; + } + for (var _i = 0; _i < removed.length; _i++) { + this._keys[removed[_i]]--; + } + + this._updateValue(keys); + } + + /** + * @param {string[]} keys Sorted array of strings that indicate + * a superset of possible keys. + * @private + */ + + }, { + key: "_updateValue", + value: function _updateValue() { + var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._allKeys; + + var handleCount = Object.keys(this._handles).length; + if (handleCount === 0) { + this._value = null; + } else { + this._value = []; + for (var i = 0; i < keys.length; i++) { + var count = this._keys[keys[i]]; + if (count === handleCount) { + this._value.push(keys[i]); + } + } + } + } + }, { + key: "clear", + value: function clear(handleId) { + if (typeof this._handles[handleId] === "undefined") { + return; + } + + var keys = this._handles[handleId]; + if (!keys) { + keys = []; + } + + for (var i = 0; i < keys.length; i++) { + this._keys[keys[i]]--; + } + delete this._handles[handleId]; + + this._updateValue(); + } + }, { + key: "value", + get: function get() { + return this._value; + } + }, { + key: "_allKeys", + get: function get() { + var allKeys = Object.keys(this._keys); + allKeys.sort(naturalComparator); + return allKeys; + } + }]); + + return FilterSet; +}(); + +exports.default = FilterSet; + +},{"./util":11}],4:[function(require,module,exports){ +(function (global){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +exports.default = group; + +var _var2 = require("./var"); + +var _var3 = _interopRequireDefault(_var2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +// Use a global so that multiple copies of crosstalk.js can be loaded and still +// have groups behave as singletons across all copies. +global.__crosstalk_groups = global.__crosstalk_groups || {}; +var groups = global.__crosstalk_groups; + +function group(groupName) { + if (groupName && typeof groupName === "string") { + if (!groups.hasOwnProperty(groupName)) { + groups[groupName] = new Group(groupName); + } + return groups[groupName]; + } else if ((typeof groupName === "undefined" ? "undefined" : _typeof(groupName)) === "object" && groupName._vars && groupName.var) { + // Appears to already be a group object + return groupName; + } else if (Array.isArray(groupName) && groupName.length == 1 && typeof groupName[0] === "string") { + return group(groupName[0]); + } else { + throw new Error("Invalid groupName argument"); + } +} + +var Group = function () { + function Group(name) { + _classCallCheck(this, Group); + + this.name = name; + this._vars = {}; + } + + _createClass(Group, [{ + key: "var", + value: function _var(name) { + if (!name || typeof name !== "string") { + throw new Error("Invalid var name"); + } + + if (!this._vars.hasOwnProperty(name)) this._vars[name] = new _var3.default(this, name); + return this._vars[name]; + } + }, { + key: "has", + value: function has(name) { + if (!name || typeof name !== "string") { + throw new Error("Invalid var name"); + } + + return this._vars.hasOwnProperty(name); + } + }]); + + return Group; +}(); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{"./var":12}],5:[function(require,module,exports){ +(function (global){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _group = require("./group"); + +var _group2 = _interopRequireDefault(_group); + +var _selection = require("./selection"); + +var _filter = require("./filter"); + +var _input = require("./input"); + +require("./input_selectize"); + +require("./input_checkboxgroup"); + +require("./input_slider"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var defaultGroup = (0, _group2.default)("default"); + +function var_(name) { + return defaultGroup.var(name); +} + +function has(name) { + return defaultGroup.has(name); +} + +if (global.Shiny) { + global.Shiny.addCustomMessageHandler("update-client-value", function (message) { + if (typeof message.group === "string") { + (0, _group2.default)(message.group).var(message.name).set(message.value); + } else { + var_(message.name).set(message.value); + } + }); +} + +var crosstalk = { + group: _group2.default, + var: var_, + has: has, + SelectionHandle: _selection.SelectionHandle, + FilterHandle: _filter.FilterHandle, + bind: _input.bind +}; + +/** + * @namespace crosstalk + */ +exports.default = crosstalk; + +global.crosstalk = crosstalk; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{"./filter":2,"./group":4,"./input":6,"./input_checkboxgroup":7,"./input_selectize":8,"./input_slider":9,"./selection":10}],6:[function(require,module,exports){ +(function (global){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.register = register; +exports.bind = bind; +var $ = global.jQuery; + +var bindings = {}; + +function register(reg) { + bindings[reg.className] = reg; + if (global.document && global.document.readyState !== "complete") { + $(function () { + bind(); + }); + } else if (global.document) { + setTimeout(bind, 100); + } +} + +function bind() { + Object.keys(bindings).forEach(function (className) { + var binding = bindings[className]; + $("." + binding.className).not(".crosstalk-input-bound").each(function (i, el) { + bindInstance(binding, el); + }); + }); +} + +// Escape jQuery identifier +function $escape(val) { + return val.replace(/([!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g, "\\$1"); +} + +function bindEl(el) { + var $el = $(el); + Object.keys(bindings).forEach(function (className) { + if ($el.hasClass(className) && !$el.hasClass("crosstalk-input-bound")) { + var binding = bindings[className]; + bindInstance(binding, el); + } + }); +} + +function bindInstance(binding, el) { + var jsonEl = $(el).find("script[type='application/json'][data-for='" + $escape(el.id) + "']"); + var data = JSON.parse(jsonEl[0].innerText); + + var instance = binding.factory(el, data); + $(el).data("crosstalk-instance", instance); + $(el).addClass("crosstalk-input-bound"); +} + +if (global.Shiny) { + var inputBinding = new global.Shiny.InputBinding(); + var _$ = global.jQuery; + _$.extend(inputBinding, { + find: function find(scope) { + return _$(scope).find(".crosstalk-input"); + }, + initialize: function initialize(el) { + if (!_$(el).hasClass("crosstalk-input-bound")) { + bindEl(el); + } + }, + getId: function getId(el) { + return el.id; + }, + getValue: function getValue(el) {}, + setValue: function setValue(el, value) {}, + receiveMessage: function receiveMessage(el, data) {}, + subscribe: function subscribe(el, callback) { + _$(el).data("crosstalk-instance").resume(); + }, + unsubscribe: function unsubscribe(el) { + _$(el).data("crosstalk-instance").suspend(); + } + }); + global.Shiny.inputBindings.register(inputBinding, "crosstalk.inputBinding"); +} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{}],7:[function(require,module,exports){ +(function (global){ +"use strict"; + +var _input = require("./input"); + +var input = _interopRequireWildcard(_input); + +var _filter = require("./filter"); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +var $ = global.jQuery; + +input.register({ + className: "crosstalk-input-checkboxgroup", + + factory: function factory(el, data) { + /* + * map: {"groupA": ["keyA", "keyB", ...], ...} + * group: "ct-groupname" + */ + var ctHandle = new _filter.FilterHandle(data.group); + + var lastKnownKeys = void 0; + var $el = $(el); + $el.on("change", "input[type='checkbox']", function () { + var checked = $el.find("input[type='checkbox']:checked"); + if (checked.length === 0) { + lastKnownKeys = null; + ctHandle.clear(); + } else { + var keys = {}; + checked.each(function () { + data.map[this.value].forEach(function (key) { + keys[key] = true; + }); + }); + var keyArray = Object.keys(keys); + keyArray.sort(); + lastKnownKeys = keyArray; + ctHandle.set(keyArray); + } + }); + + return { + suspend: function suspend() { + ctHandle.clear(); + }, + resume: function resume() { + if (lastKnownKeys) ctHandle.set(lastKnownKeys); + } + }; + } +}); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{"./filter":2,"./input":6}],8:[function(require,module,exports){ +(function (global){ +"use strict"; + +var _input = require("./input"); + +var input = _interopRequireWildcard(_input); + +var _util = require("./util"); + +var util = _interopRequireWildcard(_util); + +var _filter = require("./filter"); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +var $ = global.jQuery; + +input.register({ + className: "crosstalk-input-select", + + factory: function factory(el, data) { + /* + * items: {value: [...], label: [...]} + * map: {"groupA": ["keyA", "keyB", ...], ...} + * group: "ct-groupname" + */ + + var first = [{ value: "", label: "(All)" }]; + var items = util.dataframeToD3(data.items); + var opts = { + options: first.concat(items), + valueField: "value", + labelField: "label", + searchField: "label" + }; + + var select = $(el).find("select")[0]; + + var selectize = $(select).selectize(opts)[0].selectize; + + var ctHandle = new _filter.FilterHandle(data.group); + + var lastKnownKeys = void 0; + selectize.on("change", function () { + if (selectize.items.length === 0) { + lastKnownKeys = null; + ctHandle.clear(); + } else { + var keys = {}; + selectize.items.forEach(function (group) { + data.map[group].forEach(function (key) { + keys[key] = true; + }); + }); + var keyArray = Object.keys(keys); + keyArray.sort(); + lastKnownKeys = keyArray; + ctHandle.set(keyArray); + } + }); + + return { + suspend: function suspend() { + ctHandle.clear(); + }, + resume: function resume() { + if (lastKnownKeys) ctHandle.set(lastKnownKeys); + } + }; + } +}); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{"./filter":2,"./input":6,"./util":11}],9:[function(require,module,exports){ +(function (global){ +"use strict"; + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +var _input = require("./input"); + +var input = _interopRequireWildcard(_input); + +var _filter = require("./filter"); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +var $ = global.jQuery; +var strftime = global.strftime; + +input.register({ + className: "crosstalk-input-slider", + + factory: function factory(el, data) { + /* + * map: {"groupA": ["keyA", "keyB", ...], ...} + * group: "ct-groupname" + */ + var ctHandle = new _filter.FilterHandle(data.group); + + var opts = {}; + var $el = $(el).find("input"); + var dataType = $el.data("data-type"); + var timeFormat = $el.data("time-format"); + var round = $el.data("round"); + var timeFormatter = void 0; + + // Set up formatting functions + if (dataType === "date") { + timeFormatter = strftime.utc(); + opts.prettify = function (num) { + return timeFormatter(timeFormat, new Date(num)); + }; + } else if (dataType === "datetime") { + var timezone = $el.data("timezone"); + if (timezone) timeFormatter = strftime.timezone(timezone);else timeFormatter = strftime; + + opts.prettify = function (num) { + return timeFormatter(timeFormat, new Date(num)); + }; + } else if (dataType === "number") { + if (typeof round !== "undefined") opts.prettify = function (num) { + var factor = Math.pow(10, round); + return Math.round(num * factor) / factor; + }; + } + + $el.ionRangeSlider(opts); + + function getValue() { + var result = $el.data("ionRangeSlider").result; + + // Function for converting numeric value from slider to appropriate type. + var convert = void 0; + var dataType = $el.data("data-type"); + if (dataType === "date") { + convert = function convert(val) { + return formatDateUTC(new Date(+val)); + }; + } else if (dataType === "datetime") { + convert = function convert(val) { + // Convert ms to s + return +val / 1000; + }; + } else { + convert = function convert(val) { + return +val; + }; + } + + if ($el.data("ionRangeSlider").options.type === "double") { + return [convert(result.from), convert(result.to)]; + } else { + return convert(result.from); + } + } + + var lastKnownKeys = null; + + $el.on("change.crosstalkSliderInput", function (event) { + if (!$el.data("updating") && !$el.data("animating")) { + var _getValue = getValue(), + _getValue2 = _slicedToArray(_getValue, 2), + from = _getValue2[0], + to = _getValue2[1]; + + var keys = []; + for (var i = 0; i < data.values.length; i++) { + var val = data.values[i]; + if (val >= from && val <= to) { + keys.push(data.keys[i]); + } + } + keys.sort(); + ctHandle.set(keys); + lastKnownKeys = keys; + } + }); + + // let $el = $(el); + // $el.on("change", "input[type="checkbox"]", function() { + // let checked = $el.find("input[type="checkbox"]:checked"); + // if (checked.length === 0) { + // ctHandle.clear(); + // } else { + // let keys = {}; + // checked.each(function() { + // data.map[this.value].forEach(function(key) { + // keys[key] = true; + // }); + // }); + // let keyArray = Object.keys(keys); + // keyArray.sort(); + // ctHandle.set(keyArray); + // } + // }); + + return { + suspend: function suspend() { + ctHandle.clear(); + }, + resume: function resume() { + if (lastKnownKeys) ctHandle.set(lastKnownKeys); + } + }; + } +}); + +// Convert a number to a string with leading zeros +function padZeros(n, digits) { + var str = n.toString(); + while (str.length < digits) { + str = "0" + str; + }return str; +} + +// Given a Date object, return a string in yyyy-mm-dd format, using the +// UTC date. This may be a day off from the date in the local time zone. +function formatDateUTC(date) { + if (date instanceof Date) { + return date.getUTCFullYear() + "-" + padZeros(date.getUTCMonth() + 1, 2) + "-" + padZeros(date.getUTCDate(), 2); + } else { + return null; + } +} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{"./filter":2,"./input":6}],10:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SelectionHandle = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = require("./events"); + +var _events2 = _interopRequireDefault(_events); + +var _group = require("./group"); + +var _group2 = _interopRequireDefault(_group); + +var _util = require("./util"); + +var util = _interopRequireWildcard(_util); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * Use this class to read and write (and listen for changes to) the selection + * for a Crosstalk group. This is intended to be used for linked brushing. + * + * If two (or more) `SelectionHandle` instances in the same webpage share the + * same group name, they will share the same state. Setting the selection using + * one `SelectionHandle` instance will result in the `value` property instantly + * changing across the others, and `"change"` event listeners on all instances + * (including the one that initiated the sending) will fire. + * + * @param {string} [group] - The name of the Crosstalk group, or if none, + * null or undefined (or any other falsy value). This can be changed later + * via the [SelectionHandle#setGroup](#setGroup) method. + * @param {Object} [extraInfo] - An object whose properties will be copied to + * the event object whenever an event is emitted. + */ +var SelectionHandle = exports.SelectionHandle = function () { + function SelectionHandle() { + var group = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var extraInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + + _classCallCheck(this, SelectionHandle); + + this._eventRelay = new _events2.default(); + this._emitter = new util.SubscriptionTracker(this._eventRelay); + + // Name of the group we're currently tracking, if any. Can change over time. + this._group = null; + // The Var we're currently tracking, if any. Can change over time. + this._var = null; + // The event handler subscription we currently have on var.on("change"). + this._varOnChangeSub = null; + + this._extraInfo = util.extend({ sender: this }, extraInfo); + + this.setGroup(group); + } + + /** + * Changes the Crosstalk group membership of this SelectionHandle. The group + * being switched away from (if any) will not have its selection value + * modified as a result of calling `setGroup`, even if this handle was the + * most recent handle to set the selection of the group. + * + * The group being switched to (if any) will also not have its selection value + * modified as a result of calling `setGroup`. If you want to set the + * selection value of the new group, call `set` explicitly. + * + * @param {string} group - The name of the Crosstalk group, or null (or + * undefined) to clear the group. + */ + + + _createClass(SelectionHandle, [{ + key: "setGroup", + value: function setGroup(group) { + var _this = this; + + // If group is unchanged, do nothing + if (this._group === group) return; + // Treat null, undefined, and other falsy values the same + if (!this._group && !group) return; + + if (this._var) { + this._var.off("change", this._varOnChangeSub); + this._var = null; + this._varOnChangeSub = null; + } + + this._group = group; + + if (group) { + this._var = (0, _group2.default)(group).var("selection"); + var sub = this._var.on("change", function (e) { + _this._eventRelay.trigger("change", e, _this); + }); + this._varOnChangeSub = sub; + } + } + + /** + * Retrieves the current selection for the group represented by this + * `SelectionHandle`. + * + * - If no selection is active, then this value will be falsy. + * - If a selection is active, but no data points are selected, then this + * value will be an empty array. + * - If a selection is active, and data points are selected, then the keys + * of the selected data points will be present in the array. + */ + + }, { + key: "_mergeExtraInfo", + + + /** + * Combines the given `extraInfo` (if any) with the handle's default + * `_extraInfo` (if any). + * @private + */ + value: function _mergeExtraInfo(extraInfo) { + // Important incidental effect: shallow clone is returned + return util.extend({}, this._extraInfo ? this._extraInfo : null, extraInfo ? extraInfo : null); + } + + /** + * Overwrites the current selection for the group, and raises the `"change"` + * event among all of the group's '`SelectionHandle` instances (including + * this one). + * + * @fires SelectionHandle#change + * @param {string[]} selectedKeys - Falsy, empty array, or array of keys (see + * {@link SelectionHandle#value}). + * @param {Object} [extraInfo] - Extra properties to be included on the event + * object that's passed to listeners (in addition to any options that were + * passed into the `SelectionHandle` constructor). + */ + + }, { + key: "set", + value: function set(selectedKeys, extraInfo) { + if (this._var) this._var.set(selectedKeys, this._mergeExtraInfo(extraInfo)); + } + + /** + * Overwrites the current selection for the group, and raises the `"change"` + * event among all of the group's '`SelectionHandle` instances (including + * this one). + * + * @fires SelectionHandle#change + * @param {Object} [extraInfo] - Extra properties to be included on the event + * object that's passed to listeners (in addition to any that were passed + * into the `SelectionHandle` constructor). + */ + + }, { + key: "clear", + value: function clear(extraInfo) { + if (this._var) this.set(void 0, this._mergeExtraInfo(extraInfo)); + } + + /** + * Subscribes to events on this `SelectionHandle`. + * + * @param {string} eventType - Indicates the type of events to listen to. + * Currently, only `"change"` is supported. + * @param {SelectionHandle~listener} listener - The callback function that + * will be invoked when the event occurs. + * @return {string} - A token to pass to {@link SelectionHandle#off} to cancel + * this subscription. + */ + + }, { + key: "on", + value: function on(eventType, listener) { + return this._emitter.on(eventType, listener); + } + + /** + * Cancels event subscriptions created by {@link SelectionHandle#on}. + * + * @param {string} eventType - The type of event to unsubscribe. + * @param {string|SelectionHandle~listener} listener - Either the callback + * function previously passed into {@link SelectionHandle#on}, or the + * string that was returned from {@link SelectionHandle#on}. + */ + + }, { + key: "off", + value: function off(eventType, listener) { + return this._emitter.off(eventType, listener); + } + + /** + * Shuts down the `SelectionHandle` object. + * + * Removes all event listeners that were added through this handle. + */ + + }, { + key: "close", + value: function close() { + this._emitter.removeAllListeners(); + this.setGroup(null); + } + }, { + key: "value", + get: function get() { + return this._var ? this._var.get() : null; + } + }]); + + return SelectionHandle; +}(); + +/** + * @callback SelectionHandle~listener + * @param {Object} event - An object containing details of the event. For + * `"change"` events, this includes the properties `value` (the new + * value of the selection, or `undefined` if no selection is active), + * `oldValue` (the previous value of the selection), and `sender` (the + * `SelectionHandle` instance that made the change). + */ + +/** + * @event SelectionHandle#change + * @type {object} + * @property {object} value - The new value of the selection, or `undefined` + * if no selection is active. + * @property {object} oldValue - The previous value of the selection. + * @property {SelectionHandle} sender - The `SelectionHandle` instance that + * changed the value. + */ + +},{"./events":1,"./group":4,"./util":11}],11:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +exports.extend = extend; +exports.checkSorted = checkSorted; +exports.diffSortedLists = diffSortedLists; +exports.dataframeToD3 = dataframeToD3; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function extend(target) { + for (var _len = arguments.length, sources = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + sources[_key - 1] = arguments[_key]; + } + + for (var i = 0; i < sources.length; i++) { + var src = sources[i]; + if (typeof src === "undefined" || src === null) continue; + + for (var key in src) { + if (src.hasOwnProperty(key)) { + target[key] = src[key]; + } + } + } + return target; +} + +function checkSorted(list) { + for (var i = 1; i < list.length; i++) { + if (list[i] <= list[i - 1]) { + throw new Error("List is not sorted or contains duplicate"); + } + } +} + +function diffSortedLists(a, b) { + var i_a = 0; + var i_b = 0; + + if (!a) a = []; + if (!b) b = []; + + var a_only = []; + var b_only = []; + + checkSorted(a); + checkSorted(b); + + while (i_a < a.length && i_b < b.length) { + if (a[i_a] === b[i_b]) { + i_a++; + i_b++; + } else if (a[i_a] < b[i_b]) { + a_only.push(a[i_a++]); + } else { + b_only.push(b[i_b++]); + } + } + + if (i_a < a.length) a_only = a_only.concat(a.slice(i_a)); + if (i_b < b.length) b_only = b_only.concat(b.slice(i_b)); + return { + removed: a_only, + added: b_only + }; +} + +// Convert from wide: { colA: [1,2,3], colB: [4,5,6], ... } +// to long: [ {colA: 1, colB: 4}, {colA: 2, colB: 5}, ... ] +function dataframeToD3(df) { + var names = []; + var length = void 0; + for (var name in df) { + if (df.hasOwnProperty(name)) names.push(name); + if (_typeof(df[name]) !== "object" || typeof df[name].length === "undefined") { + throw new Error("All fields must be arrays"); + } else if (typeof length !== "undefined" && length !== df[name].length) { + throw new Error("All fields must be arrays of the same length"); + } + length = df[name].length; + } + var results = []; + var item = void 0; + for (var row = 0; row < length; row++) { + item = {}; + for (var col = 0; col < names.length; col++) { + item[names[col]] = df[names[col]][row]; + } + results.push(item); + } + return results; +} + +/** + * Keeps track of all event listener additions/removals and lets all active + * listeners be removed with a single operation. + * + * @private + */ + +var SubscriptionTracker = exports.SubscriptionTracker = function () { + function SubscriptionTracker(emitter) { + _classCallCheck(this, SubscriptionTracker); + + this._emitter = emitter; + this._subs = {}; + } + + _createClass(SubscriptionTracker, [{ + key: "on", + value: function on(eventType, listener) { + var sub = this._emitter.on(eventType, listener); + this._subs[sub] = eventType; + return sub; + } + }, { + key: "off", + value: function off(eventType, listener) { + var sub = this._emitter.off(eventType, listener); + if (sub) { + delete this._subs[sub]; + } + return sub; + } + }, { + key: "removeAllListeners", + value: function removeAllListeners() { + var _this = this; + + var current_subs = this._subs; + this._subs = {}; + Object.keys(current_subs).forEach(function (sub) { + _this._emitter.off(current_subs[sub], sub); + }); + } + }]); + + return SubscriptionTracker; +}(); + +},{}],12:[function(require,module,exports){ +(function (global){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = require("./events"); + +var _events2 = _interopRequireDefault(_events); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Var = function () { + function Var(group, name, /*optional*/value) { + _classCallCheck(this, Var); + + this._group = group; + this._name = name; + this._value = value; + this._events = new _events2.default(); + } + + _createClass(Var, [{ + key: "get", + value: function get() { + return this._value; + } + }, { + key: "set", + value: function set(value, /*optional*/event) { + if (this._value === value) { + // Do nothing; the value hasn't changed + return; + } + var oldValue = this._value; + this._value = value; + // Alert JavaScript listeners that the value has changed + var evt = {}; + if (event && (typeof event === "undefined" ? "undefined" : _typeof(event)) === "object") { + for (var k in event) { + if (event.hasOwnProperty(k)) evt[k] = event[k]; + } + } + evt.oldValue = oldValue; + evt.value = value; + this._events.trigger("change", evt, this); + + // TODO: Make this extensible, to let arbitrary back-ends know that + // something has changed + if (global.Shiny && global.Shiny.onInputChange) { + global.Shiny.onInputChange(".clientValue-" + (this._group.name !== null ? this._group.name + "-" : "") + this._name, typeof value === "undefined" ? null : value); + } + } + }, { + key: "on", + value: function on(eventType, listener) { + return this._events.on(eventType, listener); + } + }, { + key: "off", + value: function off(eventType, listener) { + return this._events.off(eventType, listener); + } + }]); + + return Var; +}(); + +exports.default = Var; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{"./events":1}]},{},[5]) +//# sourceMappingURL=crosstalk.js.map diff --git a/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/crosstalk/js/crosstalk.js.map b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/crosstalk/js/crosstalk.js.map new file mode 100644 index 0000000..cff94f0 --- /dev/null +++ b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/crosstalk/js/crosstalk.js.map @@ -0,0 +1,37 @@ +{ + "version": 3, + "sources": [ + "node_modules/browser-pack/_prelude.js", + "javascript/src/events.js", + "javascript/src/filter.js", + "javascript/src/filterset.js", + "javascript/src/group.js", + "javascript/src/index.js", + "javascript/src/input.js", + "javascript/src/input_checkboxgroup.js", + "javascript/src/input_selectize.js", + "javascript/src/input_slider.js", + "javascript/src/selection.js", + "javascript/src/util.js", + "javascript/src/var.js" + ], + "names": [], + "mappings": "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", + "file": "generated.js", + "sourceRoot": "", + "sourcesContent": [ + "(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o {\n this._eventRelay.trigger(\"change\", e, this);\n });\n this._varOnChangeSub = sub;\n }\n }\n\n /**\n * Combine the given `extraInfo` (if any) with the handle's default\n * `_extraInfo` (if any).\n * @private\n */\n _mergeExtraInfo(extraInfo) {\n return util.extend({},\n this._extraInfo ? this._extraInfo : null,\n extraInfo ? extraInfo : null);\n }\n\n /**\n * Close the handle. This clears this handle's contribution to the filter set,\n * and unsubscribes all event listeners.\n */\n close() {\n this._emitter.removeAllListeners();\n this.clear();\n this.setGroup(null);\n }\n\n /**\n * Clear this handle's contribution to the filter set.\n *\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `FilterHandle` constructor).\n * \n * @fires FilterHandle#change\n */\n clear(extraInfo) {\n if (!this._filterSet)\n return;\n this._filterSet.clear(this._id);\n this._onChange(extraInfo);\n }\n\n /**\n * Set this handle's contribution to the filter set. This array should consist\n * of the keys of the rows that _should_ be displayed; any keys that are not\n * present in the array will be considered _filtered out_. Note that multiple\n * `FilterHandle` instances in the group may each contribute an array of keys,\n * and only those keys that appear in _all_ of the arrays make it through the\n * filter.\n *\n * @param {string[]} keys - Empty array, or array of keys. To clear the\n * filter, don't pass an empty array; instead, use the\n * {@link FilterHandle#clear} method.\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `FilterHandle` constructor).\n * \n * @fires FilterHandle#change\n */\n set(keys, extraInfo) {\n if (!this._filterSet)\n return;\n this._filterSet.update(this._id, keys);\n this._onChange(extraInfo);\n }\n\n /**\n * @return {string[]|null} - Either: 1) an array of keys that made it through\n * all of the `FilterHandle` instances, or, 2) `null`, which means no filter\n * is being applied (all data should be displayed).\n */\n get filteredKeys() {\n return this._filterSet ? this._filterSet.value : null;\n }\n\n /**\n * Subscribe to events on this `FilterHandle`.\n *\n * @param {string} eventType - Indicates the type of events to listen to.\n * Currently, only `\"change\"` is supported.\n * @param {FilterHandle~listener} listener - The callback function that\n * will be invoked when the event occurs.\n * @return {string} - A token to pass to {@link FilterHandle#off} to cancel\n * this subscription.\n */\n on(eventType, listener) {\n return this._emitter.on(eventType, listener);\n }\n\n /**\n * Cancel event subscriptions created by {@link FilterHandle#on}.\n *\n * @param {string} eventType - The type of event to unsubscribe.\n * @param {string|FilterHandle~listener} listener - Either the callback\n * function previously passed into {@link FilterHandle#on}, or the\n * string that was returned from {@link FilterHandle#on}.\n */\n off(eventType, listener) {\n return this._emitter.off(eventType, listener);\n }\n\n _onChange(extraInfo) {\n if (!this._filterSet)\n return;\n this._filterVar.set(this._filterSet.value, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * @callback FilterHandle~listener\n * @param {Object} event - An object containing details of the event. For\n * `\"change\"` events, this includes the properties `value` (the new\n * value of the filter set, or `null` if no filter set is active),\n * `oldValue` (the previous value of the filter set), and `sender` (the\n * `FilterHandle` instance that made the change).\n */\n\n}\n\n/**\n * @event FilterHandle#change\n * @type {object}\n * @property {object} value - The new value of the filter set, or `null`\n * if no filter set is active.\n * @property {object} oldValue - The previous value of the filter set.\n * @property {FilterHandle} sender - The `FilterHandle` instance that\n * changed the value.\n */\n", + "import { diffSortedLists } from \"./util\";\n\nfunction naturalComparator(a, b) {\n if (a === b) {\n return 0;\n } else if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n }\n}\n\n/**\n * @private\n */\nexport default class FilterSet {\n constructor() {\n this.reset();\n }\n\n reset() {\n // Key: handle ID, Value: array of selected keys, or null\n this._handles = {};\n // Key: key string, Value: count of handles that include it\n this._keys = {};\n this._value = null;\n this._activeHandles = 0;\n }\n\n get value() {\n return this._value;\n }\n\n update(handleId, keys) {\n if (keys !== null) {\n keys = keys.slice(0); // clone before sorting\n keys.sort(naturalComparator);\n }\n\n let {added, removed} = diffSortedLists(this._handles[handleId], keys);\n this._handles[handleId] = keys;\n\n for (let i = 0; i < added.length; i++) {\n this._keys[added[i]] = (this._keys[added[i]] || 0) + 1;\n }\n for (let i = 0; i < removed.length; i++) {\n this._keys[removed[i]]--;\n }\n\n this._updateValue(keys);\n }\n\n /**\n * @param {string[]} keys Sorted array of strings that indicate\n * a superset of possible keys.\n * @private\n */\n _updateValue(keys = this._allKeys) {\n let handleCount = Object.keys(this._handles).length;\n if (handleCount === 0) {\n this._value = null;\n } else {\n this._value = [];\n for (let i = 0; i < keys.length; i++) {\n let count = this._keys[keys[i]];\n if (count === handleCount) {\n this._value.push(keys[i]);\n }\n }\n }\n }\n\n clear(handleId) {\n if (typeof(this._handles[handleId]) === \"undefined\") {\n return;\n }\n\n let keys = this._handles[handleId];\n if (!keys) {\n keys = [];\n }\n\n for (let i = 0; i < keys.length; i++) {\n this._keys[keys[i]]--;\n }\n delete this._handles[handleId];\n\n this._updateValue();\n }\n\n get _allKeys() {\n let allKeys = Object.keys(this._keys);\n allKeys.sort(naturalComparator);\n return allKeys;\n }\n}\n", + "import Var from \"./var\";\n\n// Use a global so that multiple copies of crosstalk.js can be loaded and still\n// have groups behave as singletons across all copies.\nglobal.__crosstalk_groups = global.__crosstalk_groups || {};\nlet groups = global.__crosstalk_groups;\n\nexport default function group(groupName) {\n if (groupName && typeof(groupName) === \"string\") {\n if (!groups.hasOwnProperty(groupName)) {\n groups[groupName] = new Group(groupName);\n }\n return groups[groupName];\n } else if (typeof(groupName) === \"object\" && groupName._vars && groupName.var) {\n // Appears to already be a group object\n return groupName;\n } else if (Array.isArray(groupName) &&\n groupName.length == 1 &&\n typeof(groupName[0]) === \"string\") {\n return group(groupName[0]);\n } else {\n throw new Error(\"Invalid groupName argument\");\n }\n}\n\nclass Group {\n constructor(name) {\n this.name = name;\n this._vars = {};\n }\n\n var(name) {\n if (!name || typeof(name) !== \"string\") {\n throw new Error(\"Invalid var name\");\n }\n\n if (!this._vars.hasOwnProperty(name))\n this._vars[name] = new Var(this, name);\n return this._vars[name];\n }\n\n has(name) {\n if (!name || typeof(name) !== \"string\") {\n throw new Error(\"Invalid var name\");\n }\n\n return this._vars.hasOwnProperty(name);\n }\n}\n", + "import group from \"./group\";\nimport { SelectionHandle } from \"./selection\";\nimport { FilterHandle } from \"./filter\";\nimport { bind } from \"./input\";\nimport \"./input_selectize\";\nimport \"./input_checkboxgroup\";\nimport \"./input_slider\";\n\nconst defaultGroup = group(\"default\");\n\nfunction var_(name) {\n return defaultGroup.var(name);\n}\n\nfunction has(name) {\n return defaultGroup.has(name);\n}\n\nif (global.Shiny) {\n global.Shiny.addCustomMessageHandler(\"update-client-value\", function(message) {\n if (typeof(message.group) === \"string\") {\n group(message.group).var(message.name).set(message.value);\n } else {\n var_(message.name).set(message.value);\n }\n });\n}\n\nconst crosstalk = {\n group: group,\n var: var_,\n has: has,\n SelectionHandle: SelectionHandle,\n FilterHandle: FilterHandle,\n bind: bind\n};\n\n/**\n * @namespace crosstalk\n */\nexport default crosstalk;\nglobal.crosstalk = crosstalk;\n", + "let $ = global.jQuery;\n\nlet bindings = {};\n\nexport function register(reg) {\n bindings[reg.className] = reg;\n if (global.document && global.document.readyState !== \"complete\") {\n $(() => {\n bind();\n });\n } else if (global.document) {\n setTimeout(bind, 100);\n }\n}\n\nexport function bind() {\n Object.keys(bindings).forEach(function(className) {\n let binding = bindings[className];\n $(\".\" + binding.className).not(\".crosstalk-input-bound\").each(function(i, el) {\n bindInstance(binding, el);\n });\n });\n}\n\n// Escape jQuery identifier\nfunction $escape(val) {\n return val.replace(/([!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~])/g, \"\\\\$1\");\n}\n\nfunction bindEl(el) {\n let $el = $(el);\n Object.keys(bindings).forEach(function(className) {\n if ($el.hasClass(className) && !$el.hasClass(\"crosstalk-input-bound\")) {\n let binding = bindings[className];\n bindInstance(binding, el);\n }\n });\n}\n\nfunction bindInstance(binding, el) {\n let jsonEl = $(el).find(\"script[type='application/json'][data-for='\" + $escape(el.id) + \"']\");\n let data = JSON.parse(jsonEl[0].innerText);\n\n let instance = binding.factory(el, data);\n $(el).data(\"crosstalk-instance\", instance);\n $(el).addClass(\"crosstalk-input-bound\");\n}\n\nif (global.Shiny) {\n let inputBinding = new global.Shiny.InputBinding();\n let $ = global.jQuery;\n $.extend(inputBinding, {\n find: function(scope) {\n return $(scope).find(\".crosstalk-input\");\n },\n initialize: function(el) {\n if (!$(el).hasClass(\"crosstalk-input-bound\")) {\n bindEl(el);\n }\n },\n getId: function(el) {\n return el.id;\n },\n getValue: function(el) {\n\n },\n setValue: function(el, value) {\n\n },\n receiveMessage: function(el, data) {\n\n },\n subscribe: function(el, callback) {\n $(el).data(\"crosstalk-instance\").resume();\n },\n unsubscribe: function(el) {\n $(el).data(\"crosstalk-instance\").suspend();\n }\n });\n global.Shiny.inputBindings.register(inputBinding, \"crosstalk.inputBinding\");\n}\n", + "import * as input from \"./input\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\n\ninput.register({\n className: \"crosstalk-input-checkboxgroup\",\n\n factory: function(el, data) {\n /*\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n let ctHandle = new FilterHandle(data.group);\n\n let lastKnownKeys;\n let $el = $(el);\n $el.on(\"change\", \"input[type='checkbox']\", function() {\n let checked = $el.find(\"input[type='checkbox']:checked\");\n if (checked.length === 0) {\n lastKnownKeys = null;\n ctHandle.clear();\n } else {\n let keys = {};\n checked.each(function() {\n data.map[this.value].forEach(function(key) {\n keys[key] = true;\n });\n });\n let keyArray = Object.keys(keys);\n keyArray.sort();\n lastKnownKeys = keyArray;\n ctHandle.set(keyArray);\n }\n });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n", + "import * as input from \"./input\";\nimport * as util from \"./util\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\n\ninput.register({\n className: \"crosstalk-input-select\",\n\n factory: function(el, data) {\n /*\n * items: {value: [...], label: [...]}\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n\n let first = [{value: \"\", label: \"(All)\"}];\n let items = util.dataframeToD3(data.items);\n let opts = {\n options: first.concat(items),\n valueField: \"value\",\n labelField: \"label\",\n searchField: \"label\"\n };\n\n let select = $(el).find(\"select\")[0];\n\n let selectize = $(select).selectize(opts)[0].selectize;\n\n let ctHandle = new FilterHandle(data.group);\n\n let lastKnownKeys;\n selectize.on(\"change\", function() {\n if (selectize.items.length === 0) {\n lastKnownKeys = null;\n ctHandle.clear();\n } else {\n let keys = {};\n selectize.items.forEach(function(group) {\n data.map[group].forEach(function(key) {\n keys[key] = true;\n });\n });\n let keyArray = Object.keys(keys);\n keyArray.sort();\n lastKnownKeys = keyArray;\n ctHandle.set(keyArray);\n }\n });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n", + "import * as input from \"./input\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\nlet strftime = global.strftime;\n\ninput.register({\n className: \"crosstalk-input-slider\",\n\n factory: function(el, data) {\n /*\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n let ctHandle = new FilterHandle(data.group);\n\n let opts = {};\n let $el = $(el).find(\"input\");\n let dataType = $el.data(\"data-type\");\n let timeFormat = $el.data(\"time-format\");\n let round = $el.data(\"round\");\n let timeFormatter;\n\n // Set up formatting functions\n if (dataType === \"date\") {\n timeFormatter = strftime.utc();\n opts.prettify = function(num) {\n return timeFormatter(timeFormat, new Date(num));\n };\n\n } else if (dataType === \"datetime\") {\n let timezone = $el.data(\"timezone\");\n if (timezone)\n timeFormatter = strftime.timezone(timezone);\n else\n timeFormatter = strftime;\n\n opts.prettify = function(num) {\n return timeFormatter(timeFormat, new Date(num));\n };\n } else if (dataType === \"number\") {\n if (typeof round !== \"undefined\")\n opts.prettify = function(num) {\n let factor = Math.pow(10, round);\n return Math.round(num * factor) / factor;\n };\n }\n\n $el.ionRangeSlider(opts);\n\n function getValue() {\n let result = $el.data(\"ionRangeSlider\").result;\n\n // Function for converting numeric value from slider to appropriate type.\n let convert;\n let dataType = $el.data(\"data-type\");\n if (dataType === \"date\") {\n convert = function(val) {\n return formatDateUTC(new Date(+val));\n };\n } else if (dataType === \"datetime\") {\n convert = function(val) {\n // Convert ms to s\n return +val / 1000;\n };\n } else {\n convert = function(val) { return +val; };\n }\n\n if ($el.data(\"ionRangeSlider\").options.type === \"double\") {\n return [convert(result.from), convert(result.to)];\n } else {\n return convert(result.from);\n }\n }\n\n let lastKnownKeys = null;\n\n $el.on(\"change.crosstalkSliderInput\", function(event) {\n if (!$el.data(\"updating\") && !$el.data(\"animating\")) {\n let [from, to] = getValue();\n let keys = [];\n for (let i = 0; i < data.values.length; i++) {\n let val = data.values[i];\n if (val >= from && val <= to) {\n keys.push(data.keys[i]);\n }\n }\n keys.sort();\n ctHandle.set(keys);\n lastKnownKeys = keys;\n }\n });\n\n\n // let $el = $(el);\n // $el.on(\"change\", \"input[type=\"checkbox\"]\", function() {\n // let checked = $el.find(\"input[type=\"checkbox\"]:checked\");\n // if (checked.length === 0) {\n // ctHandle.clear();\n // } else {\n // let keys = {};\n // checked.each(function() {\n // data.map[this.value].forEach(function(key) {\n // keys[key] = true;\n // });\n // });\n // let keyArray = Object.keys(keys);\n // keyArray.sort();\n // ctHandle.set(keyArray);\n // }\n // });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n\n\n// Convert a number to a string with leading zeros\nfunction padZeros(n, digits) {\n let str = n.toString();\n while (str.length < digits)\n str = \"0\" + str;\n return str;\n}\n\n// Given a Date object, return a string in yyyy-mm-dd format, using the\n// UTC date. This may be a day off from the date in the local time zone.\nfunction formatDateUTC(date) {\n if (date instanceof Date) {\n return date.getUTCFullYear() + \"-\" +\n padZeros(date.getUTCMonth()+1, 2) + \"-\" +\n padZeros(date.getUTCDate(), 2);\n\n } else {\n return null;\n }\n}\n", + "import Events from \"./events\";\nimport grp from \"./group\";\nimport * as util from \"./util\";\n\n/**\n * Use this class to read and write (and listen for changes to) the selection\n * for a Crosstalk group. This is intended to be used for linked brushing.\n *\n * If two (or more) `SelectionHandle` instances in the same webpage share the\n * same group name, they will share the same state. Setting the selection using\n * one `SelectionHandle` instance will result in the `value` property instantly\n * changing across the others, and `\"change\"` event listeners on all instances\n * (including the one that initiated the sending) will fire.\n *\n * @param {string} [group] - The name of the Crosstalk group, or if none,\n * null or undefined (or any other falsy value). This can be changed later\n * via the [SelectionHandle#setGroup](#setGroup) method.\n * @param {Object} [extraInfo] - An object whose properties will be copied to\n * the event object whenever an event is emitted.\n */\nexport class SelectionHandle {\n\n constructor(group = null, extraInfo = null) {\n this._eventRelay = new Events();\n this._emitter = new util.SubscriptionTracker(this._eventRelay);\n\n // Name of the group we're currently tracking, if any. Can change over time.\n this._group = null;\n // The Var we're currently tracking, if any. Can change over time.\n this._var = null;\n // The event handler subscription we currently have on var.on(\"change\").\n this._varOnChangeSub = null;\n\n this._extraInfo = util.extend({ sender: this }, extraInfo);\n\n this.setGroup(group);\n }\n\n /**\n * Changes the Crosstalk group membership of this SelectionHandle. The group\n * being switched away from (if any) will not have its selection value\n * modified as a result of calling `setGroup`, even if this handle was the\n * most recent handle to set the selection of the group.\n *\n * The group being switched to (if any) will also not have its selection value\n * modified as a result of calling `setGroup`. If you want to set the\n * selection value of the new group, call `set` explicitly.\n *\n * @param {string} group - The name of the Crosstalk group, or null (or\n * undefined) to clear the group.\n */\n setGroup(group) {\n // If group is unchanged, do nothing\n if (this._group === group)\n return;\n // Treat null, undefined, and other falsy values the same\n if (!this._group && !group)\n return;\n\n if (this._var) {\n this._var.off(\"change\", this._varOnChangeSub);\n this._var = null;\n this._varOnChangeSub = null;\n }\n\n this._group = group;\n\n if (group) {\n this._var = grp(group).var(\"selection\");\n let sub = this._var.on(\"change\", (e) => {\n this._eventRelay.trigger(\"change\", e, this);\n });\n this._varOnChangeSub = sub;\n }\n }\n\n /**\n * Retrieves the current selection for the group represented by this\n * `SelectionHandle`.\n *\n * - If no selection is active, then this value will be falsy.\n * - If a selection is active, but no data points are selected, then this\n * value will be an empty array.\n * - If a selection is active, and data points are selected, then the keys\n * of the selected data points will be present in the array.\n */\n get value() {\n return this._var ? this._var.get() : null;\n }\n\n /**\n * Combines the given `extraInfo` (if any) with the handle's default\n * `_extraInfo` (if any).\n * @private\n */\n _mergeExtraInfo(extraInfo) {\n // Important incidental effect: shallow clone is returned\n return util.extend({},\n this._extraInfo ? this._extraInfo : null,\n extraInfo ? extraInfo : null);\n }\n\n /**\n * Overwrites the current selection for the group, and raises the `\"change\"`\n * event among all of the group's '`SelectionHandle` instances (including\n * this one).\n *\n * @fires SelectionHandle#change\n * @param {string[]} selectedKeys - Falsy, empty array, or array of keys (see\n * {@link SelectionHandle#value}).\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `SelectionHandle` constructor).\n */\n set(selectedKeys, extraInfo) {\n if (this._var)\n this._var.set(selectedKeys, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * Overwrites the current selection for the group, and raises the `\"change\"`\n * event among all of the group's '`SelectionHandle` instances (including\n * this one).\n *\n * @fires SelectionHandle#change\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any that were passed\n * into the `SelectionHandle` constructor).\n */\n clear(extraInfo) {\n if (this._var)\n this.set(void 0, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * Subscribes to events on this `SelectionHandle`.\n *\n * @param {string} eventType - Indicates the type of events to listen to.\n * Currently, only `\"change\"` is supported.\n * @param {SelectionHandle~listener} listener - The callback function that\n * will be invoked when the event occurs.\n * @return {string} - A token to pass to {@link SelectionHandle#off} to cancel\n * this subscription.\n */\n on(eventType, listener) {\n return this._emitter.on(eventType, listener);\n }\n\n /**\n * Cancels event subscriptions created by {@link SelectionHandle#on}.\n *\n * @param {string} eventType - The type of event to unsubscribe.\n * @param {string|SelectionHandle~listener} listener - Either the callback\n * function previously passed into {@link SelectionHandle#on}, or the\n * string that was returned from {@link SelectionHandle#on}.\n */\n off(eventType, listener) {\n return this._emitter.off(eventType, listener);\n }\n\n /**\n * Shuts down the `SelectionHandle` object.\n *\n * Removes all event listeners that were added through this handle.\n */\n close() {\n this._emitter.removeAllListeners();\n this.setGroup(null);\n }\n}\n\n/**\n * @callback SelectionHandle~listener\n * @param {Object} event - An object containing details of the event. For\n * `\"change\"` events, this includes the properties `value` (the new\n * value of the selection, or `undefined` if no selection is active),\n * `oldValue` (the previous value of the selection), and `sender` (the\n * `SelectionHandle` instance that made the change).\n */\n\n/**\n * @event SelectionHandle#change\n * @type {object}\n * @property {object} value - The new value of the selection, or `undefined`\n * if no selection is active.\n * @property {object} oldValue - The previous value of the selection.\n * @property {SelectionHandle} sender - The `SelectionHandle` instance that\n * changed the value.\n */\n", + "export function extend(target, ...sources) {\n for (let i = 0; i < sources.length; i++) {\n let src = sources[i];\n if (typeof(src) === \"undefined\" || src === null)\n continue;\n\n for (let key in src) {\n if (src.hasOwnProperty(key)) {\n target[key] = src[key];\n }\n }\n }\n return target;\n}\n\nexport function checkSorted(list) {\n for (let i = 1; i < list.length; i++) {\n if (list[i] <= list[i-1]) {\n throw new Error(\"List is not sorted or contains duplicate\");\n }\n }\n}\n\nexport function diffSortedLists(a, b) {\n let i_a = 0;\n let i_b = 0;\n\n if (!a) a = [];\n if (!b) b = [];\n\n let a_only = [];\n let b_only = [];\n\n checkSorted(a);\n checkSorted(b);\n\n while (i_a < a.length && i_b < b.length) {\n if (a[i_a] === b[i_b]) {\n i_a++;\n i_b++;\n } else if (a[i_a] < b[i_b]) {\n a_only.push(a[i_a++]);\n } else {\n b_only.push(b[i_b++]);\n }\n }\n\n if (i_a < a.length)\n a_only = a_only.concat(a.slice(i_a));\n if (i_b < b.length)\n b_only = b_only.concat(b.slice(i_b));\n return {\n removed: a_only,\n added: b_only\n };\n}\n\n// Convert from wide: { colA: [1,2,3], colB: [4,5,6], ... }\n// to long: [ {colA: 1, colB: 4}, {colA: 2, colB: 5}, ... ]\nexport function dataframeToD3(df) {\n let names = [];\n let length;\n for (let name in df) {\n if (df.hasOwnProperty(name))\n names.push(name);\n if (typeof(df[name]) !== \"object\" || typeof(df[name].length) === \"undefined\") {\n throw new Error(\"All fields must be arrays\");\n } else if (typeof(length) !== \"undefined\" && length !== df[name].length) {\n throw new Error(\"All fields must be arrays of the same length\");\n }\n length = df[name].length;\n }\n let results = [];\n let item;\n for (let row = 0; row < length; row++) {\n item = {};\n for (let col = 0; col < names.length; col++) {\n item[names[col]] = df[names[col]][row];\n }\n results.push(item);\n }\n return results;\n}\n\n/**\n * Keeps track of all event listener additions/removals and lets all active\n * listeners be removed with a single operation.\n *\n * @private\n */\nexport class SubscriptionTracker {\n constructor(emitter) {\n this._emitter = emitter;\n this._subs = {};\n }\n\n on(eventType, listener) {\n let sub = this._emitter.on(eventType, listener);\n this._subs[sub] = eventType;\n return sub;\n }\n\n off(eventType, listener) {\n let sub = this._emitter.off(eventType, listener);\n if (sub) {\n delete this._subs[sub];\n }\n return sub;\n }\n\n removeAllListeners() {\n let current_subs = this._subs;\n this._subs = {};\n Object.keys(current_subs).forEach((sub) => {\n this._emitter.off(current_subs[sub], sub);\n });\n }\n}\n", + "import Events from \"./events\";\n\nexport default class Var {\n constructor(group, name, /*optional*/ value) {\n this._group = group;\n this._name = name;\n this._value = value;\n this._events = new Events();\n }\n\n get() {\n return this._value;\n }\n\n set(value, /*optional*/ event) {\n if (this._value === value) {\n // Do nothing; the value hasn't changed\n return;\n }\n let oldValue = this._value;\n this._value = value;\n // Alert JavaScript listeners that the value has changed\n let evt = {};\n if (event && typeof(event) === \"object\") {\n for (let k in event) {\n if (event.hasOwnProperty(k))\n evt[k] = event[k];\n }\n }\n evt.oldValue = oldValue;\n evt.value = value;\n this._events.trigger(\"change\", evt, this);\n\n // TODO: Make this extensible, to let arbitrary back-ends know that\n // something has changed\n if (global.Shiny && global.Shiny.onInputChange) {\n global.Shiny.onInputChange(\n \".clientValue-\" +\n (this._group.name !== null ? this._group.name + \"-\" : \"\") +\n this._name,\n typeof(value) === \"undefined\" ? null : value\n );\n }\n }\n\n on(eventType, listener) {\n return this._events.on(eventType, listener);\n }\n\n off(eventType, listener) {\n return this._events.off(eventType, listener);\n }\n}\n" + ] +} \ No newline at end of file diff --git a/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/crosstalk/js/crosstalk.min.js b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/crosstalk/js/crosstalk.min.js new file mode 100644 index 0000000..b7ec0ac --- /dev/null +++ b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/crosstalk/js/crosstalk.min.js @@ -0,0 +1,2 @@ +!function o(u,a,l){function s(n,e){if(!a[n]){if(!u[n]){var t="function"==typeof require&&require;if(!e&&t)return t(n,!0);if(f)return f(n,!0);var r=new Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND",r}var i=a[n]={exports:{}};u[n][0].call(i.exports,function(e){var t=u[n][1][e];return s(t||e)},i,i.exports,o,u,a,l)}return a[n].exports}for(var f="function"==typeof require&&require,e=0;e?@[\\\]^`{|}~])/g,"\\$1")+"']"),r=JSON.parse(n[0].innerText),i=e.factory(t,r);o(t).data("crosstalk-instance",i),o(t).addClass("crosstalk-input-bound")}if(t.Shiny){var e=new t.Shiny.InputBinding,u=t.jQuery;u.extend(e,{find:function(e){return u(e).find(".crosstalk-input")},initialize:function(e){var t,n;u(e).hasClass("crosstalk-input-bound")||(n=o(t=e),Object.keys(r).forEach(function(e){n.hasClass(e)&&!n.hasClass("crosstalk-input-bound")&&i(r[e],t)}))},getId:function(e){return e.id},getValue:function(e){},setValue:function(e,t){},receiveMessage:function(e,t){},subscribe:function(e,t){u(e).data("crosstalk-instance").resume()},unsubscribe:function(e){u(e).data("crosstalk-instance").suspend()}}),t.Shiny.inputBindings.register(e,"crosstalk.inputBinding")}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],7:[function(r,e,t){(function(e){"use strict";var t=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}}(r("./input")),n=r("./filter");var a=e.jQuery;t.register({className:"crosstalk-input-checkboxgroup",factory:function(e,r){var i=new n.FilterHandle(r.group),o=void 0,u=a(e);return u.on("change","input[type='checkbox']",function(){var e=u.find("input[type='checkbox']:checked");if(0===e.length)o=null,i.clear();else{var t={};e.each(function(){r.map[this.value].forEach(function(e){t[e]=!0})});var n=Object.keys(t);n.sort(),o=n,i.set(n)}}),{suspend:function(){i.clear()},resume:function(){o&&i.set(o)}}}})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./filter":2,"./input":6}],8:[function(r,e,t){(function(e){"use strict";var t=n(r("./input")),l=n(r("./util")),s=r("./filter");function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}var f=e.jQuery;t.register({className:"crosstalk-input-select",factory:function(e,n){var t=l.dataframeToD3(n.items),r={options:[{value:"",label:"(All)"}].concat(t),valueField:"value",labelField:"label",searchField:"label"},i=f(e).find("select")[0],o=f(i).selectize(r)[0].selectize,u=new s.FilterHandle(n.group),a=void 0;return o.on("change",function(){if(0===o.items.length)a=null,u.clear();else{var t={};o.items.forEach(function(e){n.map[e].forEach(function(e){t[e]=!0})});var e=Object.keys(t);e.sort(),a=e,u.set(e)}}),{suspend:function(){u.clear()},resume:function(){a&&u.set(a)}}}})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./filter":2,"./input":6,"./util":11}],9:[function(n,e,t){(function(e){"use strict";var d=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var u,a=e[Symbol.iterator]();!(r=(u=a.next()).done)&&(n.push(u.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{!r&&a.return&&a.return()}finally{if(i)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},t=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}}(n("./input")),a=n("./filter");var v=e.jQuery,p=e.strftime;function y(e,t){for(var n=e.toString();n.length {\n this._eventRelay.trigger(\"change\", e, this);\n });\n this._varOnChangeSub = sub;\n }\n }\n\n /**\n * Combine the given `extraInfo` (if any) with the handle's default\n * `_extraInfo` (if any).\n * @private\n */\n _mergeExtraInfo(extraInfo) {\n return util.extend({},\n this._extraInfo ? this._extraInfo : null,\n extraInfo ? extraInfo : null);\n }\n\n /**\n * Close the handle. This clears this handle's contribution to the filter set,\n * and unsubscribes all event listeners.\n */\n close() {\n this._emitter.removeAllListeners();\n this.clear();\n this.setGroup(null);\n }\n\n /**\n * Clear this handle's contribution to the filter set.\n *\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `FilterHandle` constructor).\n * \n * @fires FilterHandle#change\n */\n clear(extraInfo) {\n if (!this._filterSet)\n return;\n this._filterSet.clear(this._id);\n this._onChange(extraInfo);\n }\n\n /**\n * Set this handle's contribution to the filter set. This array should consist\n * of the keys of the rows that _should_ be displayed; any keys that are not\n * present in the array will be considered _filtered out_. Note that multiple\n * `FilterHandle` instances in the group may each contribute an array of keys,\n * and only those keys that appear in _all_ of the arrays make it through the\n * filter.\n *\n * @param {string[]} keys - Empty array, or array of keys. To clear the\n * filter, don't pass an empty array; instead, use the\n * {@link FilterHandle#clear} method.\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `FilterHandle` constructor).\n * \n * @fires FilterHandle#change\n */\n set(keys, extraInfo) {\n if (!this._filterSet)\n return;\n this._filterSet.update(this._id, keys);\n this._onChange(extraInfo);\n }\n\n /**\n * @return {string[]|null} - Either: 1) an array of keys that made it through\n * all of the `FilterHandle` instances, or, 2) `null`, which means no filter\n * is being applied (all data should be displayed).\n */\n get filteredKeys() {\n return this._filterSet ? this._filterSet.value : null;\n }\n\n /**\n * Subscribe to events on this `FilterHandle`.\n *\n * @param {string} eventType - Indicates the type of events to listen to.\n * Currently, only `\"change\"` is supported.\n * @param {FilterHandle~listener} listener - The callback function that\n * will be invoked when the event occurs.\n * @return {string} - A token to pass to {@link FilterHandle#off} to cancel\n * this subscription.\n */\n on(eventType, listener) {\n return this._emitter.on(eventType, listener);\n }\n\n /**\n * Cancel event subscriptions created by {@link FilterHandle#on}.\n *\n * @param {string} eventType - The type of event to unsubscribe.\n * @param {string|FilterHandle~listener} listener - Either the callback\n * function previously passed into {@link FilterHandle#on}, or the\n * string that was returned from {@link FilterHandle#on}.\n */\n off(eventType, listener) {\n return this._emitter.off(eventType, listener);\n }\n\n _onChange(extraInfo) {\n if (!this._filterSet)\n return;\n this._filterVar.set(this._filterSet.value, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * @callback FilterHandle~listener\n * @param {Object} event - An object containing details of the event. For\n * `\"change\"` events, this includes the properties `value` (the new\n * value of the filter set, or `null` if no filter set is active),\n * `oldValue` (the previous value of the filter set), and `sender` (the\n * `FilterHandle` instance that made the change).\n */\n\n}\n\n/**\n * @event FilterHandle#change\n * @type {object}\n * @property {object} value - The new value of the filter set, or `null`\n * if no filter set is active.\n * @property {object} oldValue - The previous value of the filter set.\n * @property {FilterHandle} sender - The `FilterHandle` instance that\n * changed the value.\n */\n","import { diffSortedLists } from \"./util\";\n\nfunction naturalComparator(a, b) {\n if (a === b) {\n return 0;\n } else if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n }\n}\n\n/**\n * @private\n */\nexport default class FilterSet {\n constructor() {\n this.reset();\n }\n\n reset() {\n // Key: handle ID, Value: array of selected keys, or null\n this._handles = {};\n // Key: key string, Value: count of handles that include it\n this._keys = {};\n this._value = null;\n this._activeHandles = 0;\n }\n\n get value() {\n return this._value;\n }\n\n update(handleId, keys) {\n if (keys !== null) {\n keys = keys.slice(0); // clone before sorting\n keys.sort(naturalComparator);\n }\n\n let {added, removed} = diffSortedLists(this._handles[handleId], keys);\n this._handles[handleId] = keys;\n\n for (let i = 0; i < added.length; i++) {\n this._keys[added[i]] = (this._keys[added[i]] || 0) + 1;\n }\n for (let i = 0; i < removed.length; i++) {\n this._keys[removed[i]]--;\n }\n\n this._updateValue(keys);\n }\n\n /**\n * @param {string[]} keys Sorted array of strings that indicate\n * a superset of possible keys.\n * @private\n */\n _updateValue(keys = this._allKeys) {\n let handleCount = Object.keys(this._handles).length;\n if (handleCount === 0) {\n this._value = null;\n } else {\n this._value = [];\n for (let i = 0; i < keys.length; i++) {\n let count = this._keys[keys[i]];\n if (count === handleCount) {\n this._value.push(keys[i]);\n }\n }\n }\n }\n\n clear(handleId) {\n if (typeof(this._handles[handleId]) === \"undefined\") {\n return;\n }\n\n let keys = this._handles[handleId];\n if (!keys) {\n keys = [];\n }\n\n for (let i = 0; i < keys.length; i++) {\n this._keys[keys[i]]--;\n }\n delete this._handles[handleId];\n\n this._updateValue();\n }\n\n get _allKeys() {\n let allKeys = Object.keys(this._keys);\n allKeys.sort(naturalComparator);\n return allKeys;\n }\n}\n","import Var from \"./var\";\n\n// Use a global so that multiple copies of crosstalk.js can be loaded and still\n// have groups behave as singletons across all copies.\nglobal.__crosstalk_groups = global.__crosstalk_groups || {};\nlet groups = global.__crosstalk_groups;\n\nexport default function group(groupName) {\n if (groupName && typeof(groupName) === \"string\") {\n if (!groups.hasOwnProperty(groupName)) {\n groups[groupName] = new Group(groupName);\n }\n return groups[groupName];\n } else if (typeof(groupName) === \"object\" && groupName._vars && groupName.var) {\n // Appears to already be a group object\n return groupName;\n } else if (Array.isArray(groupName) &&\n groupName.length == 1 &&\n typeof(groupName[0]) === \"string\") {\n return group(groupName[0]);\n } else {\n throw new Error(\"Invalid groupName argument\");\n }\n}\n\nclass Group {\n constructor(name) {\n this.name = name;\n this._vars = {};\n }\n\n var(name) {\n if (!name || typeof(name) !== \"string\") {\n throw new Error(\"Invalid var name\");\n }\n\n if (!this._vars.hasOwnProperty(name))\n this._vars[name] = new Var(this, name);\n return this._vars[name];\n }\n\n has(name) {\n if (!name || typeof(name) !== \"string\") {\n throw new Error(\"Invalid var name\");\n }\n\n return this._vars.hasOwnProperty(name);\n }\n}\n","import group from \"./group\";\nimport { SelectionHandle } from \"./selection\";\nimport { FilterHandle } from \"./filter\";\nimport { bind } from \"./input\";\nimport \"./input_selectize\";\nimport \"./input_checkboxgroup\";\nimport \"./input_slider\";\n\nconst defaultGroup = group(\"default\");\n\nfunction var_(name) {\n return defaultGroup.var(name);\n}\n\nfunction has(name) {\n return defaultGroup.has(name);\n}\n\nif (global.Shiny) {\n global.Shiny.addCustomMessageHandler(\"update-client-value\", function(message) {\n if (typeof(message.group) === \"string\") {\n group(message.group).var(message.name).set(message.value);\n } else {\n var_(message.name).set(message.value);\n }\n });\n}\n\nconst crosstalk = {\n group: group,\n var: var_,\n has: has,\n SelectionHandle: SelectionHandle,\n FilterHandle: FilterHandle,\n bind: bind\n};\n\n/**\n * @namespace crosstalk\n */\nexport default crosstalk;\nglobal.crosstalk = crosstalk;\n","let $ = global.jQuery;\n\nlet bindings = {};\n\nexport function register(reg) {\n bindings[reg.className] = reg;\n if (global.document && global.document.readyState !== \"complete\") {\n $(() => {\n bind();\n });\n } else if (global.document) {\n setTimeout(bind, 100);\n }\n}\n\nexport function bind() {\n Object.keys(bindings).forEach(function(className) {\n let binding = bindings[className];\n $(\".\" + binding.className).not(\".crosstalk-input-bound\").each(function(i, el) {\n bindInstance(binding, el);\n });\n });\n}\n\n// Escape jQuery identifier\nfunction $escape(val) {\n return val.replace(/([!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~])/g, \"\\\\$1\");\n}\n\nfunction bindEl(el) {\n let $el = $(el);\n Object.keys(bindings).forEach(function(className) {\n if ($el.hasClass(className) && !$el.hasClass(\"crosstalk-input-bound\")) {\n let binding = bindings[className];\n bindInstance(binding, el);\n }\n });\n}\n\nfunction bindInstance(binding, el) {\n let jsonEl = $(el).find(\"script[type='application/json'][data-for='\" + $escape(el.id) + \"']\");\n let data = JSON.parse(jsonEl[0].innerText);\n\n let instance = binding.factory(el, data);\n $(el).data(\"crosstalk-instance\", instance);\n $(el).addClass(\"crosstalk-input-bound\");\n}\n\nif (global.Shiny) {\n let inputBinding = new global.Shiny.InputBinding();\n let $ = global.jQuery;\n $.extend(inputBinding, {\n find: function(scope) {\n return $(scope).find(\".crosstalk-input\");\n },\n initialize: function(el) {\n if (!$(el).hasClass(\"crosstalk-input-bound\")) {\n bindEl(el);\n }\n },\n getId: function(el) {\n return el.id;\n },\n getValue: function(el) {\n\n },\n setValue: function(el, value) {\n\n },\n receiveMessage: function(el, data) {\n\n },\n subscribe: function(el, callback) {\n $(el).data(\"crosstalk-instance\").resume();\n },\n unsubscribe: function(el) {\n $(el).data(\"crosstalk-instance\").suspend();\n }\n });\n global.Shiny.inputBindings.register(inputBinding, \"crosstalk.inputBinding\");\n}\n","import * as input from \"./input\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\n\ninput.register({\n className: \"crosstalk-input-checkboxgroup\",\n\n factory: function(el, data) {\n /*\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n let ctHandle = new FilterHandle(data.group);\n\n let lastKnownKeys;\n let $el = $(el);\n $el.on(\"change\", \"input[type='checkbox']\", function() {\n let checked = $el.find(\"input[type='checkbox']:checked\");\n if (checked.length === 0) {\n lastKnownKeys = null;\n ctHandle.clear();\n } else {\n let keys = {};\n checked.each(function() {\n data.map[this.value].forEach(function(key) {\n keys[key] = true;\n });\n });\n let keyArray = Object.keys(keys);\n keyArray.sort();\n lastKnownKeys = keyArray;\n ctHandle.set(keyArray);\n }\n });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n","import * as input from \"./input\";\nimport * as util from \"./util\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\n\ninput.register({\n className: \"crosstalk-input-select\",\n\n factory: function(el, data) {\n /*\n * items: {value: [...], label: [...]}\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n\n let first = [{value: \"\", label: \"(All)\"}];\n let items = util.dataframeToD3(data.items);\n let opts = {\n options: first.concat(items),\n valueField: \"value\",\n labelField: \"label\",\n searchField: \"label\"\n };\n\n let select = $(el).find(\"select\")[0];\n\n let selectize = $(select).selectize(opts)[0].selectize;\n\n let ctHandle = new FilterHandle(data.group);\n\n let lastKnownKeys;\n selectize.on(\"change\", function() {\n if (selectize.items.length === 0) {\n lastKnownKeys = null;\n ctHandle.clear();\n } else {\n let keys = {};\n selectize.items.forEach(function(group) {\n data.map[group].forEach(function(key) {\n keys[key] = true;\n });\n });\n let keyArray = Object.keys(keys);\n keyArray.sort();\n lastKnownKeys = keyArray;\n ctHandle.set(keyArray);\n }\n });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n","import * as input from \"./input\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\nlet strftime = global.strftime;\n\ninput.register({\n className: \"crosstalk-input-slider\",\n\n factory: function(el, data) {\n /*\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n let ctHandle = new FilterHandle(data.group);\n\n let opts = {};\n let $el = $(el).find(\"input\");\n let dataType = $el.data(\"data-type\");\n let timeFormat = $el.data(\"time-format\");\n let round = $el.data(\"round\");\n let timeFormatter;\n\n // Set up formatting functions\n if (dataType === \"date\") {\n timeFormatter = strftime.utc();\n opts.prettify = function(num) {\n return timeFormatter(timeFormat, new Date(num));\n };\n\n } else if (dataType === \"datetime\") {\n let timezone = $el.data(\"timezone\");\n if (timezone)\n timeFormatter = strftime.timezone(timezone);\n else\n timeFormatter = strftime;\n\n opts.prettify = function(num) {\n return timeFormatter(timeFormat, new Date(num));\n };\n } else if (dataType === \"number\") {\n if (typeof round !== \"undefined\")\n opts.prettify = function(num) {\n let factor = Math.pow(10, round);\n return Math.round(num * factor) / factor;\n };\n }\n\n $el.ionRangeSlider(opts);\n\n function getValue() {\n let result = $el.data(\"ionRangeSlider\").result;\n\n // Function for converting numeric value from slider to appropriate type.\n let convert;\n let dataType = $el.data(\"data-type\");\n if (dataType === \"date\") {\n convert = function(val) {\n return formatDateUTC(new Date(+val));\n };\n } else if (dataType === \"datetime\") {\n convert = function(val) {\n // Convert ms to s\n return +val / 1000;\n };\n } else {\n convert = function(val) { return +val; };\n }\n\n if ($el.data(\"ionRangeSlider\").options.type === \"double\") {\n return [convert(result.from), convert(result.to)];\n } else {\n return convert(result.from);\n }\n }\n\n let lastKnownKeys = null;\n\n $el.on(\"change.crosstalkSliderInput\", function(event) {\n if (!$el.data(\"updating\") && !$el.data(\"animating\")) {\n let [from, to] = getValue();\n let keys = [];\n for (let i = 0; i < data.values.length; i++) {\n let val = data.values[i];\n if (val >= from && val <= to) {\n keys.push(data.keys[i]);\n }\n }\n keys.sort();\n ctHandle.set(keys);\n lastKnownKeys = keys;\n }\n });\n\n\n // let $el = $(el);\n // $el.on(\"change\", \"input[type=\"checkbox\"]\", function() {\n // let checked = $el.find(\"input[type=\"checkbox\"]:checked\");\n // if (checked.length === 0) {\n // ctHandle.clear();\n // } else {\n // let keys = {};\n // checked.each(function() {\n // data.map[this.value].forEach(function(key) {\n // keys[key] = true;\n // });\n // });\n // let keyArray = Object.keys(keys);\n // keyArray.sort();\n // ctHandle.set(keyArray);\n // }\n // });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n\n\n// Convert a number to a string with leading zeros\nfunction padZeros(n, digits) {\n let str = n.toString();\n while (str.length < digits)\n str = \"0\" + str;\n return str;\n}\n\n// Given a Date object, return a string in yyyy-mm-dd format, using the\n// UTC date. This may be a day off from the date in the local time zone.\nfunction formatDateUTC(date) {\n if (date instanceof Date) {\n return date.getUTCFullYear() + \"-\" +\n padZeros(date.getUTCMonth()+1, 2) + \"-\" +\n padZeros(date.getUTCDate(), 2);\n\n } else {\n return null;\n }\n}\n","import Events from \"./events\";\nimport grp from \"./group\";\nimport * as util from \"./util\";\n\n/**\n * Use this class to read and write (and listen for changes to) the selection\n * for a Crosstalk group. This is intended to be used for linked brushing.\n *\n * If two (or more) `SelectionHandle` instances in the same webpage share the\n * same group name, they will share the same state. Setting the selection using\n * one `SelectionHandle` instance will result in the `value` property instantly\n * changing across the others, and `\"change\"` event listeners on all instances\n * (including the one that initiated the sending) will fire.\n *\n * @param {string} [group] - The name of the Crosstalk group, or if none,\n * null or undefined (or any other falsy value). This can be changed later\n * via the [SelectionHandle#setGroup](#setGroup) method.\n * @param {Object} [extraInfo] - An object whose properties will be copied to\n * the event object whenever an event is emitted.\n */\nexport class SelectionHandle {\n\n constructor(group = null, extraInfo = null) {\n this._eventRelay = new Events();\n this._emitter = new util.SubscriptionTracker(this._eventRelay);\n\n // Name of the group we're currently tracking, if any. Can change over time.\n this._group = null;\n // The Var we're currently tracking, if any. Can change over time.\n this._var = null;\n // The event handler subscription we currently have on var.on(\"change\").\n this._varOnChangeSub = null;\n\n this._extraInfo = util.extend({ sender: this }, extraInfo);\n\n this.setGroup(group);\n }\n\n /**\n * Changes the Crosstalk group membership of this SelectionHandle. The group\n * being switched away from (if any) will not have its selection value\n * modified as a result of calling `setGroup`, even if this handle was the\n * most recent handle to set the selection of the group.\n *\n * The group being switched to (if any) will also not have its selection value\n * modified as a result of calling `setGroup`. If you want to set the\n * selection value of the new group, call `set` explicitly.\n *\n * @param {string} group - The name of the Crosstalk group, or null (or\n * undefined) to clear the group.\n */\n setGroup(group) {\n // If group is unchanged, do nothing\n if (this._group === group)\n return;\n // Treat null, undefined, and other falsy values the same\n if (!this._group && !group)\n return;\n\n if (this._var) {\n this._var.off(\"change\", this._varOnChangeSub);\n this._var = null;\n this._varOnChangeSub = null;\n }\n\n this._group = group;\n\n if (group) {\n this._var = grp(group).var(\"selection\");\n let sub = this._var.on(\"change\", (e) => {\n this._eventRelay.trigger(\"change\", e, this);\n });\n this._varOnChangeSub = sub;\n }\n }\n\n /**\n * Retrieves the current selection for the group represented by this\n * `SelectionHandle`.\n *\n * - If no selection is active, then this value will be falsy.\n * - If a selection is active, but no data points are selected, then this\n * value will be an empty array.\n * - If a selection is active, and data points are selected, then the keys\n * of the selected data points will be present in the array.\n */\n get value() {\n return this._var ? this._var.get() : null;\n }\n\n /**\n * Combines the given `extraInfo` (if any) with the handle's default\n * `_extraInfo` (if any).\n * @private\n */\n _mergeExtraInfo(extraInfo) {\n // Important incidental effect: shallow clone is returned\n return util.extend({},\n this._extraInfo ? this._extraInfo : null,\n extraInfo ? extraInfo : null);\n }\n\n /**\n * Overwrites the current selection for the group, and raises the `\"change\"`\n * event among all of the group's '`SelectionHandle` instances (including\n * this one).\n *\n * @fires SelectionHandle#change\n * @param {string[]} selectedKeys - Falsy, empty array, or array of keys (see\n * {@link SelectionHandle#value}).\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `SelectionHandle` constructor).\n */\n set(selectedKeys, extraInfo) {\n if (this._var)\n this._var.set(selectedKeys, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * Overwrites the current selection for the group, and raises the `\"change\"`\n * event among all of the group's '`SelectionHandle` instances (including\n * this one).\n *\n * @fires SelectionHandle#change\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any that were passed\n * into the `SelectionHandle` constructor).\n */\n clear(extraInfo) {\n if (this._var)\n this.set(void 0, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * Subscribes to events on this `SelectionHandle`.\n *\n * @param {string} eventType - Indicates the type of events to listen to.\n * Currently, only `\"change\"` is supported.\n * @param {SelectionHandle~listener} listener - The callback function that\n * will be invoked when the event occurs.\n * @return {string} - A token to pass to {@link SelectionHandle#off} to cancel\n * this subscription.\n */\n on(eventType, listener) {\n return this._emitter.on(eventType, listener);\n }\n\n /**\n * Cancels event subscriptions created by {@link SelectionHandle#on}.\n *\n * @param {string} eventType - The type of event to unsubscribe.\n * @param {string|SelectionHandle~listener} listener - Either the callback\n * function previously passed into {@link SelectionHandle#on}, or the\n * string that was returned from {@link SelectionHandle#on}.\n */\n off(eventType, listener) {\n return this._emitter.off(eventType, listener);\n }\n\n /**\n * Shuts down the `SelectionHandle` object.\n *\n * Removes all event listeners that were added through this handle.\n */\n close() {\n this._emitter.removeAllListeners();\n this.setGroup(null);\n }\n}\n\n/**\n * @callback SelectionHandle~listener\n * @param {Object} event - An object containing details of the event. For\n * `\"change\"` events, this includes the properties `value` (the new\n * value of the selection, or `undefined` if no selection is active),\n * `oldValue` (the previous value of the selection), and `sender` (the\n * `SelectionHandle` instance that made the change).\n */\n\n/**\n * @event SelectionHandle#change\n * @type {object}\n * @property {object} value - The new value of the selection, or `undefined`\n * if no selection is active.\n * @property {object} oldValue - The previous value of the selection.\n * @property {SelectionHandle} sender - The `SelectionHandle` instance that\n * changed the value.\n */\n","export function extend(target, ...sources) {\n for (let i = 0; i < sources.length; i++) {\n let src = sources[i];\n if (typeof(src) === \"undefined\" || src === null)\n continue;\n\n for (let key in src) {\n if (src.hasOwnProperty(key)) {\n target[key] = src[key];\n }\n }\n }\n return target;\n}\n\nexport function checkSorted(list) {\n for (let i = 1; i < list.length; i++) {\n if (list[i] <= list[i-1]) {\n throw new Error(\"List is not sorted or contains duplicate\");\n }\n }\n}\n\nexport function diffSortedLists(a, b) {\n let i_a = 0;\n let i_b = 0;\n\n if (!a) a = [];\n if (!b) b = [];\n\n let a_only = [];\n let b_only = [];\n\n checkSorted(a);\n checkSorted(b);\n\n while (i_a < a.length && i_b < b.length) {\n if (a[i_a] === b[i_b]) {\n i_a++;\n i_b++;\n } else if (a[i_a] < b[i_b]) {\n a_only.push(a[i_a++]);\n } else {\n b_only.push(b[i_b++]);\n }\n }\n\n if (i_a < a.length)\n a_only = a_only.concat(a.slice(i_a));\n if (i_b < b.length)\n b_only = b_only.concat(b.slice(i_b));\n return {\n removed: a_only,\n added: b_only\n };\n}\n\n// Convert from wide: { colA: [1,2,3], colB: [4,5,6], ... }\n// to long: [ {colA: 1, colB: 4}, {colA: 2, colB: 5}, ... ]\nexport function dataframeToD3(df) {\n let names = [];\n let length;\n for (let name in df) {\n if (df.hasOwnProperty(name))\n names.push(name);\n if (typeof(df[name]) !== \"object\" || typeof(df[name].length) === \"undefined\") {\n throw new Error(\"All fields must be arrays\");\n } else if (typeof(length) !== \"undefined\" && length !== df[name].length) {\n throw new Error(\"All fields must be arrays of the same length\");\n }\n length = df[name].length;\n }\n let results = [];\n let item;\n for (let row = 0; row < length; row++) {\n item = {};\n for (let col = 0; col < names.length; col++) {\n item[names[col]] = df[names[col]][row];\n }\n results.push(item);\n }\n return results;\n}\n\n/**\n * Keeps track of all event listener additions/removals and lets all active\n * listeners be removed with a single operation.\n *\n * @private\n */\nexport class SubscriptionTracker {\n constructor(emitter) {\n this._emitter = emitter;\n this._subs = {};\n }\n\n on(eventType, listener) {\n let sub = this._emitter.on(eventType, listener);\n this._subs[sub] = eventType;\n return sub;\n }\n\n off(eventType, listener) {\n let sub = this._emitter.off(eventType, listener);\n if (sub) {\n delete this._subs[sub];\n }\n return sub;\n }\n\n removeAllListeners() {\n let current_subs = this._subs;\n this._subs = {};\n Object.keys(current_subs).forEach((sub) => {\n this._emitter.off(current_subs[sub], sub);\n });\n }\n}\n","import Events from \"./events\";\n\nexport default class Var {\n constructor(group, name, /*optional*/ value) {\n this._group = group;\n this._name = name;\n this._value = value;\n this._events = new Events();\n }\n\n get() {\n return this._value;\n }\n\n set(value, /*optional*/ event) {\n if (this._value === value) {\n // Do nothing; the value hasn't changed\n return;\n }\n let oldValue = this._value;\n this._value = value;\n // Alert JavaScript listeners that the value has changed\n let evt = {};\n if (event && typeof(event) === \"object\") {\n for (let k in event) {\n if (event.hasOwnProperty(k))\n evt[k] = event[k];\n }\n }\n evt.oldValue = oldValue;\n evt.value = value;\n this._events.trigger(\"change\", evt, this);\n\n // TODO: Make this extensible, to let arbitrary back-ends know that\n // something has changed\n if (global.Shiny && global.Shiny.onInputChange) {\n global.Shiny.onInputChange(\n \".clientValue-\" +\n (this._group.name !== null ? this._group.name + \"-\" : \"\") +\n this._name,\n typeof(value) === \"undefined\" ? null : value\n );\n }\n }\n\n on(eventType, listener) {\n return this._events.on(eventType, listener);\n }\n\n off(eventType, listener) {\n return this._events.off(eventType, listener);\n }\n}\n"]} \ No newline at end of file diff --git a/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/crosstalk/scss/crosstalk.scss b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/crosstalk/scss/crosstalk.scss new file mode 100644 index 0000000..3566561 --- /dev/null +++ b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/crosstalk/scss/crosstalk.scss @@ -0,0 +1,75 @@ +/* Adjust margins outwards, so column contents line up with the edges of the + parent of container-fluid. */ +.container-fluid.crosstalk-bscols { + margin-left: -30px; + margin-right: -30px; + white-space: normal; +} + +/* But don't adjust the margins outwards if we're directly under the body, + i.e. we were the top-level of something at the console. */ +body > .container-fluid.crosstalk-bscols { + margin-left: auto; + margin-right: auto; +} + +.crosstalk-input-checkboxgroup .crosstalk-options-group .crosstalk-options-column { + display: inline-block; + padding-right: 12px; + vertical-align: top; +} + +@media only screen and (max-width:480px) { + .crosstalk-input-checkboxgroup .crosstalk-options-group .crosstalk-options-column { + display: block; + padding-right: inherit; + } +} + +/* Relevant BS3 styles to make filter_checkbox() look reasonable without Bootstrap */ +.crosstalk-input { + margin-bottom: 15px; /* a la .form-group */ + .control-label { + margin-bottom: 0; + vertical-align: middle; + } + input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px; + line-height: normal; + } + .checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; + } + .checkbox > label{ + padding-left: 20px; + margin-bottom: 0; + font-weight: 400; + cursor: pointer; + } + .checkbox input[type="checkbox"], + .checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 2px; + margin-left: -20px; + } + .checkbox + .checkbox { + margin-top: -5px; + } + .checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: 400; + vertical-align: middle; + cursor: pointer; + } + .checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; + } +} diff --git a/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/datatables-binding/datatables.js b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/datatables-binding/datatables.js new file mode 100644 index 0000000..765b53c --- /dev/null +++ b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/datatables-binding/datatables.js @@ -0,0 +1,1539 @@ +(function() { + +// some helper functions: using a global object DTWidget so that it can be used +// in JS() code, e.g. datatable(options = list(foo = JS('code'))); unlike R's +// dynamic scoping, when 'code' is eval'ed, JavaScript does not know objects +// from the "parent frame", e.g. JS('DTWidget') will not work unless it was made +// a global object +var DTWidget = {}; + +// 123456666.7890 -> 123,456,666.7890 +var markInterval = function(d, digits, interval, mark, decMark, precision) { + x = precision ? d.toPrecision(digits) : d.toFixed(digits); + if (!/^-?[\d.]+$/.test(x)) return x; + var xv = x.split('.'); + if (xv.length > 2) return x; // should have at most one decimal point + xv[0] = xv[0].replace(new RegExp('\\B(?=(\\d{' + interval + '})+(?!\\d))', 'g'), mark); + return xv.join(decMark); +}; + +DTWidget.formatCurrency = function(data, currency, digits, interval, mark, decMark, before, zeroPrint) { + var d = parseFloat(data); + if (isNaN(d)) return ''; + if (zeroPrint !== null && d === 0.0) return zeroPrint; + var res = markInterval(d, digits, interval, mark, decMark); + res = before ? (/^-/.test(res) ? '-' + currency + res.replace(/^-/, '') : currency + res) : + res + currency; + return res; +}; + +DTWidget.formatString = function(data, prefix, suffix) { + var d = data; + if (d === null) return ''; + return prefix + d + suffix; +}; + +DTWidget.formatPercentage = function(data, digits, interval, mark, decMark, zeroPrint) { + var d = parseFloat(data); + if (isNaN(d)) return ''; + if (zeroPrint !== null && d === 0.0) return zeroPrint; + return markInterval(d * 100, digits, interval, mark, decMark) + '%'; +}; + +DTWidget.formatRound = function(data, digits, interval, mark, decMark, zeroPrint) { + var d = parseFloat(data); + if (isNaN(d)) return ''; + if (zeroPrint !== null && d === 0.0) return zeroPrint; + return markInterval(d, digits, interval, mark, decMark); +}; + +DTWidget.formatSignif = function(data, digits, interval, mark, decMark, zeroPrint) { + var d = parseFloat(data); + if (isNaN(d)) return ''; + if (zeroPrint !== null && d === 0.0) return zeroPrint; + return markInterval(d, digits, interval, mark, decMark, true); +}; + +DTWidget.formatDate = function(data, method, params) { + var d = data; + if (d === null) return ''; + // (new Date('2015-10-28')).toDateString() may return 2015-10-27 because the + // actual time created could be like 'Tue Oct 27 2015 19:00:00 GMT-0500 (CDT)', + // i.e. the date-only string is treated as UTC time instead of local time + if ((method === 'toDateString' || method === 'toLocaleDateString') && /^\d{4,}\D\d{2}\D\d{2}$/.test(d)) { + d = d.split(/\D/); + d = new Date(d[0], d[1] - 1, d[2]); + } else { + d = new Date(d); + } + return d[method].apply(d, params); +}; + +window.DTWidget = DTWidget; + +// A helper function to update the properties of existing filters +var setFilterProps = function(td, props) { + // Update enabled/disabled state + var $input = $(td).find('input').first(); + var searchable = $input.data('searchable'); + $input.prop('disabled', !searchable || props.disabled); + + // Based on the filter type, set its new values + var type = td.getAttribute('data-type'); + if (['factor', 'logical'].includes(type)) { + // Reformat the new dropdown options for use with selectize + var new_vals = props.params.options.map(function(item) { + return { text: item, value: item }; + }); + + // Find the selectize object + var dropdown = $(td).find('.selectized').eq(0)[0].selectize; + + // Note the current values + var old_vals = dropdown.getValue(); + + // Remove the existing values + dropdown.clearOptions(); + + // Add the new options + dropdown.addOption(new_vals); + + // Preserve the existing values + dropdown.setValue(old_vals); + + } else if (['number', 'integer', 'date', 'time'].includes(type)) { + // Apply internal scaling to new limits. Updating scale not yet implemented. + var slider = $(td).find('.noUi-target').eq(0); + var scale = Math.pow(10, Math.max(0, +slider.data('scale') || 0)); + var new_vals = [props.params.min * scale, props.params.max * scale]; + + // Note what the new limits will be just for this filter + var new_lims = new_vals.slice(); + + // Determine the current values and limits + var old_vals = slider.val().map(Number); + var old_lims = slider.noUiSlider('options').range; + old_lims = [old_lims.min, old_lims.max]; + + // Preserve the current values if filters have been applied; otherwise, apply no filtering + if (old_vals[0] != old_lims[0]) { + new_vals[0] = Math.max(old_vals[0], new_vals[0]); + } + + if (old_vals[1] != old_lims[1]) { + new_vals[1] = Math.min(old_vals[1], new_vals[1]); + } + + // Update the endpoints of the slider + slider.noUiSlider({ + start: new_vals, + range: {'min': new_lims[0], 'max': new_lims[1]} + }, true); + } +}; + +var transposeArray2D = function(a) { + return a.length === 0 ? a : HTMLWidgets.transposeArray2D(a); +}; + +var crosstalkPluginsInstalled = false; + +function maybeInstallCrosstalkPlugins() { + if (crosstalkPluginsInstalled) + return; + crosstalkPluginsInstalled = true; + + $.fn.dataTable.ext.afnFiltering.push( + function(oSettings, aData, iDataIndex) { + var ctfilter = oSettings.nTable.ctfilter; + if (ctfilter && !ctfilter[iDataIndex]) + return false; + + var ctselect = oSettings.nTable.ctselect; + if (ctselect && !ctselect[iDataIndex]) + return false; + + return true; + } + ); +} + +HTMLWidgets.widget({ + name: "datatables", + type: "output", + renderOnNullValue: true, + initialize: function(el, width, height) { + // in order that the type=number inputs return a number + $.valHooks.number = { + get: function(el) { + var value = parseFloat(el.value); + return isNaN(value) ? "" : value; + } + }; + $(el).html(' '); + return { + data: null, + ctfilterHandle: new crosstalk.FilterHandle(), + ctfilterSubscription: null, + ctselectHandle: new crosstalk.SelectionHandle(), + ctselectSubscription: null + }; + }, + renderValue: function(el, data, instance) { + if (el.offsetWidth === 0 || el.offsetHeight === 0) { + instance.data = data; + return; + } + instance.data = null; + var $el = $(el); + $el.empty(); + + if (data === null) { + $el.append(' '); + // clear previous Shiny inputs (if any) + for (var i in instance.clearInputs) instance.clearInputs[i](); + instance.clearInputs = {}; + return; + } + + var crosstalkOptions = data.crosstalkOptions; + if (!crosstalkOptions) crosstalkOptions = { + 'key': null, 'group': null + }; + if (crosstalkOptions.group) { + maybeInstallCrosstalkPlugins(); + instance.ctfilterHandle.setGroup(crosstalkOptions.group); + instance.ctselectHandle.setGroup(crosstalkOptions.group); + } + + // if we are in the viewer then we always want to fillContainer and + // and autoHideNavigation (unless the user has explicitly set these) + if (window.HTMLWidgets.viewerMode) { + if (!data.hasOwnProperty("fillContainer")) + data.fillContainer = true; + if (!data.hasOwnProperty("autoHideNavigation")) + data.autoHideNavigation = true; + } + + // propagate fillContainer to instance (so we have it in resize) + instance.fillContainer = data.fillContainer; + + var cells = data.data; + + if (cells instanceof Array) cells = transposeArray2D(cells); + + $el.append(data.container); + var $table = $el.find('table'); + if (data.class) $table.addClass(data.class); + if (data.caption) $table.prepend(data.caption); + + if (!data.selection) data.selection = { + mode: 'none', selected: null, target: 'row', selectable: null + }; + if (HTMLWidgets.shinyMode && data.selection.mode !== 'none' && + data.selection.target === 'row+column') { + if ($table.children('tfoot').length === 0) { + $table.append($('')); + $table.find('thead tr').clone().appendTo($table.find('tfoot')); + } + } + + // column filters + var filterRow; + switch (data.filter) { + case 'top': + $table.children('thead').append(data.filterHTML); + filterRow = $table.find('thead tr:last td'); + break; + case 'bottom': + if ($table.children('tfoot').length === 0) { + $table.append($('')); + } + $table.children('tfoot').prepend(data.filterHTML); + filterRow = $table.find('tfoot tr:first td'); + break; + } + + var options = { searchDelay: 1000 }; + if (cells !== null) $.extend(options, { + data: cells + }); + + // options for fillContainer + var bootstrapActive = typeof($.fn.popover) != 'undefined'; + if (instance.fillContainer) { + + // force scrollX/scrollY and turn off autoWidth + options.scrollX = true; + options.scrollY = "100px"; // can be any value, we'll adjust below + + // if we aren't paginating then move around the info/filter controls + // to save space at the bottom and rephrase the info callback + if (data.options.paging === false) { + + // we know how to do this cleanly for bootstrap, not so much + // for other themes/layouts + if (bootstrapActive) { + options.dom = "<'row'<'col-sm-4'i><'col-sm-8'f>>" + + "<'row'<'col-sm-12'tr>>"; + } + + options.fnInfoCallback = function(oSettings, iStart, iEnd, + iMax, iTotal, sPre) { + return Number(iTotal).toLocaleString() + " records"; + }; + } + } + + // auto hide navigation if requested + // Note, this only works on client-side processing mode as on server-side, + // cells (data.data) is null; In addition, we require the pageLength option + // being provided explicitly to enable this. Despite we may be able to deduce + // the default value of pageLength, it may complicate things so we'd rather + // put this responsiblity to users and warn them on the R side. + if (data.autoHideNavigation === true && data.options.paging !== false) { + // strip all nav if length >= cells + if ((cells instanceof Array) && data.options.pageLength >= cells.length) + options.dom = bootstrapActive ? "<'row'<'col-sm-12'tr>>" : "t"; + // alternatively lean things out for flexdashboard mobile portrait + else if (bootstrapActive && window.FlexDashboard && window.FlexDashboard.isMobilePhone()) + options.dom = "<'row'<'col-sm-12'f>>" + + "<'row'<'col-sm-12'tr>>" + + "<'row'<'col-sm-12'p>>"; + } + + $.extend(true, options, data.options || {}); + + var searchCols = options.searchCols; + if (searchCols) { + searchCols = searchCols.map(function(x) { + return x === null ? '' : x.search; + }); + // FIXME: this means I don't respect the escapeRegex setting + delete options.searchCols; + } + + // server-side processing? + var server = options.serverSide === true; + + // use the dataSrc function to pre-process JSON data returned from R + var DT_rows_all = [], DT_rows_current = []; + if (server && HTMLWidgets.shinyMode && typeof options.ajax === 'object' && + /^session\/[\da-z]+\/dataobj/.test(options.ajax.url) && !options.ajax.dataSrc) { + options.ajax.dataSrc = function(json) { + DT_rows_all = $.makeArray(json.DT_rows_all); + DT_rows_current = $.makeArray(json.DT_rows_current); + var data = json.data; + if (!colReorderEnabled()) return data; + var table = $table.DataTable(), order = table.colReorder.order(), flag = true, i, j, row; + for (i = 0; i < order.length; ++i) if (order[i] !== i) flag = false; + if (flag) return data; + for (i = 0; i < data.length; ++i) { + row = data[i].slice(); + for (j = 0; j < order.length; ++j) data[i][j] = row[order[j]]; + } + return data; + }; + } + + var thiz = this; + if (instance.fillContainer) $table.on('init.dt', function(e) { + thiz.fillAvailableHeight(el, $(el).innerHeight()); + }); + // If the page contains serveral datatables and one of which enables colReorder, + // the table.colReorder.order() function will exist but throws error when called. + // So it seems like the only way to know if colReorder is enabled or not is to + // check the options. + var colReorderEnabled = function() { return "colReorder" in options; }; + var table = $table.DataTable(options); + $el.data('datatable', table); + + if ('rowGroup' in options) { + // Maintain RowGroup dataSrc when columns are reordered (#1109) + table.on('column-reorder', function(e, settings, details) { + var oldDataSrc = table.rowGroup().dataSrc(); + var newDataSrc = details.mapping[oldDataSrc]; + table.rowGroup().dataSrc(newDataSrc); + }); + } + + // Unregister previous Crosstalk event subscriptions, if they exist + if (instance.ctfilterSubscription) { + instance.ctfilterHandle.off("change", instance.ctfilterSubscription); + instance.ctfilterSubscription = null; + } + if (instance.ctselectSubscription) { + instance.ctselectHandle.off("change", instance.ctselectSubscription); + instance.ctselectSubscription = null; + } + + if (!crosstalkOptions.group) { + $table[0].ctfilter = null; + $table[0].ctselect = null; + } else { + var key = crosstalkOptions.key; + function keysToMatches(keys) { + if (!keys) { + return null; + } else { + var selectedKeys = {}; + for (var i = 0; i < keys.length; i++) { + selectedKeys[keys[i]] = true; + } + var matches = {}; + for (var j = 0; j < key.length; j++) { + if (selectedKeys[key[j]]) + matches[j] = true; + } + return matches; + } + } + + function applyCrosstalkFilter(e) { + $table[0].ctfilter = keysToMatches(e.value); + table.draw(); + } + instance.ctfilterSubscription = instance.ctfilterHandle.on("change", applyCrosstalkFilter); + applyCrosstalkFilter({value: instance.ctfilterHandle.filteredKeys}); + + function applyCrosstalkSelection(e) { + if (e.sender !== instance.ctselectHandle) { + table + .rows('.' + selClass, {search: 'applied'}) + .nodes() + .to$() + .removeClass(selClass); + if (selectedRows) + changeInput('rows_selected', selectedRows(), void 0, true); + } + + if (e.sender !== instance.ctselectHandle && e.value && e.value.length) { + var matches = keysToMatches(e.value); + + // persistent selection with plotly (& leaflet) + var ctOpts = crosstalk.var("plotlyCrosstalkOpts").get() || {}; + if (ctOpts.persistent === true) { + var matches = $.extend(matches, $table[0].ctselect); + } + + $table[0].ctselect = matches; + table.draw(); + } else { + if ($table[0].ctselect) { + $table[0].ctselect = null; + table.draw(); + } + } + } + instance.ctselectSubscription = instance.ctselectHandle.on("change", applyCrosstalkSelection); + // TODO: This next line doesn't seem to work when renderDataTable is used + applyCrosstalkSelection({value: instance.ctselectHandle.value}); + } + + var inArray = function(val, array) { + return $.inArray(val, $.makeArray(array)) > -1; + }; + + // search the i-th column + var searchColumn = function(i, value) { + var regex = false, ci = true; + if (options.search) { + regex = options.search.regex, + ci = options.search.caseInsensitive !== false; + } + // need to transpose the column index when colReorder is enabled + if (table.colReorder) i = table.colReorder.transpose(i); + return table.column(i).search(value, regex, !regex, ci); + }; + + if (data.filter !== 'none') { + if (!data.hasOwnProperty('filterSettings')) data.filterSettings = {}; + + filterRow.each(function(i, td) { + + var $td = $(td), type = $td.data('type'), filter; + var $input = $td.children('div').first().children('input'); + var disabled = $input.prop('disabled'); + var searchable = table.settings()[0].aoColumns[i].bSearchable; + $input.prop('disabled', !searchable || disabled); + $input.data('searchable', searchable); // for updating later + $input.on('input blur', function() { + $input.next('span').toggle(Boolean($input.val())); + }); + // Bootstrap sets pointer-events to none and we won't be able to click + // the clear button + $input.next('span').css('pointer-events', 'auto').hide().click(function() { + $(this).hide().prev('input').val('').trigger('input').focus(); + }); + var searchCol; // search string for this column + if (searchCols && searchCols[i]) { + searchCol = searchCols[i]; + $input.val(searchCol).trigger('input'); + } + var $x = $td.children('div').last(); + + // remove the overflow: hidden attribute of the scrollHead + // (otherwise the scrolling table body obscures the filters) + // The workaround and the discussion from + // https://github.com/rstudio/DT/issues/554#issuecomment-518007347 + // Otherwise the filter selection will not be anchored to the values + // when the columns number is many and scrollX is enabled. + var scrollHead = $(el).find('.dataTables_scrollHead,.dataTables_scrollFoot'); + var cssOverflowHead = scrollHead.css('overflow'); + var scrollBody = $(el).find('.dataTables_scrollBody'); + var cssOverflowBody = scrollBody.css('overflow'); + var scrollTable = $(el).find('.dataTables_scroll'); + var cssOverflowTable = scrollTable.css('overflow'); + if (cssOverflowHead === 'hidden') { + $x.on('show hide', function(e) { + if (e.type === 'show') { + scrollHead.css('overflow', 'visible'); + scrollBody.css('overflow', 'visible'); + scrollTable.css('overflow-x', 'scroll'); + } else { + scrollHead.css('overflow', cssOverflowHead); + scrollBody.css('overflow', cssOverflowBody); + scrollTable.css('overflow-x', cssOverflowTable); + } + }); + $x.css('z-index', 25); + } + + if (inArray(type, ['factor', 'logical'])) { + $input.on({ + click: function() { + $input.parent().hide(); $x.show().trigger('show'); filter[0].selectize.focus(); + }, + input: function() { + var v1 = JSON.stringify(filter[0].selectize.getValue()), v2 = $input.val(); + if (v1 === '[]') v1 = ''; + if (v1 !== v2) filter[0].selectize.setValue(v2 === '' ? [] : JSON.parse(v2)); + } + }); + var $input2 = $x.children('select'); + filter = $input2.selectize($.extend({ + options: $input2.data('options').map(function(v, i) { + return ({text: v, value: v}); + }), + plugins: ['remove_button'], + hideSelected: true, + onChange: function(value) { + if (value === null) value = []; // compatibility with jQuery 3.0 + $input.val(value.length ? JSON.stringify(value) : ''); + if (value.length) $input.trigger('input'); + $input.attr('title', $input.val()); + if (server) { + searchColumn(i, value.length ? JSON.stringify(value) : '').draw(); + return; + } + // turn off filter if nothing selected + $td.data('filter', value.length > 0); + table.draw(); // redraw table, and filters will be applied + } + }, data.filterSettings.select)); + filter[0].selectize.on('blur', function() { + $x.hide().trigger('hide'); $input.parent().show(); $input.trigger('blur'); + }); + filter.next('div').css('margin-bottom', 'auto'); + } else if (type === 'character') { + var fun = function() { + searchColumn(i, $input.val()).draw(); + }; + // throttle searching for server-side processing + var throttledFun = $.fn.dataTable.util.throttle(fun, options.searchDelay); + $input.on('input', function(e, immediate) { + // always bypass throttling when immediate = true (via the updateSearch method) + (immediate || !server) ? fun() : throttledFun(); + }); + } else if (inArray(type, ['number', 'integer', 'date', 'time'])) { + var $x0 = $x; + $x = $x0.children('div').first(); + $x0.css({ + 'background-color': '#fff', + 'border': '1px #ddd solid', + 'border-radius': '4px', + 'padding': data.vertical ? '35px 20px': '20px 20px 10px 20px' + }); + var $spans = $x0.children('span').css({ + 'margin-top': data.vertical ? '0' : '10px', + 'white-space': 'nowrap' + }); + var $span1 = $spans.first(), $span2 = $spans.last(); + var r1 = +$x.data('min'), r2 = +$x.data('max'); + // when the numbers are too small or have many decimal places, the + // slider may have numeric precision problems (#150) + var scale = Math.pow(10, Math.max(0, +$x.data('scale') || 0)); + r1 = Math.round(r1 * scale); r2 = Math.round(r2 * scale); + var scaleBack = function(x, scale) { + if (scale === 1) return x; + var d = Math.round(Math.log(scale) / Math.log(10)); + // to avoid problems like 3.423/100 -> 0.034230000000000003 + return (x / scale).toFixed(d); + }; + var slider_min = function() { + return filter.noUiSlider('options').range.min; + }; + var slider_max = function() { + return filter.noUiSlider('options').range.max; + }; + $input.on({ + focus: function() { + $x0.show().trigger('show'); + // first, make sure the slider div leaves at least 20px between + // the two (slider value) span's + $x0.width(Math.max(160, $span1.outerWidth() + $span2.outerWidth() + 20)); + // then, if the input is really wide or slider is vertical, + // make the slider the same width as the input + if ($x0.outerWidth() < $input.outerWidth() || data.vertical) { + $x0.outerWidth($input.outerWidth()); + } + // make sure the slider div does not reach beyond the right margin + if ($(window).width() < $x0.offset().left + $x0.width()) { + $x0.offset({ + 'left': $input.offset().left + $input.outerWidth() - $x0.outerWidth() + }); + } + }, + blur: function() { + $x0.hide().trigger('hide'); + }, + input: function() { + if ($input.val() === '') filter.val([slider_min(), slider_max()]); + }, + change: function() { + var v = $input.val().replace(/\s/g, ''); + if (v === '') return; + v = v.split('...'); + if (v.length !== 2) { + $input.parent().addClass('has-error'); + return; + } + if (v[0] === '') v[0] = slider_min(); + if (v[1] === '') v[1] = slider_max(); + $input.parent().removeClass('has-error'); + // treat date as UTC time at midnight + var strTime = function(x) { + var s = type === 'date' ? 'T00:00:00Z' : ''; + var t = new Date(x + s).getTime(); + // add 10 minutes to date since it does not hurt the date, and + // it helps avoid the tricky floating point arithmetic problems, + // e.g. sometimes the date may be a few milliseconds earlier + // than the midnight due to precision problems in noUiSlider + return type === 'date' ? t + 3600000 : t; + }; + if (inArray(type, ['date', 'time'])) { + v[0] = strTime(v[0]); + v[1] = strTime(v[1]); + } + if (v[0] != slider_min()) v[0] *= scale; + if (v[1] != slider_max()) v[1] *= scale; + filter.val(v); + } + }); + var formatDate = function(d) { + d = scaleBack(d, scale); + if (type === 'number') return d; + if (type === 'integer') return parseInt(d); + var x = new Date(+d); + if (type === 'date') { + var pad0 = function(x) { + return ('0' + x).substr(-2, 2); + }; + return x.getUTCFullYear() + '-' + pad0(1 + x.getUTCMonth()) + + '-' + pad0(x.getUTCDate()); + } else { + return x.toISOString(); + } + }; + var opts = type === 'date' ? { step: 60 * 60 * 1000 } : + type === 'integer' ? { step: 1 } : {}; + + opts.orientation = data.vertical ? 'vertical': 'horizontal'; + opts.direction = data.vertical ? 'rtl': 'ltr'; + + filter = $x.noUiSlider($.extend({ + start: [r1, r2], + range: {min: r1, max: r2}, + connect: true + }, opts, data.filterSettings.slider)); + if (scale > 1) (function() { + var t1 = r1, t2 = r2; + var val = filter.val(); + while (val[0] > r1 || val[1] < r2) { + if (val[0] > r1) { + t1 -= val[0] - r1; + } + if (val[1] < r2) { + t2 += r2 - val[1]; + } + filter = $x.noUiSlider($.extend({ + start: [t1, t2], + range: {min: t1, max: t2}, + connect: true + }, opts, data.filterSettings.slider), true); + val = filter.val(); + } + r1 = t1; r2 = t2; + })(); + // format with active column renderer, if defined + var colDef = data.options.columnDefs.find(function(def) { + return (def.targets === i || inArray(i, def.targets)) && 'render' in def; + }); + var updateSliderText = function(v1, v2) { + // we only know how to use function renderers + if (colDef && typeof colDef.render === 'function') { + var restore = function(v) { + v = scaleBack(v, scale); + return inArray(type, ['date', 'time']) ? new Date(+v) : v; + } + $span1.text(colDef.render(restore(v1), 'display')); + $span2.text(colDef.render(restore(v2), 'display')); + } else { + $span1.text(formatDate(v1)); + $span2.text(formatDate(v2)); + } + }; + updateSliderText(r1, r2); + var updateSlider = function(e) { + var val = filter.val(); + // turn off filter if in full range + $td.data('filter', val[0] > slider_min() || val[1] < slider_max()); + var v1 = formatDate(val[0]), v2 = formatDate(val[1]), ival; + if ($td.data('filter')) { + ival = v1 + ' ... ' + v2; + $input.attr('title', ival).val(ival).trigger('input'); + } else { + $input.attr('title', '').val(''); + } + updateSliderText(val[0], val[1]); + if (e.type === 'slide') return; // no searching when sliding only + if (server) { + searchColumn(i, $td.data('filter') ? ival : '').draw(); + return; + } + table.draw(); + }; + filter.on({ + set: updateSlider, + slide: updateSlider + }); + } + + // server-side processing will be handled by R (or whatever server + // language you use); the following code is only needed for client-side + // processing + if (server) { + // if a search string has been pre-set, search now + if (searchCol) $input.trigger('input').trigger('change'); + return; + } + + var customFilter = function(settings, data, dataIndex) { + // there is no way to attach a search function to a specific table, + // and we need to make sure a global search function is not applied to + // all tables (i.e. a range filter in a previous table should not be + // applied to the current table); we use the settings object to + // determine if we want to perform searching on the current table, + // since settings.sTableId will be different to different tables + if (table.settings()[0] !== settings) return true; + // no filter on this column or no need to filter this column + if (typeof filter === 'undefined' || !$td.data('filter')) return true; + + var r = filter.val(), v, r0, r1; + var i_data = function(i) { + if (!colReorderEnabled()) return i; + var order = table.colReorder.order(), k; + for (k = 0; k < order.length; ++k) if (order[k] === i) return k; + return i; // in theory it will never be here... + } + v = data[i_data(i)]; + if (type === 'number' || type === 'integer') { + v = parseFloat(v); + // how to handle NaN? currently exclude these rows + if (isNaN(v)) return(false); + r0 = parseFloat(scaleBack(r[0], scale)) + r1 = parseFloat(scaleBack(r[1], scale)); + if (v >= r0 && v <= r1) return true; + } else if (type === 'date' || type === 'time') { + v = new Date(v); + r0 = new Date(r[0] / scale); r1 = new Date(r[1] / scale); + if (v >= r0 && v <= r1) return true; + } else if (type === 'factor') { + if (r.length === 0 || inArray(v, r)) return true; + } else if (type === 'logical') { + if (r.length === 0) return true; + if (inArray(v === '' ? 'na' : v, r)) return true; + } + return false; + }; + + $.fn.dataTable.ext.search.push(customFilter); + + // search for the preset search strings if it is non-empty + if (searchCol) $input.trigger('input').trigger('change'); + + }); + + } + + // highlight search keywords + var highlight = function() { + var body = $(table.table().body()); + // removing the old highlighting first + body.unhighlight(); + + // don't highlight the "not found" row, so we get the rows using the api + if (table.rows({ filter: 'applied' }).data().length === 0) return; + // highlight global search keywords + body.highlight($.trim(table.search()).split(/\s+/)); + // then highlight keywords from individual column filters + if (filterRow) filterRow.each(function(i, td) { + var $td = $(td), type = $td.data('type'); + if (type !== 'character') return; + var $input = $td.children('div').first().children('input'); + var column = table.column(i).nodes().to$(), + val = $.trim($input.val()); + if (type !== 'character' || val === '') return; + column.highlight(val.split(/\s+/)); + }); + }; + + if (options.searchHighlight) { + table + .on('draw.dt.dth column-visibility.dt.dth column-reorder.dt.dth', highlight) + .on('destroy', function() { + // remove event handler + table.off('draw.dt.dth column-visibility.dt.dth column-reorder.dt.dth'); + }); + + // Set the option for escaping regex characters in our search string. This will be used + // for all future matching. + jQuery.fn.highlight.options.escapeRegex = (!options.search || !options.search.regex); + + // initial highlight for state saved conditions and initial states + highlight(); + } + + // run the callback function on the table instance + if (typeof data.callback === 'function') data.callback(table); + + // double click to edit the cell, row, column, or all cells + if (data.editable) table.on('dblclick.dt', 'tbody td', function(e) { + // only bring up the editor when the cell itself is dbclicked, and ignore + // other dbclick events bubbled up (e.g. from the ) + if (e.target !== this) return; + var target = [], immediate = false; + switch (data.editable.target) { + case 'cell': + target = [this]; + immediate = true; // edit will take effect immediately + break; + case 'row': + target = table.cells(table.cell(this).index().row, '*').nodes(); + break; + case 'column': + target = table.cells('*', table.cell(this).index().column).nodes(); + break; + case 'all': + target = table.cells().nodes(); + break; + default: + throw 'The editable parameter must be "cell", "row", "column", or "all"'; + } + var disableCols = data.editable.disable ? data.editable.disable.columns : null; + var numericCols = data.editable.numeric; + var areaCols = data.editable.area; + var dateCols = data.editable.date; + for (var i = 0; i < target.length; i++) { + (function(cell, current) { + var $cell = $(cell), html = $cell.html(); + var _cell = table.cell(cell), value = _cell.data(), index = _cell.index().column; + var $input; + if (inArray(index, numericCols)) { + $input = $(''); + } else if (inArray(index, areaCols)) { + $input = $(''); + } else if (inArray(index, dateCols)) { + $input = $(''); + } else { + $input = $(''); + } + if (!immediate) { + $cell.data('input', $input).data('html', html); + $input.attr('title', 'Hit Ctrl+Enter to finish editing, or Esc to cancel'); + } + $input.val(value); + if (inArray(index, disableCols)) { + $input.attr('readonly', '').css('filter', 'invert(25%)'); + } + $cell.empty().append($input); + if (cell === current) $input.focus(); + $input.css('width', '100%'); + + if (immediate) $input.on('blur', function(e) { + var valueNew = $input.val(); + if (valueNew !== value) { + _cell.data(valueNew); + if (HTMLWidgets.shinyMode) { + changeInput('cell_edit', [cellInfo(cell)], 'DT.cellInfo', null, {priority: 'event'}); + } + // for server-side processing, users have to call replaceData() to update the table + if (!server) table.draw(false); + } else { + $cell.html(html); + } + }).on('keyup', function(e) { + // hit Escape to cancel editing + if (e.keyCode === 27) $input.trigger('blur'); + }); + + // bulk edit (row, column, or all) + if (!immediate) $input.on('keyup', function(e) { + var removeInput = function($cell, restore) { + $cell.data('input').remove(); + if (restore) $cell.html($cell.data('html')); + } + if (e.keyCode === 27) { + for (var i = 0; i < target.length; i++) { + removeInput($(target[i]), true); + } + } else if (e.keyCode === 13 && e.ctrlKey) { + // Ctrl + Enter + var cell, $cell, _cell, cellData = []; + for (var i = 0; i < target.length; i++) { + cell = target[i]; $cell = $(cell); _cell = table.cell(cell); + _cell.data($cell.data('input').val()); + HTMLWidgets.shinyMode && cellData.push(cellInfo(cell)); + removeInput($cell, false); + } + if (HTMLWidgets.shinyMode) { + changeInput('cell_edit', cellData, 'DT.cellInfo', null, {priority: "event"}); + } + if (!server) table.draw(false); + } + }); + })(target[i], this); + } + }); + + // interaction with shiny + if (!HTMLWidgets.shinyMode && !crosstalkOptions.group) return; + + var methods = {}; + var shinyData = {}; + + methods.updateCaption = function(caption) { + if (!caption) return; + $table.children('caption').replaceWith(caption); + } + + // register clear functions to remove input values when the table is removed + instance.clearInputs = {}; + + var changeInput = function(id, value, type, noCrosstalk, opts) { + var event = id; + id = el.id + '_' + id; + if (type) id = id + ':' + type; + // do not update if the new value is the same as old value + if (event !== 'cell_edit' && !/_clicked$/.test(event) && shinyData.hasOwnProperty(id) && shinyData[id] === JSON.stringify(value)) + return; + shinyData[id] = JSON.stringify(value); + if (HTMLWidgets.shinyMode && Shiny.setInputValue) { + Shiny.setInputValue(id, value, opts); + if (!instance.clearInputs[id]) instance.clearInputs[id] = function() { + Shiny.setInputValue(id, null); + } + } + + // HACK + if (event === "rows_selected" && !noCrosstalk) { + if (crosstalkOptions.group) { + var keys = crosstalkOptions.key; + var selectedKeys = null; + if (value) { + selectedKeys = []; + for (var i = 0; i < value.length; i++) { + // The value array's contents use 1-based row numbers, so we must + // convert to 0-based before indexing into the keys array. + selectedKeys.push(keys[value[i] - 1]); + } + } + instance.ctselectHandle.set(selectedKeys); + } + } + }; + + var addOne = function(x) { + return x.map(function(i) { return 1 + i; }); + }; + + var unique = function(x) { + var ux = []; + $.each(x, function(i, el){ + if ($.inArray(el, ux) === -1) ux.push(el); + }); + return ux; + } + + // change the row index of a cell + var tweakCellIndex = function(cell) { + var info = cell.index(); + // some cell may not be valid. e.g, #759 + // when using the RowGroup extension, datatables will + // generate the row label and the cells are not part of + // the data thus contain no row/col info + if (info === undefined) + return {row: null, col: null}; + if (server) { + info.row = DT_rows_current[info.row]; + } else { + info.row += 1; + } + return {row: info.row, col: info.column}; + } + + var cleanSelectedValues = function() { + changeInput('rows_selected', []); + changeInput('columns_selected', []); + changeInput('cells_selected', transposeArray2D([]), 'shiny.matrix'); + } + // #828 we should clean the selection on the server-side when the table reloads + cleanSelectedValues(); + + // a flag to indicates if select extension is initialized or not + var flagSelectExt = table.settings()[0]._select !== undefined; + // the Select extension should only be used in the client mode and + // when the selection.mode is set to none + if (data.selection.mode === 'none' && !server && flagSelectExt) { + var updateRowsSelected = function() { + var rows = table.rows({selected: true}); + var selected = []; + $.each(rows.indexes().toArray(), function(i, v) { + selected.push(v + 1); + }); + changeInput('rows_selected', selected); + } + var updateColsSelected = function() { + var columns = table.columns({selected: true}); + changeInput('columns_selected', columns.indexes().toArray()); + } + var updateCellsSelected = function() { + var cells = table.cells({selected: true}); + var selected = []; + cells.every(function() { + var row = this.index().row; + var col = this.index().column; + selected = selected.concat([[row + 1, col]]); + }); + changeInput('cells_selected', transposeArray2D(selected), 'shiny.matrix'); + } + table.on('select deselect', function(e, dt, type, indexes) { + updateRowsSelected(); + updateColsSelected(); + updateCellsSelected(); + }) + updateRowsSelected(); + updateColsSelected(); + updateCellsSelected(); + } + + var selMode = data.selection.mode, selTarget = data.selection.target; + var selDisable = data.selection.selectable === false; + if (inArray(selMode, ['single', 'multiple'])) { + var selClass = inArray(data.style, ['bootstrap', 'bootstrap4']) ? 'active' : 'selected'; + // selected1: row indices; selected2: column indices + var initSel = function(x) { + if (x === null || typeof x === 'boolean' || selTarget === 'cell') { + return {rows: [], cols: []}; + } else if (selTarget === 'row') { + return {rows: $.makeArray(x), cols: []}; + } else if (selTarget === 'column') { + return {rows: [], cols: $.makeArray(x)}; + } else if (selTarget === 'row+column') { + return {rows: $.makeArray(x.rows), cols: $.makeArray(x.cols)}; + } + } + var selected = data.selection.selected; + var selected1 = initSel(selected).rows, selected2 = initSel(selected).cols; + // selectable should contain either all positive or all non-positive values, not both + // positive values indicate "selectable" while non-positive values means "nonselectable" + // the assertion is performed on R side. (only column indicides could be zero which indicates + // the row name) + var selectable = data.selection.selectable; + var selectable1 = initSel(selectable).rows, selectable2 = initSel(selectable).cols; + + // After users reorder the rows or filter the table, we cannot use the table index + // directly. Instead, we need this function to find out the rows between the two clicks. + // If user filter the table again between the start click and the end click, the behavior + // would be undefined, but it should not be a problem. + var shiftSelRowsIndex = function(start, end) { + var indexes = server ? DT_rows_all : table.rows({ search: 'applied' }).indexes().toArray(); + start = indexes.indexOf(start); end = indexes.indexOf(end); + // if start is larger than end, we need to swap + if (start > end) { + var tmp = end; end = start; start = tmp; + } + return indexes.slice(start, end + 1); + } + + var serverRowIndex = function(clientRowIndex) { + return server ? DT_rows_current[clientRowIndex] : clientRowIndex + 1; + } + + // row, column, or cell selection + var lastClickedRow; + if (inArray(selTarget, ['row', 'row+column'])) { + // Get the current selected rows. It will also + // update the selected1's value based on the current row selection state + // Note we can't put this function inside selectRows() directly, + // the reason is method.selectRows() will override selected1's value but this + // function will add rows to selected1 (keep the existing selection), which is + // inconsistent with column and cell selection. + var selectedRows = function() { + var rows = table.rows('.' + selClass); + var idx = rows.indexes().toArray(); + if (!server) { + selected1 = addOne(idx); + return selected1; + } + idx = idx.map(function(i) { + return DT_rows_current[i]; + }); + selected1 = selMode === 'multiple' ? unique(selected1.concat(idx)) : idx; + return selected1; + } + // Change selected1's value based on selectable1, then refresh the row state + var onlyKeepSelectableRows = function() { + if (selDisable) { // users can't select; useful when only want backend select + selected1 = []; + return; + } + if (selectable1.length === 0) return; + var nonselectable = selectable1[0] <= 0; + if (nonselectable) { + // should make selectable1 positive + selected1 = $(selected1).not(selectable1.map(function(i) { return -i; })).get(); + } else { + selected1 = $(selected1).filter(selectable1).get(); + } + } + // Change selected1's value based on selectable1, then + // refresh the row selection state according to values in selected1 + var selectRows = function(ignoreSelectable) { + if (!ignoreSelectable) onlyKeepSelectableRows(); + table.$('tr.' + selClass).removeClass(selClass); + if (selected1.length === 0) return; + if (server) { + table.rows({page: 'current'}).every(function() { + if (inArray(DT_rows_current[this.index()], selected1)) { + $(this.node()).addClass(selClass); + } + }); + } else { + var selected0 = selected1.map(function(i) { return i - 1; }); + $(table.rows(selected0).nodes()).addClass(selClass); + } + } + table.on('mousedown.dt', 'tbody tr', function(e) { + var $this = $(this), thisRow = table.row(this); + if (selMode === 'multiple') { + if (e.shiftKey && lastClickedRow !== undefined) { + // select or de-select depends on the last clicked row's status + var flagSel = !$this.hasClass(selClass); + var crtClickedRow = serverRowIndex(thisRow.index()); + if (server) { + var rowsIndex = shiftSelRowsIndex(lastClickedRow, crtClickedRow); + // update current page's selClass + rowsIndex.map(function(i) { + var rowIndex = DT_rows_current.indexOf(i); + if (rowIndex >= 0) { + var row = table.row(rowIndex).nodes().to$(); + var flagRowSel = !row.hasClass(selClass); + if (flagSel === flagRowSel) row.toggleClass(selClass); + } + }); + // update selected1 + if (flagSel) { + selected1 = unique(selected1.concat(rowsIndex)); + } else { + selected1 = selected1.filter(function(index) { + return !inArray(index, rowsIndex); + }); + } + } else { + // js starts from 0 + shiftSelRowsIndex(lastClickedRow - 1, crtClickedRow - 1).map(function(value) { + var row = table.row(value).nodes().to$(); + var flagRowSel = !row.hasClass(selClass); + if (flagSel === flagRowSel) row.toggleClass(selClass); + }); + } + e.preventDefault(); + } else { + $this.toggleClass(selClass); + } + } else { + if ($this.hasClass(selClass)) { + $this.removeClass(selClass); + } else { + table.$('tr.' + selClass).removeClass(selClass); + $this.addClass(selClass); + } + } + if (server && !$this.hasClass(selClass)) { + var id = DT_rows_current[thisRow.index()]; + // remove id from selected1 since its class .selected has been removed + if (inArray(id, selected1)) selected1.splice($.inArray(id, selected1), 1); + } + selectedRows(); // update selected1's value based on selClass + selectRows(false); // only keep the selectable rows + changeInput('rows_selected', selected1); + changeInput('row_last_clicked', serverRowIndex(thisRow.index()), null, null, {priority: 'event'}); + lastClickedRow = serverRowIndex(thisRow.index()); + }); + selectRows(false); // in case users have specified pre-selected rows + // restore selected rows after the table is redrawn (e.g. sort/search/page); + // client-side tables will preserve the selections automatically; for + // server-side tables, we have to *real* row indices are in `selected1` + changeInput('rows_selected', selected1); + if (server) table.on('draw.dt', function(e) { selectRows(false); }); + methods.selectRows = function(selected, ignoreSelectable) { + selected1 = $.makeArray(selected); + selectRows(ignoreSelectable); + changeInput('rows_selected', selected1); + } + } + + if (inArray(selTarget, ['column', 'row+column'])) { + if (selTarget === 'row+column') { + $(table.columns().footer()).css('cursor', 'pointer'); + } + // update selected2's value based on selectable2 + var onlyKeepSelectableCols = function() { + if (selDisable) { // users can't select; useful when only want backend select + selected2 = []; + return; + } + if (selectable2.length === 0) return; + var nonselectable = selectable2[0] <= 0; + if (nonselectable) { + // need to make selectable2 positive + selected2 = $(selected2).not(selectable2.map(function(i) { return -i; })).get(); + } else { + selected2 = $(selected2).filter(selectable2).get(); + } + } + // update selected2 and then + // refresh the col selection state according to values in selected2 + var selectCols = function(ignoreSelectable) { + if (!ignoreSelectable) onlyKeepSelectableCols(); + // if selected2 is not a valide index (e.g., larger than the column number) + // table.columns(selected2) will fail and result in a blank table + // this is different from the table.rows(), where the out-of-range indexes + // doesn't affect at all + selected2 = $(selected2).filter(table.columns().indexes()).get(); + table.columns().nodes().flatten().to$().removeClass(selClass); + if (selected2.length > 0) + table.columns(selected2).nodes().flatten().to$().addClass(selClass); + } + var callback = function() { + var colIdx = selTarget === 'column' ? table.cell(this).index().column : + $.inArray(this, table.columns().footer()), + thisCol = $(table.column(colIdx).nodes()); + if (colIdx === -1) return; + if (thisCol.hasClass(selClass)) { + thisCol.removeClass(selClass); + selected2.splice($.inArray(colIdx, selected2), 1); + } else { + if (selMode === 'single') $(table.cells().nodes()).removeClass(selClass); + thisCol.addClass(selClass); + selected2 = selMode === 'single' ? [colIdx] : unique(selected2.concat([colIdx])); + } + selectCols(false); // update selected2 based on selectable + changeInput('columns_selected', selected2); + } + if (selTarget === 'column') { + $(table.table().body()).on('click.dt', 'td', callback); + } else { + $(table.table().footer()).on('click.dt', 'tr th', callback); + } + selectCols(false); // in case users have specified pre-selected columns + changeInput('columns_selected', selected2); + if (server) table.on('draw.dt', function(e) { selectCols(false); }); + methods.selectColumns = function(selected, ignoreSelectable) { + selected2 = $.makeArray(selected); + selectCols(ignoreSelectable); + changeInput('columns_selected', selected2); + } + } + + if (selTarget === 'cell') { + var selected3 = [], selectable3 = []; + if (selected !== null) selected3 = selected; + if (selectable !== null && typeof selectable !== 'boolean') selectable3 = selectable; + var findIndex = function(ij, sel) { + for (var i = 0; i < sel.length; i++) { + if (ij[0] === sel[i][0] && ij[1] === sel[i][1]) return i; + } + return -1; + } + // Change selected3's value based on selectable3, then refresh the cell state + var onlyKeepSelectableCells = function() { + if (selDisable) { // users can't select; useful when only want backend select + selected3 = []; + return; + } + if (selectable3.length === 0) return; + var nonselectable = selectable3[0][0] <= 0; + var out = []; + if (nonselectable) { + selected3.map(function(ij) { + // should make selectable3 positive + if (findIndex([-ij[0], -ij[1]], selectable3) === -1) { out.push(ij); } + }); + } else { + selected3.map(function(ij) { + if (findIndex(ij, selectable3) > -1) { out.push(ij); } + }); + } + selected3 = out; + } + // Change selected3's value based on selectable3, then + // refresh the cell selection state according to values in selected3 + var selectCells = function(ignoreSelectable) { + if (!ignoreSelectable) onlyKeepSelectableCells(); + table.$('td.' + selClass).removeClass(selClass); + if (selected3.length === 0) return; + if (server) { + table.cells({page: 'current'}).every(function() { + var info = tweakCellIndex(this); + if (findIndex([info.row, info.col], selected3) > -1) + $(this.node()).addClass(selClass); + }); + } else { + selected3.map(function(ij) { + $(table.cell(ij[0] - 1, ij[1]).node()).addClass(selClass); + }); + } + }; + table.on('click.dt', 'tbody td', function() { + var $this = $(this), info = tweakCellIndex(table.cell(this)); + if ($this.hasClass(selClass)) { + $this.removeClass(selClass); + selected3.splice(findIndex([info.row, info.col], selected3), 1); + } else { + if (selMode === 'single') $(table.cells().nodes()).removeClass(selClass); + $this.addClass(selClass); + selected3 = selMode === 'single' ? [[info.row, info.col]] : + unique(selected3.concat([[info.row, info.col]])); + } + selectCells(false); // must call this to update selected3 based on selectable3 + changeInput('cells_selected', transposeArray2D(selected3), 'shiny.matrix'); + }); + selectCells(false); // in case users have specified pre-selected columns + changeInput('cells_selected', transposeArray2D(selected3), 'shiny.matrix'); + + if (server) table.on('draw.dt', function(e) { selectCells(false); }); + methods.selectCells = function(selected, ignoreSelectable) { + selected3 = selected ? selected : []; + selectCells(ignoreSelectable); + changeInput('cells_selected', transposeArray2D(selected3), 'shiny.matrix'); + } + } + } + + // expose some table info to Shiny + var updateTableInfo = function(e, settings) { + // TODO: is anyone interested in the page info? + // changeInput('page_info', table.page.info()); + var updateRowInfo = function(id, modifier) { + var idx; + if (server) { + idx = modifier.page === 'current' ? DT_rows_current : DT_rows_all; + } else { + var rows = table.rows($.extend({ + search: 'applied', + page: 'all' + }, modifier)); + idx = addOne(rows.indexes().toArray()); + } + changeInput('rows' + '_' + id, idx); + }; + updateRowInfo('current', {page: 'current'}); + updateRowInfo('all', {}); + } + table.on('draw.dt', updateTableInfo); + updateTableInfo(); + + // state info + table.on('draw.dt column-visibility.dt', function() { + changeInput('state', table.state()); + }); + changeInput('state', table.state()); + + // search info + var updateSearchInfo = function() { + changeInput('search', table.search()); + if (filterRow) changeInput('search_columns', filterRow.toArray().map(function(td) { + return $(td).find('input').first().val(); + })); + } + table.on('draw.dt', updateSearchInfo); + updateSearchInfo(); + + var cellInfo = function(thiz) { + var info = tweakCellIndex(table.cell(thiz)); + info.value = table.cell(thiz).data(); + return info; + } + // the current cell clicked on + table.on('click.dt', 'tbody td', function() { + changeInput('cell_clicked', cellInfo(this), null, null, {priority: 'event'}); + }) + changeInput('cell_clicked', {}); + + // do not trigger table selection when clicking on links unless they have classes + table.on('mousedown.dt', 'tbody td a', function(e) { + if (this.className === '') e.stopPropagation(); + }); + + methods.addRow = function(data, rowname, resetPaging) { + var n = table.columns().indexes().length, d = n - data.length; + if (d === 1) { + data = rowname.concat(data) + } else if (d !== 0) { + console.log(data); + console.log(table.columns().indexes()); + throw 'New data must be of the same length as current data (' + n + ')'; + }; + table.row.add(data).draw(resetPaging); + } + + methods.updateSearch = function(keywords) { + if (keywords.global !== null) + $(table.table().container()).find('input[type=search]').first() + .val(keywords.global).trigger('input'); + var columns = keywords.columns; + if (!filterRow || columns === null) return; + filterRow.toArray().map(function(td, i) { + var v = typeof columns === 'string' ? columns : columns[i]; + if (typeof v === 'undefined') { + console.log('The search keyword for column ' + i + ' is undefined') + return; + } + // Update column search string and values on linked filter widgets. + // 'input' for factor and char filters, 'change' for numeric filters. + $(td).find('input').first().val(v).trigger('input', [true]).trigger('change'); + }); + table.draw(); + } + + methods.hideCols = function(hide, reset) { + if (reset) table.columns().visible(true, false); + table.columns(hide).visible(false); + } + + methods.showCols = function(show, reset) { + if (reset) table.columns().visible(false, false); + table.columns(show).visible(true); + } + + methods.colReorder = function(order, origOrder) { + table.colReorder.order(order, origOrder); + } + + methods.selectPage = function(page) { + if (table.page.info().pages < page || page < 1) { + throw 'Selected page is out of range'; + }; + table.page(page - 1).draw(false); + } + + methods.reloadData = function(resetPaging, clearSelection) { + // empty selections first if necessary + if (methods.selectRows && inArray('row', clearSelection)) methods.selectRows([]); + if (methods.selectColumns && inArray('column', clearSelection)) methods.selectColumns([]); + if (methods.selectCells && inArray('cell', clearSelection)) methods.selectCells([]); + table.ajax.reload(null, resetPaging); + } + + // update table filters (set new limits of sliders) + methods.updateFilters = function(newProps) { + // loop through each filter in the filter row + filterRow.each(function(i, td) { + var k = i; + if (filterRow.length > newProps.length) { + if (i === 0) return; // first column is row names + k = i - 1; + } + // Update the filters to reflect the updated data. + // Allow "falsy" (e.g. NULL) to signify a no-op. + if (newProps[k]) { + setFilterProps(td, newProps[k]); + } + }); + }; + + table.shinyMethods = methods; + }, + resize: function(el, width, height, instance) { + if (instance.data) this.renderValue(el, instance.data, instance); + + // dynamically adjust height if fillContainer = TRUE + if (instance.fillContainer) + this.fillAvailableHeight(el, height); + + this.adjustWidth(el); + }, + + // dynamically set the scroll body to fill available height + // (used with fillContainer = TRUE) + fillAvailableHeight: function(el, availableHeight) { + + // see how much of the table is occupied by header/footer elements + // and use that to compute a target scroll body height + var dtWrapper = $(el).find('div.dataTables_wrapper'); + var dtScrollBody = $(el).find($('div.dataTables_scrollBody')); + var framingHeight = dtWrapper.innerHeight() - dtScrollBody.innerHeight(); + var scrollBodyHeight = availableHeight - framingHeight; + + // we need to set `max-height` to none as datatables library now sets this + // to a fixed height, disabling the ability to resize to fill the window, + // as it will be set to a fixed 100px under such circumstances, e.g., RStudio IDE, + // or FlexDashboard + // see https://github.com/rstudio/DT/issues/951#issuecomment-1026464509 + dtScrollBody.css('max-height', 'none'); + // set the height + dtScrollBody.height(scrollBodyHeight + 'px'); + }, + + // adjust the width of columns; remove the hard-coded widths on table and the + // scroll header when scrollX/Y are enabled + adjustWidth: function(el) { + var $el = $(el), table = $el.data('datatable'); + if (table) table.columns.adjust(); + $el.find('.dataTables_scrollHeadInner').css('width', '') + .children('table').css('margin-left', ''); + } +}); + + if (!HTMLWidgets.shinyMode) return; + + Shiny.addCustomMessageHandler('datatable-calls', function(data) { + var id = data.id; + var el = document.getElementById(id); + var table = el ? $(el).data('datatable') : null; + if (!table) { + console.log("Couldn't find table with id " + id); + return; + } + + var methods = table.shinyMethods, call = data.call; + if (methods[call.method]) { + methods[call.method].apply(table, call.args); + } else { + console.log("Unknown method " + call.method); + } + }); + +})(); diff --git a/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/datatables-css/datatables-crosstalk.css b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/datatables-css/datatables-crosstalk.css new file mode 100644 index 0000000..bd1159c --- /dev/null +++ b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/datatables-css/datatables-crosstalk.css @@ -0,0 +1,32 @@ +.dt-crosstalk-fade { + opacity: 0.2; +} + +html body div.DTS div.dataTables_scrollBody { + background: none; +} + + +/* +Fix https://github.com/rstudio/DT/issues/563 +If the `table.display` is set to "block" (e.g., pkgdown), the browser will display +datatable objects strangely. The search panel and the page buttons will still be +in full-width but the table body will be "compact" and shorter. +In therory, having this attributes will affect `dom="t"` +with `display: block` users. But in reality, there should be no one. +We may remove the below lines in the future if the upstream agree to have this there. +See https://github.com/DataTables/DataTablesSrc/issues/160 +*/ + +table.dataTable { + display: table; +} + + +/* +When DTOutput(fill = TRUE), it receives a .html-fill-item class (via htmltools::bindFillRole()), which effectively amounts to `flex: 1 1 auto`. That's mostly fine, but the case where `fillContainer=TRUE`+`height:auto`+`flex-basis:auto` and the container (e.g., a bslib::card()) doesn't have a defined height is a bit problematic since the table wants to fit the parent but the parent wants to fit the table, which results pretty small table height (maybe because there is a minimum height somewhere?). It seems better in this case to impose a 400px height default for the table, which we can do by setting `flex-basis` to 400px (the table is still allowed to grow/shrink when the container has an opinionated height). +*/ + +.html-fill-container > .html-fill-item.datatables { + flex-basis: 400px; +} diff --git a/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/dt-core/css/jquery.dataTables.extra.css b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/dt-core/css/jquery.dataTables.extra.css new file mode 100644 index 0000000..b2dd141 --- /dev/null +++ b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/dt-core/css/jquery.dataTables.extra.css @@ -0,0 +1,28 @@ +/* Selected rows/cells */ +table.dataTable tr.selected td, table.dataTable td.selected { + background-color: #b0bed9 !important; +} +/* In case of scrollX/Y or FixedHeader */ +.dataTables_scrollBody .dataTables_sizing { + visibility: hidden; +} + +/* The datatables' theme CSS file doesn't define +the color but with white background. It leads to an issue that +when the HTML's body color is set to 'white', the user can't +see the text since the background is white. One case happens in the +RStudio's IDE when inline viewing the DT table inside an Rmd file, +if the IDE theme is set to "Cobalt". + +See https://github.com/rstudio/DT/issues/447 for more info + +This fixes should have little side-effects because all the other elements +of the default theme use the #333 font color. + +TODO: The upstream may use relative colors for both the table background +and the color. It means the table can display well without this patch +then. At that time, we need to remove the below CSS attributes. +*/ +div.datatables { + color: #333; +} diff --git a/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/dt-core/css/jquery.dataTables.min.css b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/dt-core/css/jquery.dataTables.min.css new file mode 100644 index 0000000..ad59f84 --- /dev/null +++ b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/dt-core/css/jquery.dataTables.min.css @@ -0,0 +1 @@ +:root{--dt-row-selected: 13, 110, 253;--dt-row-selected-text: 255, 255, 255;--dt-row-selected-link: 9, 10, 11;--dt-row-stripe: 0, 0, 0;--dt-row-hover: 0, 0, 0;--dt-column-ordering: 0, 0, 0;--dt-html-background: white}:root.dark{--dt-html-background: rgb(33, 37, 41)}table.dataTable td.dt-control{text-align:center;cursor:pointer}table.dataTable td.dt-control:before{display:inline-block;color:rgba(0, 0, 0, 0.5);content:"►"}table.dataTable tr.dt-hasChild td.dt-control:before{content:"▼"}html.dark table.dataTable td.dt-control:before{color:rgba(255, 255, 255, 0.5)}html.dark table.dataTable tr.dt-hasChild td.dt-control:before{color:rgba(255, 255, 255, 0.5)}table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting_asc_disabled,table.dataTable thead>tr>th.sorting_desc_disabled,table.dataTable thead>tr>td.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting_asc_disabled,table.dataTable thead>tr>td.sorting_desc_disabled{cursor:pointer;position:relative;padding-right:26px}table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_desc_disabled:before,table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_desc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:after{position:absolute;display:block;opacity:.125;right:10px;line-height:9px;font-size:.8em}table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_desc_disabled:before,table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:before{bottom:50%;content:"▲";content:"▲"/""}table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_desc_disabled:after{top:50%;content:"▼";content:"▼"/""}table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_desc:after{opacity:.6}table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting_asc_disabled:before{display:none}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}div.dataTables_scrollBody>table.dataTable>thead>tr>th:before,div.dataTables_scrollBody>table.dataTable>thead>tr>th:after,div.dataTables_scrollBody>table.dataTable>thead>tr>td:before,div.dataTables_scrollBody>table.dataTable>thead>tr>td:after{display:none}div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:2px}div.dataTables_processing>div:last-child{position:relative;width:80px;height:15px;margin:1em auto}div.dataTables_processing>div:last-child>div{position:absolute;top:0;width:13px;height:13px;border-radius:50%;background:rgb(13, 110, 253);background:rgb(var(--dt-row-selected));animation-timing-function:cubic-bezier(0, 1, 1, 0)}div.dataTables_processing>div:last-child>div:nth-child(1){left:8px;animation:datatables-loader-1 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(2){left:8px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(3){left:32px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(4){left:56px;animation:datatables-loader-3 .6s infinite}@keyframes datatables-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes datatables-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes datatables-loader-2{0%{transform:translate(0, 0)}100%{transform:translate(24px, 0)}}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th,table.dataTable thead td,table.dataTable tfoot th,table.dataTable tfoot td{text-align:left}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable>thead>tr>th,table.dataTable>thead>tr>td{padding:10px;border-bottom:1px solid rgba(0, 0, 0, 0.3)}table.dataTable>thead>tr>th:active,table.dataTable>thead>tr>td:active{outline:none}table.dataTable>tfoot>tr>th,table.dataTable>tfoot>tr>td{padding:10px 10px 6px 10px;border-top:1px solid rgba(0, 0, 0, 0.3)}table.dataTable tbody tr{background-color:transparent}table.dataTable tbody tr.selected>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.9);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.9);color:rgb(255, 255, 255);color:rgb(var(--dt-row-selected-text))}table.dataTable tbody tr.selected a{color:rgb(9, 10, 11);color:rgb(var(--dt-row-selected-link))}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border>tbody>tr>th,table.dataTable.row-border>tbody>tr>td,table.dataTable.display>tbody>tr>th,table.dataTable.display>tbody>tr>td{border-top:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.row-border>tbody>tr:first-child>th,table.dataTable.row-border>tbody>tr:first-child>td,table.dataTable.display>tbody>tr:first-child>th,table.dataTable.display>tbody>tr:first-child>td{border-top:none}table.dataTable.row-border>tbody>tr.selected+tr.selected>td,table.dataTable.display>tbody>tr.selected+tr.selected>td{border-top-color:#0262ef}table.dataTable.cell-border>tbody>tr>th,table.dataTable.cell-border>tbody>tr>td{border-top:1px solid rgba(0, 0, 0, 0.15);border-right:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.cell-border>tbody>tr>th:first-child,table.dataTable.cell-border>tbody>tr>td:first-child{border-left:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.cell-border>tbody>tr:first-child>th,table.dataTable.cell-border>tbody>tr:first-child>td{border-top:none}table.dataTable.stripe>tbody>tr.odd>*,table.dataTable.display>tbody>tr.odd>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.023);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-stripe), 0.023)}table.dataTable.stripe>tbody>tr.odd.selected>*,table.dataTable.display>tbody>tr.odd.selected>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.923);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.923)}table.dataTable.hover>tbody>tr:hover>*,table.dataTable.display>tbody>tr:hover>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.035);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.035)}table.dataTable.hover>tbody>tr.selected:hover>*,table.dataTable.display>tbody>tr.selected:hover>*{box-shadow:inset 0 0 0 9999px #0d6efd !important;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 1) !important}table.dataTable.order-column>tbody tr>.sorting_1,table.dataTable.order-column>tbody tr>.sorting_2,table.dataTable.order-column>tbody tr>.sorting_3,table.dataTable.display>tbody tr>.sorting_1,table.dataTable.display>tbody tr>.sorting_2,table.dataTable.display>tbody tr>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.019);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.019)}table.dataTable.order-column>tbody tr.selected>.sorting_1,table.dataTable.order-column>tbody tr.selected>.sorting_2,table.dataTable.order-column>tbody tr.selected>.sorting_3,table.dataTable.display>tbody tr.selected>.sorting_1,table.dataTable.display>tbody tr.selected>.sorting_2,table.dataTable.display>tbody tr.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.919);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.919)}table.dataTable.display>tbody>tr.odd>.sorting_1,table.dataTable.order-column.stripe>tbody>tr.odd>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.054);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.054)}table.dataTable.display>tbody>tr.odd>.sorting_2,table.dataTable.order-column.stripe>tbody>tr.odd>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.047);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.047)}table.dataTable.display>tbody>tr.odd>.sorting_3,table.dataTable.order-column.stripe>tbody>tr.odd>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.039);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.039)}table.dataTable.display>tbody>tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.954);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.954)}table.dataTable.display>tbody>tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.947);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.947)}table.dataTable.display>tbody>tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.939);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.939)}table.dataTable.display>tbody>tr.even>.sorting_1,table.dataTable.order-column.stripe>tbody>tr.even>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.019);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.019)}table.dataTable.display>tbody>tr.even>.sorting_2,table.dataTable.order-column.stripe>tbody>tr.even>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.011);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.011)}table.dataTable.display>tbody>tr.even>.sorting_3,table.dataTable.order-column.stripe>tbody>tr.even>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.003);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.003)}table.dataTable.display>tbody>tr.even.selected>.sorting_1,table.dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.919);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.919)}table.dataTable.display>tbody>tr.even.selected>.sorting_2,table.dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.911);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.911)}table.dataTable.display>tbody>tr.even.selected>.sorting_3,table.dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.903);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.903)}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.082);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.082)}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.074);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.074)}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.062);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.062)}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.982);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.982)}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.974);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.974)}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.962);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.962)}table.dataTable.no-footer{border-bottom:1px solid rgba(0, 0, 0, 0.3)}table.dataTable.compact thead th,table.dataTable.compact thead td,table.dataTable.compact tfoot th,table.dataTable.compact tfoot td,table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_length select{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;color:inherit;padding:4px}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;color:inherit;margin-left:3px}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;color:inherit !important;border:1px solid transparent;border-radius:2px;background:transparent}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:inherit !important;border:1px solid rgba(0, 0, 0, 0.3);background-color:rgba(0, 0, 0, 0.05);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(230, 230, 230, 0.05)), color-stop(100%, rgba(0, 0, 0, 0.05)));background:-webkit-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-moz-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-ms-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-o-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:linear-gradient(to bottom, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#111;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#0c0c0c;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:inherit}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid rgba(0, 0, 0, 0.3)}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:.5em}}html.dark{--dt-row-hover: 255, 255, 255;--dt-row-stripe: 255, 255, 255;--dt-column-ordering: 255, 255, 255}html.dark table.dataTable>thead>tr>th,html.dark table.dataTable>thead>tr>td{border-bottom:1px solid rgb(89, 91, 94)}html.dark table.dataTable>thead>tr>th:active,html.dark table.dataTable>thead>tr>td:active{outline:none}html.dark table.dataTable>tfoot>tr>th,html.dark table.dataTable>tfoot>tr>td{border-top:1px solid rgb(89, 91, 94)}html.dark table.dataTable.row-border>tbody>tr>th,html.dark table.dataTable.row-border>tbody>tr>td,html.dark table.dataTable.display>tbody>tr>th,html.dark table.dataTable.display>tbody>tr>td{border-top:1px solid rgb(64, 67, 70)}html.dark table.dataTable.row-border>tbody>tr.selected+tr.selected>td,html.dark table.dataTable.display>tbody>tr.selected+tr.selected>td{border-top-color:#0257d5}html.dark table.dataTable.cell-border>tbody>tr>th,html.dark table.dataTable.cell-border>tbody>tr>td{border-top:1px solid rgb(64, 67, 70);border-right:1px solid rgb(64, 67, 70)}html.dark table.dataTable.cell-border>tbody>tr>th:first-child,html.dark table.dataTable.cell-border>tbody>tr>td:first-child{border-left:1px solid rgb(64, 67, 70)}html.dark .dataTables_wrapper .dataTables_filter input,html.dark .dataTables_wrapper .dataTables_length select{border:1px solid rgba(255, 255, 255, 0.2);background-color:var(--dt-html-background)}html.dark .dataTables_wrapper .dataTables_paginate .paginate_button.current,html.dark .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{border:1px solid rgb(89, 91, 94);background:rgba(255, 255, 255, 0.15)}html.dark .dataTables_wrapper .dataTables_paginate .paginate_button.disabled,html.dark .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,html.dark .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{color:#666 !important}html.dark .dataTables_wrapper .dataTables_paginate .paginate_button:hover{border:1px solid rgb(53, 53, 53);background:rgb(53, 53, 53)}html.dark .dataTables_wrapper .dataTables_paginate .paginate_button:active{background:#3a3a3a} diff --git a/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/dt-core/js/jquery.dataTables.min.js b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/dt-core/js/jquery.dataTables.min.js new file mode 100644 index 0000000..f786b0d --- /dev/null +++ b/public/2024/07/strength-in-data-connecting-to-the-taskmaster-database/index_files/dt-core/js/jquery.dataTables.min.js @@ -0,0 +1,4 @@ +/*! DataTables 1.13.6 + * ©2008-2023 SpryMedia Ltd - datatables.net/license + */ +!function(n){"use strict";var a;"function"==typeof define&&define.amd?define(["jquery"],function(t){return n(t,window,document)}):"object"==typeof exports?(a=require("jquery"),"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||a(t),n(e,t,t.document)}:n(a,window,window.document)):window.DataTable=n(jQuery,window,document)}(function(P,j,v,H){"use strict";function d(t){var e=parseInt(t,10);return!isNaN(e)&&isFinite(t)?e:null}function l(t,e,n){var a=typeof t,r="string"==a;return"number"==a||"bigint"==a||!!h(t)||(e&&r&&(t=$(t,e)),n&&r&&(t=t.replace(q,"")),!isNaN(parseFloat(t))&&isFinite(t))}function a(t,e,n){var a;return!!h(t)||(h(a=t)||"string"==typeof a)&&!!l(t.replace(V,"").replace(/ +
    @@ -69,40 +77,41 @@

    About Me

    -
    - - -
    + -
    +

    My Professional Background

    -

    I obtained a PhD in Statistics from the University of Warwick in 2013, my thesis title was “Uncertainty in Changepoints in Time Series” 1. I’m delighted that Dr Little Alex Horne recently became associated with my alma mater through the Taskmaster Education.

    -

    I have 10 years of industry experience as a Research Scientist/Data Scientist at Amazon and Samsung, predominantly demand forecasting at scale for products. I can impart best practices and vision of how to run this project at scale and with rigor (automation, repeatability).

    +

    I obtained a PhD in Statistics from the University of Warwick in 2013, my thesis title was “Uncertainty in Changepoints in Time Series” 1. I’m delighted that Dr Little Alex Horne recently became associated with my alma mater through the Taskmaster Education scheme.

    +

    I have 10 years of industry experience as a Research Scientist/Data Scientist at Amazon and Samsung, predominantly demand forecasting at scale for products. From this experience, I have some experience on running projects at scale, with rigor (automation, repeatability) and compromises that need to be made (whether it be technical, monetary, mental).

    My Personal Motivation

    -

    There are a variety of personal reasons why I am starting “The Median Duck”.

    +

    There are a variety of personal reasons why I am starting The Median Duck.

    Perhaps optimistically, I want to (stealthy) educate others of analytics to the general public in a fun and amusing manner. Statistics is not taught particularly well in the UK, often seen as a boring number crunching and often a medium to lie. Add to this, I want to instill best practices and the graft work that I have experienced over my years, and that are often overlooked in courses and textbooks (importance of good quality data, automated workflows, etc.).

    -

    I made the somewhat brave decision to become self employed at the start of 2024, and have various ventures in the work to provide some income and keep me entertained on a daily basis (piano teaching, piano performance, admin for my housing association). The Median Duck is one of these ventures. I don’t expect this venture to be a major money maker, but I do want to retain my engagement in the data science and statistics field. Add to this, my “imposter syndrome” often wants me to relearn the basics.

    -

    I do have some aspirations to potentially go into data journalism through data science and analytics and this venture may provide some experience.

    -

    Finally, I do not claim to be a full expert and entirely knowledgeable about the analysis I will be covering. However I’m always eager to learn new topics and also educate others; I believe I am an educator and teacher at my core. My passion for Taskmaster and prior experience with the analytics field thus makes “The Median Duck” this the ideal vehicle.

    -

    My Taskmaster History

    -

    I properly encountered Taskmaster during 2020 (and the global pandemic), when the Series 2 task “order something without using certain words” was recommended to me on YouTube. Once I watched this task, I was hooked and consequently went down the Taskmaster rabbit hole.

    -

    However, I was initially quite dismissive of Taskmaster prior to this. I had previously associated “Taskmaster” with “Ticketmaster” and thus erroneously thought it was going to be a dull show in which extortionate ticket scalping may occur. How wrong I was…

    -

    Since 2020, I have watched each series of Taskmaster (mainly UK) near the time of broadcast, and consumed Taskmaster adjacent material (the podcast, comedians appearances on other shows etc.). I have also unofficially (and jokingly) assigned myself the title of “Taskmaster Representative of the Pacific Northwest” as I have referred numerous friends and colleagues about Taskmaster and also informed them of when the next series is broadcasting.

    -

    These are a few of my favourite things…

    +

    I made the somewhat brave decision to become self employed at the start of 2024, and have various ventures in the work to provide some income and keep me entertained on a daily basis (piano teaching, piano performance, admin for my housing association). The Median Duck is one of these ventures.

    +

    I don’t expect this venture to be a money maker (major or minor), but I do want to retain my engagement in the data science and statistics field. Add to this, my “imposter syndrome” often wants me to relearn the basics.

    +

    I do have some aspirations to potentially go into data journalism through data science and analytics and this venture may provide some experience and build up a portfolio of work.

    +

    Finally, I do not claim to be a full expert and entirely knowledgeable about the analysis I will be covering2. However I’m always eager to learn new topics and also educate others; I believe I am an educator and teacher at my core. My passion for Taskmaster and prior experience with the analytics field thus makes The Median Duck this the ideal vehicle.

    +

    My Taskmaster Journey

    +

    My Taskmaster journey properly started during 2020 (and the global pandemic), when the Series 2 task “order something without using certain words” was recommended to me on YouTube. Once I watched this task, I was hooked and consequently went down the Taskmaster rabbit hole and binged whatever series were available.

    +

    However, prior to this, I was initially quite dismissive of Taskmaster. I had previously associated “Taskmaster” with “Ticketmaster” and thus erroneously thought it was going to be a dull show in which extortionate ticket scalping would occur. How wrong I was…

    +

    Since 2020, I have watched each series of Taskmaster (mainly UK) near the time of broadcast, and consumed Taskmaster adjacent material (the podcast, comedians appearances on other comedy shows etc.).

    +

    I have also unofficially (and jokingly) assigned myself the title of “Taskmaster Representative of the Pacific Northwest” as I have referred numerous friends and colleagues about Taskmaster and also informed them of when the next series is broadcasting.

    +

    These are a Few of My Favourite Taskmaster Things…

    • Favourite Task: Ringtone Choreography (S4E4)
    • Favourite Series: Series 4 or 5.
    • -
    • Favourite Contestant: Victoria Coren Mitchell; I actively squealed when she was announced.
    • +
    • Favourite Contestant: Victoria Coren Mitchell3
    • Favourite Quote(s): “Friendship is Truth”
    • Degrees of Separation to Alex Horne (to my knowledge): 3
    @@ -112,10 +121,16 @@

    These are a few of my favourite
  • I’m sure you eager readers can find my thesis online and be gently amused by my chapter quotes. ↩︎

  • +
  • +

    This is the Imposter Syndrome talking for the most part… ↩︎

    +
  • +
  • +

    Fun fact: I actively squealed when VCM was announced. She’s a fascinating person with extremely varied career (to name a few: author, broadcaster/presenter, professional player, pornographer, former stand up comedian, customised inhaler trendsetter…) ↩︎

    +
  • -
    + diff --git a/public/archives/index.html b/public/archives/index.html index 06d3259..b779a6d 100644 --- a/public/archives/index.html +++ b/public/archives/index.html @@ -23,8 +23,8 @@ - - + + @@ -61,6 +61,14 @@

    vires in notitia

    + +
    @@ -69,17 +77,16 @@

    -
    - - -
    +
    +

    Table of Contents

    - + +
    -
    +
    -
    + diff --git a/public/categories/index.html b/public/categories/index.html index 082c425..51df0ce 100644 --- a/public/categories/index.html +++ b/public/categories/index.html @@ -22,8 +22,8 @@ - - + + @@ -59,7 +59,15 @@ -

    vires in notitia

    +

    vires in notitia

    + +

    All tags

    diff --git a/public/categories/r/index.html b/public/categories/r/index.html index 1e9a12f..e207ee2 100644 --- a/public/categories/r/index.html +++ b/public/categories/r/index.html @@ -22,8 +22,8 @@ - - + + @@ -59,13 +59,21 @@ -

    vires in notitia

    +

    vires in notitia

    + +

    Entries tagged - "R"