From 9922dd8a4bb131304b04c926d3473999ef92de0f Mon Sep 17 00:00:00 2001 From: alanlujan91 Date: Mon, 7 Oct 2024 09:12:44 -0400 Subject: [PATCH] presentation --- .github/workflows/myst-deploy.yml | 2 + .../grantmcdermott/clean/_extension.yml | 13 + _extensions/grantmcdermott/clean/clean.scss | 298 ++ myst.yml | 4 + presentation.html | 2612 +++++++++++++++++ presentation.qmd | 126 + 6 files changed, 3055 insertions(+) create mode 100644 _extensions/grantmcdermott/clean/_extension.yml create mode 100644 _extensions/grantmcdermott/clean/clean.scss create mode 100644 presentation.html create mode 100644 presentation.qmd diff --git a/.github/workflows/myst-deploy.yml b/.github/workflows/myst-deploy.yml index de0c122..b2e90a3 100644 --- a/.github/workflows/myst-deploy.yml +++ b/.github/workflows/myst-deploy.yml @@ -37,6 +37,8 @@ jobs: run: npm install -g mystmd - name: Build HTML Assets run: myst build --html + - name: Move presentation + run: mv presentation.html _build/html/presentation.html - name: Upload artifact uses: actions/upload-pages-artifact@v1 with: diff --git a/_extensions/grantmcdermott/clean/_extension.yml b/_extensions/grantmcdermott/clean/_extension.yml new file mode 100644 index 0000000..10b1e45 --- /dev/null +++ b/_extensions/grantmcdermott/clean/_extension.yml @@ -0,0 +1,13 @@ +title: clean +author: Grant McDermott +version: 1.0.0 +quarto-required: ">=1.3.0" +contributes: + formats: + revealjs: + theme: [default, clean.scss] + menu: + side: left + slide-number: true + date-format: long + diff --git a/_extensions/grantmcdermott/clean/clean.scss b/_extensions/grantmcdermott/clean/clean.scss new file mode 100644 index 0000000..3382dc0 --- /dev/null +++ b/_extensions/grantmcdermott/clean/clean.scss @@ -0,0 +1,298 @@ +/*-- scss:defaults --*/ + +// Custom colours and variables + +$jet: #131516; +$accent: #107895; +$accent2: #9a2515; +// $accent2: #e64173; +$right-arrow: "\2192"; // Unicode character for right arrow + +// fonts + +/* +Note: This theme uses the Roboto font family, which it imports from Google + Fonts to ensure consistent weighting in addition to availability. While + you can use a local installation of Roboto, this is generally not + recommended since the weighting will likely be wrong (probably too + light). OTOH, importing from Google Fonts can cause some issues in + certain secure environments due the external CDN (see: + https://github.com/grantmcdermott/quarto-revealjs-clean/issues/7). If + that's the case for you, simply comment out the `@import url(...)` line + below and it will default for the default Sans Serif font on your system + (e.g., Helvetica on a Mac). Circling back to the earlier point about + preserving consistent font weights, you may also wish to remove "Roboto" + from the choice set if the family is installed locally. +*/ +@import url('https://fonts.googleapis.com/css?family=Roboto:200,200i,300,300i,350,350i,400,400i&display=swap'); + +$font-family-sans-serif: "Roboto", sans-serif !default; +$presentation-heading-font: "Roboto", sans-serif !default; + +$presentation-heading-color: $jet !default; +$presentation-heading-font-weight: lighter; +//$presentation-heading-line-height: 2; +//$presentation-block-margin: 28px; +$presentation-font-size-root: 32px; + +// colors +//$body-bg: #f0f1eb !default; +$body-color: $jet !default; +$link-color: $accent !default; +$selection-bg: #26351c !default; + + +/*-- scss:rules --*/ + +.reveal a { + line-height: 1.5em; +} + +.reveal p { + // font-weight: 300; + font-weight: lighter; + margin-top: 1.25em; +} + +// title and headings + +#title-slide { + text-align: left; + + .title { + color: $body-color; + font-size: 1.4em; + // font-weight: 350; + font-weight: lighter; + } + + .subtitle { + color: $accent; + font-style: italic; + margin-top: 0em; + font-weight: lighter; + } + + .institute, + .quarto-title-affiliation, + .quarto-title-author-email { + font-style: italic; + // font-size: 80%; + // color: #7F7F7F; + } + + .author, + .quarto-title-author-name { + color: $body-color; + } + + .quarto-title-authors { + display: flex; + justify-content: left; + + .quarto-title-author { + padding-left: 0em; + padding-right: 0em; + width: 100%; + } + } + +} + + +.reveal h2 { + // font-weight: 350; + font-weight: lighter; + font-size: 1.4em; +} + +.reveal h3 { + color: $accent; + font-style: italic; + // font-weight: 350; + font-weight: lighter; + font-size: 0.95em; +} + +.reveal h4 { + color: $accent2; + // font-weight: 350; + font-weight: normal; + margin-top: 1.25em; +} + +// alerts etc. + +.alert { + color: $accent2; +} + +.fg { + color: var(--col, $jet); +} + +.bg { + background-color: var(--col, #fff); + padding: 0.1em; + border-radius: 5px; + display: inline-block; +} + +// lists + +// Unordered lists + +.reveal ul { + // font-weight: 300; + font-weight: lighter; + padding-left: 16px; + + li::marker { + color: mix($accent, white, 70%); + } +} + +.reveal ul ul { + list-style: none; + + li:before { + content: $right-arrow; + color: mix($accent, white, 60%); + display: inline-block; + width: 1em; + margin-left: -1em; + margin-right: 0.5em; + } +} + +// Ordered lists + +.reveal ol { + // font-weight: 300; + font-weight: lighter; + padding-left: 16px; + + li::marker { + color: $accent; + } +} + +// Move "hamburger" menu button to top right + +.reveal .slide-menu-button { + position: fixed; + top: 6px; + right: 0; + display: flex; + justify-content: flex-end; + align-items: flex-start; + pointer-events: none; +} + +.reveal .slide-menu-button > * { + pointer-events: auto; +} + + +// Same for chalkboard buttons (with an offset) + +.reveal .slide-chalkboard-buttons { + position: fixed; + top: 12px; + right: 24px; + display: flex; + justify-content: flex-end; + align-items: flex-start; + pointer-events: none; +} + +.reveal .slide-chalkboard-buttons > * { + pointer-events: auto; +} + +// Beamer-style button link environment + +.button { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: 400; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + background-color: $accent; + border: 1px solid $accent; + color: #fff !important; + text-decoration: none; + border-radius: 4px; + transition: all 0.2s ease-in-out; +} + +.button:hover { + background-color: #0056b3; + border-color: #0056b3; +} + +.button::before { + content: "▶"; + margin-right: 5px; +} + +// tables + +.reveal table { + // height: auto; /* Adjust table width to fit content up to the available slide space */ + margin: auto; + border-collapse: collapse; + border-spacing: 0; + font-size: 0.8em; +} + +.reveal table th, +.reveal table td { + border: none; /* Remove internal row lines */ + padding: .23em; /* Adjust padding as needed */ + text-align: left; /* Adjust text alignment as needed */ + font-weight: lighter; /* Lighter font weight for main table text */ +} + +/* Adds a bottom border to the table header row for distinction */ +.reveal table thead th, +.reveal .slides table tr:last-child td, +.reveal .slides table { + border-bottom: 2px solid #D3D3D3; /* Dark grey color for the bottom border */ +} + +/* Make column headers bold */ +.reveal table thead th { + font-weight: bold; +} + +/* Styling table captions */ +.reveal table caption { + color: #666666; /* Dark grey color for the caption */ + font-variant: small-caps; /* Use small caps for the caption text */ +} + +// Special catch for etable environment to ensure these table images +// don't overflow the slide. +// See: https://lrberge.github.io/fixest/articles/etable_new_features.html + +.etable { + width: 100%; + height: calc(100% - 3em); /* Adjust 3em based on the height of your header, if necessary */ + display: flex; + align-items: center; + justify-content: center; +} + +.etable img { + max-width: 100%; + max-height: 100%; + width: auto; + height: auto; + object-fit: contain; +} \ No newline at end of file diff --git a/myst.yml b/myst.yml index 0c4166e..432b613 100644 --- a/myst.yml +++ b/myst.yml @@ -35,8 +35,12 @@ project: toc: # Auto-generated by `myst init --write-toc` - file: report.md + - file: presentation.ipynb site: template: article-theme options: # favicon: favicon.ico logo: econ-ark-logo.png + actions: + - title: "Presentation:" + url: presentation.html diff --git a/presentation.html b/presentation.html new file mode 100644 index 0000000..c3c0295 --- /dev/null +++ b/presentation.html @@ -0,0 +1,2612 @@ + + + + + + + + + + + + + + + + Reproducibility Standards in Economics (and beyond) + + + + + + + + + + + + + + + +
+
+ +
+

Reproducibility Standards in Economics (and beyond)

+

JHU FOSSProF Summative Event

+ +
+
+
+Alan Lujan +
+ +

+ Johns Hopkins University AAP +

+
+
+
+Chris Carroll +
+ +

+ Johns Hopkins University +

+
+
+ +

October 7, 2024

+
+
+

REMARK Motivation

+
    +
  • Econ lags in reproducibility practices
  • +
  • State of field: for published papers +
      +
    • .zip archive has some files +
        +
      • rarely works ‘out of the box’
      • +
    • +
    • Top-5 journals have a ‘data editor’ +
        +
      • Very expensive
      • +
      • Excellent barrier to competition
      • +
    • +
  • +
+
+
+

Econ-ARK REMARK solutions

+
    +
  • Standards for reproducibility of compute +
      +
    • self-contained and complete projects
    • +
    • executable on any modern computer
    • +
  • +
  • Emphasis on: +
      +
    • minimally good code +
        +
      • enforced algorithmically
      • +
      • would be huge improvement
      • +
      • “ChatGPT, fix my documentation”
      • +
    • +
    • explicit claims (“Risk Aversion: [2.5,3.5]”)
    • +
    • standardized metadata
    • +
  • +
+
+
+

REMARK Library: About 23+3

+ +
+
+

Jointly Reproducible: Code and Math and Text

+
    +
  • Solved: most computational aspects +
  • +
+
+
+

Math and Text with Code?

+
    +
  • LaTeX is standard for text, but… +
      +
    • definitely not lightweight
    • +
    • no dynamically executable content
    • +
  • +
  • Now: tenuous connection between text and code +
      +
    • “where is equation 18 implemented”? +
        +
      • in a gestalt of interactions
      • +
    • +
  • +
  • Future: +
  • +
+
+
+

FOSSProF \(\rightarrow\) Curvenote

+

Funding let us hire open source contractor - To do things we could not do

+

At our direction:

+
    +
  • Integrated MyST Markdown into REMARK
  • +
  • Filled gaps in tools to integrate text, math, and code
  • +
  • Improved LaTeX \(\rightarrow\) MyST engine +
      +
    • Tools required for some of our REMARKs
    • +
  • +
+
+
+

Curvenote: \(\LaTeX\)

+ +
+
+

Curvenote: Computation

+ +
+
+

Journal of Open Source Economics

+

+
+
+

Not Specific to Economics!

+
    +
  • conceived for projects using Econ-ARK +
      +
    • … but doesn’t require Econ-ARK
    • +
  • +
  • Not bound to economics in any way
  • +
+
+
+

Rebranding: REMARK \(\rightarrow\) SCI-PASS

+
    +
  • Scholarly Communication Infrastructure for Publishing and Archiving Scientific Software
  • +
  • Ambition: +
      +
    • universal standard for repr compute +
        +
      • nothing now exists (we’ve looked)
      • +
    • +
  • +
  • Also short for “scientific passport” +
      +
    • portability/sharing of research outputs
    • +
  • +
+
+
+

Long-Term Goal: ISO standard

+
    +
  • Adoptable by journals, libraries, archives …
  • +
  • Existing software standards got started this way +
      +
    • Somebody needed it for their own purposes
    • +
  • +
  • Members of our team: +
      +
    • SB: “Information Science” PhD +
        +
      • connection to archivists, librarians
      • +
    • +
    • AS: Economics PhD +
        +
      • Vetted ISO software standards for Oz
      • +
    • +
  • +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/presentation.qmd b/presentation.qmd new file mode 100644 index 0000000..ed0b641 --- /dev/null +++ b/presentation.qmd @@ -0,0 +1,126 @@ +--- +title: Reproducibility Standards in Economics (and beyond) +subtitle: JHU FOSSProF Summative Event +format: + clean-revealjs: + self-contained: true +html-math-method: + method: mathjax + url: "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" +author: + - name: Alan Lujan + orcid: 0000-0002-5289-7054 + email: alujan@jhu.edu + affiliations: Johns Hopkins University AAP + - name: Chris Carroll + orcid: 0000-0003-3732-9312 + email: ccarroll@jhu.edu + affiliations: Johns Hopkins University +date: last-modified +--- + +## [REMARK](https://github.com/econ-ark/REMARK) Motivation + +- Econ lags in reproducibility practices +- State of field: for _published_ papers + - `.zip` archive has *some files* + - rarely works 'out of the box' + - Top-5 journals have a 'data editor' + - Very expensive + - Excellent barrier to competition + +## [Econ-ARK](https://econ-ark.org) REMARK solutions + +- _Standards_ for reproducibility of compute + - self-contained and complete projects + - executable on any modern computer + + +- Emphasis on: + - minimally good code + - enforced algorithmically + - would be huge improvement + - "ChatGPT, fix my documentation" + - explicit claims ("Risk Aversion: [2.5,3.5]") + - standardized metadata + +## REMARK Library: [About 23+3](https://econ-ark.org/materials) + +- Many replicating canonical papers + +- Three new ones created for FossProF: + - [Imai_Keane (2004) by John Green](https://github.com/JohnRGreen/ImaiKeane_replication) + - [DeNardi (2004) by Ashish Kumar](https://github.com/ashishk87/DeNardi_2004_replication) + - [Aiyagari (1994) by Adam Edwards](https://github.com/Adam-Edwards-JHU/Aiyagari1994QJE) + +- Paul Romer: + - This is the future of academic publishing + +## _Jointly_ Reproducible: Code and Math and Text + +- Solved: most computational aspects + - [Docker containers](https://docker.com) for universality + - Linux, Windows, MacOS, AWS, ... + - version control (git/[GitHub](https://github.com)) = ownership + - [cff references](https://citation-file-format.github.io/) make it findable/indexable + - [Zenodo](https://zenodo.org): independent "release" archiving + +## Math and Text _with_ Code? +- [LaTeX](https://www.tug.org/texlive/) is standard for text, but... + - definitely *not lightweight* + - no dynamically executable content +- Now: tenuous connection _between_ text and code + - "where is equation 18 implemented"? + - in a gestalt of interactions +- Future: + - ["this math: implemented by this code"](https://econ-ark.org/materials/bufferstocktheory) + +## FOSSProF $\rightarrow$ [Curvenote](https://curvenote.com/) + +Funding let us hire open source contractor +- To do things we could not do + +### At our direction: +- Integrated [MyST Markdown](https://mystmd.org/) into REMARK +- Filled gaps in tools to integrate text, math, and code +- Improved LaTeX $\rightarrow$ MyST engine + - Tools required for some of our REMARKs + +## Curvenote: $\LaTeX$ + +![](CNlatexImprovements.png) + +## Curvenote: Computation +![](CNexamples.png) + +## Journal of Open Source Economics + + + + + +## Not Specific to Economics! + +- conceived for projects using [Econ-ARK](https://docs.econ-ark.org) + - ... but doesn't require Econ-ARK +- Not bound to economics *in any way* + +## Rebranding: REMARK $\rightarrow$ SCI-PASS + +- **S**cholarly **C**ommunication **I**nfrastructure for **P**ublishing and **A**rchiving **S**cientific **S**oftware +- Ambition: + - universal standard for repr compute + - nothing now exists (we've looked) +- Also short for “**sci**entific **pass**port” + - portability/sharing of research outputs + +## Long-Term Goal: ISO standard + +- Adoptable by journals, libraries, archives ... +- Existing software standards got started this way + - Somebody needed it for their own purposes +- Members of our team: + - SB: "Information Science" PhD + - connection to archivists, librarians + - AS: Economics PhD + - Vetted ISO software standards for Oz