+
+
diff --git a/.circleci/README.md b/.circleci/README.md new file mode 100644 index 0000000..d13619e --- /dev/null +++ b/.circleci/README.md @@ -0,0 +1,6 @@ +# CircleCI Website Previews + +This directory and its files control CircleCI previews being generated +whenever a PR is opened. The files should be modified to the appropriate +conference year (e.g., usrse25). + diff --git a/.circleci/circle_urls.sh b/.circleci/circle_urls.sh new file mode 100644 index 0000000..e52e90a --- /dev/null +++ b/.circleci/circle_urls.sh @@ -0,0 +1,3 @@ +BASEURL=https://output.circle-artifacts.com/output/job/${CIRCLE_WORKFLOW_JOB_ID}/artifacts/${CIRCLE_NODE_INDEX}/usrse.github.io/usrse25 +sed -i "8 s,.*,baseurl: $BASEURL,g" "_config.yml" +sed -i "7 s,.*,url: \"\",g" "_config.yml" diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..4a840ba --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,79 @@ +version: 2.1 + +workflows: + version: 2 + + # The build workflow will build a preview for the site, intended for PRs + build: + jobs: + - build-site: + filters: + branches: + ignore: gh-pages + +install: &install + name: Install dependencies for build + command: | + $HOME/conda/bin/pip install -r ~/repo/.circleci/requirements.txt + + +install_python_3: &install_python_3 + name: Install Python dependencies + command: | + ls $HOME + if [ ! -d "/home/circleci/conda" ]; then + wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh + /bin/bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/conda + export PATH=$HOME/conda/bin:$PATH + else + echo "Miniconda 3 is already installed, continuing to build." + fi + +build_jekyll: &build_jekyll + name: Jekyll Build + command: | + if [ -z "$CIRCLECI_TRIGGER" ]; then + echo "Building US-RSE'25 website for Preview" + cp ~/repo/.circleci/circle_urls.sh ~/repo/circle_urls.sh + cd ~/repo + chmod u+x circle_urls.sh + bash circle_urls.sh + bundle exec jekyll build + else + echo "Nightly build detected, preview not needed." + fi + +jobs: + build-site: + docker: + - image: cimg/ruby:3.1 + working_directory: ~/repo + environment: + - JEKYLL_ENV: production + - NOKOGIRI_USE_SYSTEM_LIBRARIES: true + - BUNDLE_PATH: ~/repo/vendor/bundle + steps: + - checkout + - restore_cache: + keys: + - v1-dependencies + - rubygems-v1 + - run: *install_python_3 + - run: *install + - save_cache: + paths: + - /home/circleci/conda + key: v1-dependencies + - run: + name: Bundle Install + command: | + cd ~/repo + bundle check || bundle install + - save_cache: + key: rubygems-v1 + paths: + - vendor/bundle + - run: *build_jekyll + - store_artifacts: + path: ~/repo/_site + destination: usrse.github.io/usrse25 diff --git a/.circleci/requirements.txt b/.circleci/requirements.txt new file mode 100644 index 0000000..b09bced --- /dev/null +++ b/.circleci/requirements.txt @@ -0,0 +1 @@ +pyaml>=17.12.1 diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..d944721 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +_site/ +Gemfile.lock diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..614e0c9 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,27 @@ + + + + +## Description + + + +## Checklist: + + +- [ ] (Committee Chairs Only) I have posted the link for the PR to ask for content reviewers +- [ ] I have previewed changes locally +- [ ] I have updated the README.md if necessary + +cc **ADD GITHUB HANDLES HERE** + diff --git a/.github/workflows/linting.yaml b/.github/workflows/linting.yaml new file mode 100644 index 0000000..d934307 --- /dev/null +++ b/.github/workflows/linting.yaml @@ -0,0 +1,45 @@ +name: Check Spelling and URLs + +on: [pull_request] + +# Kill concurrent jobs from the same PR/branch - only one will run at a time +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + urlcheck: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Check Spelling + uses: crate-ci/typos@c97d621b6b01d8b0258538ca15abeca5c5764601 # version 1.16.23 + with: + config: ./.github/workflows/typo_config.toml + + - name: URLs-checker + + uses: urlstechie/urlchecker-action@0.0.34 + with: + # A comma-separated list of file types to cover in the URL checks + file_types: .md,.py,.yml + + # Choose whether to include file with no URLs in the prints. + print_all: false + + # More verbose summary at the end of a run + verbose: true + + # How many times to retry a failed request (defaults to 1) + retry_count: 3 + + # Google Forms is having enormous timeouts + timeout: 10 + + # Exclude these patterns from the checker + exclude_patterns: supercomputing.org,https://www.hyatt.com/shop/chixl?location=Hyatt%20House%20Chicago%20%2F%20West%20Loop-Fulton%20Market&checkinDate=2023-10-15&checkoutDate=2023-10-19&rooms=1&adults=1&kids=0&corp_id=g-uicf + + # Exclude these files from the checker + exclude_files: README.md,SocialNetworks.yml,_config.yml,tests/test_,.github/workflows diff --git a/.github/workflows/typo_config.toml b/.github/workflows/typo_config.toml new file mode 100644 index 0000000..a41a473 --- /dev/null +++ b/.github/workflows/typo_config.toml @@ -0,0 +1,14 @@ +[files] +extend-exclude = [ + ".git/", + ".github/workflows/typo_config.toml", + "assets/js/*.min.*", +] +ignore-hidden = false +[default] +extend-ignore-re = [ + "Brain tailoRed stImulation protocoL", + "Vas Vasiliadis", + "SER", + "Mey", +] diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e413fcc --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +# project +_site +.sass-cache +.vagrant +Gemfile.lock + +# VS Code +.vscode/* + +# general +.DS_Store +Thumbs.db +ehthumbs.db + +# python +__pycache__ +*.pyc + +*~ diff --git a/404.html b/404.html new file mode 100644 index 0000000..e6efadd --- /dev/null +++ b/404.html @@ -0,0 +1,16 @@ +--- +layout: default +title: 404 - Page not found +permalink: /404.html +--- + +
Seems that we've misplaced that URL or it's pointing to something that doesn't exist. + Let's try again!
+Share
+ diff --git a/_includes/callouts.html b/_includes/callouts.html new file mode 100644 index 0000000..1b57986 --- /dev/null +++ b/_includes/callouts.html @@ -0,0 +1,29 @@ +{% if page.callouts %} + {% assign callouts=site.data.callouts.[page.callouts] %} + +{% if callout.subtitle %}{{ callout.subtitle | newline_to_br }}{% endif %} + {% if callout.description %}{{ callout.description | newline_to_br }}{% endif %} +
+{{ site.hero_line_two }}
+ {% if page.hero_link %} + {{ page.hero_link_text }}{% endif %} +Latest Posts
+ ++ {{ post.excerpt }} +
+ {% endif %} + +Published: {{ page.date | date: "%b %-d, %Y" }} {% if page.author %}by {{ page.author }}{% endif %}
+ + {{ content }} +" + contentPreview + "
[^\r]+?<\/pre>)/gm,function(e,r){var t=r;return t=t.replace(/^ /gm,"¨0"),t=t.replace(/¨0/g,"")}),a.subParser("hashBlock")("","gim"),e=t.converter._dispatch("hashPreCodeTags.after",e,r,t)}),a.subParser("headers",function(e,r,t){"use strict";function n(e){var n,s;if(r.customizedHeaderId){var o=e.match(/\{([^{]+?)}\s*$/);o&&o[1]&&(e=o[1])}return n=e,s=a.helper.isString(r.prefixHeaderId)?r.prefixHeaderId:!0===r.prefixHeaderId?"section-":"",r.rawPrefixHeaderId||(n=s+n),n=r.ghCompatibleHeaderId?n.replace(/ /g,"-").replace(/&/g,"").replace(/¨T/g,"").replace(/¨D/g,"").replace(/[&+$,\/:;=?@"#{}|^¨~\[\]`\\*)(%.!'<>]/g,"").toLowerCase():r.rawHeaderId?n.replace(/ /g,"-").replace(/&/g,"&").replace(/¨T/g,"¨").replace(/¨D/g,"$").replace(/["']/g,"-").toLowerCase():n.replace(/[^\w]/g,"").toLowerCase(),r.rawPrefixHeaderId&&(n=s+n),t.hashLinkCounts[n]?n=n+"-"+t.hashLinkCounts[n]++:t.hashLinkCounts[n]=1,n}e=t.converter._dispatch("headers.before",e,r,t);var s=isNaN(parseInt(r.headerLevelStart))?1:parseInt(r.headerLevelStart),o=r.smoothLivePreview?/^(.+)[ \t]*\n={2,}[ \t]*\n+/gm:/^(.+)[ \t]*\n=+[ \t]*\n+/gm,i=r.smoothLivePreview?/^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm:/^(.+)[ \t]*\n-+[ \t]*\n+/gm;e=(e=e.replace(o,function(e,o){var i=a.subParser("spanGamut")(o,r,t),l=r.noHeaderId?"":' id="'+n(o)+'"',c="\n"+e+"\n",r,t)}),e=t.converter._dispatch("blockQuotes.after",e,r,t)}),a.subParser("codeBlocks",function(e,r,t){"use strict";e=t.converter._dispatch("codeBlocks.before",e,r,t);return e=(e+="¨0").replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=¨0))/g,function(e,n,s){var o=n,i=s,l="\n";return o=a.subParser("outdent")(o,r,t),o=a.subParser("encodeCode")(o,r,t),o=a.subParser("detab")(o,r,t),o=o.replace(/^\n+/g,""),o=o.replace(/\n+$/g,""),r.omitExtraWLInCodeBlocks&&(l=""),o="",a.subParser("hashBlock")(o,r,t)+i}),e=e.replace(/¨0/,""),e=t.converter._dispatch("codeBlocks.after",e,r,t)}),a.subParser("codeSpans",function(e,r,t){"use strict";return void 0===(e=t.converter._dispatch("codeSpans.before",e,r,t))&&(e=""),e=e.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(e,n,s,o){var i=o;return i=i.replace(/^([ \t]*)/g,""),i=i.replace(/[ \t]*$/g,""),i=a.subParser("encodeCode")(i,r,t),i=n+""+o+l+"
"+i+"
",i=a.subParser("hashHTMLSpans")(i,r,t)}),e=t.converter._dispatch("codeSpans.after",e,r,t)}),a.subParser("completeHTMLDocument",function(e,r,t){"use strict";if(!r.completeHTMLDocument)return e;e=t.converter._dispatch("completeHTMLDocument.before",e,r,t);var a="html",n="\n",s="",o='\n',i="",l="";void 0!==t.metadata.parsed.doctype&&(n="\n","html"!==(a=t.metadata.parsed.doctype.toString().toLowerCase())&&"html5"!==a||(o=''));for(var c in t.metadata.parsed)if(t.metadata.parsed.hasOwnProperty(c))switch(c.toLowerCase()){case"doctype":break;case"title":s=""+t.metadata.parsed.title+" \n";break;case"charset":o="html"===a||"html5"===a?'\n':'\n';break;case"language":case"lang":i=' lang="'+t.metadata.parsed[c]+'"',l+='\n';break;default:l+='\n'}return e=n+"\n\n"+s+o+l+"\n\n"+e.trim()+"\n\n",e=t.converter._dispatch("completeHTMLDocument.after",e,r,t)}),a.subParser("detab",function(e,r,t){"use strict";return e=t.converter._dispatch("detab.before",e,r,t),e=e.replace(/\t(?=\t)/g," "),e=e.replace(/\t/g,"¨A¨B"),e=e.replace(/¨B(.+?)¨A/g,function(e,r){for(var t=r,a=4-t.length%4,n=0;n/g,">"),e=t.converter._dispatch("encodeAmpsAndAngles.after",e,r,t)}),a.subParser("encodeBackslashEscapes",function(e,r,t){"use strict";return e=t.converter._dispatch("encodeBackslashEscapes.before",e,r,t),e=e.replace(/\\(\\)/g,a.helper.escapeCharactersCallback),e=e.replace(/\\([`*_{}\[\]()>#+.!~=|-])/g,a.helper.escapeCharactersCallback),e=t.converter._dispatch("encodeBackslashEscapes.after",e,r,t)}),a.subParser("encodeCode",function(e,r,t){"use strict";return e=t.converter._dispatch("encodeCode.before",e,r,t),e=e.replace(/&/g,"&").replace(//g,">").replace(/([*_{}\[\]\\=~-])/g,a.helper.escapeCharactersCallback),e=t.converter._dispatch("encodeCode.after",e,r,t)}),a.subParser("escapeSpecialCharsWithinTagAttributes",function(e,r,t){"use strict";return e=(e=t.converter._dispatch("escapeSpecialCharsWithinTagAttributes.before",e,r,t)).replace(/<\/?[a-z\d_:-]+(?:[\s]+[\s\S]+?)?>/gi,function(e){return e.replace(/(.)<\/?code>(?=.)/g,"$1`").replace(/([\\`*_~=|])/g,a.helper.escapeCharactersCallback)}),e=e.replace(/-]|-[^>])(?:[^-]|-[^-])*)--)>/gi,function(e){return e.replace(/([\\`*_~=|])/g,a.helper.escapeCharactersCallback)}),e=t.converter._dispatch("escapeSpecialCharsWithinTagAttributes.after",e,r,t)}),a.subParser("githubCodeBlocks",function(e,r,t){"use strict";return r.ghCodeBlocks?(e=t.converter._dispatch("githubCodeBlocks.before",e,r,t),e+="¨0",e=e.replace(/(?:^|\n)(?: {0,3})(```+|~~~+)(?: *)([^\s`~]*)\n([\s\S]*?)\n(?: {0,3})\1/g,function(e,n,s,o){var i=r.omitExtraWLInCodeBlocks?"":"\n";return o=a.subParser("encodeCode")(o,r,t),o=a.subParser("detab")(o,r,t),o=o.replace(/^\n+/g,""),o=o.replace(/\n+$/g,""),o="",o=a.subParser("hashBlock")(o,r,t),"\n\n¨G"+(t.ghCodeBlocks.push({text:e,codeblock:o})-1)+"G\n\n"}),e=e.replace(/¨0/,""),t.converter._dispatch("githubCodeBlocks.after",e,r,t)):e}),a.subParser("hashBlock",function(e,r,t){"use strict";return e=t.converter._dispatch("hashBlock.before",e,r,t),e=e.replace(/(^\n+|\n+$)/g,""),e="\n\n¨K"+(t.gHtmlBlocks.push(e)-1)+"K\n\n",e=t.converter._dispatch("hashBlock.after",e,r,t)}),a.subParser("hashCodeTags",function(e,r,t){"use strict";e=t.converter._dispatch("hashCodeTags.before",e,r,t);return e=a.helper.replaceRecursiveRegExp(e,function(e,n,s,o){var i=s+a.subParser("encodeCode")(n,r,t)+o;return"¨C"+(t.gHtmlSpans.push(i)-1)+"C"},""+o+i+"
]*>","
","gim"),e=t.converter._dispatch("hashCodeTags.after",e,r,t)}),a.subParser("hashElement",function(e,r,t){"use strict";return function(e,r){var a=r;return a=a.replace(/\n\n/g,"\n"),a=a.replace(/^\n/,""),a=a.replace(/\n+$/g,""),a="\n\n¨K"+(t.gHtmlBlocks.push(a)-1)+"K\n\n"}}),a.subParser("hashHTMLBlocks",function(e,r,t){"use strict";e=t.converter._dispatch("hashHTMLBlocks.before",e,r,t);var n=["pre","div","h1","h2","h3","h4","h5","h6","blockquote","table","dl","ol","ul","script","noscript","form","fieldset","iframe","math","style","section","header","footer","nav","article","aside","address","audio","canvas","figure","hgroup","output","video","p"],s=function(e,r,a,n){var s=e;return-1!==a.search(/\bmarkdown\b/)&&(s=a+t.converter.makeHtml(r)+n),"\n\n¨K"+(t.gHtmlBlocks.push(s)-1)+"K\n\n"};r.backslashEscapesHTMLTags&&(e=e.replace(/\\<(\/?[^>]+?)>/g,function(e,r){return"<"+r+">"}));for(var o=0;o]*>)","im"),c="<"+n[o]+"\\b[^>]*>",u=""+n[o]+">";-1!==(i=a.helper.regexIndexOf(e,l));){var d=a.helper.splitAtIndex(e,i),p=a.helper.replaceRecursiveRegExp(d[1],s,c,u,"im");if(p===d[1])break;e=d[0].concat(p)}return e=e.replace(/(\n {0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,a.subParser("hashElement")(e,r,t)),e=a.helper.replaceRecursiveRegExp(e,function(e){return"\n\n¨K"+(t.gHtmlBlocks.push(e)-1)+"K\n\n"},"^ {0,3}\x3c!--","--\x3e","gm"),e=e.replace(/(?:\n\n)( {0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,a.subParser("hashElement")(e,r,t)),e=t.converter._dispatch("hashHTMLBlocks.after",e,r,t)}),a.subParser("hashHTMLSpans",function(e,r,t){"use strict";function a(e){return"¨C"+(t.gHtmlSpans.push(e)-1)+"C"}return e=t.converter._dispatch("hashHTMLSpans.before",e,r,t),e=e.replace(/<[^>]+?\/>/gi,function(e){return a(e)}),e=e.replace(/<([^>]+?)>[\s\S]*?<\/\1>/g,function(e){return a(e)}),e=e.replace(/<([^>]+?)\s[^>]+?>[\s\S]*?<\/\1>/g,function(e){return a(e)}),e=e.replace(/<[^>]+?>/gi,function(e){return a(e)}),e=t.converter._dispatch("hashHTMLSpans.after",e,r,t)}),a.subParser("unhashHTMLSpans",function(e,r,t){"use strict";e=t.converter._dispatch("unhashHTMLSpans.before",e,r,t);for(var a=0;a ]*>\\s* ]*>","^ {0,3}
\\s*
"),l+="
",s.push(l))}for(o=s.length,i=0;i]*>/.test(u)&&(d=!0)}s[i]=u}return e=s.join("\n"),e=e.replace(/^\n+/g,""),e=e.replace(/\n+$/g,""),t.converter._dispatch("paragraphs.after",e,r,t)}),a.subParser("runExtension",function(e,r,t,a){"use strict";if(e.filter)r=e.filter(r,a.converter,t);else if(e.regex){var n=e.regex;n instanceof RegExp||(n=new RegExp(n,"g")),r=r.replace(n,e.replace)}return r}),a.subParser("spanGamut",function(e,r,t){"use strict";return e=t.converter._dispatch("spanGamut.before",e,r,t),e=a.subParser("codeSpans")(e,r,t),e=a.subParser("escapeSpecialCharsWithinTagAttributes")(e,r,t),e=a.subParser("encodeBackslashEscapes")(e,r,t),e=a.subParser("images")(e,r,t),e=a.subParser("anchors")(e,r,t),e=a.subParser("autoLinks")(e,r,t),e=a.subParser("simplifiedAutoLinks")(e,r,t),e=a.subParser("emoji")(e,r,t),e=a.subParser("underline")(e,r,t),e=a.subParser("italicsAndBold")(e,r,t),e=a.subParser("strikethrough")(e,r,t),e=a.subParser("ellipsis")(e,r,t),e=a.subParser("hashHTMLSpans")(e,r,t),e=a.subParser("encodeAmpsAndAngles")(e,r,t),r.simpleLineBreaks?/\n\n¨K/.test(e)||(e=e.replace(/\n+/g,"
\n")):e=e.replace(/ +\n/g,"
\n"),e=t.converter._dispatch("spanGamut.after",e,r,t)}),a.subParser("strikethrough",function(e,r,t){"use strict";return r.strikethrough&&(e=(e=t.converter._dispatch("strikethrough.before",e,r,t)).replace(/(?:~){2}([\s\S]+?)(?:~){2}/g,function(e,n){return function(e){return r.simplifiedAutoLink&&(e=a.subParser("simplifiedAutoLinks")(e,r,t)),""+e+""}(n)}),e=t.converter._dispatch("strikethrough.after",e,r,t)),e}),a.subParser("stripLinkDefinitions",function(e,r,t){"use strict";var n=function(e,n,s,o,i,l,c){return n=n.toLowerCase(),s.match(/^data:.+?\/.+?;base64,/)?t.gUrls[n]=s.replace(/\s/g,""):t.gUrls[n]=a.subParser("encodeAmpsAndAngles")(s,r,t),l?l+c:(c&&(t.gTitles[n]=c.replace(/"|'/g,""")),r.parseImgDimensions&&o&&i&&(t.gDimensions[n]={width:o,height:i}),"")};return e=(e+="¨0").replace(/^ {0,3}\[(.+)]:[ \t]*\n?[ \t]*(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm,n),e=e.replace(/^ {0,3}\[(.+)]:[ \t]*\n?[ \t]*([^>\s]+)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm,n),e=e.replace(/¨0/,"")}),a.subParser("tables",function(e,r,t){"use strict";function n(e){return/^:[ \t]*--*$/.test(e)?' style="text-align:left;"':/^--*[ \t]*:[ \t]*$/.test(e)?' style="text-align:right;"':/^:[ \t]*--*[ \t]*:$/.test(e)?' style="text-align:center;"':""}function s(e,n){var s="";return e=e.trim(),(r.tablesHeaderId||r.tableHeaderId)&&(s=' id="'+e.replace(/ /g,"_").toLowerCase()+'"'),e=a.subParser("spanGamut")(e,r,t),""+e+" \n"}function o(e,n){return""+a.subParser("spanGamut")(e,r,t)+" \n"}function i(e){var i,l=e.split("\n");for(i=0;i\n\n\n",n=0;n\n";for(var s=0;s\n"}return t+=" \n\n"}(p,_)}if(!r.tables)return e;return e=t.converter._dispatch("tables.before",e,r,t),e=e.replace(/\\(\|)/g,a.helper.escapeCharactersCallback),e=e.replace(/^ {0,3}\|?.+\|.+\n {0,3}\|?[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:[-=]){2,}[\s\S]+?(?:\n\n|¨0)/gm,i),e=e.replace(/^ {0,3}\|.+\|[ \t]*\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*\n( {0,3}\|.+\|[ \t]*\n)*(?:\n|¨0)/gm,i),e=t.converter._dispatch("tables.after",e,r,t)}),a.subParser("underline",function(e,r,t){"use strict";return r.underline?(e=t.converter._dispatch("underline.before",e,r,t),e=r.literalMidWordUnderscores?(e=e.replace(/\b___(\S[\s\S]*?)___\b/g,function(e,r){return""+r+""})).replace(/\b__(\S[\s\S]*?)__\b/g,function(e,r){return""+r+""}):(e=e.replace(/___(\S[\s\S]*?)___/g,function(e,r){return/\S$/.test(r)?""+r+"":e})).replace(/__(\S[\s\S]*?)__/g,function(e,r){return/\S$/.test(r)?""+r+"":e}),e=e.replace(/(_)/g,a.helper.escapeCharactersCallback),e=t.converter._dispatch("underline.after",e,r,t)):e}),a.subParser("unescapeSpecialChars",function(e,r,t){"use strict";return e=t.converter._dispatch("unescapeSpecialChars.before",e,r,t),e=e.replace(/¨E(\d+)E/g,function(e,r){var t=parseInt(r);return String.fromCharCode(t)}),e=t.converter._dispatch("unescapeSpecialChars.after",e,r,t)}),a.subParser("makeMarkdown.blockquote",function(e,r){"use strict";var t="";if(e.hasChildNodes())for(var n=e.childNodes,s=n.length,o=0;o "+t.split("\n").join("\n> ")}),a.subParser("makeMarkdown.codeBlock",function(e,r){"use strict";var t=e.getAttribute("language"),a=e.getAttribute("precodenum");return"```"+t+"\n"+r.preList[a]+"\n```"}),a.subParser("makeMarkdown.codeSpan",function(e){"use strict";return"`"+e.innerHTML+"`"}),a.subParser("makeMarkdown.emphasis",function(e,r){"use strict";var t="";if(e.hasChildNodes()){t+="*";for(var n=e.childNodes,s=n.length,o=0;o",e.hasAttribute("width")&&e.hasAttribute("height")&&(r+=" ="+e.getAttribute("width")+"x"+e.getAttribute("height")),e.hasAttribute("title")&&(r+=' "'+e.getAttribute("title")+'"'),r+=")"),r}),a.subParser("makeMarkdown.links",function(e,r){"use strict";var t="";if(e.hasChildNodes()&&e.hasAttribute("href")){var n=e.childNodes,s=n.length;t="[";for(var o=0;o",e.hasAttribute("title")&&(t+=' "'+e.getAttribute("title")+'"'),t+=")"}return t}),a.subParser("makeMarkdown.list",function(e,r,t){"use strict";var n="";if(!e.hasChildNodes())return"";for(var s=e.childNodes,o=s.length,i=e.getAttribute("start")||1,l=0;l"+r.preList[t]+""}),a.subParser("makeMarkdown.strikethrough",function(e,r){"use strict";var t="";if(e.hasChildNodes()){t+="~~";for(var n=e.childNodes,s=n.length,o=0;otr>th"),l=e.querySelectorAll("tbody>tr");for(t=0;t_&&(_=g)}for(t=0;t/g,"\\$1>"),r=r.replace(/^#/gm,"\\#"),r=r.replace(/^(\s*)([-=]{3,})(\s*)$/,"$1\\$2$3"),r=r.replace(/^( {0,3}\d+)\./gm,"$1\\."),r=r.replace(/^( {0,3})([+-])/gm,"$1\\$2"),r=r.replace(/]([\s]*)\(/g,"\\]$1\\("),r=r.replace(/^ {0,3}\[([\S \t]*?)]:/gm,"\\[$1]:")});"function"==typeof define&&define.amd?define(function(){"use strict";return a}):"undefined"!=typeof module&&module.exports?module.exports=a:this.showdown=a}).call(this);
+//# sourceMappingURL=showdown.min.js.map
diff --git a/assets/js/showdown.min.js.map b/assets/js/showdown.min.js.map
new file mode 100644
index 0000000..7e96abc
--- /dev/null
+++ b/assets/js/showdown.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["showdown.js"],"names":["getDefaultOpts","simple","defaultOptions","omitExtraWLInCodeBlocks","defaultValue","describe","type","noHeaderId","prefixHeaderId","rawPrefixHeaderId","ghCompatibleHeaderId","rawHeaderId","headerLevelStart","parseImgDimensions","simplifiedAutoLink","excludeTrailingPunctuationFromURLs","literalMidWordUnderscores","literalMidWordAsterisks","strikethrough","tables","tablesHeaderId","ghCodeBlocks","tasklists","smoothLivePreview","smartIndentationFix","description","disableForced4SpacesIndentedSublists","simpleLineBreaks","requireSpaceBeforeHeadingText","ghMentions","ghMentionsLink","encodeEmails","openLinksInNewWindow","backslashEscapesHTMLTags","emoji","underline","JSON","parse","stringify","ret","opt","hasOwnProperty","validate","extension","name","errMsg","valid","error","showdown","helper","isArray","i","length","baseMsg","ext","isString","toLowerCase","isUndefined","listeners","filter","regex","ln","RegExp","replace","escapeCharactersCallback","wholeMatch","m1","charCodeAt","parsers","extensions","globalOptions","setFlavor","flavor","github","original","ghost","vanilla","allOn","options","allOptionsOn","setOption","key","value","this","getOption","getOptions","resetOptions","Error","preset","option","getFlavor","getFlavorOptions","getDefaultOptions","subParser","func","stdExtName","validExtension","getAllExtensions","removeExtension","resetExtensions","validateExtension","console","warn","a","String","isFunction","getType","toString","call","Array","forEach","obj","callback","prop","s","escapeCharacters","text","charsToEscape","afterBackslash","regexString","rgxFindMatchPos","str","left","right","flags","t","m","start","end","f","g","indexOf","x","l","pos","exec","test","lastIndex","index","match","push","matchRecursiveRegExp","matchPos","results","slice","replaceRecursiveRegExp","replacement","repStr","finalStr","lng","bits","join","regexIndexOf","fromIndex","substring","search","splitAtIndex","encodeEmailAddress","mail","encode","ch","Math","floor","random","r","msg","alert","log","regexes","asteriskDashAndColon","emojis","+1","-1","100","1234","1st_place_medal","2nd_place_medal","3rd_place_medal","8ball","ab","abc","abcd","accept","aerial_tramway","airplane","alarm_clock","alembic","alien","ambulance","amphora","anchor","angel","anger","angry","anguished","ant","apple","aquarius","aries","arrow_backward","arrow_double_down","arrow_double_up","arrow_down","arrow_down_small","arrow_forward","arrow_heading_down","arrow_heading_up","arrow_left","arrow_lower_left","arrow_lower_right","arrow_right","arrow_right_hook","arrow_up","arrow_up_down","arrow_up_small","arrow_upper_left","arrow_upper_right","arrows_clockwise","arrows_counterclockwise","art","articulated_lorry","artificial_satellite","astonished","athletic_shoe","atm","atom_symbol","avocado","b","baby","baby_bottle","baby_chick","baby_symbol","back","bacon","badminton","baggage_claim","baguette_bread","balance_scale","balloon","ballot_box","ballot_box_with_check","bamboo","banana","bangbang","bank","bar_chart","barber","baseball","basketball","basketball_man","basketball_woman","bat","bath","bathtub","battery","beach_umbrella","bear","bed","bee","beer","beers","beetle","beginner","bell","bellhop_bell","bento","biking_man","bike","biking_woman","bikini","biohazard","bird","birthday","black_circle","black_flag","black_heart","black_joker","black_large_square","black_medium_small_square","black_medium_square","black_nib","black_small_square","black_square_button","blonde_man","blonde_woman","blossom","blowfish","blue_book","blue_car","blue_heart","blush","boar","boat","bomb","book","bookmark","bookmark_tabs","books","boom","boot","bouquet","bowing_man","bow_and_arrow","bowing_woman","bowling","boxing_glove","boy","bread","bride_with_veil","bridge_at_night","briefcase","broken_heart","bug","building_construction","bulb","bullettrain_front","bullettrain_side","burrito","bus","business_suit_levitating","busstop","bust_in_silhouette","busts_in_silhouette","butterfly","cactus","cake","calendar","call_me_hand","calling","camel","camera","camera_flash","camping","cancer","candle","candy","canoe","capital_abcd","capricorn","car","card_file_box","card_index","card_index_dividers","carousel_horse","carrot","cat","cat2","cd","chains","champagne","chart","chart_with_downwards_trend","chart_with_upwards_trend","checkered_flag","cheese","cherries","cherry_blossom","chestnut","chicken","children_crossing","chipmunk","chocolate_bar","christmas_tree","church","cinema","circus_tent","city_sunrise","city_sunset","cityscape","cl","clamp","clap","clapper","classical_building","clinking_glasses","clipboard","clock1","clock10","clock1030","clock11","clock1130","clock12","clock1230","clock130","clock2","clock230","clock3","clock330","clock4","clock430","clock5","clock530","clock6","clock630","clock7","clock730","clock8","clock830","clock9","clock930","closed_book","closed_lock_with_key","closed_umbrella","cloud","cloud_with_lightning","cloud_with_lightning_and_rain","cloud_with_rain","cloud_with_snow","clown_face","clubs","cocktail","coffee","coffin","cold_sweat","comet","computer","computer_mouse","confetti_ball","confounded","confused","congratulations","construction","construction_worker_man","construction_worker_woman","control_knobs","convenience_store","cookie","cool","policeman","copyright","corn","couch_and_lamp","couple","couple_with_heart_woman_man","couple_with_heart_man_man","couple_with_heart_woman_woman","couplekiss_man_man","couplekiss_man_woman","couplekiss_woman_woman","cow","cow2","cowboy_hat_face","crab","crayon","credit_card","crescent_moon","cricket","crocodile","croissant","crossed_fingers","crossed_flags","crossed_swords","crown","cry","crying_cat_face","crystal_ball","cucumber","cupid","curly_loop","currency_exchange","curry","custard","customs","cyclone","dagger","dancer","dancing_women","dancing_men","dango","dark_sunglasses","dart","dash","date","deciduous_tree","deer","department_store","derelict_house","desert","desert_island","desktop_computer","male_detective","diamond_shape_with_a_dot_inside","diamonds","disappointed","disappointed_relieved","dizzy","dizzy_face","do_not_litter","dog","dog2","dollar","dolls","dolphin","door","doughnut","dove","dragon","dragon_face","dress","dromedary_camel","drooling_face","droplet","drum","duck","dvd","e-mail","eagle","ear","ear_of_rice","earth_africa","earth_americas","earth_asia","egg","eggplant","eight_pointed_black_star","eight_spoked_asterisk","electric_plug","elephant","email","envelope_with_arrow","euro","european_castle","european_post_office","evergreen_tree","exclamation","expressionless","eye","eye_speech_bubble","eyeglasses","eyes","face_with_head_bandage","face_with_thermometer","fist_oncoming","factory","fallen_leaf","family_man_woman_boy","family_man_boy","family_man_boy_boy","family_man_girl","family_man_girl_boy","family_man_girl_girl","family_man_man_boy","family_man_man_boy_boy","family_man_man_girl","family_man_man_girl_boy","family_man_man_girl_girl","family_man_woman_boy_boy","family_man_woman_girl","family_man_woman_girl_boy","family_man_woman_girl_girl","family_woman_boy","family_woman_boy_boy","family_woman_girl","family_woman_girl_boy","family_woman_girl_girl","family_woman_woman_boy","family_woman_woman_boy_boy","family_woman_woman_girl","family_woman_woman_girl_boy","family_woman_woman_girl_girl","fast_forward","fax","fearful","feet","female_detective","ferris_wheel","ferry","field_hockey","file_cabinet","file_folder","film_projector","film_strip","fire","fire_engine","fireworks","first_quarter_moon","first_quarter_moon_with_face","fish","fish_cake","fishing_pole_and_fish","fist_raised","fist_left","fist_right","flashlight","fleur_de_lis","flight_arrival","flight_departure","floppy_disk","flower_playing_cards","flushed","fog","foggy","football","footprints","fork_and_knife","fountain","fountain_pen","four_leaf_clover","fox_face","framed_picture","free","fried_egg","fried_shrimp","fries","frog","frowning","frowning_face","frowning_man","frowning_woman","middle_finger","fuelpump","full_moon","full_moon_with_face","funeral_urn","game_die","gear","gem","gemini","gift","gift_heart","girl","globe_with_meridians","goal_net","goat","golf","golfing_man","golfing_woman","gorilla","grapes","green_apple","green_book","green_heart","green_salad","grey_exclamation","grey_question","grimacing","grin","grinning","guardsman","guardswoman","guitar","gun","haircut_woman","haircut_man","hamburger","hammer","hammer_and_pick","hammer_and_wrench","hamster","hand","handbag","handshake","hankey","hatched_chick","hatching_chick","headphones","hear_no_evil","heart","heart_decoration","heart_eyes","heart_eyes_cat","heartbeat","heartpulse","hearts","heavy_check_mark","heavy_division_sign","heavy_dollar_sign","heavy_heart_exclamation","heavy_minus_sign","heavy_multiplication_x","heavy_plus_sign","helicopter","herb","hibiscus","high_brightness","high_heel","hocho","hole","honey_pot","horse","horse_racing","hospital","hot_pepper","hotdog","hotel","hotsprings","hourglass","hourglass_flowing_sand","house","house_with_garden","houses","hugs","hushed","ice_cream","ice_hockey","ice_skate","icecream","id","ideograph_advantage","imp","inbox_tray","incoming_envelope","tipping_hand_woman","information_source","innocent","interrobang","iphone","izakaya_lantern","jack_o_lantern","japan","japanese_castle","japanese_goblin","japanese_ogre","jeans","joy","joy_cat","joystick","kaaba","keyboard","keycap_ten","kick_scooter","kimono","kiss","kissing","kissing_cat","kissing_closed_eyes","kissing_heart","kissing_smiling_eyes","kiwi_fruit","koala","koko","label","large_blue_circle","large_blue_diamond","large_orange_diamond","last_quarter_moon","last_quarter_moon_with_face","latin_cross","laughing","leaves","ledger","left_luggage","left_right_arrow","leftwards_arrow_with_hook","lemon","leo","leopard","level_slider","libra","light_rail","link","lion","lips","lipstick","lizard","lock","lock_with_ink_pen","lollipop","loop","loud_sound","loudspeaker","love_hotel","love_letter","low_brightness","lying_face","mag","mag_right","mahjong","mailbox","mailbox_closed","mailbox_with_mail","mailbox_with_no_mail","man","man_artist","man_astronaut","man_cartwheeling","man_cook","man_dancing","man_facepalming","man_factory_worker","man_farmer","man_firefighter","man_health_worker","man_in_tuxedo","man_judge","man_juggling","man_mechanic","man_office_worker","man_pilot","man_playing_handball","man_playing_water_polo","man_scientist","man_shrugging","man_singer","man_student","man_teacher","man_technologist","man_with_gua_pi_mao","man_with_turban","tangerine","mans_shoe","mantelpiece_clock","maple_leaf","martial_arts_uniform","mask","massage_woman","massage_man","meat_on_bone","medal_military","medal_sports","mega","melon","memo","men_wrestling","menorah","mens","metal","metro","microphone","microscope","milk_glass","milky_way","minibus","minidisc","mobile_phone_off","money_mouth_face","money_with_wings","moneybag","monkey","monkey_face","monorail","moon","mortar_board","mosque","motor_boat","motor_scooter","motorcycle","motorway","mount_fuji","mountain","mountain_biking_man","mountain_biking_woman","mountain_cableway","mountain_railway","mountain_snow","mouse","mouse2","movie_camera","moyai","mrs_claus","muscle","mushroom","musical_keyboard","musical_note","musical_score","mute","nail_care","name_badge","national_park","nauseated_face","necktie","negative_squared_cross_mark","nerd_face","neutral_face","new","new_moon","new_moon_with_face","newspaper","newspaper_roll","next_track_button","ng","no_good_man","no_good_woman","night_with_stars","no_bell","no_bicycles","no_entry","no_entry_sign","no_mobile_phones","no_mouth","no_pedestrians","no_smoking","non-potable_water","nose","notebook","notebook_with_decorative_cover","notes","nut_and_bolt","o","o2","ocean","octopus","oden","office","oil_drum","ok","ok_hand","ok_man","ok_woman","old_key","older_man","older_woman","om","on","oncoming_automobile","oncoming_bus","oncoming_police_car","oncoming_taxi","open_file_folder","open_hands","open_mouth","open_umbrella","ophiuchus","orange_book","orthodox_cross","outbox_tray","owl","ox","package","page_facing_up","page_with_curl","pager","paintbrush","palm_tree","pancakes","panda_face","paperclip","paperclips","parasol_on_ground","parking","part_alternation_mark","partly_sunny","passenger_ship","passport_control","pause_button","peace_symbol","peach","peanuts","pear","pen","pencil2","penguin","pensive","performing_arts","persevere","person_fencing","pouting_woman","phone","pick","pig","pig2","pig_nose","pill","pineapple","ping_pong","pisces","pizza","place_of_worship","plate_with_cutlery","play_or_pause_button","point_down","point_left","point_right","point_up","point_up_2","police_car","policewoman","poodle","popcorn","post_office","postal_horn","postbox","potable_water","potato","pouch","poultry_leg","pound","rage","pouting_cat","pouting_man","pray","prayer_beads","pregnant_woman","previous_track_button","prince","princess","printer","purple_heart","purse","pushpin","put_litter_in_its_place","question","rabbit","rabbit2","racehorse","racing_car","radio","radio_button","radioactive","railway_car","railway_track","rainbow","rainbow_flag","raised_back_of_hand","raised_hand_with_fingers_splayed","raised_hands","raising_hand_woman","raising_hand_man","ram","ramen","rat","record_button","recycle","red_circle","registered","relaxed","relieved","reminder_ribbon","repeat","repeat_one","rescue_worker_helmet","restroom","revolving_hearts","rewind","rhinoceros","ribbon","rice","rice_ball","rice_cracker","rice_scene","right_anger_bubble","ring","robot","rocket","rofl","roll_eyes","roller_coaster","rooster","rose","rosette","rotating_light","round_pushpin","rowing_man","rowing_woman","rugby_football","running_man","running_shirt_with_sash","running_woman","sa","sagittarius","sake","sandal","santa","satellite","saxophone","school","school_satchel","scissors","scorpion","scorpius","scream","scream_cat","scroll","seat","secret","see_no_evil","seedling","selfie","shallow_pan_of_food","shamrock","shark","shaved_ice","sheep","shell","shield","shinto_shrine","ship","shirt","shopping","shopping_cart","shower","shrimp","signal_strength","six_pointed_star","ski","skier","skull","skull_and_crossbones","sleeping","sleeping_bed","sleepy","slightly_frowning_face","slightly_smiling_face","slot_machine","small_airplane","small_blue_diamond","small_orange_diamond","small_red_triangle","small_red_triangle_down","smile","smile_cat","smiley","smiley_cat","smiling_imp","smirk","smirk_cat","smoking","snail","snake","sneezing_face","snowboarder","snowflake","snowman","snowman_with_snow","sob","soccer","soon","sos","sound","space_invader","spades","spaghetti","sparkle","sparkler","sparkles","sparkling_heart","speak_no_evil","speaker","speaking_head","speech_balloon","speedboat","spider","spider_web","spiral_calendar","spiral_notepad","spoon","squid","stadium","star","star2","star_and_crescent","star_of_david","stars","station","statue_of_liberty","steam_locomotive","stew","stop_button","stop_sign","stopwatch","straight_ruler","strawberry","stuck_out_tongue","stuck_out_tongue_closed_eyes","stuck_out_tongue_winking_eye","studio_microphone","stuffed_flatbread","sun_behind_large_cloud","sun_behind_rain_cloud","sun_behind_small_cloud","sun_with_face","sunflower","sunglasses","sunny","sunrise","sunrise_over_mountains","surfing_man","surfing_woman","sushi","suspension_railway","sweat","sweat_drops","sweat_smile","sweet_potato","swimming_man","swimming_woman","symbols","synagogue","syringe","taco","tada","tanabata_tree","taurus","taxi","tea","telephone_receiver","telescope","tennis","tent","thermometer","thinking","thought_balloon","ticket","tickets","tiger","tiger2","timer_clock","tipping_hand_man","tired_face","tm","toilet","tokyo_tower","tomato","tongue","top","tophat","tornado","trackball","tractor","traffic_light","train","train2","tram","triangular_flag_on_post","triangular_ruler","trident","triumph","trolleybus","trophy","tropical_drink","tropical_fish","truck","trumpet","tulip","tumbler_glass","turkey","turtle","tv","twisted_rightwards_arrows","two_hearts","two_men_holding_hands","two_women_holding_hands","u5272","u5408","u55b6","u6307","u6708","u6709","u6e80","u7121","u7533","u7981","u7a7a","umbrella","unamused","underage","unicorn","unlock","up","upside_down_face","v","vertical_traffic_light","vhs","vibration_mode","video_camera","video_game","violin","virgo","volcano","volleyball","vs","vulcan_salute","walking_man","walking_woman","waning_crescent_moon","waning_gibbous_moon","warning","wastebasket","watch","water_buffalo","watermelon","wave","wavy_dash","waxing_crescent_moon","wc","weary","wedding","weight_lifting_man","weight_lifting_woman","whale","whale2","wheel_of_dharma","wheelchair","white_check_mark","white_circle","white_flag","white_flower","white_large_square","white_medium_small_square","white_medium_square","white_small_square","white_square_button","wilted_flower","wind_chime","wind_face","wine_glass","wink","wolf","woman","woman_artist","woman_astronaut","woman_cartwheeling","woman_cook","woman_facepalming","woman_factory_worker","woman_farmer","woman_firefighter","woman_health_worker","woman_judge","woman_juggling","woman_mechanic","woman_office_worker","woman_pilot","woman_playing_handball","woman_playing_water_polo","woman_scientist","woman_shrugging","woman_singer","woman_student","woman_teacher","woman_technologist","woman_with_turban","womans_clothes","womans_hat","women_wrestling","womens","world_map","worried","wrench","writing_hand","yellow_heart","yen","yin_yang","yum","zap","zipper_mouth_face","zzz","octocat","Converter","converterOptions","_parseExtension","legacyExtensionLoading","validExt","langExtensions","outputModifiers","listen","rTrimInputText","rsp","rgx","setConvFlavor","gOpt","_constructor","_dispatch","evtName","globals","ei","nText","makeHtml","gHtmlBlocks","gHtmlMdBlocks","gHtmlSpans","gUrls","gTitles","gDimensions","gListLevel","hashLinkCounts","converter","addExtension","useExtension","extensionName","splice","language","output","writeAnchorTag","linkText","linkId","url","m5","m6","title","result","wm","st","escape","mentions","username","lnk","target","simpleURLRegex","simpleURLRegex2","delimUrlRegex","simpleMailRegex","delimMailRegex","replaceLink","leadingMagicChars","m2","m3","trailingPunctuation","trailingMagicChars","lnkTxt","append","lmc","tmc","replaceMail","href","bq","pre","pattern","codeblock","nextChar","c","leadingText","numSpaces","emojiRgx","emojiCode","tags","comments","blockText","blockTags","inside","opTagPos","rgx1","patLeft","patRight","subTexts","newSubText1","txt","concat","hashHTMLSpan","html","repText","limit","num","$1","headerId","prefix","customizedHeaderId","isNaN","parseInt","setextRegexH1","setextRegexH2","spanGamut","hID","hLevel","hashBlock","matchFound","atxStyle","hText","span","header","writeImageTag","altText","width","height","gDims","inlineRegExp","crazyRegExp","base64RegExp","referenceRegExp","refShortcutRegExp","parseInside","trim","lead","trail","processListItems","listStr","trimTrailing","isParagraphed","m4","taskbtn","checked","item","bulletStyle","otp","wm2","styleStartNumber","list","listType","res","parseConsecutiveLists","olRgx","ulRgx","counterRxg","parseCL","style","grafs","split","grafsOut","grafsOutIt","codeFlag","delim","$2","re","base64Regex","replaceFunc","blankLines","parseStyles","sLine","parseHeaders","tableHeaderId","parseCells","cell","buildTable","headers","cells","tb","tblLgn","ii","parseTable","rawTable","tableLines","rawHeaders","map","rawStyles","rawCells","styles","shift","row","hackFixTableFollowedByList","lastChars","tableRgx","singeColTblRgx","charCodeToReplace","fromCharCode","root","define","amd","module","exports"],"mappings":";CACA,WAKA,SAASA,EAAgBC,GACvB,aAEA,IAAIC,GACFC,yBACEC,cAAc,EACdC,SAAU,wDACVC,KAAM,WAERC,YACEH,cAAc,EACdC,SAAU,kCACVC,KAAM,WAERE,gBACEJ,cAAc,EACdC,SAAU,4JACVC,KAAM,UAERG,mBACEL,cAAc,EACdC,SAAU,uKACVC,KAAM,WAERI,sBACEN,cAAc,EACdC,SAAU,oIACVC,KAAM,WAERK,aACEP,cAAc,EACdC,SAAU,2JACVC,KAAM,WAERM,kBACER,cAAc,EACdC,SAAU,gCACVC,KAAM,WAERO,oBACET,cAAc,EACdC,SAAU,sCACVC,KAAM,WAERQ,oBACEV,cAAc,EACdC,SAAU,iCACVC,KAAM,WAERS,oCACEX,cAAc,EACdC,SAAU,sEACVC,KAAM,WAERU,2BACEZ,cAAc,EACdC,SAAU,mDACVC,KAAM,WAERW,yBACEb,cAAc,EACdC,SAAU,+CACVC,KAAM,WAERY,eACEd,cAAc,EACdC,SAAU,oCACVC,KAAM,WAERa,QACEf,cAAc,EACdC,SAAU,6BACVC,KAAM,WAERc,gBACEhB,cAAc,EACdC,SAAU,6BACVC,KAAM,WAERe,cACEjB,cAAc,EACdC,SAAU,6CACVC,KAAM,WAERgB,WACElB,cAAc,EACdC,SAAU,mCACVC,KAAM,WAERiB,mBACEnB,cAAc,EACdC,SAAU,kEACVC,KAAM,WAERkB,qBACEpB,cAAc,EACdqB,YAAa,kDACbnB,KAAM,WAERoB,sCACEtB,cAAc,EACdqB,YAAa,oEACbnB,KAAM,WAERqB,kBACEvB,cAAc,EACdqB,YAAa,gDACbnB,KAAM,WAERsB,+BACExB,cAAc,EACdqB,YAAa,6EACbnB,KAAM,WAERuB,YACEzB,cAAc,EACdqB,YAAa,2BACbnB,KAAM,WAERwB,gBACE1B,aAAc,yBACdqB,YAAa,yFACbnB,KAAM,UAERyB,cACE3B,cAAc,EACdqB,YAAa,0IACbnB,KAAM,WAER0B,sBACE5B,cAAc,EACdqB,YAAa,gCACbnB,KAAM,WAER2B,0BACE7B,cAAc,EACdqB,YAAa,oDACbnB,KAAM,WAER4B,OACE9B,cAA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","file":"showdown.min.js"}
\ No newline at end of file
diff --git a/assets/js/smooth-scroll.js b/assets/js/smooth-scroll.js
new file mode 100644
index 0000000..c4179a7
--- /dev/null
+++ b/assets/js/smooth-scroll.js
@@ -0,0 +1,650 @@
+/*!
+ * smooth-scroll v16.1.2
+ * Animate scrolling to anchor links
+ * (c) 2020 Chris Ferdinandi
+ * MIT License
+ * http://github.com/cferdinandi/smooth-scroll
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define([], (function () {
+ return factory(root);
+ }));
+ } else if (typeof exports === 'object') {
+ module.exports = factory(root);
+ } else {
+ root.SmoothScroll = factory(root);
+ }
+})(typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : this, (function (window) {
+
+ 'use strict';
+
+ //
+ // Default settings
+ //
+
+ var defaults = {
+
+ // Selectors
+ ignore: '[data-scroll-ignore]',
+ header: null,
+ topOnEmptyHash: true,
+
+ // Speed & Duration
+ speed: 500,
+ speedAsDuration: false,
+ durationMax: null,
+ durationMin: null,
+ clip: true,
+ offset: 0,
+
+ // Easing
+ easing: 'easeInOutCubic',
+ customEasing: null,
+
+ // History
+ updateURL: true,
+ popstate: true,
+
+ // Custom Events
+ emitEvents: true
+
+ };
+
+
+ //
+ // Utility Methods
+ //
+
+ /**
+ * Check if browser supports required methods
+ * @return {Boolean} Returns true if all required methods are supported
+ */
+ var supports = function () {
+ return (
+ 'querySelector' in document &&
+ 'addEventListener' in window &&
+ 'requestAnimationFrame' in window &&
+ 'closest' in window.Element.prototype
+ );
+ };
+
+ /**
+ * Merge two or more objects together.
+ * @param {Object} objects The objects to merge together
+ * @returns {Object} Merged values of defaults and options
+ */
+ var extend = function () {
+ var merged = {};
+ Array.prototype.forEach.call(arguments, (function (obj) {
+ for (var key in obj) {
+ if (!obj.hasOwnProperty(key)) return;
+ merged[key] = obj[key];
+ }
+ }));
+ return merged;
+ };
+
+ /**
+ * Check to see if user prefers reduced motion
+ * @param {Object} settings Script settings
+ */
+ var reduceMotion = function () {
+ if ('matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches) {
+ return true;
+ }
+ return false;
+ };
+
+ /**
+ * Get the height of an element.
+ * @param {Node} elem The element to get the height of
+ * @return {Number} The element's height in pixels
+ */
+ var getHeight = function (elem) {
+ return parseInt(window.getComputedStyle(elem).height, 10);
+ };
+
+ /**
+ * Escape special characters for use with querySelector
+ * @author Mathias Bynens
+ * @link https://github.com/mathiasbynens/CSS.escape
+ * @param {String} id The anchor ID to escape
+ */
+ var escapeCharacters = function (id) {
+
+ // Remove leading hash
+ if (id.charAt(0) === '#') {
+ id = id.substr(1);
+ }
+
+ var string = String(id);
+ var length = string.length;
+ var index = -1;
+ var codeUnit;
+ var result = '';
+ var firstCodeUnit = string.charCodeAt(0);
+ while (++index < length) {
+ codeUnit = string.charCodeAt(index);
+ // Note: there’s no need to special-case astral symbols, surrogate
+ // pairs, or lone surrogates.
+
+ // If the character is NULL (U+0000), then throw an
+ // `InvalidCharacterError` exception and terminate these steps.
+ if (codeUnit === 0x0000) {
+ throw new InvalidCharacterError(
+ 'Invalid character: the input contains U+0000.'
+ );
+ }
+
+ if (
+ // If the character is in the range [\1-\1F] (U+0001 to U+001F) or is
+ // U+007F, […]
+ (codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||
+ // If the character is the first character and is in the range [0-9]
+ // (U+0030 to U+0039), […]
+ (index === 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||
+ // If the character is the second character and is in the range [0-9]
+ // (U+0030 to U+0039) and the first character is a `-` (U+002D), […]
+ (
+ index === 1 &&
+ codeUnit >= 0x0030 && codeUnit <= 0x0039 &&
+ firstCodeUnit === 0x002D
+ )
+ ) {
+ // http://dev.w3.org/csswg/cssom/#escape-a-character-as-code-point
+ result += '\\' + codeUnit.toString(16) + ' ';
+ continue;
+ }
+
+ // If the character is not handled by one of the above rules and is
+ // greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or
+ // is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to
+ // U+005A), or [a-z] (U+0061 to U+007A), […]
+ if (
+ codeUnit >= 0x0080 ||
+ codeUnit === 0x002D ||
+ codeUnit === 0x005F ||
+ codeUnit >= 0x0030 && codeUnit <= 0x0039 ||
+ codeUnit >= 0x0041 && codeUnit <= 0x005A ||
+ codeUnit >= 0x0061 && codeUnit <= 0x007A
+ ) {
+ // the character itself
+ result += string.charAt(index);
+ continue;
+ }
+
+ // Otherwise, the escaped character.
+ // http://dev.w3.org/csswg/cssom/#escape-a-character
+ result += '\\' + string.charAt(index);
+
+ }
+
+ // Return sanitized hash
+ return '#' + result;
+
+ };
+
+ /**
+ * Calculate the easing pattern
+ * @link https://gist.github.com/gre/1650294
+ * @param {String} type Easing pattern
+ * @param {Number} time Time animation should take to complete
+ * @returns {Number}
+ */
+ var easingPattern = function (settings, time) {
+ var pattern;
+
+ // Default Easing Patterns
+ if (settings.easing === 'easeInQuad') pattern = time * time; // accelerating from zero velocity
+ if (settings.easing === 'easeOutQuad') pattern = time * (2 - time); // decelerating to zero velocity
+ if (settings.easing === 'easeInOutQuad') pattern = time < 0.5 ? 2 * time * time : -1 + (4 - 2 * time) * time; // acceleration until halfway, then deceleration
+ if (settings.easing === 'easeInCubic') pattern = time * time * time; // accelerating from zero velocity
+ if (settings.easing === 'easeOutCubic') pattern = (--time) * time * time + 1; // decelerating to zero velocity
+ if (settings.easing === 'easeInOutCubic') pattern = time < 0.5 ? 4 * time * time * time : (time - 1) * (2 * time - 2) * (2 * time - 2) + 1; // acceleration until halfway, then deceleration
+ if (settings.easing === 'easeInQuart') pattern = time * time * time * time; // accelerating from zero velocity
+ if (settings.easing === 'easeOutQuart') pattern = 1 - (--time) * time * time * time; // decelerating to zero velocity
+ if (settings.easing === 'easeInOutQuart') pattern = time < 0.5 ? 8 * time * time * time * time : 1 - 8 * (--time) * time * time * time; // acceleration until halfway, then deceleration
+ if (settings.easing === 'easeInQuint') pattern = time * time * time * time * time; // accelerating from zero velocity
+ if (settings.easing === 'easeOutQuint') pattern = 1 + (--time) * time * time * time * time; // decelerating to zero velocity
+ if (settings.easing === 'easeInOutQuint') pattern = time < 0.5 ? 16 * time * time * time * time * time : 1 + 16 * (--time) * time * time * time * time; // acceleration until halfway, then deceleration
+
+ // Custom Easing Patterns
+ if (!!settings.customEasing) pattern = settings.customEasing(time);
+
+ return pattern || time; // no easing, no acceleration
+ };
+
+ /**
+ * Determine the document's height
+ * @returns {Number}
+ */
+ var getDocumentHeight = function () {
+ return Math.max(
+ document.body.scrollHeight, document.documentElement.scrollHeight,
+ document.body.offsetHeight, document.documentElement.offsetHeight,
+ document.body.clientHeight, document.documentElement.clientHeight
+ );
+ };
+
+ /**
+ * Calculate how far to scroll
+ * Clip support added by robjtede - https://github.com/cferdinandi/smooth-scroll/issues/405
+ * @param {Element} anchor The anchor element to scroll to
+ * @param {Number} headerHeight Height of a fixed header, if any
+ * @param {Number} offset Number of pixels by which to offset scroll
+ * @param {Boolean} clip If true, adjust scroll distance to prevent abrupt stops near the bottom of the page
+ * @returns {Number}
+ */
+ var getEndLocation = function (anchor, headerHeight, offset, clip) {
+ var location = 0;
+ if (anchor.offsetParent) {
+ do {
+ location += anchor.offsetTop;
+ anchor = anchor.offsetParent;
+ } while (anchor);
+ }
+ location = Math.max(location - headerHeight - offset, 0);
+ if (clip) {
+ location = Math.min(location, getDocumentHeight() - window.innerHeight);
+ }
+ return location;
+ };
+
+ /**
+ * Get the height of the fixed header
+ * @param {Node} header The header
+ * @return {Number} The height of the header
+ */
+ var getHeaderHeight = function (header) {
+ return !header ? 0 : (getHeight(header) + header.offsetTop);
+ };
+
+ /**
+ * Calculate the speed to use for the animation
+ * @param {Number} distance The distance to travel
+ * @param {Object} settings The plugin settings
+ * @return {Number} How fast to animate
+ */
+ var getSpeed = function (distance, settings) {
+ var speed = settings.speedAsDuration ? settings.speed : Math.abs(distance / 1000 * settings.speed);
+ if (settings.durationMax && speed > settings.durationMax) return settings.durationMax;
+ if (settings.durationMin && speed < settings.durationMin) return settings.durationMin;
+ return parseInt(speed, 10);
+ };
+
+ var setHistory = function (options) {
+
+ // Make sure this should run
+ if (!history.replaceState || !options.updateURL || history.state) return;
+
+ // Get the hash to use
+ var hash = window.location.hash;
+ hash = hash ? hash : '';
+
+ // Set a default history
+ history.replaceState(
+ {
+ smoothScroll: JSON.stringify(options),
+ anchor: hash ? hash : window.pageYOffset
+ },
+ document.title,
+ hash ? hash : window.location.href
+ );
+
+ };
+
+ /**
+ * Update the URL
+ * @param {Node} anchor The anchor that was scrolled to
+ * @param {Boolean} isNum If true, anchor is a number
+ * @param {Object} options Settings for Smooth Scroll
+ */
+ var updateURL = function (anchor, isNum, options) {
+
+ // Bail if the anchor is a number
+ if (isNum) return;
+
+ // Verify that pushState is supported and the updateURL option is enabled
+ if (!history.pushState || !options.updateURL) return;
+
+ // Update URL
+ history.pushState(
+ {
+ smoothScroll: JSON.stringify(options),
+ anchor: anchor.id
+ },
+ document.title,
+ anchor === document.documentElement ? '#top' : '#' + anchor.id
+ );
+
+ };
+
+ /**
+ * Bring the anchored element into focus
+ * @param {Node} anchor The anchor element
+ * @param {Number} endLocation The end location to scroll to
+ * @param {Boolean} isNum If true, scroll is to a position rather than an element
+ */
+ var adjustFocus = function (anchor, endLocation, isNum) {
+
+ // Is scrolling to top of page, blur
+ if (anchor === 0) {
+ document.body.focus();
+ }
+
+ // Don't run if scrolling to a number on the page
+ if (isNum) return;
+
+ // Otherwise, bring anchor element into focus
+ anchor.focus();
+ if (document.activeElement !== anchor) {
+ anchor.setAttribute('tabindex', '-1');
+ anchor.focus();
+ anchor.style.outline = 'none';
+ }
+ window.scrollTo(0 , endLocation);
+
+ };
+
+ /**
+ * Emit a custom event
+ * @param {String} type The event type
+ * @param {Object} options The settings object
+ * @param {Node} anchor The anchor element
+ * @param {Node} toggle The toggle element
+ */
+ var emitEvent = function (type, options, anchor, toggle) {
+ if (!options.emitEvents || typeof window.CustomEvent !== 'function') return;
+ var event = new CustomEvent(type, {
+ bubbles: true,
+ detail: {
+ anchor: anchor,
+ toggle: toggle
+ }
+ });
+ document.dispatchEvent(event);
+ };
+
+
+ //
+ // SmoothScroll Constructor
+ //
+
+ var SmoothScroll = function (selector, options) {
+
+ //
+ // Variables
+ //
+
+ var smoothScroll = {}; // Object for public APIs
+ var settings, anchor, toggle, fixedHeader, eventTimeout, animationInterval;
+
+
+ //
+ // Methods
+ //
+
+ /**
+ * Cancel a scroll-in-progress
+ */
+ smoothScroll.cancelScroll = function (noEvent) {
+ cancelAnimationFrame(animationInterval);
+ animationInterval = null;
+ if (noEvent) return;
+ emitEvent('scrollCancel', settings);
+ };
+
+ /**
+ * Start/stop the scrolling animation
+ * @param {Node|Number} anchor The element or position to scroll to
+ * @param {Element} toggle The element that toggled the scroll event
+ * @param {Object} options
+ */
+ smoothScroll.animateScroll = function (anchor, toggle, options) {
+
+ // Cancel any in progress scrolls
+ smoothScroll.cancelScroll();
+
+ // Local settings
+ var _settings = extend(settings || defaults, options || {}); // Merge user options with defaults
+
+ // Selectors and variables
+ var isNum = Object.prototype.toString.call(anchor) === '[object Number]' ? true : false;
+ var anchorElem = isNum || !anchor.tagName ? null : anchor;
+ if (!isNum && !anchorElem) return;
+ var startLocation = window.pageYOffset; // Current location on the page
+ if (_settings.header && !fixedHeader) {
+ // Get the fixed header if not already set
+ fixedHeader = document.querySelector(_settings.header);
+ }
+ var headerHeight = getHeaderHeight(fixedHeader);
+ var endLocation = isNum ? anchor : getEndLocation(anchorElem, headerHeight, parseInt((typeof _settings.offset === 'function' ? _settings.offset(anchor, toggle) : _settings.offset), 10), _settings.clip); // Location to scroll to
+ var distance = endLocation - startLocation; // distance to travel
+ var documentHeight = getDocumentHeight();
+ var timeLapsed = 0;
+ var speed = getSpeed(distance, _settings);
+ var start, percentage, position;
+
+ /**
+ * Stop the scroll animation when it reaches its target (or the bottom/top of page)
+ * @param {Number} position Current position on the page
+ * @param {Number} endLocation Scroll to location
+ * @param {Number} animationInterval How much to scroll on this loop
+ */
+ var stopAnimateScroll = function (position, endLocation) {
+
+ // Get the current location
+ var currentLocation = window.pageYOffset;
+
+ // Check if the end location has been reached yet (or we've hit the end of the document)
+ if (position == endLocation || currentLocation == endLocation || ((startLocation < endLocation && window.innerHeight + currentLocation) >= documentHeight)) {
+
+ // Clear the animation timer
+ smoothScroll.cancelScroll(true);
+
+ // Bring the anchored element into focus
+ adjustFocus(anchor, endLocation, isNum);
+
+ // Emit a custom event
+ emitEvent('scrollStop', _settings, anchor, toggle);
+
+ // Reset start
+ start = null;
+ animationInterval = null;
+
+ return true;
+
+ }
+ };
+
+ /**
+ * Loop scrolling animation
+ */
+ var loopAnimateScroll = function (timestamp) {
+ if (!start) { start = timestamp; }
+ timeLapsed += timestamp - start;
+ percentage = speed === 0 ? 0 : (timeLapsed / speed);
+ percentage = (percentage > 1) ? 1 : percentage;
+ position = startLocation + (distance * easingPattern(_settings, percentage));
+ window.scrollTo(0, Math.floor(position));
+ if (!stopAnimateScroll(position, endLocation)) {
+ animationInterval = window.requestAnimationFrame(loopAnimateScroll);
+ start = timestamp;
+ }
+ };
+
+ /**
+ * Reset position to fix weird iOS bug
+ * @link https://github.com/cferdinandi/smooth-scroll/issues/45
+ */
+ if (window.pageYOffset === 0) {
+ window.scrollTo(0, 0);
+ }
+
+ // Update the URL
+ updateURL(anchor, isNum, _settings);
+
+ // If the user prefers reduced motion, jump to location
+ if (reduceMotion()) {
+ window.scrollTo(0, Math.floor(endLocation));
+ return;
+ }
+
+ // Emit a custom event
+ emitEvent('scrollStart', _settings, anchor, toggle);
+
+ // Start scrolling animation
+ smoothScroll.cancelScroll(true);
+ window.requestAnimationFrame(loopAnimateScroll);
+
+ };
+
+ /**
+ * If smooth scroll element clicked, animate scroll
+ */
+ var clickHandler = function (event) {
+
+ // Don't run if event was canceled but still bubbled up
+ // By @mgreter - https://github.com/cferdinandi/smooth-scroll/pull/462/
+ if (event.defaultPrevented) return;
+
+ // Don't run if right-click or command/control + click or shift + click
+ if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey) return;
+
+ // Check if event.target has closest() method
+ // By @totegi - https://github.com/cferdinandi/smooth-scroll/pull/401/
+ if (!('closest' in event.target)) return;
+
+ // Check if a smooth scroll link was clicked
+ toggle = event.target.closest(selector);
+ if (!toggle || toggle.tagName.toLowerCase() !== 'a' || event.target.closest(settings.ignore)) return;
+
+ // Only run if link is an anchor and points to the current page
+ if (toggle.hostname !== window.location.hostname || toggle.pathname !== window.location.pathname || !/#/.test(toggle.href)) return;
+
+ // Get an escaped version of the hash
+ var hash;
+ try {
+ hash = escapeCharacters(decodeURIComponent(toggle.hash));
+ } catch(e) {
+ hash = escapeCharacters(toggle.hash);
+ }
+
+ // Get the anchored element
+ var anchor;
+ if (hash === '#') {
+ if (!settings.topOnEmptyHash) return;
+ anchor = document.documentElement;
+ } else {
+ anchor = document.querySelector(hash);
+ }
+ anchor = !anchor && hash === '#top' ? document.documentElement : anchor;
+
+ // If anchored element exists, scroll to it
+ if (!anchor) return;
+ event.preventDefault();
+ setHistory(settings);
+ smoothScroll.animateScroll(anchor, toggle);
+
+ };
+
+ /**
+ * Animate scroll on popstate events
+ */
+ var popstateHandler = function (event) {
+
+ // Stop if history.state doesn't exist (ex. if clicking on a broken anchor link).
+ // fixes `Cannot read property 'smoothScroll' of null` error getting thrown.
+ if (history.state === null) return;
+
+ // Only run if state is a popstate record for this instantiation
+ if (!history.state.smoothScroll || history.state.smoothScroll !== JSON.stringify(settings)) return;
+
+ // Only run if state includes an anchor
+
+ // if (!history.state.anchor && history.state.anchor !== 0) return;
+
+ // Get the anchor
+ var anchor = history.state.anchor;
+ if (typeof anchor === 'string' && anchor) {
+ anchor = document.querySelector(escapeCharacters(history.state.anchor));
+ if (!anchor) return;
+ }
+
+ // Animate scroll to anchor link
+ smoothScroll.animateScroll(anchor, null, {updateURL: false});
+
+ };
+
+ /**
+ * Destroy the current initialization.
+ */
+ smoothScroll.destroy = function () {
+
+ // If plugin isn't already initialized, stop
+ if (!settings) return;
+
+ // Remove event listeners
+ document.removeEventListener('click', clickHandler, false);
+ window.removeEventListener('popstate', popstateHandler, false);
+
+ // Cancel any scrolls-in-progress
+ smoothScroll.cancelScroll();
+
+ // Reset variables
+ settings = null;
+ anchor = null;
+ toggle = null;
+ fixedHeader = null;
+ eventTimeout = null;
+ animationInterval = null;
+
+ };
+
+ /**
+ * Initialize Smooth Scroll
+ * @param {Object} options User settings
+ */
+ var init = function () {
+
+ // feature test
+ if (!supports()) throw 'Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.';
+
+ // Destroy any existing initializations
+ smoothScroll.destroy();
+
+ // Selectors and variables
+ settings = extend(defaults, options || {}); // Merge user options with defaults
+ fixedHeader = settings.header ? document.querySelector(settings.header) : null; // Get the fixed header
+
+ // When a toggle is clicked, run the click handler
+ document.addEventListener('click', clickHandler, false);
+
+ // If updateURL and popState are enabled, listen for pop events
+ if (settings.updateURL && settings.popstate) {
+ window.addEventListener('popstate', popstateHandler, false);
+ }
+
+ };
+
+
+ //
+ // Initialize plugin
+ //
+
+ init();
+
+
+ //
+ // Public APIs
+ //
+
+ return smoothScroll;
+
+ };
+
+ return SmoothScroll;
+
+}));
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..2940382
--- /dev/null
+++ b/index.html
@@ -0,0 +1,115 @@
+---
+layout: page
+title:
+subtitle:
+use-site-title: true
+fb-img:
+---
+
+
+
+
+
+
+
+
+To be continued...
+
+More information to come about US-RSE'25!
+
+
+
+ But what is an RSE?
+
+ We like an inclusive definition of Research Software Engineers (RSEs) to encompass those who regularly use expertise in programming to advance research.
+ This includes researchers who spend a significant amount of time programming, full-time software engineers writing code to solve research problems,
+ and those somewhere in-between. We aspire to apply the skills and practices of software development to research to create more robust,
+ manageable, and sustainable research software.
+ Read more on the US-RSE website.
+
+ Join the mailing list
+
+ Do you want to receive news about the US-RSE conference series? Join our mailing
+ list to get direct news about all US-RSE conferences.
+
+ Join
+
+
Have questions?
+
+ Contact the organizers at usrse25-conference@us-rse.org.
+
+
+
+
+
+ Conference News & Updates
+
+
+
+
+ {% for post in paginator.posts %}
+
+
+ {{ post.title }}
+
+ {% if post.subtitle %}
+
+ {{ post.subtitle }}
+
+ {% endif %}
+
+
+
+
+
+ {% if post.image %}
+
+
+
+
+
+ {% endif %}
+
+ {{ post.excerpt | strip_html | xml_escape | truncatewords: site.excerpt_length }}
+ {% assign excerpt_word_count = post.excerpt | number_of_words %}
+ {% if post.content != post.excerpt or excerpt_word_count > site.excerpt_length %}
+ [Read More]
+ {% endif %}
+
+
+
+
+
+ {% if post.tags.size > 0 %}
+
+ {% endif %}
+
+
+ {% endfor %}
+
+
+{% if paginator.total_pages > 1 %}
+
+ {% if paginator.previous_page %}
+ -
+ ← Newer Posts
+
+ {% endif %}
+ {% if paginator.next_page %}
+ -
+ Older Posts →
+
+ {% endif %}
+
+{% endif %}
diff --git a/pages/about/about.md b/pages/about/about.md
new file mode 100644
index 0000000..c66ad02
--- /dev/null
+++ b/pages/about/about.md
@@ -0,0 +1,46 @@
+---
+title: The United States Research Software Engineer Association
+layout: page
+title: About US-RSE
+description: About the US-Research Software Engineer Association
+menubar: about
+permalink: about/
+menubar_toc: true
+set_last_modified: true
+---
+
+The US Research Software Engineer Association (US-RSE) is a community-driven effort focused on the increasingly important role of the [Research Software Engineer](https://us-rse.org/what-is-an-rse/).
+We focus our efforts on 4 overarching goals: Community, Advocacy, Resources, and Diversity, Equity, and Inclusion (DEI). Read more about our goals on our [mission statement page](https://us-rse.org/mission/).
+
+The US-RSE Association is committed to providing an inclusive environment with equitable treatment for all and to promoting and encouraging diversity throughout the RSE community in the US.
+We encourage you to read our full [DEI mission statement](https://us-rse.org/dei-mission/).
+
+## Research Software
+The increasing use of digital technologies across research communities has gone hand in hand with a strong growth and reliance on software written or customized to solve research problems: research software.
+This, in turn, is driving dialog around opportunities to:
+ * improve the development of research software, and
+ * incentivize useful sharing, curation, and ongoing maintenance of research software artifacts and related knowledge.
+
+Of course, research software does not develop, curate, or maintain itself.
+Accordingly, widespread research software growth has included emerging roles for people who create, maintain, and contribute to the research software ecosystem.
+These roles can bring value directly through enabling specific research projects. They also bring value indirectly, through helping ensure enduring impact of research software innovations and by facilitating adequate reproducibility standards in digital science.
+
+Initiatives in the [UK](https://society-rse.org/), [Germany](http://www.de-rse.org/en), the
+[Netherlands](https://nl-rse.org/) and elsewhere are bringing together the community of people writing and contributing to research software at the national and international level.
+In the US this encompasses universities, laboratories, knowledge institutes, companies and other enterprises.
+US-RSE is part of that effort.
+
+## History of The US-RSE Association
+
+The US-RSE Association can trace its roots back to two activities in the winter of 2017-2018.
+The first was an [international survey of RSEs](https://www.software.ac.uk/blog/2018-03-12-what-do-we-know-about-rses-results-our-international-surveys).
+There was a final question on that survey, “Would you be interested in helping to form a community of RSEs in the US?”
+Out of nearly 200 respondents, about a dozen people answered 'yes' and started talking.
+Shortly after that, the UK RSE Association sponsored the first [International RSE Leaders Workshop](https://society-rse.org/events/international-leaders-workshop/) - a meeting designed to bring together RSE team leads from across the world to connect and share experiences.
+Five US representatives traveled to London to participate in the workshop and left energized and committed to developing an RSE community in the US.
+The first US-RSE website and slack channel were formed days later.
+Progress was slow to start but in the ensuing months and years a formal organization emerged.
+For more, and to see what’s been happening recently, we invite you to read our [newsletters](https://us-rse.org/newsletters/), read more about our [mission](https://us-rse.org/mission/), and [join](https://us-rse.org/join/) the US-RSE community. A blog post that describes the road so far that has led to the present-day US-RSE can be found [here](https://us-rse.org/2022-02-06-a-brief-history-of-usrse/).
+
+
+To contact the US-RSE Association, email [contact@us-rse.org](mailto:contact@us-rse.org).
diff --git a/pages/about/code-of-conduct.md b/pages/about/code-of-conduct.md
new file mode 100644
index 0000000..388a429
--- /dev/null
+++ b/pages/about/code-of-conduct.md
@@ -0,0 +1,15 @@
+---
+layout: page
+title: Code of Conduct
+description:
+menubar: about
+permalink: about/code-of-conduct/
+set_last_modified: true
+---
+
+All conference participants are expected to abide by the
+[US-RSE Code of Conduct](https://us-rse.org/code-of-conduct) at all times before,
+during, and after the conference. This includes evening events and continued
+interactions after the conference.
+
+Please report problems or concerns to contact@us-rse.org.
diff --git a/pages/about/dates.tbd b/pages/about/dates.tbd
new file mode 100644
index 0000000..a71e230
--- /dev/null
+++ b/pages/about/dates.tbd
@@ -0,0 +1,30 @@
+---
+layout: page
+title: Important Dates
+description:
+menubar: about
+permalink: about/dates/
+set_last_modified: true
+---
+
+## Submissions
+
+- **Submissions open**: Tuesday, February 14, 2023
+- **Workshops, Tutorials, and BoF submissions due**: Tuesday, April 4, 2023 - **EXTENDED**
+- **Notification of authors for workshops, tutorials, and BoFs**: Monday, April 24, 2023
+- **Papers / Notebooks due**: Monday, May 1, 2023
+- **Registration opens**: Monday, May 1, 2023
+- **Notification of authors for papers / notebooks**: Monday, June 5, 2023
+- **Poster / Talk abstracts due**: Monday, June 19, 2023
+- **Camera-ready papers / notebooks due**: Monday, June 26, 2023
+- **Registration for authors of workshops, tutorials, BoFs, and papers/notebooks**: Monday, June 26, 2023
+- **Notification of authors for posters / talks**: Monday, July 24, 2023
+- **Registration for authors of posters / talks**: Monday, August 21, 2023
+- **Program finalized**: Wednesday, August 23, 2023
+- **Camera-ready abstracts due**: Monday, August 28, 2023
+- **Early-bird registration ends**: Friday, September 8, 2023
+
+## Conference
+
+- **Tutorials**: October 2-13, 2023, Virtual
+- **Main Conference**: October 16-18, 2023, Chicago, IL
diff --git a/pages/attend/attend.md b/pages/attend/attend.md
new file mode 100644
index 0000000..48ac0b6
--- /dev/null
+++ b/pages/attend/attend.md
@@ -0,0 +1,11 @@
+---
+layout: page
+title: Attend
+description:
+menubar: attend
+permalink: attend/
+set_last_modified: true
+---
+
+More information to come...
+
diff --git a/pages/attend/registration.tbd b/pages/attend/registration.tbd
new file mode 100644
index 0000000..1cca4ce
--- /dev/null
+++ b/pages/attend/registration.tbd
@@ -0,0 +1,28 @@
+---
+layout: page
+title: Register
+description:
+menubar: attend
+permalink: attend/register/
+set_last_modified: true
+---
+
+## Registration Cost
+
+
+| | Professional | Student |
+| - | ------------ | ------- |
+| Early Bird | $325 ($342.24 with fees) | $50 ($53.49 with fees) |
+| Regular | $375 ($394.20 with fees) | $100 ($105.99 with fees) |
+| Poster Session Only | $75 (TBD with fees) | - |
+| Additional Poster Session Ticket+ | $50 ($53.49 with fees) | - |
+
++: _This is an add-on to a full registration (e.g., if you'd like to bring someone additional to the poster reception)._
+
+Early bird registration ends on **September 8, 2023**.
+
+
+ Register Now
+
+
+Registration Link: [https://www.eventbrite.com/e/us-rse-conference-2023-software-enabled-discovery-and-beyond-tickets-625867314987](https://www.eventbrite.com/e/us-rse-conference-2023-software-enabled-discovery-and-beyond-tickets-625867314987)
diff --git a/pages/attend/travel.tbd b/pages/attend/travel.tbd
new file mode 100644
index 0000000..d49e2b1
--- /dev/null
+++ b/pages/attend/travel.tbd
@@ -0,0 +1,154 @@
+---
+layout: page
+title: Travel
+description:
+menubar: attend
+permalink: attend/travel/
+menubar_toc: true
+set_last_modified: true
+---
+
+
+## Venue Information
+
+- **Dates**: October 16-18, 2023
+- **Location**: University of Illinois in Chicago – [Student Center East](https://meetings.uic.edu/facilities/student-center-east/) – 750 S. Halsted, Chicago, IL 60607
+
+### Accessibility
+
+- ADA Accessibility
+ - Elevators available to all floors of Student Center East
+ - If special accommodations are required, please contact the organizers at [usrsecon2023@easychair.org](mailto:usrsecon2023@easychair.org)
+- [Gender Inclusive Resources](https://oae.uic.edu/resources/gender-inclusive-resources/)
+ - Gender neutral facilities: 2nd and 8th Floor of Student Center East
+ - Lactation room: Rooms 243B and 243C of Commuter Student Resource Center
+
+## Travel Grants
+
+With the sponsorship of various organizations such as the
+[Chan Zuckerberg Initiative](https://chanzuckerberg.com/), a limited number of student and early career
+travel grants, as well as dependent care grants, are available to assist
+applicants in attending US-RSE'23.
+
+Please use this form to enter all the relevant information to apply for a
+travel or dependent care grant. We will review the applications based on the
+information provided in this form and notify the recipients in due time.
+Priority will be given to those having an accepted submission at the US-RSE'23
+conference and to enhance the diversity of participants.
+
+Travel grant awardees will be reimbursed for up to $2500 for their travel,
+and/or registration, and/or accommodation as per the guidelines upon producing
+suitable bills for the same. Dependent care grant awardees will be reimbursed
+up to $500 upon providing dependent care receipts. We can retract funding if
+recipients do not adhere to the grant rules.
+
+As per the rules:
+
+- The awardee must attend all conference sessions throughout its entire duration of 3 days.
+- The awardee must check in at the registration desk each day of the conference.
+- The awardees will be required to volunteer at the conference as per instructions issued later.
+- Student travel grant awardees must also participate in the mentorship sessions organized during the conference.
+- Travel grant awardees must register for the conference by the Early Registration deadline.
+
+**Deadlines**
+
+- Grant Form Opens: August 8, 2023
+- Submission deadline for Grant Form: September 4, 2023
+- Award Notification selection: September 6, 2023
+
+[Application Form](https://bit.ly/usrse23-travel-grant): [https://bit.ly/usrse23-travel-grant](https://bit.ly/usrse23-travel-grant)
+
+
+## Hotel Accommodation
+
+We have contracted with several different hotels to provide special rates for
+US-RSE'23.
+
+### Hyatt House Chicago West Loop/Fulton Market: SOLD OUT
+
+The special room rate is **SOLD OUT**. You can still book but will not be
+able to use the group code.
+
+- _Address_: 105 North May Street, Chicago, IL 60607 (1.2 miles away)
+- _Phone_: 866-974-9288
+
+### Crowne Plaza Chicago West Loop: SOLD OUT
+
+The special room rate is **SOLD OUT**. You can still book but will not be
+able to use the group code.
+
+- _Address_: 25 South Halsted Street, Chicago, IL 60661 (0.6 miles away)
+- _Phone_: 312-829-5000
+
+
+### Other Nearby Hotels
+
+- The Hoxton Chicago - 200 N Green St, Chicago, IL 60607 (1.0 miles away)
+- Hotel Emily – 311 N Morgan St, Chicago, IL 60607 (1.3 miles away)
+- Palmer House Hilton – 17 E Monroe St, Chicago, IL 60603 (1.6 miles away)
+
+
+## Chicagoland Airport Information
+
+- O'Hare International Airport (ORD)
+ - CTA Blue Line, get off at Halsted & Polk – Live [Google Map](https://www.google.com/maps/dir/O'Hare+International+Airport+(ORD),+West+Balmoral+Avenue,+Chicago,+IL/750+S+Halsted+St,+Chicago,+IL+60607/@41.9284448,-87.9091952,11z/data=!3m1!4b1!4m14!4m13!1m5!1m1!1s0x880fb4276a7762f3:0x511747070259ad4b!2m2!1d-87.9089979!2d41.98028!1m5!1m1!1s0x880e2ce8a17fa1d5:0xd1d2febe6a9af901!2m2!1d-87.6475869!2d41.8719566!3e3) Directions
+- Midway International Airport (MDW)
+ - CTA Orange Line, to South Halsted St – Live [Google Map](https://www.google.com/maps/dir/Chicago+Midway+International+Airport+(MDW),+Cicero+Avenue,+Chicago,+IL/750+S+Halsted+St,+Chicago,+IL+60607/@41.8331347,-87.75912,12z/data=!3m1!4b1!4m15!4m14!1m5!1m1!1s0x880e310601aa4385:0x968a60d78f2950a5!2m2!1d-87.7521884!2d41.7867759!1m5!1m1!1s0x880e2ce8a17fa1d5:0xd1d2febe6a9af901!2m2!1d-87.6475869!2d41.8719566!3e3!5i3) Directions
+
+## Driving Directions to Student Center East
+
+**Venue Address**: 750 South Halsted Street – Chicago‚ Illinois 60607
+
+**From the north/O’Hare Airport**: Take the Kennedy Expressway‚ I-90 east.
+Continue on the Kennedy to the Dan Ryan‚ I-90/94 east. Exit at Taylor. Turn
+right (west) and travel one block to the intersection of Taylor and Halsted.
+Turn right (north) onto Halsted and travel one-half block.
+
+**From the west**: Take the Eisenhower Expressway (I-290) to the Racine Avenue
+exit. Turn right (south) to Harrison Street. Turn left (east) onto Harrison
+and proceed to Halsted. Turn right (south) and go one block.
+
+**From the east**: Take Harrison Street west to Halsted Street and turn (left)
+south into the campus.
+
+**From the south**: Take the Dan Ryan Expressway (I-90/I-94) and exit on
+Roosevelt Road. Tuen left (west) on Roosevelt Road to Halsted Street; then
+turn right (north) on Halsted Street to the campus.
+
+## Parking
+
+For all events taking place in Student Center East, parking is available in
+the Halsted and Taylor Street Parking Structure (760 West Taylor Street).
+The entrance to this parking structure is on Taylor Street. Upon entry, guests
+should take a ticket and upon exit, guests should present this ticket to the
+cashier and pay the appropriate total (cash, debit cards, credit cards are
+accepted at this lot).
+
+**Cost is $15 for the day.**
+
+## Public transportation
+
+UIC is easily reached by public transportation. The
+[CTA](https://www.transitchicago.com/) provides many lines that connect and
+get you to many destinations in the city. The Blue Line has a UIC – Halsted
+stop, located about one block north of the Student Center East.
+
+[Metra Stations](https://metra.com/lines-schedules-maps-stations) are a short
+walk or cab/Uber/Lyft ride. These trains come in from the suburbs as well.
+Union Station is the nearby train station (estimated distance is 0.6 miles).
+
+For detailed directions using CTA‚ Metra‚ or Pace‚ please visit the
+[RTA Chicago website](https://www.rtachicago.org/).
+
+## Childcare
+
+If you are looking for a nearby childcare center during the conference,
+Bright Horizons at Illinois Medical District offers drop-in child daycare.
+
+**Bright Horizons at Illinois Medical District**
+
+- 1851 W Harrison St, Chicago, IL 60612
+- (773) 482-5003
+- [ilmedicaldistrict@brighthorizons.com](mailto:ilmedicaldistrict@brighthorizons.com)
+- [Flyer]({{ page.root }}/usrse23/assets/flyers/childcare.pdf)
+
diff --git a/pages/organization/comms.tbd b/pages/organization/comms.tbd
new file mode 100644
index 0000000..811261e
--- /dev/null
+++ b/pages/organization/comms.tbd
@@ -0,0 +1,22 @@
+---
+layout: page
+title: Communications Committee
+description:
+menubar: organization
+permalink: organization/communications/
+set_last_modified: true
+---
+
+## Chairs
+
+TBD
+
+## Subcommittee Chairs
+
+### Website
+
+TBD
+
+### Outreach
+
+- Sophia Anyatonwu, US Research Software Engineer Association
diff --git a/pages/organization/diversity.tbd b/pages/organization/diversity.tbd
new file mode 100644
index 0000000..368badf
--- /dev/null
+++ b/pages/organization/diversity.tbd
@@ -0,0 +1,14 @@
+---
+layout: page
+title: Diversity, Equity, and Inclusion Committee
+description:
+menubar: organization
+permalink: organization/diversity/
+set_last_modified: true
+---
+
+## Chairs
+
+- Ludovico Bianchi, Lawrence Berkeley National Laboratory
+- Tab Memmott, Oregon Health and Science University
+- Lance Parsons, Princeton University
diff --git a/pages/organization/general.md b/pages/organization/general.md
new file mode 100644
index 0000000..f120a6e
--- /dev/null
+++ b/pages/organization/general.md
@@ -0,0 +1,11 @@
+---
+layout: page
+title: General Chairs
+description:
+menubar: organization
+permalink: organization/general/
+set_last_modified: true
+---
+
+- Miranda Mundt, Sandia National Laboratories
+- Lauren Milechin, Massachusetts Institute of Technology
diff --git a/pages/organization/logistics.tbd b/pages/organization/logistics.tbd
new file mode 100644
index 0000000..26cf9f5
--- /dev/null
+++ b/pages/organization/logistics.tbd
@@ -0,0 +1,18 @@
+---
+layout: page
+title: Logistics Committee
+description:
+menubar: organization
+permalink: organization/logistics/
+set_last_modified: true
+---
+
+## Local Logistics Chairs
+
+- Evan Harvey, Sandia National Laboratories
+- Blake Joyce, BioTeam, Inc.
+
+## Virtual Logistics Chair
+
+- Jonathan Guyer, National Institute of Standards and Technology
+
diff --git a/pages/organization/organization.md b/pages/organization/organization.md
new file mode 100644
index 0000000..00d7d5e
--- /dev/null
+++ b/pages/organization/organization.md
@@ -0,0 +1,17 @@
+---
+layout: page
+title: Organization
+description: Organizing Committees
+menubar: organization
+permalink: organization/
+set_last_modified: true
+---
+
+### General Chairs
+
+TBA
+
+
+### Contact
+
+Contact the organizers: [usrse25-conference@us-rse.org](mailto:usrse25-conference@us-rse.org)
diff --git a/pages/organization/publication.tbd b/pages/organization/publication.tbd
new file mode 100644
index 0000000..43f6c58
--- /dev/null
+++ b/pages/organization/publication.tbd
@@ -0,0 +1,13 @@
+---
+layout: page
+title: Publication Committee
+description:
+menubar: organization
+permalink: organization/publication/
+set_last_modified: true
+---
+
+## Chairs
+
+- Charles Ferenbaugh, Los Alamos National Laboratory
+- Torin White, University of Illinois at Chicago
diff --git a/pages/organization/sponsorship.tbd b/pages/organization/sponsorship.tbd
new file mode 100644
index 0000000..c39b590
--- /dev/null
+++ b/pages/organization/sponsorship.tbd
@@ -0,0 +1,14 @@
+---
+layout: page
+title: Sponsorship Committee
+description:
+menubar: organization
+permalink: organization/sponsorship/
+set_last_modified: true
+---
+
+## Chairs
+
+- Angela Herring, Los Alamos National Laboratory
+- Mahmood Shad, Harvard Research Computing, Harvard University
+- Chris Hill, MIT
diff --git a/pages/organization/student.tbd b/pages/organization/student.tbd
new file mode 100644
index 0000000..e4d9bf3
--- /dev/null
+++ b/pages/organization/student.tbd
@@ -0,0 +1,17 @@
+---
+layout: page
+title: Student Program Committee
+description:
+menubar: organization
+permalink: organization/student/
+set_last_modified: true
+---
+
+## Chairs
+
+- Nicole Brewer, Arizona State University
+- Carrie Brown, Pennsylvania State University
+
+## Student Co-Chairs
+- Jamil Gafur, Doctoral Student at the University of Iowa
+- Sunyojita Rattu, Undergraduate Student at the University of Colorado Boulder
diff --git a/pages/organization/technical.tbd b/pages/organization/technical.tbd
new file mode 100644
index 0000000..39a8668
--- /dev/null
+++ b/pages/organization/technical.tbd
@@ -0,0 +1,42 @@
+---
+layout: page
+title: Technical Program Committee
+description:
+menubar: organization
+permalink: organization/technical/
+set_last_modified: true
+---
+
+## Chairs
+
+- Mariam Kiran, Lawrence Berkeley National Laboratory
+- Kenton McHenry, National Center for Supercomputing Applications, University of Illinois Urbana-Champaign
+
+## Subcommittee Chairs
+
+### Notebooks
+
+- Ludovico Bianchi, Lawrence Berkeley National Laboratory
+- Nicole Brewer, Arizona State University
+- Torin White, University of Illinois at Chicago
+
+### Posters
+- Abhishek Biswas, Princeton University
+- Craig Steffen, National Center for Supercomputing Applications, University of Illinois Urbana-Champaign
+- Sarah Stevens, University of Wisconsin-Madison
+
+### Tutorials
+- Lauren Milechen, Massachusetts Institute of Technology
+- Greg Watson, Oak Ridge National Laboratory
+
+### Workshops
+- Jong Lee, National Center for Supercomputing Applications, University of Illinois Urbana-Champaign
+- Kevin Potter, Sandia National Laboratories
+
+### Birds of a Feather and Talks
+- Reed Milewicz, Sandia National Laboratories
+- Joshua Teves, Sandia National Laboratories
+
+### Papers
+- Evan Harvey, Sandia National Laboratories
+- Tu-Thach Quach, Sandia National Laboratories
diff --git a/pages/participate/notebook-submissions.tbd b/pages/participate/notebook-submissions.tbd
new file mode 100644
index 0000000..48a5770
--- /dev/null
+++ b/pages/participate/notebook-submissions.tbd
@@ -0,0 +1,74 @@
+---
+layout: page
+title: Computational Notebook Submissions
+description:
+menubar: participate
+permalink: participate/notebooks/
+menubar_toc: true
+set_last_modified: true
+---
+
+Below, we outline the categories that we will accept for computational notebook submissions.
+We have included an innovative uses category, to be inclusive of as many creative uses
+of notebooks as possible, however, this year will only accept
+[Jupyter Notebooks](https://jupyter.org/), [R Markdown](https://rmarkdown.rstudio.com/)
+documents (including [Shiny](https://shiny.rstudio.com/) apps), and
+[Quarto Markdown](https://quarto.org/docs/authoring/markdown-basics.html) documents.
+
+We intend to have an open line of communication during the submission process, so if you
+have questions or concerns about these formats, please contact us
+at [usrsecon2023@easychair.org](mailto:usrsecon2023@easychair.org).
+
+## Templates
+
+- [Jupyter Notebooks](https://github.com/usrse/jupyter-notebook-templates)
+- [R Markdown](https://github.com/usrse/r-notebook-templates)
+
+## 1. Reproducible Documents
+
+There are many good reasons to publish a reproducible document with a notebook. You may want to publish a lesson or showcase a tool or a workflow.
+These documents must be reproducible; that is, they are executable and produce the same output when the cells are run in order from top to bottom.
+Singular notebooks and markdown documents will be compiled to HTML pages, but you also have the option to use [JupyterBook](https://jupyterbook.org) (Jupyter), [Bookdown](https://bookdown.org/home/) (R Markdown), or [Quarto Book](https://quarto.org/docs/books/) to create full books.
+These documents may not exclusively contain text; they must include a significant amount of code.
+The reproducibility requirement excludes the use of interactive components used to select or manipulate data or run a computation, however, widgets used solely to display or visualize data are allowed.
+Reproducible documents are expected to be executed sequentially, from beginning to end, without additional interaction or input on behalf of the user.
+
+### Example use cases
+
+- Publish a lesson
+- Showcase a tool
+- Showcase a workflow
+- Notebook-based research/data papers
+- Instructional documents
+
+## 2. Interactive Notebooks
+
+With the exception of display and visualization widgets, interactivity generally renders notebook execution irreproducible.
+But just because the notebooks aren’t reproducible doesn’t mean they aren’t valuable to the research software community; they may promote accessibility and reusability of research data and code.
+If you are using Python and Jupyter, we particularly encourage the use of Voilà to turn any interactive notebook into a standalone dashboard or web application by hiding code cells but leaving markdown and interactive widgets.
+Shiny natively supports both narrative documents interspersed with Shiny components and full page applications.
+Some widget libraries remain interactive when compiled to HTML and will be published in the same manner as reproducible notebooks.
+Notebooks with widgets that don’t remain interactive must be hosted on an interactive environment such as [Binder](https://mybinder.org/) or [shinyapps.io](https://www.shinyapps.io/).
+Value comes from the interactive elements of the notebooks, are often executed non-linearly, and require interaction or input from the user.
+
+### Example use cases
+
+- Narrative workflow with interactive components
+- Interactive tutorial or teaching tool
+- Data analysis dashboard
+- Web applications
+
+### Examples
+
+- [Voilà Dashboard](https://mybinder.org/v2/gh/zolabar/iexfinder/main?urlpath=voila%2Frender%2F/iexfinder_voila.ipynb) ([paper](https://doi.org/10.5281/zenodo.5707405), [github](https://github.com/zolabar/IexFinder))
+
+## 3. Innovative Uses of Notebooks
+
+Notebooks continue to evolve in their capabilities and use-cases.
+In an attempt not to exclude innovative notebook formats, we will have an open category of submission.
+
+### Example use cases
+
+- New plugin capabilities
+- Literate programming packages
+- Code-generated art
diff --git a/pages/participate/participate.md b/pages/participate/participate.md
new file mode 100644
index 0000000..1fdea8e
--- /dev/null
+++ b/pages/participate/participate.md
@@ -0,0 +1,11 @@
+---
+layout: page
+title: Participate
+description:
+menubar: participate
+permalink: participate/
+set_last_modified: true
+---
+
+More information to come...
+
diff --git a/pages/participate/templates.tbd b/pages/participate/templates.tbd
new file mode 100644
index 0000000..58272ce
--- /dev/null
+++ b/pages/participate/templates.tbd
@@ -0,0 +1,69 @@
+---
+layout: page
+title: Technical Program Templates
+description:
+menubar: participate
+permalink: participate/templates/
+menubar_toc: true
+set_last_modified: true
+---
+
+## Birds of a Feather
+
+A Birds of a Feather (BoF) submission (due **April 11, 2023**) should include:
+
+- **Title**
+- **Session Leaders**: Name, email, and affiliation of each leader
+- **Abstract**: Max 1 page (reasonable font size, spacing, and margins). Should include:
+ - Description of topic
+ - Relevance for attendees
+ - Goals
+ - Format
+ - Intended audience
+ - Estimated number of attendees
+- **Panelist Call**: If there will be a call for participation (e.g., panelists or speakers), please provide a timeline and advertisement plan.
+- **Special Requirements**: Do you require anything special for the room (besides a projector)?
+- **References**: If applicable
+
+[Download the Google Doc template here](https://docs.google.com/document/d/11SKEEK6M6Id3TY_AxzcW5jVbPJ-kJ70hl1x8VjPMMN8/)
+
+------
+
+## Workshop
+
+A Workshop submission (due **April 11, 2023**) should include:
+
+- **Title**
+- **Organizers**: Name, email, and affiliation of each organizer
+- **Abstract**: Max 1 page (reasonable font size, spacing, and margins). Should include:
+ - Description of topic
+ - Goal for the workshop (e.g., will there be an output?)
+ - Outline for format (e.g., speakers, breakout discussions)
+ - Outline of agenda
+- **Workshop Call**: If there will be a call for participation (e.g., panelists or speakers), please provide a timeline and advertisement plan.
+- **Suggested Length**: Workshops can either be 1.5 or 3.5 hours
+- **Audience**: Max 1 paragraph. Describe the intended audience and estimate number of attendees.
+- **Special Requirements**: Do you require anything special for the room (besides a projector)?
+- **References**: If applicable
+
+[Download the Google Doc template here](https://docs.google.com/document/d/1YWmbOPi5A0vYpTZ4uhd7_wmwamcdVjxWgnX4-FAQQYE/)
+
+------
+
+## Tutorials
+
+A Tutorial submission (due **April 11, 2023**) should include:
+
+- **Title**
+- **Presenters**: Name, email, and affiliation of each presenter
+- **Abstract**: Max 1 page (reasonable font size, spacing, and margins). Should include:
+ - Description of topic
+ - Relevance for attendees
+ - Goals
+ - Expected background of attendees
+ - System setup requirements (if applicable)
+ - Tutorial agenda
+ - Qualifications of presenter(s) on the tutorial topic
+- **Suggested Length**: Tutorials will take place virtually and can either be 1.5 or 3.5 hours.
+
+[Download the Google Doc template here](https://docs.google.com/document/d/1wCjYXCOtgWZg8WOfItcAx3N2dJg7mKGEymAi2tpywbA/)
diff --git a/pages/program/abstracts/bofs.tbd b/pages/program/abstracts/bofs.tbd
new file mode 100644
index 0000000..bc4c22c
--- /dev/null
+++ b/pages/program/abstracts/bofs.tbd
@@ -0,0 +1,249 @@
+---
+layout: page
+title: Birds of a Feather
+description:
+menubar: program
+permalink: program/bofs/
+menubar_toc: true
+set_last_modified: true
+---
+
+## Alternative Routes to Becoming a Research Software Engineer: The Role of Doctorate and Essential Skills
+
+_Session leader: Joanne Sheppard_
+
+Research Software Engineering (RSE) is a field that requires a diverse range of
+skills, including software development, data management, and research methods.
+However, there is no single route to becoming an RSE, and the value of obtaining
+a doctorate in this field is often debated. This panel brings together experts
+in the field of RSE to discuss alternative routes to becoming an RSE, the role
+of obtaining a doctorate, and the essential skills that are necessary for
+success in this field.
+
+The panel will explore the benefits and drawbacks of different paths to becoming
+an RSE, including formal education programs, on-the-job training, and self-taught
+skills. We will also examine the value of obtaining a doctorate in this field,
+including the advantages and disadvantages of a PhD versus a master's degree or
+other formal qualifications.
+
+In addition, the panel will discuss the skills that are most important for an
+RSE, such as programming languages, software development practices,
+project management, and communication. We will consider how these skills can be
+developed and measured, and how they can be used to evaluate and recruit RSEs.
+
+Overall, this panel aims to provide a comprehensive and insightful discussion
+of the different routes to becoming an RSE, the role of obtaining a doctorate
+in this field, and the essential skills that are necessary for success.
+Attendees will gain a deeper understanding of the field of RSE and the skills
+required to excel in this exciting and rapidly evolving field.
+
+------
+
+## Code Review for Research Software
+
+_Session leaders: Cole Crawford, Jeffrey Tharsen_
+
+Many academic research projects require custom software development. These developers are often a
+consortium of researchers, academic staff and professional software developers. As the field has
+matured, the question of testing and reviewing software to confirm it works properly has become an
+important topic, as nearly all software will have errors (some small, some potentially significant) in the
+code. A rough estimate suggests that there are between 15 to 50 errors in 1000 lines of code written by
+professional software developers (Soergel 2015). While most errors do not have any substantive effect
+on research findings, there are plenty of cases where this has happened (see for example Letzner et al.
+2020 or Miller 2006). In addition, uncaught “edge cases” can drastically affect future researchers’
+results.
+
+Code Review is a common technique used in industry to improve software and reduce the number of
+flaws. In a code review process, a software engineer other than the original code author(s) reviews the
+source code. They ask questions and make suggestions for improving the software. In addition to
+identifying and eliminating errors, code review can improve overall quality by making the source code
+more readable and the overall product more sustainable. Furthermore, code reviews improve not just
+the skills of the reviewee but also those of the reviewer. If a code author and reviewer work in the same
+team or on the same or related projects, code reviews can also support team cohesion and facilitate
+information-sharing within a team.
+
+Unfortunately, code review is not widely used in many research disciplines. The reasons for this vary
+widely. Many research software projects have only one core developer who does all the coding with no
+colleagues to review their code. Some projects avoid reviews by developers external to the project out of
+concern that their code could be plagiarized or their license ignored. In other cases, the person
+developing the code is concerned that they or their work will be attacked for being of poor quality or
+producing erroneous results. We suggest a BoF featuring a panel of three experts who will present
+best practices, tutorials and guidelines for code review from the perspectives of different
+disciplines. Following the panel we will host an open discussion and Q&A with the audience; the
+following questions are among those we propose to address:
+
+- Are certain challenges associated mainly with specific disciplines, or are there commonalities across disciplines?
+- Is code review across disciplines useful?
+
+A pilot study conducted by Petre and Wilson (2013) suggests that there is value in
+code reviews even if the reviewers do not possess any domain expertise for the code they are reviewing;
+in their study, professional software engineers from Mozilla reviewed code written by scientists. The
+goal of this BoF is to help attendees to better understand the code review processes of different RSE
+teams across disciplines, and explore the value of code review undertaken by researchers for researchers.
+
+-----
+
+## Get Involved with pyOpenSci! Building diverse community around scientific Python open source software through peer review, training and mentorship
+
+_Session leaders: Leah Wasser, David Nicholson_
+
+pyOpenSci is building a diverse community around the Python open source
+software that drives open science. Attend this BoF session to learn about
+submitting a Python package to pyOpenSci's open peer review process, and
+how you as a research software engineer will benefit from our supportive
+review process. You'll also learn about best practices for pure Python
+packaging that are documented in our guide that we've recently updated with
+significant input from maintainers of Python packaging tools, core scientific
+packages and the broader community.
+
+Founded in 2018, pyOpenSci's core program is open peer review of scientific
+software with the goal of improving the quality, usability, discoverability
+and long-term maintenance of scientific packages. We also focus on diversifying
+the community through both community partnerships, and support for communities
+that have not been traditionally a part of the Python open space but who have
+interest in participating. Through our partnership with JOSS (Journal of Open
+Source Software), we also offer a publication win-win to maintainers who are
+interested in both Python modern best practices, long term community support
+and also formal publication of their software.
+
+Community is core to our organization. As such understanding the needs of
+esearch software engineers working in the scientific Python space is critical
+as we develop our organization's structure, programs and goals.
+
+In this BoF session, we will discuss and ask for feedback on four things:
+
+1. We will review our open peer review process and how you can submit a package to us for review.
+1. We will talk about our community governance and how we are actively engaging with a variety of communities with the core goal of diversifying the Python open source space.
+1. We will answer questions and get feedback on our process to ensure that we are supporting research software engineers that are working on Python tools.
+1. We will talk about the community work that we are doing to create useful Python packaging and contributor resources that support modern approaches to Python packaging
+
+This BoF will be relevant to anyone interested in US-RSEcon 2023's theme
+enabling software, because pyOpenSci is empowering a diverse community to drive
+open science forward by building Python open source tools. The format of this
+session will be a mixture of short "how to" overviews followed by discussion
+sessions that solicit feedback.
+
+------
+
+## Notebooks as a Possible Future for Scientific Publication, Better Practices for Sharing Software, and RSE Authorship
+
+_Session leaders: Kenton McHenry, Nicole Brewer, Daniel S. Katz_
+
+Software is now a key part of just about all scientific research and as such
+the need to support this need within science has gotten a lot of attention. One
+area of particular interest by funding agencies, such as NSF who invest in
+scientific software development, is that of sustainability and reusability
+so as to maximize the gains from these investments from research funds. One
+approach to scientific software sharing and reusability is that of utilizing
+computational notebooks as the paper itself, with it as the peer reviewed
+scholarly object. Such an effort was leveraged by the NSF EarthCube program
+n the last 3 years as a means of not only making software investments within
+geoscience more discoverable and reusable, but to also motivate the community
+itself to go through the needed effort of documenting and packaging their
+software in this manner through the peer review process which carries weight
+within academic reward systems. Given its success here the AGU put in and was
+awarded a grant from the Sloan Foundation to carry this further, bring together
+publishers and other stakeholders to work out the details as to how publications
+can actually be transition such that notebook submissions might actually replace
+paper submissions where appropriate and still be indexed, discovered, and
+accessed with existing publication systems and processes.
+
+Computational notebooks are also increasingly important tools for research and
+science communication as they can be used to teach, showcase tools, communicate
+research results, and provide friendly interfaces to interact with data and
+software. To this end, US-RSE’23 Conference accepted submissions for reproducible
+notebooks (that were rendered to HTML documents), and interactive notebooks
+(that were hosted on Binder). Drafting a rubric for better practices was
+exceptionally difficult for interactive notebooks which are, by definition, not
+fully-reproducible due to widgets or other expected user-inputs. In addition,
+all software inevitably becomes unrunnable without maintenance. How then,
+should we ensure the reproducibility of our notebooks? And should this be a
+lasting or ephemeral goal? These are open questions the notebook subcommittee
+had to reckon with as they formulated better practices for peer review and we
+feel that they are worth opening up to the RSE community at large.
+
+We propose to bring together a Birds of a Feather at US-RSE’23 to introduce
+these efforts as an area of interest for RSEs as well as explore the state of
+things right now and the areas that still need to be worked out. The format of
+the BoF will be in the form of a panel followed by a menti driven discussion
+with the audience. The panel will consist of representatives from notebook and
+notebook tool (e.g. binder) providers, AGU, and members of the US-RSE’23
+notebooks subcommittee to discuss where each is going in terms of
+supporting/using notebooks.
+
+------
+
+## Polyglot Software Development and Language Interoperation
+
+_Session leader: Mark Kittisopikul_
+
+This Birds of a Feather session will discuss the use of multiple
+programming languages and interoperation between them. Software development
+in the research environment requires the integration of existing and new tools
+employing a variety of programming languages. New programming languages are
+arising to fill unmet needs and new niches such as Rust, Zig, Go, and Julia.
+Yet, the use of these languages in ongoing research requires that they
+integrate with traditional programming languages such as Python, R, Java, and
+C++. I will draw upon my personal experience with working on JavaCPP projects,
+JavaCall.jl for Julia-Java interop, and building language bindings around the
+HDF5 C library (Malone 2014). I also hope to invite collaborators working at
+the interface of Java and Python in the context of FIJI (ImageJ) (Schindelin
+2012, Rueden 2022). The session will incorporate both traditional approaches
+such via foreign function interfaces and the SWIG interface compiler and new
+approaches made possible by coding assistants such as a Github Copilot. The
+BoF is meant to gather project managers and software development engineers
+interested in sharing best practices for integrating more than one programming
+language into a single project and sharing data across language barriers.
+
+The proposed format is to offer several, three or four, 10 minute talks about
+projects that facilitate interoperation between languages or a presentation of
+a project that uses multiple programming languages. An interactive roundtable
+discussion will then follow with attendees sharing their experience with
+attempting to use multiple programming languages together. An alternative
+format is to have the speakers lead a panel based discussion while encouraging
+audience participation. The choice of format will depend on the number of
+participants.
+
+The overall goal of the BoF is to lower the barriers of including multiple
+languages in a project so that the best languages can be used to accomplish
+particular tasks. By collecting project managers and developers from diverse
+programming backgrounds, the BoF hopes to foster relationships across language
+boundaries.
+
+------
+
+## What does it mean to be an RSE at a National Lab?
+
+_Session leaders: Keith Beattie, Rinku Gupta, William Godoy, Daniel Howard, Anshu Dubey, David E. Bernholdt, Daniel Gunter_
+
+Although the research software engineering (RSE) community originated in
+universities, RSEs also find a place in National Laboratories confronting
+comparable but distinct challenges as those at universities and other research
+institutions. This BoF seeks to provide a forum for those who identify as RSEs
+and those supportive or curious about the community, to deliberate upon
+challenges faced at national labs in order to explore approaches or solutions
+that might enhance their professional and scientific pursuits. Additionally,
+this forum can be used to discuss avenues for RSEs across labs to exchange
+information as well as define meaningful relationships beyond National Labs
+with university and industry affiliated RSEs.
+
+The structure of the BoF proposed is to start with an overall introduction,
+two short presentations from RSEs at labs that currently have an established
+RSE framework, then break out into smaller groups to discuss a predefined set
+of topics and questions. The BoF will conclude with a panel discussion, led by
+representatives from various national labs, to find the common or unique issues
+faced by RSEs at national labs and develop solutions for improving the RSE
+experience within national lab ecosystems.
+
+The topics covered will be chosen from, but not limited to:
+
+- How does being an RSE vary from lab to lab or as compared to universities or industry?
+- What are the RSE career paths at labs and how are they supported? What opportunities or support is missing?
+- How are RSEs funded at labs and how can this be improved?
+- What can be done to improve recruitment & retention strategies, specifically for DEI?
+- How do labs currently organize RSEs or groups of RSEs? What has worked well across different labs?
+- What training or opportunities should be made available for RSEs
+
+We welcome a broad audience both from national labs and otherwise, to provide contrast and context to the discussions,
+expecting somewhere between 10-20 people in attendance.
+
diff --git a/pages/program/abstracts/notebooks.tbd b/pages/program/abstracts/notebooks.tbd
new file mode 100644
index 0000000..a726d50
--- /dev/null
+++ b/pages/program/abstracts/notebooks.tbd
@@ -0,0 +1,45 @@
+---
+layout: page
+title: Notebooks
+description:
+menubar: program
+permalink: program/notebooks/
+menubar_toc: true
+set_last_modified: true
+---
+
+## Extrapolation and Interpolation in Machine Learning Modeling with Fast Food and astartes
+
+_Jackson Burns, Kevin Spiekermann, and William Green_
+
+Machine learning is a groundbreaking tool for tackling high-dimensional datasets
+with complex correlations that humans struggle to comprehend. An important nuance
+of ML is the difference between using a model for interpolation or extrapolation,
+meaning either inference or prediction. This work will demonstrate visually what
+interpolation and extrapolation mean in the context of machine learning using
+astartes, a Python package that makes it easy to tackle in ML modeling. Many
+different sampling approaches are made available with astartes, so using a very
+tangible dataset - a fast food menu - we can visualize how different approaches
+differ and then train and compare ML models.
+
+------
+
+## Stylo2gg: Visualizing reproducible stylometric analysis
+
+_James Clawson_
+
+For researchers using R to do work in stylometry, the Stylo package in R is
+indispensable, but it also has some limitations. The Stylo2gg package addresses
+some of these limitations by extending the usefulness of Stylo. Among other
+things, Stylo2gg adds logging and replication of analyses, keeping necessary
+files and introducing a systematic way to reproduce past work. With visualization
+as its initial purpose, Stylo2gg also makes exploring stylometric data easy,
+providing options for labeling, highlighting subgroups, and double coding data
+for added legibility in black and white or in color. Finally, as hinted by the
+name, the conversion of graphics from base R into Ggplot2 changes the style of
+the output and introduces more options to extend analyses with many other
+packages and addons. The reproducible notebook shown here, `01-stylo2gg.qmd` or
+rendered in `01-stylo2gg.html`, walks through much of the package, including many
+features that were added in the past year.
+
+------
diff --git a/pages/program/abstracts/papers.tbd b/pages/program/abstracts/papers.tbd
new file mode 100644
index 0000000..18d83a4
--- /dev/null
+++ b/pages/program/abstracts/papers.tbd
@@ -0,0 +1,293 @@
+---
+layout: page
+title: Papers
+description:
+menubar: program
+permalink: program/papers/
+menubar_toc: true
+set_last_modified: true
+---
+
+## Long Papers
+
+
+
+
+
+
+
+
+
+
+
+ Research software once was a heroic and lonely activity, particularly in research computing and in HPC. But today, research software is a social activity, in the senses that most software depends on other software, and that most software that is intended to be used by more than one person is written by more than one person. These social factors have led to generally accepted practices for code development and maintenance and for interactions around code. This paper examines how these practices form, become accepted, and later change in different contexts. In addition, given that research software engineering (RSEng) and research software engineers (RSEs) are becoming accepted parts of the research software endeavor, it looks at the role of RSEs in creating, adapting, and infusing these practices. It does so by examining aspects around practices at three levels: in communities, projects, and groups. Because RSEs are often the point where new practices become accepted and then disseminated, this paper suggests that tool and practice developers should be working to get RSE champions to adopt their tools and practices, and that people who seek to understand research software practices should be studying RSEs. It also suggests areas for further research to test this idea.
+
+
+
+
+
+
+
+
+
+
+
+ Artificial intelligence (AI) and machine learning (ML) have been shown to be increasingly helpful tools in a growing number of use-cases relevant to scientific research, despite significant software-related obstacles. There exist large technical costs to setting up, using, and maintaining AI/ML models in production. This often prevents researchers from utilizing these models in their work. The growing field of machine learning operations (MLOps) aims to automate much of the AI/ML life cycle while increasing access to these models. This paper presents the initial work in creating a nuclear energy MLOps platform for use by researchers at Idaho National Laboratory (INL) and aims to reduce the barriers of using AI/ML in scientific research. Our goal is to promote the integration of the latest AI/ML technologies into researchers' workflows and create more opportunity for scientific innovation. In this paper we discuss how our MLOps efforts aim to increase usage and the impact of AI/ML models created by researchers. We also present several use-cases that are currently integrated. Finally, we evaluate the maturity of our project as well as our plans for future functionality.
+
+
+
+
+
+
+
+
+
+
+
+ Software sustainability is critical for Computational Science and Engineering (CSE) software. Highly complex code makes software more difficult to maintain and less sustainable. Code reviews are a valuable part of the software development lifecycle and can be executed in a way to manage complexity and promote sustainability. To guide the code review process, we have developed a technique that considers cyclomatic complexity levels and changes during code reviews. Using real-world examples, this paper provides analysis of metrics gathered via GitHub Actions for several pull requests and demonstrates the application of this approach in support of software maintainability and sustainability.
+
+
+
+
+
+
+
+
+
+
+
+
+ Increasingly, scientific research teams desire to in- corporate machine learning into their existing computational workflows. Codebases must be augmented, and datasets must be prepared for domain-specific machine learning processes. Team members involved in software development and data maintenance, particularly research software engineers, can foster the design, implementation, and maintenance of infrastructures that allow for new methodologies in the pursuit of discovery. In this paper, we highlight some of the main challenges and offer assistance in planning and implementing machine learning projects for science.
+
+
+
+
+
+
+
+
+
+
+
+ Sandia National Laboratories is a premier United States national security laboratory which develops science-based technologies in areas such as nuclear deterrence, energy production, and climate change. Computing plays a key role in its diverse missions, and within that environment, Research Software Engineers (RSEs) and other scientific software developers utilize testing automation to ensure quality and maintainability of their work. We conducted a Participatory Action Research study to explore the challenges and strategies for testing automation through the lens of academic literature. Through the experiences collected and comparison with open literature, we identify these challenges in testing automation and then present strategies for mitigation grounded in evidence-based practice and experience reports that other, similar institutions can assess for their automation needs.
+
+
+
+
+
+
+
+
+
+
+
+ Visual Studio Code (VSCode) has emerged as one of the most popular development tools among professional developers and programmers, offering a versatile and powerful coding environment. However, configuring and setting up VSCode to work effectively within the unique environment of a shared High-Performance Computing (HPC) cluster remains a challenge. This discusses the configuration and integration of VSCode with the diverse and demanding environments typically found on HPC clusters. We demonstrate how to configure and set up VSCode to take full advantage of its capabilities while ensuring seamless integration with HPC-specific resources and tools. Our objective is to enable developers to harness the power of VSCode for HPC applications, resulting in improved productivity, better code quality, and accelerated scientific discovery.
+
+
+
+
+
+
+
+
+
+
+
+
+ We provide an overview of the software engineering efforts and their impact in QMCPACK, a production-level ab-initio Quantum Monte Carlo open-source code targeting high-performance computing (HPC) systems. Aspects included are: (i) strategic expansion of continuous integration (CI) targeting CPUs, using GitHub Actions runners, and NVIDIA and AMD GPUs in pre-exascale systems, using self-hosted hardware; (ii) incremental reduction of memory leaks using sanitizers, (iii) incorporation of Docker containers for CI and reproducibility, and (iv) refactoring efforts to improve maintainability, testing coverage, and memory lifetime management. We quantify the value of these improvements by providing metrics to illustrate the shift towards a predictive, rather than reactive, sustainable maintenance approach. Our goal, in documenting the impact of these efforts on QMCPACK, is to contribute to the body of knowledge on the importance of research software engineering (RSE) for the sustainability of community HPC codes and scientific discovery at scale.
+
+
+
+
+
+
+
+
+
+
+
+ Evidence-based practice (EBP) in software engineering aims to improve decision-making in software development by complementing practitioners' professional judgment with high-quality evidence from research. We believe the use of EBP techniques may be helpful for research software engineers (RSEs) in their work to bring software engineering best practices to scientific software development. In this study, we present an experience report on the use of a particular EBP technique, rapid reviews, within an RSE team at Sandia National Laboratories, and present practical recommendations for how to address barriers to EBP adoption within the RSE community.
+
+
+
+
+
+
+
+
+
+
+
+ As social media platforms continue to shape modern communication, understanding and harnessing the wealth of information they offer has become increasingly crucial. The nature of the data that these platforms provide makes them the emerging resource for data collection to conduct research ranging from measuring sentiments of the people over a particular trend in society to drafting a major policy by governing agencies. This paper presents PULSE, a powerful tool developed by Decision TheaterTM (DT) at Arizona State University in the United States, designed to extract valuable insights from Twitter. PULSE provides researchers and organizations with access to a curated dataset of public opinions and discussions across diverse research areas. Further, the tool uses various machine learning and data analytical algorithms to derive valuable insights on the subject under research. These insights are efficiently displayed using an interactive dashboard to assist the researchers in extracting useful insights to draw appropriate conclusions. The paper also illustrates the technical functionalities and visualization capabilities of the tool with the case study on Hurricane Laura.
+
+
+
+
+
+------
+
+## Short Papers
+
+
+
+
+
+
+
+
+
+
+
+ This paper introduces CACAO, a research software platform that simplifies the use of cloud computing in scientific research and education. CACAO's cloud automation and continuous analysis features make it easy to deploy research workflows or laboratory experimental sessions in the cloud using templates. The platform has been expanding its support for different cloud service providers and improving scalability, making it more widely applicable for research and education. This paper provides an overview of CACAO's key features and highlights use cases.
+
+
+
+
+
+
+
+
+
+
+
+ Science gateways connect researchers to high-performance computing (HPC) resources by providing a graphical interface to manage data and submit jobs. Scientific research is a highly collaborative activity, and gateways can play an important role by providing shared data management tools that reduce the need for advanced expertise in file system administration. We describe a recently implemented architecture for collaborative file management in the Core science gateway architecture developed at the Texas Advanced Computing Center (TACC). Our implementation is built on the Tapis Systems API, which provides endpoints that enable users to securely manage access to their research data.
+
+
+
+
+
+
+
+
+
+
+
+ High-fidelity pattern of life (PoL) models require realistic origin points for predictive trip modeling. This paper develops and demonstrates a reproducible method using open data to match synthetic populations generated from census surveys to plausible residential locations (building footprints) based on housing attributes. This approach presents promise over extant methods based on housing density, particularly in small neighborhood areas with heterogeneous land-use.
+
+
+
+
+
+
+
+
+
+
+
+ Community resilience assessment is critical for the anticipation, prevention and mitigation of natural and anthropic disaster impacts. In the digital age, this requires reliable and flexible cyberinfrastructure capable of supporting research and decision processes along multiple simultaneous, interconnected concerns. To address this need, the National Center for Supercomputing Applications (NCSA) developed the Interdependent Networked Community Resilience Modeling Environment (IN-CORE) as part of the NIST-funded Center of Excellence for Risk-Based Community Resilience Planning (CoE), headquartered at Colorado State University. The Community App is a web-based application that takes a community through the resilience planning process using IN-CORE analyses for the measurement science to measure community resilience. Complex workflows are managed by DataWolf, a scientific workflow management system, running jobs on the IN-CORE platform utilizing the underlying Kubernetes cluster resources. Using the community app, users can perform realistic and complex scenarios and visualize the results to understand their resilience to different hazards and enhance their decision-making capabilities.
+
+
+
+
+
+
+
+
+
+
+
+ This paper examines the potential of containerization technology, specifically the CyVerse Discovery Environment (DE), as a solution to the reproducibility crisis in research. The DE is a platform service designed to facilitate data-driven discoveries through reproducible analyses. It offers features like data management, app integration, and app execution. The DE is built on a suite of microservices deployed within a Kubernetes cluster, handling different aspects of the system, from app management to data storage. Reproducibility is ensured by maintaining records of the software, its dependencies, and instructions for its execution. The DE also provides a RESTful web interface, the Terrain API, for creating custom user interfaces. The application of the DE is illustrated through a use case involving the University of Arizona Superfund Research Center, where the DE's data storage capabilities were utilized to manage data and processes. The paper concludes that the DE facilitates efficient and reproducible research, eliminating the need for substantial hardware investment and complex data management, thereby propelling scientific progress.
+
+
+
+
+
+
+
+
+
+
+
+ The INTERSECT Software framework project aims to create an open federated library that connects, coordinates, and controls systems in the scientific domain. It features the Adapter, a flexible and extensible interface inspired by the Adapter design pattern in object-oriented programming. By utilizing Adapters, the INTERSECT SDK enables effective communication and coordination within a diverse ecosystem of systems. This adaptability facilitates the execution of complex operations within the framework, promoting collaboration and efficient workflow management in scientific research. Additionally, the generalizability of Adapters and their patterns enhances their utility in other scientific software projects and challenges.
+
+
+
+
+
+
+
+
+
+
+
+ Full-stack research software projects typically include several components and have many dependencies. New projects benefit from co-development of these components within a well-structured monolith. While this is preferred, over time this can become a burden to deploy in different contexts and environments. What we would like is to independently deploy components to reduce size and complexity. Maintaining separate packages however allows for developmental drift and other problems. So called 'monorepos' allow for the best of both approaches, but not without its own difficulties. There is almost no formal treatment in the literature of this particular dilemma however. The technology industry has started using monorepos to solve similar challenges, but perhaps in the academic context we should be cautious to not simply replicate industry practices. This short paper merely propositions the research software engineering (RSE) community into a discussion of the positives and negatives in structuring projects as monorepos of discrete packages.
+
+
+
+
+
+
+
+
+
+
+
+ Single-page applications (SPAs) have become indispensable in modern frontend development, with widespread adoption in scientific applications. The process of creating a single-page web application development environment which accurately reflects the production environment isn’t always straightforward. Most SPA build systems assume configuration at build time, while DevSecOps engineers prefer runtime config- uration. This paper suggests a framework-agnostic approach to address issues that encompass both development and deployment, but are difficult to tackle without knowledge in both domains.
+
+
+
+
+
+
+
+
+
+
+
+ Documentation is a crucial component of software development that helps users with installation and usage of the software. Documentation also helps onboard new developers to a software project with contributing guidelines and API information. The INTERSECT project is an open federated hardware/software library to facilitate the development of autonomous laboratories. A documentation strategy using Sphinx has been utilized to help developers contribute to source code and to help users understand the INTERSECT Python interface. Docstrings as well as reStructuredText files are used by Sphinx to automatically compile HTML and PDF files which can be hosted online as API documentation and user guides. The resulting documentation website is automatically built and deployed using GitLab runners to create Docker containers with NGINX servers. The approach discussed in this paper to automatically deploy documentation for a Python project can improve the user and developer experience for many scientific projects.
+
+
+
+
+
+
+
+
+
+
+
+ Collaboration networks for university research communities can be readily rendered through the interrogation of coauthorships and coinvestigator data. Subsequent computation of network metrics such as degree or various centralities offer interpretations on collaborativeness and influence and can also compose distributions which can be used to contrast different cohorts. In prior work, this workflow provided quantitative evidence for ROI of centralized computing resources in contrasting researchers with and without cluster accounts, where significance was found across all metrics. In this work, two similar cohorts, those with RSE-type roles at the university and everyone else, are contrasted in a similar vein. While a significantly higher degree statistic for the RSE cohort suggests its collaborative value, a significantly lower betweenness centrality distribution indicates a target for potential impact through the implementation of a centralized RSE network.
+
+
+
+
+
+
diff --git a/pages/program/abstracts/posters.tbd b/pages/program/abstracts/posters.tbd
new file mode 100644
index 0000000..516bdb8
--- /dev/null
+++ b/pages/program/abstracts/posters.tbd
@@ -0,0 +1,324 @@
+---
+layout: page
+title: Posters
+description:
+menubar: program
+permalink: program/posters/
+menubar_toc: true
+set_last_modified: true
+---
+
+
+
+
+
+
+
+
+
+
+
+ The aim of this project is to modify the Python library, snnTorch, to account for the adjacency of nearby neurons when firing off.
+ Once adjacency is determined, the weights of neurons are adjusted accordingly.
+ Our main objective was to test the theory that taking neuron adjacency into account will have a positive effect on overfitting, a common problem when designing Neural Networks.
+ In order to complete this project, we did research into Spiking Neural Networks, and how we could utilize the concepts of fractal growth and Cayley trees to simulate natural neuron growth.
+ To complete this project, we utilized common Python libraries such as NumPy, MatPlotLib, snnTorch, Math, Itertools, and Sys.
+ Additionally, we utilized the CIFAR-10 and MNIST datasets to train our neural network.
+ With these factors in place, tests were performed using the newly modified code to examine the accuracy and level of overfitting present in the new program.
+ The results showed that our changes did not hurt the accuracy, and that it showed a minor performance increase in regard to overfitting.
+ However, these results will require further testing in the future.
+ This project presents a way to create neural networks that has a positive effect on overfitting, without sacrificing accuracy of results during training.
+
+
+
+
+
+
+
+
+
+
+
+ Geostreams is a comprehensive platform developed by the National Center for Supercomputing Applications, designed to facilitate open-source data management and visualizations for geospatial data. The framework enables the conversion of heterogeneous data, particularly time-series geospatial data, into a flexible schema with an online dashboard for interactive data visualizations, allowing end-users to effectively engage with the data.
+ The Geostreams framework comprises three primary components. Firstly, the underlying database is a robust database built on PostgreSQL. Leveraging the capabilities of PostGIS and the PostgreSQL JSON binary (JSONB) data type, this component efficiently handles the storage and management of geospatial and temporal data by structuring data sources, parameters and time series data streams into JSON documents that can be queried directly or in aggregate (such as weekly totals). The second component, the Geostreams API, a RESTful service, is written in Scala and supports automated ingest and aggregation of time-series geospatial data. For a wider reach, Pygeostreams, a Python wrapper library, is also available to interface with the API. The final component is the Geodashboard, a rich client web platform, developed in React.js and leveraging D3.js and Vega.js, dedicated to visualizing and downloading parsed data, allowing users to gain insights and facilitate further analysis.The dashboard is composed of many modular components that can be enabled and configured depending on the type and scale of data being displayed.
+ To enhance the framework’s capabilities, Geostreams seamlessly integrates with Clowder, a customizable and scalable data management framework designed for long-tail data. This allows Geostreams to provide long-term archiving and efficient raw file management.To ensure portability and ease of deployment, each component is containerized using Docker and can be quickly built with Docker Compose.
+ The effectiveness and versatility of the Geostreams framework have been validated through its successful implementation in projects such as the Great Lakes to Gulf, Great Lakes Monitoring, ARPA-E Smartfarm, and NSF Critical Interface Network. The framework provided a solid foundation that could be easily customized to meet the specific needs of each project, reducing manual effort and saving valuable time. Future plans for Geostreams, include migrating the API services to Django for seamless integration with advanced extensions like timescaleDB, enabling real-time data aggregation. Additionally, improvements to the data model are envisioned to enhance efficiency.
+ The Geostreams framework serves as an excellent example of a well-structured, modular, and extensible system that can be applied to other projects and domains apart from geospatial. The patterns and principles of containerization, scalability, and seamless integration with other frameworks foster an efficient and adaptable approach to software development enabling RSEs to minimize effort without compromising on quality.
+
+
+
+
+
+
+
+
+
+
+
+ Over the last 40 years, network analysis has emerged as a prominent approach to data-intensive research.
+ Despite this steady growth and investment, network analysis remains something of a niche specialty that can exclude novice users who usually only receive standard statistical training.
+ Moreover, since much of the growth in network science has tended to be field-specific, tools and formats have developed independently across disciplines.
+ The multiplicity of formats and sensitivity of social data makes existing records difficult to share across scholars in the field, limiting the opportunity for new findings on the already accumulated body of network data.
+ IDEANet - Integrating Data Exchange and Analysis for Networks - aims to maximize scientific discovery in human network science by significantly lowering the analytic and access barriers-to-entry for researchers.
+ IDEANet is supported by the National Science Foundation as part of the Human Networks and Data Science - Infrastructure program (BCS-2024271 and BCS-2140024).
+
+ IDEAnet features three key components (1) a suite of analysis tools developed in R which automatically generate standardized network analytic measures (2) a GUI (Graphical User Interface) which gives access to the aforementioned measurements through an easy-to-use menu-based program and (3) a secure data repository that routinizes the capacity for archiving and accessing network data, including sensitive data.
+
+ The analysis tools are distributed as a package and built with real-world data constraints in mind to allow novice users the ability to gain substantive results as efficiently (but still accurately) as possible.
+ Core metrics comprise 17 node-level measurement (e.g., degree, centralities, reachability) in addition to 27 system-level metrics (e.g., network size, dyad census, transitivity).
+ Additional modules include multiple regression QAP, multi-relational blockmodeling and a community-detection routine that partitions the network based on 10 commonly used methods and evaluates their concordance using CHAMP.
+ Further modules are in development including meta-population disease simulation and dynamic network diffusion simulation.
+
+ The secure data repository is hosted on Dataverse in collaboration with Duke University Library.
+ Researchers are often interested in sharing their data but can be limited by strict institutional requirements.
+ Our repository facilitates this transition by offering three levels of data security: Open access, Secure non-restricted, and Secure use-restricted.
+ Secure non-restricted data include some level of confidentiality such that investigators require IRB approval for access.
+ Secure use-restricted data requires both IRB approval for use and further substantive limitations required by the data owner.
+ To accommodate the diversity in requirements, IDEAnet makes use of the imPACT architecture – a “notary service” that seamlessly matches user certification and data access requirements.
+
+ The difficult learning curve involved in learning network tools means that researchers with substantive interests in network processes but who are not specially trained in network methods must either invest heavily in training or risk serious analytic errors.
+ The goal of IDEANet is to provide an integrated network data analysis framework within R that capitalizes on the best of current tools while building robust safeguards against common data and analytic errors.
+
+
+
+
+
+
+
+
+
+
+
+
+ Recently the US-DOE Office of Advanced Scientific Computing Research (ASCR) office funded several seedling projects to conceptualize software sustainability organizations (SSOs).
+ One of them, the Collaboration for Better Software (for Science), or COLABS, has research software engineering as its centerpiece.
+ It aims to provide a wide range of services to client software projects and the broader community in partnership with ASCR’s user facilities.
+ These services include essential and advanced software engineering services, and place a strong emphasis on workforce development and retention by providing long-term stability, training, and support to enable and encourage RSEs and other staff to build their careers and excel in this role.
+ With this poster, we will engage with the RSE community; to get their input, and refine our objectives for the SSO, and how these objectives can be met.
+
+ COLABS is envisioned as a multi-institutional distributed organization that will initially be anchored by three DOE national laboratories (ANL, LBNL, and ORNL), but can expand to include a wide variety of institutions including universities, industry, non-profit foundations, etc.
+ In addition to providing services directly, COLABS RSEs will also become ambassadors for changing the perception of RSE roles in scientific computing.
+
+
+
+
+
+
+
+
+
+
+
+ Randomized controlled trials (RCTs) are considered the highest level of evidence to establish causal associations in clinical research.
+ However, problems with design, execution or reporting of the trial process can lead to unreliable findings, excessive costs, and, potentially, harm for patients.
+ Clinical trials often suffer from poor methodological and reporting quality (also known as rigor and transparency, respectively).
+ Two reporting guidelines, CONSORT(Consolidated Standard of Reporting Trials) and SPIRIT(Standard Protocol Items: Recommendations for Interventional Trials) have been designed to promote complete and clear reporting in RCT publications (results publications and protocols, respectively).
+ Using these guidelines, the validity and applicability of the RCT findings can be better assessed.
+ Although endorsed by many high-impact medical journals, adherence to these guidelines remains suboptimal, possibly because journals lack methods for enforcement and verification, which involves a substantial amount of journal staff or editorial time.
+
+ RCTCheck uses natural language processing techniques and data management software (Clowder) to analyze RCT manuscripts and identify information related to rigor and transparency as defined in these guidelines.
+ RCTCheck analyzes user uploaded manuscripts, identifies sections and sentences, and using a Transformer-based deep learning model (PubMedBERT), classifies sentences into individual items in CONSORT and SPIRIT checklists and generates a report on the transparency of the manuscript.
+ This report can assist authors in checking the completeness of their reporting, and journals in maintaining high reporting standards, and other stakeholders of clinical research in critically assessing the quality of clinical trials, synthesizing evidence and promoting open science practices, leading to better clinical care and treatments.
+
+ The user management functionality in Clowder provides different types of access for researchers looking to use the labeled and processed clinical manuscript data and authors looking to publish their work by ensuring that the manuscripts align with the guidelines.
+ An author will be able to upload a manuscript to RCTCheck and download a report of its critical appraisal.
+ A researcher is able to process a larger number of published reports and manuscripts and conduct large-scale analyses on reporting quality.
+ They will also be able to provide feedback on model predictions, which can potentially improve the deep learning models.
+
+ The system leverages the Clowder data management framework to provide a backend for the execution of PubMedBERT and pre- and post- processing steps, including PDF extraction and visualizations of results.
+ A special purpose web client provides a specialized user interface for authors and publishers.
+ We present the overall architecture of the system and the current implementation with emphasis on leveraging existing generic cyberinfrastructure and extending it for specific use cases.
+
+
+
+
+
+
+
+
+
+
+
+ Significant efforts have been placed on creating big data management architectures, but there is still a large middle ground between these projects of the largest scale and a small data project that requires little data management.
+ This middle ground which, depending upon hardware utilized, may be some-where in the range of millions to tens of millions of records in scale.
+ This scale is just big enough to create headaches if that data isn’t handled and managed efficiently.
+ Additionally, projects of this scale may not have the resources to support the tools and people required to manage a system intended for data at a larger scale.
+ The data lakehouse architecture presented here aims to fill this niche by delivering a solution that is performant at this scale and is built with open source technology.
+ As a case study of this architecture, we showcase what we developed to manage data for MOSSAIC (Modeling Outcomes using Surveillance data and Scalable AI for Cancer), a natural language processing deep learning joint project between the Department of Energy (DOE) and the National Cancer Institute (NCI).
+ The research element of the project is focused on (1) developing large-scale, state-of-the-art foundation models for clinical information extraction, (2) building new capabilities for biomarker and recurrence identification and detection, (3) pushing novel research in uncertainty quantification, explainability, and safe deployment, so that production AI models can be effectively and reliably deployed in real-time at the population level, (4) expanding the implementation of these tools in real world cancer registry settings as well as other clinical settings such as health care facilities, clinical laboratories etc., and (5) enabling large-scale foundation model training on DOE Leadership Computing Facility supercomputers.
+ Project data is sourced from the National Cancer Institute’s Surveillance, Epidemiology, and End Results Data Management System (SEER*DMS) which acts as a central registry of cancer data consolidating information from individual state cancer registries.
+ A research endeavor of this nature creates many requirements and constraints.
+ For example, we are working with highly sensitive personally-identifiable cancer patient data that, according to our data use agreements (DUAs), required us to build a system that operates in a network disconnected, air-gapped environment.
+ Additionally, we needed to provide the capability to limit access to segments of some data when needed.
+ Finally, the solution needed to be easily shareable with external healthcare institutions where there may be budget, hardware, or data management expertise constraints.
+ The solution presented is a data lake design that can be set up on any file system as well as any object storage system that utilizes the S3 API to store data from any type of source, and is loosely coupled with an in-process serverless analytical database management system that can both catalog the files in the data lake and query them through a no-code GUI SQL editor utilizing a JDBC driver or through code with a number of language-specific client APIs including Python.
+ The open sourced nature of the project offers solutions for the science community, and shared practices for processing and storing data may lead to easier data harmonization and increased reproducibility.
+ This architecture ultimately gives mid-sized data projects a direction for a system that will scale, offers excellent query performance, is resource efficient, and is flexible for future technology changes.
+
+
+
+
+
+
+
+
+
+
+
+
+ In the realm of advanced research, diverse data sources and complex computational workflows pose significant challenges in achieving centralized data management, efficient computation, and reproducibility. This poster proposes a sophisticated pipeline that combines the solutions to the existing problems in a centralized location.
+ The presented pipeline encompasses two indispensable components: the input preparation pipeline and the computation pipeline, both meticulously designed to address the aforementioned obstacles. The input preparation pipeline seamlessly harmonizes data collection from a multitude of platforms, including the likes of XNAT, One Drive, and other various cloud storage services. The computation pipeline, on the other hand, showcases the remarkable capabilities of SLURM and HPC clusters, empowered by the implementation of singularity containers, ensuring not only performance and scalability, but also reproducibility.
+ Furthermore, the poster uses BRILLIANCE (Brain tailoRed stImulation protocoL for acceLerated medIcal performance) as a use case to establish its utility, relevance and significance in the field of advanced research. The use case seamlessly integrates BIP (BRILLIANCE Input Preparer) for comprehensive data preparation and uses singularity containers and computational resources of ACCRE (Advanced Computing Center for Research and Education at Vanderbilt University) to obtain scalability, elevated performance and reproducibility.
+ By embracing this pipeline, researchers and practitioners can seamlessly integrate their data and compute. Furthermore, as the computational units are containerized, researchers can easily ensure reproducibility. This poster aspires to empower researchers to exercise their full potential and facilitate advancing strides in their respective fields.
+
+
+
+
+
+
+
+
+
+
+
+ This poster presents the findings of research on the prevalence of research software as academic research output within international institutional repositories (IRs), often termed Research Information Systems (RIS). These platforms contain permanent metadata records of research output from the university. While these exist mainly to meet funders' open access requirements, they also serve to replace the old homepage of individual academics and to provide metadata on their contents for services that aggregate harvested content, thus increasing the FAIRness of the artifacts. Expanding on work conducted on UK-only repositories by using source data from OpenDOAR, a directory of global Open Access Repositories, similar analyses were applied to international IRs in what we believe is the first such census of its kind. 4,970 repositories from 125 countries were examined for the presence of software, along with repository-based metadata for potentially correlating factors. It appears that much more could be done to provide trivial technical updates to RIS platforms to recognise software as distinct and recordable research output in its own right. This poster will present the main results and the software approach used to examine such a large quantity of IRs, allowing future work to pivot on the datasets found.
+
+
+
+
+
+
+
+
+
+
+
+ Human cognition is richly dynamic. Examining this quantitatively requires tasks that pose evolving and context-dependent problems to participants. As most behavioral testing is moving online, it is necessary to develop measurement tools that permit interactive computations. We present a new methodology which allows for flexible and sophisticated forms of dynamic task evolution and offers an attractive experience for participants and developers alike. Utilizing strengths from both visual, interactive languages (JavaScript) and sophisticated analytic languages (R, Python), we implement a client-server architecture. Here, all computationally intense operations for an online neurocognitive task run in a cloud-based server rather than in a browser. The server receives all data from a participant’s behavior in the task, allowing later stages of the task to be updated dynamically to pose appropriate problems to the participant. The Application Programming Interface (API) to interact with the server uses a customizable R script to process data received from the participant, allowing any specified computations to be performed before returning data to the browser-based JavaScript task, facilitating tight control over the state of the task. This methodology is intended to minimize the limitations of visual programming while retaining interactive and aesthetically pleasing task presentation. We suggest that this offers a unique solution to cognitive testing online and in the lab. A containerized implementation of this methodology is open-source and available on GitHub to minimize all effort in setting up the task: https://github.com/Brain-Development-and-Disorders-Lab/task_template_dynamic
+
+
+
+
+
+
+
+
+
+
+
+
+ Jupyter Notebooks are open-source tools researchers commonly use to develop workflows and other software. Researchers and RSEs alike are most likely familiar with the Classic Notebook interface, the original web application for creating and sharing notebooks, but there are several other coding environments to choose from. An Integrated Development Environment (IDE) is a software application that provides helpful features beyond traditional source code editors, such as debuggers, for developing software. However, IDEs such as VSCode can present a barrier to entry for researchers familiar with other tools. JupyterLab, an alternative developed by Project Jupyter, is an extensible development environment for notebooks that comes with many IDE-like features, including a debugger and tab expansion. Additionally, the community maintains many other helpful extensions that do not ship with the default environment. Our JupyterIDE project collects and curates useful extensions and provides notebook-based tutorials for how to use them. Tutorial-style notebooks include notebooks on Vim keybindings, which make cell manipulation faster and easier, and language server processing, which provides code auto-completion and linting features. Tools like these can make JupyterLab an ideal environment for developing research workflows that can be used by seasoned RSEs who are accustomed to IDE features in collaboration with researchers who may not have interest in investing time into learning a new tool. JupyterIDE makes these tools more accessible for users and promotes software engineering best practices in a research environment.
+
+
+
+
+
+
+
+
+
+
+
+ Software plays a key role in the scientific discovery process. The user experience and sustainability of scientific software are critical to ensure the production of knowledge and scientific progress. Today, scientific software programs and projects often do not have the methods, processes, or best practices that are necessary to ensure high quality usable software. Knowledge from commercial software cannot be directly applied to scientific software due to differences in resource allocation, organizational structures, target audience, and scientific goals. To understand and bridge these gaps, our project, Scientific software Research for User experience, Design, Engagement and Learning (STRUDEL) is developing a typology of scientific software work and a design framework to understand and support the scientific software process including user interface design and development. We believe that this typology and design framework is necessary for research software engineering (RSE) practice to develop usable and sustainable software.
+ A sociologically informed typology helps break down diverse scientific projects for analysis and comparison by stakeholders. The STRUDEL typology is designed to guide scientific users who have questions about what types of user experience and software sustainability work to invest in, as well as when to do so. Our aim is for this typology to be a strategic thinking partner to guide project leaders, funding officers, domain experts, software developers, and so on when thinking about their product’s needs for UX, software sustainability, and overall strategy. It unpacks connections between organizational (project structures & funding), social (roles of people & structure of teams), and technical issues (technology stacks, target users, etc.) that shape scientific software to help users answer key strategic questions.
+ The STRUDEL design framework provides fundamentals and guidelines along with standard components and generalized UI flows for accomplishing specific tasks in scientific user interfaces that can be reused and customized. This science design framework will enable science teams to design and implement more usable and effective interfaces to address these unique challenges.
+ Overall, the STRUDEL project aims to bolster scientific software development efforts by improving the user experience, software quality, and software sustainability. In this poster, we will discuss our work and its broader applicability to RSE practice.
+
+
+
+
+
+
+
+
+
+
+
+ Heterogeneous data is all around us and is defined as one that comes with many variations, types, incomplete details, and sometimes inaccurate information. This data can take different forms in large academic communities like universities, including information about courses, health and wellness activities, research, events, user groups, transportation, food and dining, buildings and rooms, and facilities. Accessing and processing heterogeneous data comes with challenges, including finding data and relevant metadata, various data formats, systems, communication protocols for accessing data, authentication and authorization methods, and incomplete and sometimes incorrect or obsolete information. Understanding and processing heterogeneous data is challenging, but it presents numerous opportunities for gaining deeper insights about the community and enabling data-driven decision-making, potentially leading to a better experience for all university participants (students, faculty, staff, alums, and other community members). Rokwire is an open-source platform for developing mobile applications intending to empower smart, healthy communities. It envisions integrating and processing a wide range of information and providing access through a mobile application that is personalized and privacy aware. The Rokwire platform includes core functionalities or Building Blocks that communicate with different systems to process raw data and make it available in a format multiple client applications can consume and deliver to its users. We briefly discuss the Rokwire platform and its capabilities around heterogeneous data processing within a large academic community, focusing on two of its functionalities: events data processing and managing software contributions to the platform. For each of these functionalities, we discuss its key characteristics, how it aids in reducing the barrier to heterogeneous data processing and increasing data access within academic communities, the current implementation, and future work. Events data come from different sources, with similarities and variations in the data format and content. We architected and developed an Events Manager web application that lets users create and manage events and process event data from different sources. The backend uses an Events Building Block web service module that standardizes event data and stores it in a database. When working with heterogeneous data, one might encounter data that cannot be directly integrated or shared for different reasons, like legacy file formats or data sharing restrictions. For data that cannot be directly shared with the platform, we have developed a Contributions Catalog web application supported by a Contributions Building Block web service module. External collaborators willing to contribute and integrate software modules that process such data with the Rokwire platform can use this application to share details of those modules, including purpose, data needs, protocols of data use, and removal. After a thorough and successful review, such third-party applications can be integrated with the Rokwire platform and made available to users. In future work on event data processing, we will continue adding new capabilities like enhancing event data (e.g., finding more accurate event locations when the data is incomplete) and improving its usage across the platform. In managing software contributions to the platform, we plan to provide enhanced review and publishing capabilities, including support for deployment. We also discuss our ongoing work of migrating these modules to a newer technology stack. We conclude by briefly discussing the collaboration of Research Software Engineers (RSEs) in architecting and developing the Rokwire platform and discussing the value added by the platform for the university community.
+
+
+
+
+
+
+
+
+
+
+
+ Insights into the complex interactions and consequences of turbulent and stratified shear flows are critical for deciphering heat transfer in the ocean and its role in the global climate system. This work is part of an effort to classify the regime of a stratified inclined duct (SID) flow in real time, enabling researchers to prioritize relevant experimental data and minimize storage costs. Here, the authors have performed curvelet analysis to extract key features and textures from shared SID shadowgraphs (see [1] fig. 1 for the experiment’s setup). The Fast Discrete Curvelet Transform, provided by the CurveLab Matlab toolbox, has been proposed by Cand`es and Denoho [2], and is effective in its windowing approach, which separates a given signal into both different scales and orientations (angles) before performing ridgelet transforms. The spatial domain of the curvelet transform’s coarsest and finest scales, performed on a turbulent flow, are shown below; note the different textures that are extracted from the original image.
+
+
+
+
+
+
+
+
+
+
+
+ Researchers are increasingly using web applications to promote their work in an accessible and engaging format. By leveraging interactive visualizations and intuitive interfaces, researchers can effectively share their data and code within the scientific community. RSEs may be interested in working with researchers to build web applications that have the potential to improve code and data reuse. Despite the value of these communication tools, maintaining them eventually falls to the researchers who are not incentivized to learn new tools and technologies. We present a network analysis visualization tool that is demonstrative of how an existing research workflow in a Jupyter Notebook can be transformed into complex web applications without leaving the JupyterLab development environment. This application uses Jupyter widgets (ipywidgets) to add interactive components - such as sliders, dropdown menus - and a network visualization widget (ipycytoscape) to visually explore and analyze a large citation network. Voila strips away code cells, leaving behind only interactive browser components, resulting in a fully-fledged user interface. By adapting existing workflows, researchers working with RSEs can benefit from the familiarity of the codebase and the development environment. This helps them maintain the application beyond the period of collaboration. Based on our experience, we recommend that researchers and RSEs consider the adoption of Jupyter Notebook and Jupyter widgets to transform existing workflows into intuitive, interactive, and aesthetic web applications that can effectively communicate their research findings.
+
+
+
+
+
+
+
+
+
+
+
+ Releasing software is an important part of the work of many RSEs. Modern software stacks can often be complex, even within the scope of a single project or set of projects (a "software ecosystem"). One of the pivotal decisions in how to approach managing this complexity is the organization of the software into "repositories". The two ends of the spectrum are to consolidate everything into a single repository -- the "monorepo" approach -- or to use different repositories for each possible identifiable module -- the "multirepo" approach. We have been personally involved in managing both kinds of approaches, and have learned some of the pros and cons as they apply to the software release managers and various project developer roles.
+ Almost all software projects begin with a single repository to coordinate the work of the initial developer team (perhaps one person). The path to a monorepo or multirepo starts later as more modules and use-cases are added to the core functionality. Adding more repositories tends to add complexity for developers who must work in multiple ones, and for software release managers who must look across repositories for issues and milestones. If repositories span different project namespaces, e.g. GitHub "organizations", then additional steps are added to daily tasks of linking issues or pull-requests, authorizing users, and different types of communication. On the other hand, many tools associated with distributing software are more naturally scoped to a repository rather than a part of a directory tree, including most importantly packaging systems, but also cloud-based documentation and containerization. The packaging and release modularization of the multirepo approach greatly increases flexibility in dealing with the perennial problems of dependency management, which scale super-linearly with the number of different project components and developer sub-teams (in any organization scheme).
+ We have found that, largely due to dependency management and its effect on code reliability and reproducibilty, the advantages of monorepo approaches at smaller scales for developer teams and code complexity start to be outweighed by disadvantages in somewhat the same way horses pulling stagecoaches works for a single family but not a group of 50 -- there is no longer enough flexibility to changes in the landscape and the interactions among the people being conveyed.
+ The poster will summarize our key findings, along with a description of the technical and organizational context that our experience is based on, as we found this to be of primary importance to help the audience evaluate how much our conclusions are directly applicable to their use case.
+
+
+
+
+
+
+
+
+
+
+
+ Over the last two decades, large-scale supercomputers and data centers have evolved to have a more heterogenous set of general and special-purpose processing units, e.g., multi-core CPUs, GPUs, FPGAs, DPUs, and generally xPUs, on nodes. Heterogenous parallel programming models, e.g., OpenMP, CUDA/HIP/SYCL, OpenACC, provided building blocks – via compiler and runtime systems – to harness the power and capabilities this hardware and have demonstrated large speedups through research studies. Yet, when used in production-level scientific software, these programming models not only can inhibit performance portability, but they also are error-prone because of their complex behavior and interaction with the base language’s semantics. Following a natural path to maturity, heterogeneous parallel computing has recently facilitated for programming productivity via software technology for heterogeneous parallel programming abstractions to eventually be integrated in a base language, e.g., C++, Python, Fortran. A set of such libraries uses heterogeneous programming models in their backend. Kokkos-core, and the complementary kernel library, Kokkos-kernels, both a part of the Kokkos project, is a prevalent example; Kokkos is currently developed by the U.S. Department of Energy (DoE) and used widely across DoE applications, and its capabilities are already being considered as part of the C++26 standard’s C++ parallel STL. Kokkos training and tutorials give users an intuitive understanding of how to develop Kokkos programs, regardless of Kokkos backend, and there are different channels for training through, e.g., example programs and tutorial videos. The Klokkos X-Stack Project (Klokkos is a combination of KLEE and Kokkos) in the U.S. Department of Energy aims to provide automated testing and analysis for Kokkos users to run Kokkos program and understand common API usage mistakes without needing actual hardware or a platform, i.e., there is no need to have GPU or other accelerators and kernel libraries like BLAS.Algorithmic/automated testing of parallel programs is computationally intractable due to the problem of the number of different paths a program can take. In the context of research software engineering, we ask: can a tool for automated testing of parallel programs using concolic analysis, coupled with a complementing set of parallel programming examples which are classified as correct/incorrect (thereby offering ground truth), help reduce the computational intractability of automated testing of parallel programs and thereby reduce the human burden of debugging of parallel programs? We will answer this in two steps. First, we will showcase automated analysis tool for Kokkos parallel programs that uses guided symbolic execution through an LLVM-based Klee plugin; this automated analysis can be considered a first pass of the compiled program for bug detection and a step before the expensive dynamic analysis. Second, we will then identify the ways that a set of community-gathered parallel programming examples classified as correct or incorrect can further improving tractability concolic analysis of parallel programs.
+
+
+
+
+
diff --git a/pages/program/abstracts/talks.tbd b/pages/program/abstracts/talks.tbd
new file mode 100644
index 0000000..d8e3680
--- /dev/null
+++ b/pages/program/abstracts/talks.tbd
@@ -0,0 +1,414 @@
+---
+layout: page
+title: Talks
+description:
+menubar: program
+permalink: program/talks/
+menubar_toc: true
+set_last_modified: true
+---
+
+
+
+
+
+
+
+
+
+
+
+ The growing recognition of research software as a fundamental component of the scientific process has led to the establishment of both Open Source Program Office (OSPO) as a Research Software Engineering (RSE) groups. These groups aim to enhance software engineering practices within research projects, enabling robust and sustainable software solutions. The integration of an OSPO into an RSE group within a university environment provides an intriguing fusion of open source principles and research software engineering expertise. The utilization of students as developers within such a program highlights their unique contributions along with the benefits and challenges involved.
+ Engaging students as developers in an OSPO-RSE group brings numerous advantages. It provides students with valuable experience in real-world software development, enabling them to bridge the gap between academia and industry. By actively participating in open source projects, students can refine their technical skills, learn industry best practices, and gain exposure to collaborative software development workflows. Involving students in open source projects enhances their educational experience. They have the opportunity to work on meaningful research software projects alongside experienced professionals, tackling real-world challenges and making tangible contributions to the scientific community. This exposure to open source principles and practices fosters a culture of innovation, collaboration, and knowledge sharing.
+ This approach also raises questions. How can the objectives and metrics of success for an academic OSPO-RSE group be defined and evaluated? What governance models and collaboration mechanisms are required to balance the academic freedom of researchers with the community-driven nature of open source? How can the potential conflicts between traditional academic practices and the open source ethos be effectively addressed? How can teams balance academic commitments with project timelines? These questions highlight the need for careful consideration and exploration of the organizational, cultural, and ethical aspects associated with an OSPO acting as an RSE group within a university.
+ Leveraging student developers in an OSPO-RSE group also presents challenges that need careful consideration. Students may have limited experience in software engineering practices, requiring mentoring and guidance to ensure the quality and sustainability of the research software they contribute to. Balancing academic commitments with project timelines and expectations can also be a challenge, necessitating effective project management strategies and clear communication channels. Furthermore, the ethical considerations of involving students as developers in open source projects must be addressed, ensuring the protection of intellectual property, respecting licensing requirements, and maintaining data privacy.
+ The involvement of students as developers within an OSPO-RSE group offers valuable benefits. The effective integration of students in this context requires thoughtful planning, mentorship, and attention to ethical considerations. This talk will examine the experience of the Open Source with SLU program to explore the dynamic role of student developers in an OSPO-RSE program and engage in discussions on best practices, challenges, and the future potential of this distinctive approach to research software engineering within academia.
+
+
+
+
+
+
+
+
+
+
+
+ Conda is a multi-platform and language agnostic packaging and runtime environment management ecosystem. This talk will briefly introduce the conda ecosystem and the needs it meets, and then focus on work and enhancements from the past 2 years. This includes speed improvements in creating packages and in deploying them; work to establish and document standards that broaden the ecosystem; new support for plugins to make conda widely extensible; and a new governance model that incorporates the broader conda community.
+ The conda ecosystem enables software developers to create and publish easy to install versions of their software. Conda software packages incorporate all software dependencies (written in any language) and enable users to install software and all dependencies with a single command. Conda is used by over 30 million users worldwide. Conda packages are available in both general and domain specific repositories. conda-forge is the largest conda-compatible package repository with over 20,000 available packages for Linux, Windows, and macOS. Bioconda is the largest domain specific repository with over 8,000 packages for the life sciences.
+ Conda also enables users to set up multiple parallel runtime environments, each running different combinations and versions of software, including different language versions. Conda is used to support multiple projects that require conflicting versions of the same software package.
+
+
+
+
+
+
+
+
+
+
+
+ Alchemical free energy methods, which can estimate relative potency of potential drugs by computationally transmuting one molecule into another, have become key components of drug discovery pipelines. Despite many ongoing innovations in this area, with several methodological improvements published every year, it remains challenging to consistently run free energy campaigns using state-of-the-art tools and best practices. In many cases, doing so requires expert knowledge, and/or the use of expensive closed source software. The Open Free Energy project (https://openfree.energy/) was created to address these issues. The consortium, a joint effort between several academic and industry partners, aims to create and maintain reproducible and extensible open source tools for running large scale free energy campaigns.
+ This contribution will present the Open Free Energy project and its progress building an open source ecosystem for alchemical free energy calculations. It will describe the kind of scientific discovery enabled by the Open Free Energy ecosystem, approaches in the core packages to facilitate reproducibility, efforts to enhance scalability, and our work toward more community engagement, including interactions with both industry and with academic drug discovery work. Finally, it will discuss the long-term sustainability of the project as a hosted project of the Open Molecular Software Foundation, a 501(c)(3) nonprofit for the development of chemical research software.
+
+
+
+
+
+
+
+
+
+
+
+
+ This talk presents research on the prevalence of research software as academic research output within international institutional repositories (IRs). This work expands on previous research, which examined 182 academic IRs from 157 universities in the UK. Very low quantities of records of research software were found in IRs and that the majority of IRs could not contain software as independent records of research output due to the underlying Research Information System (RIS) platform. This has implications for the quantities of software returned as part of the UK's Research Excellence Framework (REF), which seeks to assess the quality of research in UK universities and specifically recognises software as legitimate research output. The levels of research software submitted as research output have declined sharply over the last 12 years and this differs substantially to the records of software contained in other UK research output metadata (e.g. https://gtr.ukri.org). Expanding on this work, source data from OpenDOAR, a directory of global Open Access Repositories, were used to apply similar analyses to international IRs in what we believe is the first such census of its kind. 4,970 repositories from 125 countries were examined for the presence of software, along with repository-based metadata for potentially correlating factors. It appears that much more could be done to provide trivial technical updates to RIS platforms to recognise software as distinct and recordable research output in its own right. We will discuss the implications of these findings with a focus on the apparent lack of recognition of software as discrete output in the research process.
+
+
+
+
+
+
+
+
+
+
+
+ Numerical research data is often saved in file formats such as CSV for simplicity and getting started quickly, but challenges emerge as the amount of data grows. Here we describe the motivation and process for how we moved from initially saving data across many disparate files, to instead utilizing a centralized PostgreSQL relational database. We discuss our explorations into the TimescaleDB extension, and our eventual decision to use native PostgreSQL with a table-partitioning schema, to best support our data access patterns. Our approach has allowed for flexibility with various forms of timestamped data while scaling to billions of data points and hundreds of experiments. We also describe the benefits of using a relational database, such as the ability to use an open-source observability tool (Grafana) for live monitoring of experiments.
+
+
+
+
+
+
+
+
+
+
+
+ Accurately capturing the huge span of dynamical scales in astrophysical systems often requires vast computing resources such as those provided by exascale supercomputers. The majority of computational throughput for the first exascale supercomputers is expected to come from hardware accelerators such as GPUs. These accelerators, however, will likely come from a variety of manufacturers. Each vendors uses its low-level programming interface (such as CUDA and HIP) which can require moderate to significate code development. While performance portability frameworks such as Kokkos allow research software engineers to target multiple architectures with one code base, adoption at the application level lags behind. To address this issue in computational fluid dynamics, we developed Parthenon, a performance portable framework for block-structured adaptive mesh refinement (AMR), a staple feature of many fluid dynamics methods. Parthenon drives a number of astrophysical and terrestrial plasma evolution codes including AthenaPK, a performance portable magnetohydroynamics (MHD) astrophysics code based on the widely used Athena++ code. Running AthenaPK on Frontier, the world’s first exascale supercomputer, we explore simulations of galaxy clusters with feedback from a central supermassive black hole. These simulations further understanding of the thermalization of feedback in galaxy clusters. In this talk we present our efforts developing performance portable astrophysics codes in the Parthenon collaboration and our experience running astrophysics simulations on the first exascale supercomputer. LA-UR-23-26938
+
+
+
+
+
+
+
+
+
+
+
+
+ To address the lack of software development and engineering training for intermediate and advanced developers of research software, we present INnovative Training Enabled by a Research Software Engineering Community of Trainers (INTERSECT). INTERSECT, funded by NSF, provides expert-led training courses designed to build a pipeline of researchers trained in best practices for research software development. This training will enable researchers to produce better software and, for some, assume the role of Research Software Engineer (RSE).
+ INTERSECT sponsors an annual RSE-trainer workshop, focused on the curation and communal generation of research software engineering training material. These workshops connect RSE practitioner-instructors from across the country to leverage knowledge from multiple institutions and to strengthen the RSE community. The first workshop, held in 2022 laid the foundation for the format, structure, and content for the INTERSECT bootcamp, a multi-day, hands-on, research software engineering training event.
+ INTERSECT brings together RSE instructors from U.S. institutions to exploit the expertise of a growing RSE community. In July 2023, INTERSECT will sponsor a week-long bootcamp for intermediate and advanced participants from U.S. institutions. We will use an existing open-source platform to make the INTERSECT-curated material from the bootcamp available. The public availability of the material allows the RSE community to continually engage with the training material and helps coordinate the effort across the RSE-trainer community.
+ In this talk we will introduce the INTERSECT project. We will discuss outcomes of the 2023 bootcamp, including curriculum specifics, lessons learned, and long term objectives. We will also describe how people can get involved as contributors or participants.
+
+
+
+
+
+
+
+
+
+
+
+ Machine learning models, specifically neural networks, have garnered extensive recognition due to their remarkable performance across various domains. Nevertheless, concerns pertaining to their robustness and interpretability have necessitated the immediate requirement for comprehensive methodologies and tools. This scholarly article introduces the "Adversarial Observation" framework, which integrates adversarial and explainable techniques into the software development cycle to address these crucial aspects.
+ Industry practitioners have voiced an urgent need for tools and guidance to fortify their machine learning systems. Research studies have underscored the fact that a substantial number of organizations lack the necessary tools to tackle adversarial machine learning and ensure system security. Furthermore, the absence of consensus on interpretability in machine learning presents a significant challenge, with minimal agreement on evaluation benchmarks. These concerns highlight the pivotal role played by the Adversarial Observation framework.
+ The Adversarial Observation framework provides model-agnostic algorithms for adversarial attacks and interpretable techniques. Two notable methods, namely the Fast Gradient Sign Method (FGSM) and the Adversarial Particle Swarm Optimization (APSO) technique, have been implemented. These methods reliably generate adversarial noise, enabling the evaluation of model resilience against attacks and the training of less vulnerable models.
+ In terms of explainable AI (XAI), the framework incorporates activation mapping to visually depict and analyze significant input regions driving model predictions. Additionally, a modified APSO algorithm fulfills a dual purpose by determining global feature importance and facilitating local interpretation. This systematic assessment of feature significance reveals underlying decision rules, enhancing transparency and comprehension of machine learning models.
+ By incorporating the Adversarial Observation framework, organizations can assess the resilience of their models, address biases, and make well-informed decisions. The framework plays a pivotal role in the software development cycle, ensuring the highest standards of transparency and reliability. It empowers a deeper understanding of models through visualization, feature analysis, and interpretation, thereby fostering trust and facilitating the responsible development and deployment of AI technologies.
+ In conclusion, the Adversarial Observation framework represents a crucial milestone in the development of trustworthy and dependable AI systems. Its integration of robustness, interpretability, and fairness into the software development cycle enhances transparency and reliability. By addressing vulnerabilities and biases, organizations can make well-informed decisions, improve fairness, and establish trust with stakeholders. The significance of the framework is further underscored by the pressing need for tools expressed by industry practitioners and the lack of consensus on interpretability in machine learning. Ultimately, the Adversarial Observation framework contributes to the responsible development and deployment of AI technologies, fostering public trust and promoting the adoption of AI systems in critical domains.
+
+
+
+
+
+
+
+
+
+
+
+ Research software plays a crucial role in advancing research across many domains. However, the complexity of research software often makes it challenging for developers to conduct comprehensive testing, which leads to reduced confidence in the accuracy of the results produced. To address this concern, developers have employed peer code review, a well-established software engineering practice,to improve the reliability of software. However, peer code review is less prevalent in research software than in open-source or traditional software domains. This presentation addresses this topic by describing a previous investigation of peer code review in research software. Then it concludes with a description of our current work and ways for interested people to get involved.
+ In our previous study, we interviewed and surveyed 84 developers of research software.The results show research software teams do perform code reviews, albeit without a formalized process, proper organization, or adequate human resources dedicated to conducting reviews effectively. In the talk, we will describe the results in more detail. The application of peer code review holds promise for improving the quality of research software, thereby increasing the reliability of research outcomes. Additionally, adopting peer code review practices enables research software developers to produce code that is more readable, understandable, and maintainable.
+ This talk will then briefly outline our current work to engage interested participants. Our current work focuses on peer code review processes as performed specifically by Research Software Engineers (RSEs). The research questions we aim to address in this ongoing study are: RQ1: What processes do RSEs follow when conducting peer code review?; RQ2: What challenges do RSEs encounter during peer code review?; and RQ3: What improvements are required to enhance the peer code review process for RSEs?
+ To answer these questions, we plan to conduct the following phases of the project:Phase 1: Surveying RSEs to Gain Insights into Peer Code Review Practices; Phase 2: Conducting Interviews and Focus Groups with RSEs to Explore Peer Code Review Experiences; Phase 3: Observational Study of RSE Peer Code Review
+ There are numerous places for members of the US-RSE community to get involved in our research. We will highlight these opportunities in the talk.
+
+
+
+
+
+
+
+
+
+
+
+
+ Princeton University’s central Research Software Engineering (RSE) Group is a central team of research software engineers who work directly with campus research groups to create the most efficient, scalable, and sustainable research codes possible in order to enable new scientific and scholarly advances. As the Group has grown, it has evolved in numerous ways, with new partners across academic units, new partnership models and operational procedures, and a reshuffled internal organization. In the summer of 2023, the RSE Group further evolved by incorporating, for the first time, two formal programs for RSE interns and fellows.
+ We present an experience report for the inaugural RSE summer internship and fellowship programs at Princeton University. These two programs, separate but concurrently held during the summer of 2023, represented our first formal attempt to introduce currently enrolled students to the RSE discipline in a structured setting with assigned mentors and well-defined projects. The projects varied widely in nature, spanning academic units in mathematics, social sciences, machine learning, molecular biology, and high energy physics. The interns and fellows were exposed to a diverse range of RSE programming languages, software packages, and software engineering best practices.
+ The two programs, with eight total student participants, further spanned in-person and remote work, undergraduate and graduate students, and multiple continents. We report on the experience of the interns, fellows, and mentors, including lessons learned and recommendations for improving future programs.
+
+
+
+
+
+
+
+
+
+
+
+ In codes used to simulate multi-physics hydrodynamics, it is common for variables to reside on different parts of a mesh, or on different, but related, meshes. For example, in some codes all variables may reside on cell centers, while in others, scalars may reside on cell centers, vectors on cell faces and tensors on cell corners, etc. Further, different methods may be used for the calculation of derivatives or divergences of different variables, or for the interpolation or mapping of variables from one mesh to another. This poses a challenge for libraries of 3D physics models, where the physical processes have dependencies on space, and therefore, mesh dependency. For such libraries to be able to support a general set of multi-physics hydrodynamics host codes, they must be able to represent the physics in a way that is independent of mesh-related details. To solve this problem, we present a Multi-Mesh Operations (MMOPS) library for the mesh-agnostic representation of 3D physics.
+ MMOPS is a light-weight C++ abstraction providing an interface for the development of general purpose calculations between variables of different user-defined types, while deferring the specification of the details of these types to be provided by the host code. As an example, consider three variables, a, b, c representing a vector and two scalar quantities residing on the cell corners, cell centers and cell corners of a mesh, respectively. MMOPS provides a `class mapped_variable` to represent these variables, for which the host code provides an arbitrary compile-time tag indicating where the variable data resides on the mesh, and a mapping function method used to indicate how to map the variable from one part of the mesh to another, using tag dispatching under the hood. This way, we can perform operations using `a`, `b`, `c`, namely `mapped_variable` instantiations representing a, b, c, such as `c(i) = a(c.tag(), i, dir) + b(c.tag(), i)` where, `i` is an index representing the ith cell on `c`’s mesh, and `dir` is an index representing the desired directional component of vector `a`. In general, if either `a` or `b` have a different mesh representation than `c`, then they get mapped to `c`’s mesh using the mapping functions provided by the host code when constructing `a` and `b`, which can be different. In the above example, since `a` is on the same mesh as `c`, it doesn’t get mapped but instead is directly accessed, and since `b` lives on a different mesh than `c`, it gets mapped to `c`’s mesh, i.e. to cell corners.
+ We demonstrate that MMOPS provides a zero to nearly zero-cost abstraction of the de- scribed functionality, in the sense that it incurs in little to no performance penalty (depending on compiler) compared to a manual benchmark implementation of the same functionality. A description of the library, usage examples, and benchmarking tests will also be presented.
+
+
+
+
+
+
+
+
+
+
+
+ Background: The NSAPH (National Studies on Air Pollution and Health) lab focuses on analyzing the impact of air pollution on public health. Typically, studies in Environmental Health require merging diverse datasets coming from multiple domains such as health, exposures, and population demographics. Exposure data is obtained from various sources and presented in different formats, posing challenges in data management and integration. The manual process of extracting and aggregating data is repetitive, inefficient, and prone to errors. Harmonizing formats and standards is difficult due to the mix of public and proprietary data sources. Reproducibility is crucial in scientific work, but the heavy computations involved in processing exposure data are sensitive to the computational environment, making different versions of components potentially affect the results. Additionally, while some exposure data are public datasets that are shareable for reproducible research, there are some exceptions of proprietary data, such as ESRI shapefile, that cannot be publicly shared, further complicating reproducibility efforts in NSAPH.
+ Aim: Our main objective is to leverage our expertise in bioinformatics to create a robust data platform tailored for aggregating exposure and spatial data. We are building a data platform that is focused on exposure data, such as pollution, temperature, humidity, and smoke. This platform incorporates a deployment system, package management capabilities, and a configuration toolkit to ensure compatibility and generalizability across various spatial aggregations, such as zip code, ZCTA (zip code tabulation areas), and counties. Through the development of this data platform, our aim is to streamline exposure data processing, enable efficient transformation of exposure data, and facilitate reproducibility in working with exposure data.
+ Methods: The methodology employed in this study utilizes the CWL (Common Workflow Language) programming language for the data pipeline. Docker is utilized for deployment purposes, while PostgreSQL serves as the data warehouse. Apache Superset is employed for data exploration and visualization. The study incorporates various types of data transformations, including isomorphic transformations for reversible conversions and union transformations for combining data from different sources. Additionally, rollups are performed to extract specific data elements, and approximations are used for imprecise conversions. In the case of tabular data, simple aggregations are conducted using SQL functions. For spatial operations, the methodology includes adjustable rasterization methods such as downscaling and resampling (nearest, majority). Furthermore, a data loader is developed to handle diverse spatial file types, including NetCDF, Parquet, CSV, and FST.
+ Results: We developed DORIEH (data for observational research in environmental health), a comprehensive system designed for the transformation and storage of exposure data. Within this system, we implemented various utilities, notably the gridMET (Grid-based Meteorological Ensemble Tool) data pipeline, which encompasses multiple crucial steps. These steps include retrieving shapefiles from an API, importing exposure spatial data, aggregating exposure data from grids into selected spatial aggregations (e.g ZCTA, county, zip codes) utilizing adaptable rasterization methods, and ultimately storing the transformed data into our dedicated database. Furthermore, we constructed a versatile data loader capable of handling diverse file types, while also incorporating parallelization techniques to enhance processing efficiency. Additionally, DORIEH provides basic visualization capabilities that serve as quality checks for the data.
+ Conclusion: Our study addresses the challenges faced by the NSAPH group in analyzing the impact of environmental exposures on health. By developing the DORIEH data platform and implementing various utilities, including the flexible and configurable spatial aggregation data pipeline and a flexible data loader, we have made significant progress in overcoming the limitations of manual data extraction and aggregation. The platform enables streamlined exposure data processing, efficient transformation, and storage, while ensuring compatibility and reproducibility in working with exposure and spatial data.
+
+
+
+
+
+
+
+
+
+
+
+ The High Throughput Discovery Lab at the Rosalind Franklin Institute aims to iteratively expand the reaction toolkit used in drug discovery to enable new regions of biologically relevant chemical space to be explored. The current reaction toolkit, that underpins traditional drug discovery workflows, has to date been dominated by a small number (<10) of reaction classes that have remained largely unchanged for 30 years. It has been argued that this has contributed to attrition and stagnation in drug discovery. We are working to create a semi-automated approach to explore large regions of chemical space to identify novel bioactive molecules. The approach involves creating arrays of hundreds of reactions, in which different pairs of substrates are combined. The design of subsequent reaction arrays is informed by the biological activity of the products that are obtained. However, the multi-step laboratory process to create, purify and test the reaction products introduces high requirements for data linkage, making data management incredibly important.
+ This talk focuses on how we built the data infrastructure using a mix of open-source and licensed technology. We will discuss how the Franklin aims to increase automation in data processing and how the technology we have implemented will make this possible.
+
+
+
+
+
+
+
+
+
+
+
+ The National Energy Research Scientific Computing Center, NERSC, is a U.S. Department of Energy high-performance computing facility, used by over 9000 scientists and researchers for novel scientific research. NERSC staff support and engage with users to improve the use of this resource. We have now begun working towards creating a community of practice consisting of NERSC users, staff, and affiliates to pool resources, knowledge and build networks across scientific fields. Our highly interdisciplinary users have expertise in research computing in their respective science fields, and as such, access to a collective knowledge in the form of a community allows resource sharing, peer-mentorship, peer teaching and collaboration opportunities. Thus, we believe the benefits of such a community could lead to improved scientific output due to better peer-support for technical and research related issues.
+ In order to prepare a community creation strategy, gain insight into user needs, and understand how a community of practice could support those needs, NERSC staff conducted focus groups with users in the Spring of 2023. The findings from these focus groups provided significant insight into the challenges users face in interacting with one another and even with NERSC staff, and will inform our next steps and ongoing strategy. This presentation will outline the current state of the NERSC user community, the methodology for running user focus groups, qualitative and quantitative findings, and plans for building the NERSC user community of practice based on these findings.
+
+
+
+
+
+
+
+
+
+
+
+ The emergence of the Research Software Engineer (RSE) as a role correlates with the growing complexity of scientific challenges and the diversity of software team skills. At the same time, it is still a challenge for research funding agencies and institutions to directly fund activities that are explicitly engineering focused.
+ In this presentation, we describe research software science (RSS), an idea related to RSE, that is particularly suited to research software teams. RSS focuses on using the scientific method to understand and improve how software is developed and used in research. RSS promotes the use of scientific methodologies to explore and establish broadly applicable knowledge. Specifically, RSS incorporates scientific approaches from cognitive and social sciences in addition to existing scientific knowledge already present in software teams. By leverage cognitive and social science methodologies and tools, research software teams can gain better insight into how software is developed and used for research and share that insight by virtue of the scientific approaches used to gain that insight.
+ Using RSS, we can pursue sustainable, repeatable, and reproducible software improvements that positively impact research software toward improved scientific discovery. Also, by introducing an explicit scientific focus to the enterprise of software development and use, we can more easily justify direct support and funding from agencies and institutions whose charter is to sponsor scientific research. Direct funding of RSS activities is within these charters and RSE activities are needed, more easily justified, and improved by RSS investments.
+
+
+
+
+
+
+
+
+
+
+
+ Assembly and analysis of metagenomics datasets along with protein sequence analysis are among the most computationally demanding tasks in bioinformatics. ExaBiome project is developing GPU accelerated solutions for exascale era machines to tackle these problems at unprecedented scale. The algorithms involved in these software pipelines do not fit the typical portfolio of algorithms that are amenable to GPU porting, instead, these are irregular and sparse in nature which makes GPU porting a significant challenge. Moreover it is a challenge to integrate complex GPU kernels within a CPU optimized software infrastructure that depends largely on dynamic data structures. This talk will give an overview of development of sequence alignment and local assembly GPU kernels that have been successfully ported and optimized for GPU based systems and the integration of these kernels within Exabiome software stack for demonstrating unprecedented capability of solving scientific problems in bioinformatics.
+
+
+
+
+
+
+
+
+
+
+
+ LINCC (LSST Interdisciplinary Network for Collaboration and Computing) is an ambitious effort to support the astronomy community by developing cloud-based analysis frameworks for science expected from the new Large Survey of Space and Time. The goal is to enable the delivery of critical computational infrastructure and code for petabyte-scale analyses, mechanisms to search for one-in-a-million events in continuous streams of data, and community organizations and communication channels that enable researchers to develop and share their algorithms and software.
+ We are particularly interested in supporting early science and commissioning efforts. The team develops software packages in different areas of interest to LSST; such as RAIL, a package for estimating redshift from photometry, and KMBOD, a package for detecting slowly moving asteroids. I will concentrate on our effort with LSDB and TAPE packages that focus on cross-matching and time-domain analysis. We are currently developing capabilities to: i) efficiently retrieve and cross-match large catalogs; ii) facilitate easy color-correction and recalibration on time-domain data from different surveys to enable analysis on long lightcurves; iii) provide custom functions that can be efficiently executed on large amounts of data (such as structure function and periodogram calculations); iv) enable large-scale calculation with custom, user-provided functions, e.g., continuous auto-regressive moving average models implemented in JAX.
+ LINCC is already supporting the community through an incubator program and a series of technical talks. I will present these efforts and show our current status, results, and code; and discuss the lesson learned from collaboration between scientists and software engineers!
+
+
+
+
+
+
+
+
+
+
+
+ This presentation describes training activities carried out under the auspices of the U.S. Department of Energy’s; in particular, those facilitated by the Exascale Computing Project (ECP). While some of these activities are specific to members of ECP, others are beneficial to the HPC community at large. We report on training opportunities and resources that the broad Computer Science and Engineering (CS&E) community can have access to, the relevance of coordinated training efforts, and how we envision such efforts beyond ECP’s scope and duration.
+
+
+
+
+
+
+
+
+
+
+
+ Scientific software plays a crucial and ever-growing role in various fields by facilitating complex modeling, simulation, exploration, and data analysis. However, ensuring the correctness and reliability of these software systems presents significant challenges due to their computational complexity, their explorative nature, and the lack of explicit specifications or even documentations. Traditional testing methods fall short in validating scientific software comprehensively – in particular for explorative software and simulation tools suffer from the Oracle Problem. In fact, Segura et al. show that scientific and explorative software systems are inherently difficult to test. In this context, metamorphic testing is a promising approach that addresses these challenges effectively. By exploiting the inherent properties within scientific problems, metamorphic testing provides a systematic means to validate the accuracy and robustness of scientific software while avoiding the challenges posed by the Oracle Problem. The proposed talk will highlight the importance of metamorphic testing in scientific software, emphasizing its ability to uncover subtle bugs, enhance result consistency, and show approaches for a more rigorous and systematic software development process in the scientific domain.
+
+
+
+
+
+
+
+
+
+
+
+ Introduction: We are pleased to submit a proposal to the US-RSE to include Anotemos, a media annotation software developed by the GRIP (Grasping the Rationality of Instructional Practice), an education research lab at the University of Michigan. Anotemos is designed to enhance research analysis by providing an efficient media annotation solution. This proposal highlights the key features, and benefits of Anotemos, showcasing its relevance to the research community.
+ Background and Objectives: Anotemos addresses the challenges faced by researchers in analyzing multimedia data, enabling them to extract valuable insights efficiently. Anotemos aims to streamline and automate the annotation workflow, offering researchers a user-friendly interface and advanced features for seamless annotation.
+ Key Features and Benefits: Using Anotemos, researchers can create Commentaries that are centered around a Multimedia Item. Anotemos offers a range of features that set it apart: (i) Comprehensive Annotation: Researchers can annotate various media types, including images, videos, and audio, with the support of diverse customizable annotation types such as text, icons, drawings, bounding boxes, and audio recordings both on-screen and off-screen; (ii) Real-time Collaboration: Anotemos enables multiple researchers to collaborate in real-time simultaneously, fostering knowledge exchange, reducing redundancy, and improving productivity; (iii) Share & Publish: Anotemos offers both private and public sharing, enabling the secure sharing of Commentaries with select individuals or the wider research community; (iv) Customizable Workflows: Anotemos supports the creation of customized workflows by making it easier to create identical Commentaries, and manage different sets of collaborators using Commentary sections, enabling researchers to tailor the platform to their projects; (v) Analysis & Reports: Using Anotemos, users can perform an in-depth analysis of annotated data and generate comprehensive reports, providing valuable insights and facilitating data-driven decision-making in research projects; (vi) Integrations: Anotemos offers seamless integration with Learning Tools Interoperability (LTI), allowing users to easily embed and access Anotemos Commentaries within LTI-compliant learning management systems. Furthermore, Anotemos supports LaTeX code, empowering users to annotate and display mathematical equations and formulas with precision. Additionally, Anotemos can be embedded into Qualtrics Surveys enabling the researchers to collect and analyze the survey data along with Anotemos annotations.
+ Conclusion: We believe that Anotemos has the potential to significantly enhance research analysis by providing an efficient, user-friendly, and customizable media annotation solution. It is developed using the Angular-Meteor framework, leveraging its robustness, scalability, and real-time capabilities. The software is currently in beta testing, with positive feedback from researchers in diverse fields. Its advanced features make it an ideal tool for researchers across various domains. We request the consideration of Anotemos for presentation at the US-RSE Conference, where researcher software engineers can gain insights into its features, benefits, and potential impact on research projects.
+
+
+
+
+
+
+
+
+
+
+
+ Managing massive volumes of data and effectively making it accessible to researchers poses significant challenges and is a barrier to scientific discovery. In many cases, critical data is locked up in unwieldy file formats or one-off databases and is too large to effectively process on a single machine. This talk explores the role of Kubernetes, an open-source container orchestration platform, in addressing research data management challenges. I will discuss how we are using a set of publicly available open-source and home-grown tools in the National Renewable Energy Lab (NREL) Data, Analysis, and Visualization (DAV) group to help researchers overcome data-related bottlenecks.
+ The talk will begin by providing an overview of the data challenges faced in research data management, including data storage, processing, and analysis. I will highlight Kubernetes' ability to handle large-scale data by leveraging containerization and distributed computing, including distributed storage. Kubernetes allows researchers to encapsulate data processing infrastructure and workflows into portable containers, enabling reproducibility and ease of deployment. Kubernetes can then schedule and manage the resource allocation of these containers to enable efficient utilization of limited computing resources, leading to more efficient data processing and analysis.
+ I will discuss some limitations of traditional, siloed approaches to dealing with data and emphasize the need for solutions which foster collaboration. I will highlight how we are using Kubernetes at NREL to facilitate data sharing and cooperation among research teams. Kubernetes' flexible architecture enables the deployment of shared computing environments, such as Apache Superset, where researchers can seamlessly access and analyze shared datasets. Providing the ability to have one research team easily consume data generated by another, utilizing Kubernetes' as a central data platform, is one of the major wins we’ve encountered by adopting the platform.
+ Finally, I will showcase real-world use cases from NREL where we have used Kubernetes to solve some persistent data challenges involving large volumes of sensor and monitoring data. I will discuss the challenges we encountered when creating our cluster and making it available as a production-ready resource. I will also discuss the specific suite of tools, including Postgres and Apache Druid for columnar and timeseries data, and Redpanda Kafka for streaming data we have deployed in our infrastructure, and the process that went into the selection of these tools.
+ Attendees of this talk will gain insights into how Kubernetes can address data challenges in research data management. This talk aims to provide researchers with a framework and a set of building blocks which have worked well for us, in order for them to unlock the full potential of their data in the era of software-enabled discovery.
+
+
+
+
+
+
+
+
+
+
+
+ The Globus platform enables research applications developed by research teams to leverage data and compute services across many tiers of service—from personal computers and local storage to national supercomputing centers—with minimal deployment and maintenance burden. Globus is operated by the University of Chicago and is used by nearly all R1 universities, national labs, and supercomputing centers in the United States, as well as many smaller institutions.
+ In this talk, we’ll introduce the Globus Platform-as-a-Service, including how to register an application and how to access Globus APIs using our Python SDK. We will present examples of how the various Globus services, interfaces, and tools may be used to develop research applications. We will demonstrate authentication and access control with Globus’s Auth and Groups APIs; making data findable and accessible using Globus guest collections, data transfer API, and indexed Search API; and automating research with Globus Flows and Compute APIs.
+
+
+
+
+
+
+
+
+
+
+
+ The expected long-term outcome of our research is to determine the ways in which a focus on scientific model code quality can improve both scientific reliability and model performance. In this work, we focus on climate models which are complex software implementations of the scientific and mathematical abstractions of systems that govern the climate.
+ Climate models integrate the physical understanding of climate and produce simulations of climate patterns. The model code is often hundreds of thousands of lines of highly sophisticated software, written in high-performance languages such as Fortran. These models are developed with teams of experts, including climate scientists and high-performance computing developers. The sheer complexity of the software behind the climate models (which have evolved over many years) makes them vulnerable to performance, usability, and maintainability bugs that hinder performance and weaken scientific confidence. Understanding how the social structures behind the software and model function have been examined but the complex interactions of domain experts and software experts are poorly understood.
+ The expected short-term outcomes of our research are a) develop a set of software quality indicators for the climate models, providing model maintainers and users with specific areas to improve the model code; b) develop new techniques for analyzing large bodies of unstructured text to explain how users perceive a research software project’s capabilities and failings aligned with international efforts to improve the quality of scientific software.
+ We follow two main approaches. (1) \textit{Analytics}: analysis of climate models and their artifacts. These artifacts include the software code itself, including the way the model is deployed and run with end users; the bug reports and other feedback on the software quality; and the simulation testing used to validate the model outputs. Our analysis will be incorporated into a Fortran analysis tool to identify Fortran quality issues automatically. This analysis is incomplete however without a clear understanding of the social context in which it was produced. (2) \textit{Social Context}: we examine the socio-technical artifacts created around climate models. These include a) outputs from workshops, interviews, and surveys with stakeholders, including climate scientists and model software developers; b) explicit issue and bug reports recorded on the model, such as the fact the model is failing/crashing at a particular place; c) implicitly discussed software problems and feature requests from related discussion forums. We hypothesize that both approaches will help to identify technical debts in the climate models.
+ Manually eliciting software requirements from these diverse sources of feedback can be time-consuming and expensive. Hence, we will use state-of-the-art Natural Language Processing (NLP) approaches that require less human effort. The web artifacts, interviews, and scientific texts of climate models provide reflections on the Climate Community of Practice (CoP). We will use an unsupervised topic model, Latent Dirichlet Allocation (LDA) to study how different narratives (such as specific modules of climate models, research interests, and needs of the community members) of a climate CoP have evolved over a period.
+ LDA assumes that documents are mixtures of topics, and a topic is a probability distribution over words. The gist of a topic can be inferred from its most probable words. We focus on the discussion forum of the Community Earth System Model (CESM)\footnote{\url{https://www.cesm.ucar.edu/}}. CESM is a collaboratively developed fully coupled global climate model focused on computer simulations of Earth's climate states.
+ We infer 15 topics on around 7000 posts from the year 2003 to 2023 on the discussion forum using MALLET topic modeling library\footnote{\url{https://mimno.github.io/Mallet/}}. We ask a domain expert to assign a label to a topic and use the labels to analyze the posts. We plot the proportions of words in a document assigned to a topic over a period. We observe certain trends over around 20 years. The topic of \textit{version management of CESM models} gained attention from 2018 on-wards till 2021. There is a steady increase in discussion of the topic of \textit{Coupled Model Intercomparison Project (CMIP) and Shared Socio-economic Pathways (SSPs)}\footnote{\url{https://en.wikipedia.org/wiki/Shared_Socioeconomic_Pathways}}. Discussions about issues related to \textit{installing and setting up CESM models} and \textit{parallel computing} have declined since 2016 and 2020 respectively. Topics of \textit{source code related changes}, \textit{ocean modeling}, and \textit{errors encountered while running CESM models} are discussed throughout the period. We also observe that questions related to \textit{parallel computing} received fewer responses, while questions related to \textit{compiling CESM models} received higher responses. These trends and insights can be used by the software engineering group of CESM to prioritize its actions to facilitate the use of the models.
+ We believe that this qualitative study scaffolded using topic models will complement climate science research by facilitating the generation of software requirements, onboarding of new users of the models, responding to new problems using solutions to similar problems, and preventing reinvention.
+
+
+
+
+
+
+
+
+
+
+
+ Academic research collaborations involving members from multiple independent, often international institutions are inherently decentralized, and they encounter the same general challenges in sharing data and collaborating online as does the internet at large when there are no viable or desirable centralized solutions. At NCSA we have developed a free and open source full-stack cyberinfrastructure (CI) for research collaborations based on OpenStack and Kubernetes that is reproducible, flexible, portable, and sustainable. We are embracing the lessons and technology of the (re)decentralized web to curate a suite of open source tools and web services that prioritize data ownership to give researchers as much control as possible over their data, communications, and access controls. I will present the architecture of our framework as well as example use cases from existing projects ranging from astronomy to nuclear physics, showcasing the flexible deployment system and some collaborative tools and services for identity and access management, messaging, data sharing, code development, documentation, high-performance computing and more. By the end of the talk I hope you will have some appreciation for the value decentralized tech brings to the research enterprise and the potential for innovation that lies in the creative integration of existing federated and peer-to-peer applications and protocols.
+
+
+
+
+
+
+
+
+
+
+
+ Airtable is an increasingly popular format for entering and storing research data, especially in the digital humanities. It combines the simplicity of spreadsheet formats like CSV with a relational database’s ability to model relationships; enterers or viewers of the data do not need to have programming knowledge. The Center for Digital Research in the Humanities at the University of Nebraska uses Airtable data for two projects on which I work as a developer. African Poetics has data focusing on African poets and newspaper coverage of them, and Petitioning for Freedom has data on habeas corpus petitions and involved parties. At the CDRH, our software can take data in many formats, including CSV, and ingest it for an API based on Elasticsearch. This data is then available for search and discovery through web applications built on Ruby on Rails. The first step in ingesting the Airtable data into our system is to download it. I will cover the command line tools that can do this, the formats that can be downloaded (JSON turned out to be the most convenient), and the requirements for authentication. Python (aided by Pandas) can transform this data into the CSV format that our back end software. I will discuss how to rename and delete columns, change data back into JSON (which is sometimes more parsable by our scripts), and clean troublesome values like blanks and NaNs. One advancement of Airtable over CSV is join tables that have similar functionality to SQL databases. Incorporating them into other projects has particular challenges. When downloaded directly from Airtable, the join data is in a format that cannot be interpreted by humans or programs other than Airtable. But it can be converted (with the help of some processing within airtable) into formats that can be parsed by external scripts so that it can be human-readable. With these transformations, our software can use the table to populate API fields and parse it into arrays and hashes to replicate relationships within the data. Finally I will discuss the advantages and disadvantages of Airtable for managing data, from the perspective of a developer who uses the data on the front and back end of web applications.
+
+
+
+
diff --git a/pages/program/abstracts/tutorials.tbd b/pages/program/abstracts/tutorials.tbd
new file mode 100644
index 0000000..5441237
--- /dev/null
+++ b/pages/program/abstracts/tutorials.tbd
@@ -0,0 +1,214 @@
+---
+layout: page
+title: Tutorials
+description:
+menubar: program
+permalink: program/tutorials/
+menubar_toc: true
+set_last_modified: true
+---
+
+Tutorials will be online only and conducted virtually in the weeks prior to the conference, Monday, October 2nd to Friday, October 13th.
+
+## GitHub Actions for Scientific Data Workflows
+
+_Valentina Staneva, eScience Institute, University of Washington_
+
+[Register Now: October 2, 12-1:30 PM CT](https://mit.zoom.us/meeting/register/tJwrceGprTovG9JwpE7LrHOcPy4UvTvwpD0B)
+
+In this tutorial we will introduce GitHub Actions as a tool for lightweight
+automation of scientific data workflows. GitHub Actions have become a key
+tool of the software development lifecycle, however, many scientific
+programmers who are not involved in software deployment may not be familiar
+with their functionalities and/or do not know how they can be applied within
+their data pipeline. Through a sequence of examples, we will demonstrate some
+of GitHub Actions' applications to automating data processing tasks, such as
+scheduled deployment of algorithms to streaming data, updating visualizations
+based on new data, model versioning and performance benchmarking. For the
+demonstration we will access a public hydrophone stream and compute and
+visualize statistics of sound patterns. The goal is that participants will
+leave with their own ideas on how to integrate GitHub Actions in their own work.
+
+**Prerequisites**: GitHub account, basic familiarity with git, GitHub, and
+version control, programming in a scripting language such as Python/R
+
+**Audience**: scientific programmers interested in automating components of
+their workflows through existing tools for software continuous
+integration/deployment.
+
+
+------
+
+## Introduction to Spatial Data Processing
+
+_Nick Santos, University of California, Merced_
+
+[Register Now: October 5, 12-3:30 PM CT](https://mit.zoom.us/meeting/register/tJMrceusrj8rGdVlgnmbUd2GSJ63R_rg81Ys)
+
+This tutorial provides an introduction to processing spatial data.
+The goal is that participants leave the workshop with an
+understanding of and ability to use spatial data types, coordinate systems,
+and basic data processing with spatial joins and zonal statistics. These
+processing methods allow for a wide variety of data manipulation and
+aggregation. Participants will also learn to visualize data and results
+in basic maps. Though introductory, the tutorial is designed to teach a
+skill that is important for many areas of research, but which may be new to
+some RSEs.
+
+The tutorial will use Google Colab or Jupyter notebooks and be primarily
+hands-on, with short lectures only to describe core concepts with graphics.
+The workshop will use Python with the geopandas and rasterstats libraries but
+will emphasize concepts and topics that can be applied in any language or
+computing environment that supports spatial data. Participants will only need
+access to a web browser.
+
+**Prerequisites**: Required background knowledge includes:
+
+1. Being comfortable with tabular data and the concepts of table joins (e.g. with SQL, data frames, etc)
+2. The ability to read Python code. Participants will modify and run code snippets, but won’t need to write Python code without using an example as a base.
+
+**Audience**: research software engineers who are already familiar with tabular and/or image data but do not yet
+have experience with the characteristics and requirements of spatial information.
+
+------
+
+## Publish your software in conda-forge
+
+_Dave Clements and Valerio Maggio, Anaconda_
+
+[Register Now: October 10, 12-3:30 PM CT](https://mit.zoom.us/meeting/register/tJwlf-2oqjspGNLhUV4b4kpZmdgTX_F1M4mt)
+
+[Conda](https://github.com/conda/conda/blob/main/README.md) is a **widely used**
+(30M+ users) **multi-platform** (Linux, macOS, Windows, ...) and **language agnostic**
+packaging and runtime environment management ecosystem. This workshop will be a
+worked, hands-on tutorial demonstrating how to publish your open source software
+packages in [conda-forge](https://conda-forge.org/).
+
+**conda-forge hosts over 20,000 packages and serves over 3 billion package downloads
+per year.** It is the largest community managed conda channel in existence and it is an
+excellent platform for making your software easy for others to install and integrate with
+other open source tools.
+
+In this tutorial we will:
+
+- 0:20 - Introduce software packaging concepts and challenges
+- 0:20 - Introduce the conda ecosystem
+- 1:30 - Walk through how to prepare a sample software package for publishing in conda-forge from scratch
+ - 0:10 - introduce example package and it's dependencies
+ - 0:15 - adding tests
+ - 0:50 - defining your package recipe in a meta.yaml file.
+ - 0:15 - Building your package with conda-build
+- 0:20 - How to submit your package to conda-forge and shepherd it through to publishing
+0 0:30 - How to port packages that are already in PyPA/pip (Python) or CRAN (R) to conda using Grayskull
+
+At the end of the tutorial participants will have a basic understanding of software packaging,
+how conda implements it, and how to prepare and publish your packages in the conda
+ecosystem.
+
+**Prerequisites**: Participants will need either a Linux or macOS laptop, or a Windows laptop with WSL. Laptops
+will need a web browser, shell access, a text editor program, and git and/or a GitHub client
+already installed. Participants should have experience with the command line, a text editor, and
+GitHub. No prior package creation knowledge is assumed.
+
+**Audience**: software engineers with some experience incorporating
+software dependencies in their work.
+
+
+_Dave Clements is an open source community manager at Anaconda, and has been involved in
+training and teaching throughout his career. Most recently, he led training efforts at the Galaxy
+Project for over ten years. Before that he had a similar role at the GMOD Project, was adjunct
+faculty at the University of Oregon, taught courses while in graduate school, and developed and
+presented training to programmers and end users at a fortune 500 company._
+
+------
+
+## Software Quality Practices for Reproducibility
+
+_Reed Milewicz and Miranda Mundt, Sandia National Laboratories_
+
+[Register Now: October 12, 12-3:30 PM CT](https://mit.zoom.us/meeting/register/tJYvceqqrjgvHtDtkfO0Lv3_kentmeEK6Rxi)
+
+In this tutorial, participants will learn about evidence-based software
+engineering strategies for addressing reproducibility across the software
+lifecycle. The tutorial will center around three interrelated topics:
+
+1. Setting software quality priorities around reproducibility
+2. Tailored software development practices that facilitate reproducibility
+3. Software process improvement techniques for incrementally introducing those practices into teams' workflows
+
+Participants will receive instruction on managing software quality priorities
+with regards to reproducibility, hear insights from real-world teams on
+practices that facilitate reproducibility, and finally will learn how to take
+concrete steps toward improving those practices within their respective projects
+based on the Productivity and Sustainability Improvement Planning (PSIP)
+toolkit which the presenters previously helped develop and pioneer for use with
+teams in the Exascale Computing Project.
+
+The course content represents a living curriculum based on the organizers'
+ongoing research with real-world teams into software quality practices for
+reproducibility. Organizers will solicit feedback on how to improve upon or
+add to the tutorial. The outcome of this session will be concrete steps that
+teams can take to improve their development practices with respect to
+reproducibility, and participants will learn some of the skills needed to
+approach their teams and precipitate process improvement.
+
+**Audience**: research software engineers and other professionals responsible
+for supporting, developing, and maintaining the development and use of
+scientific and engineering software systems and workflows. This includes
+students and researchers as well as the core production practitioners.
+
+The course is relevant both for people looking to learn more about best
+practices in engineering reproducible software and for those hoping to promote
+those best practices within their respective institutions.
+
+------
+
+## Using Globus Platform Services in Research Software Applications
+
+_Lee Liming, Steve Turoscy, and Vas Vasiliadis, University of Chicago_
+
+[Register Now: October 4, 12-1:30 PM CT](https://mit.zoom.us/meeting/register/tJMpdeivqDwvH92RbUu2BwekBp3dTMqf48Pp)
+
+Research applications increasingly need to leverage, and often orchestrate,
+diverse systems: campus data storage and computing systems, national data and
+computing centers, and data-generating instruments such as gene sequencers,
+Cryo-EM microscopes, CT scanners, and sensor networks. Unless these interactions
+are automated, this is time-consuming and wasteful of scarce human resources on
+research teams.
+
+The Globus platform enables research applications developed by research teams
+to leverage data and compute services across many tiers of service—from
+personal computers and local storage to national supercomputing centers—with
+minimal deployment and maintenance burden. Globus is operated by the
+University of Chicago and is used by nearly all R1 universities, national labs,
+and supercomputing centers in the United States, as well as many smaller institutions.
+
+In this tutorial, we’ll begin by introducing the Globus platform-as-a-service,
+including how to register an application and how to access Globus APIs using
+our Python SDK. We will present examples of how the various Globus services,
+interfaces, and tools may be used to develop research applications. We will walk
+participants through authentication and access control with Globus’s Auth and
+Groups APIs; making data findable and accessible using Globus guest collections,
+data transfer API, and indexed Search API; and automating research with
+Globus’s Flows and Compute APIs. Participants will use Jupyter notebooks to
+experiment with these capabilities, and they will also become familiar with
+the Globus web application.
+
+This tutorial is hands-on, utilizing Jupyter notebooks on our cloud-hosted
+JupyterHub system, accessible via web browser.
+
+The presenters lead projects—sponsored by NSF, NIH, and DOE—that are building
+research applications leveraging the Globus platform. Employed by the
+University of Chicago and Argonne National Laboratory, we have decades of
+combined experience with both building research applications and teaching
+collaborators how to build them.
+
+**Prerequisites**: Tutorial participants should have beginner to intermediate
+familiarity with Python.
+
+**Audience**: research software engineers supporting teams whose work needs to be
+scaled up (either to solve larger problems or to achieve a faster rate of
+smaller problems) using university research computing resources, national-scale
+systems (NSF, DOE, NASA), or cloud systems.
+
+------
diff --git a/pages/program/abstracts/workshops.tbd b/pages/program/abstracts/workshops.tbd
new file mode 100644
index 0000000..362b81a
--- /dev/null
+++ b/pages/program/abstracts/workshops.tbd
@@ -0,0 +1,55 @@
+---
+layout: page
+title: Workshops
+description:
+menubar: program
+permalink: program/workshops/
+set_last_modified: true
+---
+
+## Emerging as a Team Leader through Cultural Challenges
+
+_Angela Herring and Elaine Raybourn_
+
+In this interactive workshop we explore how meeting technical objectives depends
+critically on meeting cultural challenges within teams. Many small teams evolve
+naturally on a positive path because teams are often formed by friendly
+collaborators with common interests and goals. But as teams grow, they face
+new challenges, including fragmented time commitments, physically distributed
+developers, and growing numbers of stakeholders. These challenges make it
+significantly harder to maintain a healthy team culture. In addition, it
+becomes important to understand how to identify and responsibly use one’s
+informal influence to navigate organizations and galvanize team members.
+Although agile methodologies and modern software tools can help developers
+manage these challenges, these processes alone are insufficient. Thus, a
+growing number of teams are combining these methodologies with techniques
+that support a collaborative culture. We explore lightweight progress tracking,
+informal "tea-time", hybrid scrums, human-centered design, empathy building,
+listening games, and hands on exercises with Legos. The session is 180 min of
+guided small group exercises and debriefing, followed by 30 min of large group
+discussion and retrospective. We recap lessons learned and explore how culture
+affects team performance and emerging as a team leader. We focus on skill
+building in intercultural and interpersonal communication, and inclusion.
+
+**NOTE**: Attendance is capped at 18 attendees for this workshop.
+
+------
+
+## [Software Engineering for Research Software Engineering (SE4RSE’23)](https://se4science.org/workshops/se4rse23/index.htm)
+
+_Jeffrey Carver, Neil Chue Hong, Miranda Mundt_
+
+This half-day (3.5 hour) workshop focuses on understanding appropriate software
+engineering practices employed by Research Software Engineers to design, develop,
+maintain, evolve, and sustain research software. As a result of the variety and
+complexity of the research domains addressed by this software, it is unclear to
+what extent existing software engineering practices and tools developed for
+industrial software are efficient and effective for its development. Appropriate
+software engineering approaches must account for the salient characteristics
+of the research-oriented development environment. This workshop provides a
+platform for RSEs to share their software engineering experiences (both
+positive and negative) and learn from each other. We will devote a significant
+portion of the workshop to focused interactions to identify common experiences,
+needs, and opportunities for future work.
+
+------
diff --git a/pages/program/program.md b/pages/program/program.md
new file mode 100644
index 0000000..19f3bdd
--- /dev/null
+++ b/pages/program/program.md
@@ -0,0 +1,10 @@
+---
+layout: page
+title: Full Program
+description:
+menubar: program
+permalink: program/
+set_last_modified: true
+---
+
+More information to come...
diff --git a/pages/program/sessions.tbd b/pages/program/sessions.tbd
new file mode 100644
index 0000000..38d90ae
--- /dev/null
+++ b/pages/program/sessions.tbd
@@ -0,0 +1,818 @@
+---
+layout: page
+title: Sessions
+description:
+menubar: program
+permalink: program/sessions/
+menubar_toc: true
+set_last_modified: true
+---
+
+## Session 1: Panel - DevOps & Cyberinfrastructure
+
+
+
+
+
+
+
+
+
+
+
+ This paper introduces CACAO, a research software platform that simplifies the use of cloud computing in scientific research and education. CACAO's cloud automation and continuous analysis features make it easy to deploy research workflows or laboratory experimental sessions in the cloud using templates. The platform has been expanding its support for different cloud service providers and improving scalability, making it more widely applicable for research and education. This paper provides an overview of CACAO's key features and highlights use cases.
+
+
+
+
+
+
+
+
+
+
+
+
+ Science gateways connect researchers to high-performance computing (HPC) resources by providing a graphical interface to manage data and submit jobs. Scientific research is a highly collaborative activity, and gateways can play an important role by providing shared data management tools that reduce the need for advanced expertise in file system administration. We describe a recently implemented architecture for collaborative file management in the Core science gateway architecture developed at the Texas Advanced Computing Center (TACC). Our implementation is built on the Tapis Systems API, which provides endpoints that enable users to securely manage access to their research data.
+
+
+
+
+
+
+
+
+
+
+
+ High-fidelity pattern of life (PoL) models require realistic origin points for predictive trip modeling. This paper develops and demonstrates a reproducible method using open data to match synthetic populations generated from census surveys to plausible residential locations (building footprints) based on housing attributes. This approach presents promise over extant methods based on housing density, particularly in small neighborhood areas with heterogeneous land-use.
+
+
+
+
+
+
+
+
+
+
+
+ This paper examines the potential of containerization technology, specifically the CyVerse Discovery Environment (DE), as a solution to the reproducibility crisis in research. The DE is a platform service designed to facilitate data-driven discoveries through reproducible analyses. It offers features like data management, app integration, and app execution. The DE is built on a suite of microservices deployed within a Kubernetes cluster, handling different aspects of the system, from app management to data storage. Reproducibility is ensured by maintaining records of the software, its dependencies, and instructions for its execution. The DE also provides a RESTful web interface, the Terrain API, for creating custom user interfaces. The application of the DE is illustrated through a use case involving the University of Arizona Superfund Research Center, where the DE's data storage capabilities were utilized to manage data and processes. The paper concludes that the DE facilitates efficient and reproducible research, eliminating the need for substantial hardware investment and complex data management, thereby propelling scientific progress.
+
+
+
+
+
+
+
+
+
+
+
+ Single-page applications (SPAs) have become indispensable in modern frontend development, with widespread adoption in scientific applications. The process of creating a single-page web application development environment which accurately reflects the production environment isn’t always straightforward. Most SPA build systems assume configuration at build time, while DevSecOps engineers prefer runtime config- uration. This paper suggests a framework-agnostic approach to address issues that encompass both development and deployment, but are difficult to tackle without knowledge in both domains.
+
+
+
+
+
+---
+
+## Session 2: Panel - Sponsors
+
+TBD.
+
+---
+
+## Session 3A: Culture & Community 1
+
+
+
+
+
+
+
+
+
+
+
+ Research software once was a heroic and lonely activity, particularly in research computing and in HPC. But today, research software is a social activity, in the senses that most software depends on other software, and that most software that is intended to be used by more than one person is written by more than one person. These social factors have led to generally accepted practices for code development and maintenance and for interactions around code. This paper examines how these practices form, become accepted, and later change in different contexts. In addition, given that research software engineering (RSEng) and research software engineers (RSEs) are becoming accepted parts of the research software endeavor, it looks at the role of RSEs in creating, adapting, and infusing these practices. It does so by examining aspects around practices at three levels: in communities, projects, and groups. Because RSEs are often the point where new practices become accepted and then disseminated, this paper suggests that tool and practice developers should be working to get RSE champions to adopt their tools and practices, and that people who seek to understand research software practices should be studying RSEs. It also suggests areas for further research to test this idea.
+
+
+
+
+
+
+
+
+
+
+
+
+ This presentation describes training activities carried out under the auspices of the U.S. Department of Energy’s; in particular, those facilitated by the Exascale Computing Project (ECP). While some of these activities are specific to members of ECP, others are beneficial to the HPC community at large. We report on training opportunities and resources that the broad Computer Science and Engineering (CS&E) community can have access to, the relevance of coordinated training efforts, and how we envision such efforts beyond ECP’s scope and duration.
+
+
+
+
+
+
+
+
+
+
+
+
+ The growing recognition of research software as a fundamental component of the scientific process has led to the establishment of both Open Source Program Office (OSPO) as a Research Software Engineering (RSE) groups. These groups aim to enhance software engineering practices within research projects, enabling robust and sustainable software solutions. The integration of an OSPO into an RSE group within a university environment provides an intriguing fusion of open source principles and research software engineering expertise. The utilization of students as developers within such a program highlights their unique contributions along with the benefits and challenges involved.
+ Engaging students as developers in an OSPO-RSE group brings numerous advantages. It provides students with valuable experience in real-world software development, enabling them to bridge the gap between academia and industry. By actively participating in open source projects, students can refine their technical skills, learn industry best practices, and gain exposure to collaborative software development workflows. Involving students in open source projects enhances their educational experience. They have the opportunity to work on meaningful research software projects alongside experienced professionals, tackling real-world challenges and making tangible contributions to the scientific community. This exposure to open source principles and practices fosters a culture of innovation, collaboration, and knowledge sharing.
+ This approach also raises questions. How can the objectives and metrics of success for an academic OSPO-RSE group be defined and evaluated? What governance models and collaboration mechanisms are required to balance the academic freedom of researchers with the community-driven nature of open source? How can the potential conflicts between traditional academic practices and the open source ethos be effectively addressed? How can teams balance academic commitments with project timelines? These questions highlight the need for careful consideration and exploration of the organizational, cultural, and ethical aspects associated with an OSPO acting as an RSE group within a university.
+ Leveraging student developers in an OSPO-RSE group also presents challenges that need careful consideration. Students may have limited experience in software engineering practices, requiring mentoring and guidance to ensure the quality and sustainability of the research software they contribute to. Balancing academic commitments with project timelines and expectations can also be a challenge, necessitating effective project management strategies and clear communication channels. Furthermore, the ethical considerations of involving students as developers in open source projects must be addressed, ensuring the protection of intellectual property, respecting licensing requirements, and maintaining data privacy.
+ The involvement of students as developers within an OSPO-RSE group offers valuable benefits. The effective integration of students in this context requires thoughtful planning, mentorship, and attention to ethical considerations. This talk will examine the experience of the Open Source with SLU program to explore the dynamic role of student developers in an OSPO-RSE program and engage in discussions on best practices, challenges, and the future potential of this distinctive approach to research software engineering within academia.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This talk presents research on the prevalence of research software as academic research output within international institutional repositories (IRs). This work expands on previous research, which examined 182 academic IRs from 157 universities in the UK. Very low quantities of records of research software were found in IRs and that the majority of IRs could not contain software as independent records of research output due to the underlying Research Information System (RIS) platform. This has implications for the quantities of software returned as part of the UK's Research Excellence Framework (REF), which seeks to assess the quality of research in UK universities and specifically recognises software as legitimate research output. The levels of research software submitted as research output have declined sharply over the last 12 years and this differs substantially to the records of software contained in other UK research output metadata (e.g. https://gtr.ukri.org). Expanding on this work, source data from OpenDOAR, a directory of global Open Access Repositories, were used to apply similar analyses to international IRs in what we believe is the first such census of its kind. 4,970 repositories from 125 countries were examined for the presence of software, along with repository-based metadata for potentially correlating factors. It appears that much more could be done to provide trivial technical updates to RIS platforms to recognise software as distinct and recordable research output in its own right. We will discuss the implications of these findings with a focus on the apparent lack of recognition of software as discrete output in the research process.
+
+
+
+
+
+
+---
+
+## Session 3B: DevOps & Cyberinfrastructure
+
+
+
+
+
+
+
+
+
+
+ As social media platforms continue to shape modern communication, understanding and harnessing the wealth of information they offer has become increasingly crucial. The nature of the data that these platforms provide makes them the emerging resource for data collection to conduct research ranging from measuring sentiments of the people over a particular trend in society to drafting a major policy by governing agencies. This paper presents PULSE, a powerful tool developed by Decision TheaterTM (DT) at Arizona State University in the United States, designed to extract valuable insights from Twitter. PULSE provides researchers and organizations with access to a curated dataset of public opinions and discussions across diverse research areas. Further, the tool uses various machine learning and data analytical algorithms to derive valuable insights on the subject under research. These insights are efficiently displayed using an interactive dashboard to assist the researchers in extracting useful insights to draw appropriate conclusions. The paper also illustrates the technical functionalities and visualization capabilities of the tool with the case study on Hurricane Laura.
+
+
+
+
+
+
+
+
+
+
+
+ The Globus platform enables research applications developed by research teams to leverage data and compute services across many tiers of service—from personal computers and local storage to national supercomputing centers—with minimal deployment and maintenance burden. Globus is operated by the University of Chicago and is used by nearly all R1 universities, national labs, and supercomputing centers in the United States, as well as many smaller institutions.
+ In this talk, we’ll introduce the Globus Platform-as-a-Service, including how to register an application and how to access Globus APIs using our Python SDK. We will present examples of how the various Globus services, interfaces, and tools may be used to develop research applications. We will demonstrate authentication and access control with Globus’s Auth and Groups APIs; making data findable and accessible using Globus guest collections, data transfer API, and indexed Search API; and automating research with Globus Flows and Compute APIs.
+
+
+
+
+
+
+
+
+
+
+
+ Managing massive volumes of data and effectively making it accessible to researchers poses significant challenges and is a barrier to scientific discovery. In many cases, critical data is locked up in unwieldy file formats or one-off databases and is too large to effectively process on a single machine. This talk explores the role of Kubernetes, an open-source container orchestration platform, in addressing research data management challenges. I will discuss how we are using a set of publicly available open-source and home-grown tools in the National Renewable Energy Lab (NREL) Data, Analysis, and Visualization (DAV) group to help researchers overcome data-related bottlenecks.
+ The talk will begin by providing an overview of the data challenges faced in research data management, including data storage, processing, and analysis. I will highlight Kubernetes' ability to handle large-scale data by leveraging containerization and distributed computing, including distributed storage. Kubernetes allows researchers to encapsulate data processing infrastructure and workflows into portable containers, enabling reproducibility and ease of deployment. Kubernetes can then schedule and manage the resource allocation of these containers to enable efficient utilization of limited computing resources, leading to more efficient data processing and analysis.
+ I will discuss some limitations of traditional, siloed approaches to dealing with data and emphasize the need for solutions which foster collaboration. I will highlight how we are using Kubernetes at NREL to facilitate data sharing and cooperation among research teams. Kubernetes' flexible architecture enables the deployment of shared computing environments, such as Apache Superset, where researchers can seamlessly access and analyze shared datasets. Providing the ability to have one research team easily consume data generated by another, utilizing Kubernetes' as a central data platform, is one of the major wins we’ve encountered by adopting the platform.
+ Finally, I will showcase real-world use cases from NREL where we have used Kubernetes to solve some persistent data challenges involving large volumes of sensor and monitoring data. I will discuss the challenges we encountered when creating our cluster and making it available as a production-ready resource. I will also discuss the specific suite of tools, including Postgres and Apache Druid for columnar and timeseries data, and Redpanda Kafka for streaming data we have deployed in our infrastructure, and the process that went into the selection of these tools.
+ Attendees of this talk will gain insights into how Kubernetes can address data challenges in research data management. This talk aims to provide researchers with a framework and a set of building blocks which have worked well for us, in order for them to unlock the full potential of their data in the era of software-enabled discovery.
+
+
+
+
+
+
+
+
+
+
+
+ Conda is a multi-platform and language agnostic packaging and runtime environment management ecosystem. This talk will briefly introduce the conda ecosystem and the needs it meets, and then focus on work and enhancements from the past 2 years. This includes speed improvements in creating packages and in deploying them; work to establish and document standards that broaden the ecosystem; new support for plugins to make conda widely extensible; and a new governance model that incorporates the broader conda community.
+ The conda ecosystem enables software developers to create and publish easy to install versions of their software. Conda software packages incorporate all software dependencies (written in any language) and enable users to install software and all dependencies with a single command. Conda is used by over 30 million users worldwide. Conda packages are available in both general and domain specific repositories. conda-forge is the largest conda-compatible package repository with over 20,000 available packages for Linux, Windows, and macOS. Bioconda is the largest domain specific repository with over 8,000 packages for the life sciences.
+ Conda also enables users to set up multiple parallel runtime environments, each running different combinations and versions of software, including different language versions. Conda is used to support multiple projects that require conflicting versions of the same software package.
+
+
+
+
+
+---
+
+## Session 4: Panel - Research & Development Tooling 1
+
+
+
+
+
+
+
+
+
+
+ Community resilience assessment is critical for the anticipation, prevention and mitigation of natural and anthropic disaster impacts. In the digital age, this requires reliable and flexible cyberinfrastructure capable of supporting research and decision processes along multiple simultaneous, interconnected concerns. To address this need, the National Center for Supercomputing Applications (NCSA) developed the Interdependent Networked Community Resilience Modeling Environment (IN-CORE) as part of the NIST-funded Center of Excellence for Risk-Based Community Resilience Planning (CoE), headquartered at Colorado State University. The Community App is a web-based application that takes a community through the resilience planning process using IN-CORE analyses for the measurement science to measure community resilience. Complex workflows are managed by DataWolf, a scientific workflow management system, running jobs on the IN-CORE platform utilizing the underlying Kubernetes cluster resources. Using the community app, users can perform realistic and complex scenarios and visualize the results to understand their resilience to different hazards and enhance their decision-making capabilities.
+
+
+
+
+
+
+
+
+
+
+
+ The INTERSECT Software framework project aims to create an open federated library that connects, coordinates, and controls systems in the scientific domain. It features the Adapter, a flexible and extensible interface inspired by the Adapter design pattern in object-oriented programming. By utilizing Adapters, the INTERSECT SDK enables effective communication and coordination within a diverse ecosystem of systems. This adaptability facilitates the execution of complex operations within the framework, promoting collaboration and efficient workflow management in scientific research. Additionally, the generalizability of Adapters and their patterns enhances their utility in other scientific software projects and challenges.
+
+
+
+
+
+
+
+
+
+
+
+ Full-stack research software projects typically include several components and have many dependencies. New projects benefit from co-development of these components within a well-structured monolith. While this is preferred, over time this can become a burden to deploy in different contexts and environments. What we would like is to independently deploy components to reduce size and complexity. Maintaining separate packages however allows for developmental drift and other problems. So called 'monorepos' allow for the best of both approaches, but not without its own difficulties. There is almost no formal treatment in the literature of this particular dilemma however. The technology industry has started using monorepos to solve similar challenges, but perhaps in the academic context we should be cautious to not simply replicate industry practices. This short paper merely propositions the research software engineering (RSE) community into a discussion of the positives and negatives in structuring projects as monorepos of discrete packages.
+
+
+
+
+
+
+
+
+
+
+
+ Documentation is a crucial component of software development that helps users with installation and usage of the software. Documentation also helps onboard new developers to a software project with contributing guidelines and API information. The INTERSECT project is an open federated hardware/software library to facilitate the development of autonomous laboratories. A documentation strategy using Sphinx has been utilized to help developers contribute to source code and to help users understand the INTERSECT Python interface. Docstrings as well as reStructuredText files are used by Sphinx to automatically compile HTML and PDF files which can be hosted online as API documentation and user guides. The resulting documentation website is automatically built and deployed using GitLab runners to create Docker containers with NGINX servers. The approach discussed in this paper to automatically deploy documentation for a Python project can improve the user and developer experience for many scientific projects.
+
+
+
+
+
+
+
+
+
+
+
+ Collaboration networks for university research communities can be readily rendered through the interrogation of coauthorships and coinvestigator data. Subsequent computation of network metrics such as degree or various centralities offer interpretations on collaborativeness and influence and can also compose distributions which can be used to contrast different cohorts. In prior work, this workflow provided quantitative evidence for ROI of centralized computing resources in contrasting researchers with and without cluster accounts, where significance was found across all metrics. In this work, two similar cohorts, those with RSE-type roles at the university and everyone else, are contrasted in a similar vein. While a significantly higher degree statistic for the RSE cohort suggests its collaborative value, a significantly lower betweenness centrality distribution indicates a target for potential impact through the implementation of a centralized RSE network.
+
+
+
+
+
+---
+
+## Session 5: Panel - Sponsors
+
+TBD.
+
+---
+
+## Session 6A: Software Engineering Practice
+
+
+
+
+
+
+
+
+
+
+ Evidence-based practice (EBP) in software engineering aims to improve decision-making in software development by complementing practitioners' professional judgment with high-quality evidence from research. We believe the use of EBP techniques may be helpful for research software engineers (RSEs) in their work to bring software engineering best practices to scientific software development. In this study, we present an experience report on the use of a particular EBP technique, rapid reviews, within an RSE team at Sandia National Laboratories, and present practical recommendations for how to address barriers to EBP adoption within the RSE community.
+
+
+
+
+
+
+
+
+
+
+
+ Sandia National Laboratories is a premier United States national security laboratory which develops science-based technologies in areas such as nuclear deterrence, energy production, and climate change. Computing plays a key role in its diverse missions, and within that environment, Research Software Engineers (RSEs) and other scientific software developers utilize testing automation to ensure quality and maintainability of their work. We conducted a Participatory Action Research study to explore the challenges and strategies for testing automation through the lens of academic literature. Through the experiences collected and comparison with open literature, we identify these challenges in testing automation and then present strategies for mitigation grounded in evidence-based practice and experience reports that other, similar institutions can assess for their automation needs.
+
+
+
+
+
+
+
+
+
+
+
+
+ We provide an overview of the software engineering efforts and their impact in QMCPACK, a production-level ab-initio Quantum Monte Carlo open-source code targeting high-performance computing (HPC) systems. Aspects included are: (i) strategic expansion of continuous integration (CI) targeting CPUs, using GitHub Actions runners, and NVIDIA and AMD GPUs in pre-exascale systems, using self-hosted hardware; (ii) incremental reduction of memory leaks using sanitizers, (iii) incorporation of Docker containers for CI and reproducibility, and (iv) refactoring efforts to improve maintainability, testing coverage, and memory lifetime management. We quantify the value of these improvements by providing metrics to illustrate the shift towards a predictive, rather than reactive, sustainable maintenance approach. Our goal, in documenting the impact of these efforts on QMCPACK, is to contribute to the body of knowledge on the importance of research software engineering (RSE) for the sustainability of community HPC codes and scientific discovery at scale.
+
+
+
+
+
+
+
+
+
+
+
+
+ Research software plays a crucial role in advancing research across many domains. However, the complexity of research software often makes it challenging for developers to conduct comprehensive testing, which leads to reduced confidence in the accuracy of the results produced. To address this concern, developers have employed peer code review, a well-established software engineering practice,to improve the reliability of software. However, peer code review is less prevalent in research software than in open-source or traditional software domains. This presentation addresses this topic by describing a previous investigation of peer code review in research software. Then it concludes with a description of our current work and ways for interested people to get involved.
+ In our previous study, we interviewed and surveyed 84 developers of research software.The results show research software teams do perform code reviews, albeit without a formalized process, proper organization, or adequate human resources dedicated to conducting reviews effectively. In the talk, we will describe the results in more detail. The application of peer code review holds promise for improving the quality of research software, thereby increasing the reliability of research outcomes. Additionally, adopting peer code review practices enables research software developers to produce code that is more readable, understandable, and maintainable.
+ This talk will then briefly outline our current work to engage interested participants. Our current work focuses on peer code review processes as performed specifically by Research Software Engineers (RSEs). The research questions we aim to address in this ongoing study are: RQ1: What processes do RSEs follow when conducting peer code review?; RQ2: What challenges do RSEs encounter during peer code review?; and RQ3: What improvements are required to enhance the peer code review process for RSEs?
+ To answer these questions, we plan to conduct the following phases of the project:Phase 1: Surveying RSEs to Gain Insights into Peer Code Review Practices; Phase 2: Conducting Interviews and Focus Groups with RSEs to Explore Peer Code Review Experiences; Phase 3: Observational Study of RSE Peer Code Review
+ There are numerous places for members of the US-RSE community to get involved in our research. We will highlight these opportunities in the talk.
+
+
+
+
+
+
+
+
+
+
+
+ Scientific software plays a crucial and ever-growing role in various fields by facilitating complex modeling, simulation, exploration, and data analysis. However, ensuring the correctness and reliability of these software systems presents significant challenges due to their computational complexity, their explorative nature, and the lack of explicit specifications or even documentations. Traditional testing methods fall short in validating scientific software comprehensively – in particular for explorative software and simulation tools suffer from the Oracle Problem. In fact, Segura et al. show that scientific and explorative software systems are inherently difficult to test. In this context, metamorphic testing is a promising approach that addresses these challenges effectively. By exploiting the inherent properties within scientific problems, metamorphic testing provides a systematic means to validate the accuracy and robustness of scientific software while avoiding the challenges posed by the Oracle Problem. The proposed talk will highlight the importance of metamorphic testing in scientific software, emphasizing its ability to uncover subtle bugs, enhance result consistency, and show approaches for a more rigorous and systematic software development process in the scientific domain.
+
+
+
+
+
+
+
+
+
+
+
+ Numerical research data is often saved in file formats such as CSV for simplicity and getting started quickly, but challenges emerge as the amount of data grows. Here we describe the motivation and process for how we moved from initially saving data across many disparate files, to instead utilizing a centralized PostgreSQL relational database. We discuss our explorations into the TimescaleDB extension, and our eventual decision to use native PostgreSQL with a table-partitioning schema, to best support our data access patterns. Our approach has allowed for flexibility with various forms of timestamped data while scaling to billions of data points and hundreds of experiments. We also describe the benefits of using a relational database, such as the ability to use an open-source observability tool (Grafana) for live monitoring of experiments.
+
+
+
+
+
+
+
+
+
+
+
+ Software sustainability is critical for Computational Science and Engineering (CSE) software. Highly complex code makes software more difficult to maintain and less sustainable. Code reviews are a valuable part of the software development lifecycle and can be executed in a way to manage complexity and promote sustainability. To guide the code review process, we have developed a technique that considers cyclomatic complexity levels and changes during code reviews. Using real-world examples, this paper provides analysis of metrics gathered via GitHub Actions for several pull requests and demonstrates the application of this approach in support of software maintainability and sustainability.
+
+
+
+
+
+
+
+
+
+
+
+ Academic research collaborations involving members from multiple independent, often international institutions are inherently decentralized, and they encounter the same general challenges in sharing data and collaborating online as does the internet at large when there are no viable or desirable centralized solutions. At NCSA we have developed a free and open source full-stack cyberinfrastructure (CI) for research collaborations based on OpenStack and Kubernetes that is reproducible, flexible, portable, and sustainable. We are embracing the lessons and technology of the (re)decentralized web to curate a suite of open source tools and web services that prioritize data ownership to give researchers as much control as possible over their data, communications, and access controls. I will present the architecture of our framework as well as example use cases from existing projects ranging from astronomy to nuclear physics, showcasing the flexible deployment system and some collaborative tools and services for identity and access management, messaging, data sharing, code development, documentation, high-performance computing and more. By the end of the talk I hope you will have some appreciation for the value decentralized tech brings to the research enterprise and the potential for innovation that lies in the creative integration of existing federated and peer-to-peer applications and protocols.
+
+
+
+
+
+---
+
+## Session 6B: Research & Development Tooling 2
+
+
+
+
+
+
+
+
+
+
+ Visual Studio Code (VSCode) has emerged as one of the most popular development tools among professional developers and programmers, offering a versatile and powerful coding environment. However, configuring and setting up VSCode to work effectively within the unique environment of a shared High-Performance Computing (HPC) cluster remains a challenge. This discusses the configuration and integration of VSCode with the diverse and demanding environments typically found on HPC clusters. We demonstrate how to configure and set up VSCode to take full advantage of its capabilities while ensuring seamless integration with HPC-specific resources and tools. Our objective is to enable developers to harness the power of VSCode for HPC applications, resulting in improved productivity, better code quality, and accelerated scientific discovery.
+
+
+
+
+
+
+
+
+
+
+
+
+ Machine learning is a groundbreaking tool for tackling high-dimensional datasets
+ with complex correlations that humans struggle to comprehend. An important nuance
+ of ML is the difference between using a model for interpolation or extrapolation,
+ meaning either inference or prediction. This work will demonstrate visually what
+ interpolation and extrapolation mean in the context of machine learning using
+ astartes, a Python package that makes it easy to tackle in ML modeling. Many
+ different sampling approaches are made available with astartes, so using a very
+ tangible dataset - a fast food menu - we can visualize how different approaches
+ differ and then train and compare ML models.
+
+
+
+
+
+
+
+
+
+
+
+
+ For researchers using R to do work in stylometry, the Stylo package in R is
+ indispensable, but it also has some limitations. The Stylo2gg package addresses
+ some of these limitations by extending the usefulness of Stylo. Among other
+ things, Stylo2gg adds logging and replication of analyses, keeping necessary
+ files and introducing a systematic way to reproduce past work. With visualization
+ as its initial purpose, Stylo2gg also makes exploring stylometric data easy,
+ providing options for labeling, highlighting subgroups, and double coding data
+ for added legibility in black and white or in color. Finally, as hinted by the
+ name, the conversion of graphics from base R into Ggplot2 changes the style of
+ the output and introduces more options to extend analyses with many other
+ packages and addons. The reproducible notebook shown here, `01-stylo2gg.qmd` or
+ rendered in `01-stylo2gg.html`, walks through much of the package, including many
+ features that were added in the past year.
+
+
+
+
+
+
+
+
+
+
+
+ Airtable is an increasingly popular format for entering and storing research data, especially in the digital humanities. It combines the simplicity of spreadsheet formats like CSV with a relational database’s ability to model relationships; enterers or viewers of the data do not need to have programming knowledge. The Center for Digital Research in the Humanities at the University of Nebraska uses Airtable data for two projects on which I work as a developer. African Poetics has data focusing on African poets and newspaper coverage of them, and Petitioning for Freedom has data on habeas corpus petitions and involved parties. At the CDRH, our software can take data in many formats, including CSV, and ingest it for an API based on Elasticsearch. This data is then available for search and discovery through web applications built on Ruby on Rails. The first step in ingesting the Airtable data into our system is to download it. I will cover the command line tools that can do this, the formats that can be downloaded (JSON turned out to be the most convenient), and the requirements for authentication. Python (aided by Pandas) can transform this data into the CSV format that our back end software. I will discuss how to rename and delete columns, change data back into JSON (which is sometimes more parsable by our scripts), and clean troublesome values like blanks and NaNs. One advancement of Airtable over CSV is join tables that have similar functionality to SQL databases. Incorporating them into other projects has particular challenges. When downloaded directly from Airtable, the join data is in a format that cannot be interpreted by humans or programs other than Airtable. But it can be converted (with the help of some processing within airtable) into formats that can be parsed by external scripts so that it can be human-readable. With these transformations, our software can use the table to populate API fields and parse it into arrays and hashes to replicate relationships within the data. Finally I will discuss the advantages and disadvantages of Airtable for managing data, from the perspective of a developer who uses the data on the front and back end of web applications.
+
+
+
+
+
+
+
+
+
+
+
+ Introduction: We are pleased to submit a proposal to the US-RSE to include Anotemos, a media annotation software developed by the GRIP (Grasping the Rationality of Instructional Practice), an education research lab at the University of Michigan. Anotemos is designed to enhance research analysis by providing an efficient media annotation solution. This proposal highlights the key features, and benefits of Anotemos, showcasing its relevance to the research community.
+ Background and Objectives: Anotemos addresses the challenges faced by researchers in analyzing multimedia data, enabling them to extract valuable insights efficiently. Anotemos aims to streamline and automate the annotation workflow, offering researchers a user-friendly interface and advanced features for seamless annotation.
+ Key Features and Benefits: Using Anotemos, researchers can create Commentaries that are centered around a Multimedia Item. Anotemos offers a range of features that set it apart: (i) Comprehensive Annotation: Researchers can annotate various media types, including images, videos, and audio, with the support of diverse customizable annotation types such as text, icons, drawings, bounding boxes, and audio recordings both on-screen and off-screen; (ii) Real-time Collaboration: Anotemos enables multiple researchers to collaborate in real-time simultaneously, fostering knowledge exchange, reducing redundancy, and improving productivity; (iii) Share & Publish: Anotemos offers both private and public sharing, enabling the secure sharing of Commentaries with select individuals or the wider research community; (iv) Customizable Workflows: Anotemos supports the creation of customized workflows by making it easier to create identical Commentaries, and manage different sets of collaborators using Commentary sections, enabling researchers to tailor the platform to their projects; (v) Analysis & Reports: Using Anotemos, users can perform an in-depth analysis of annotated data and generate comprehensive reports, providing valuable insights and facilitating data-driven decision-making in research projects; (vi) Integrations: Anotemos offers seamless integration with Learning Tools Interoperability (LTI), allowing users to easily embed and access Anotemos Commentaries within LTI-compliant learning management systems. Furthermore, Anotemos supports LaTeX code, empowering users to annotate and display mathematical equations and formulas with precision. Additionally, Anotemos can be embedded into Qualtrics Surveys enabling the researchers to collect and analyze the survey data along with Anotemos annotations.
+ Conclusion: We believe that Anotemos has the potential to significantly enhance research analysis by providing an efficient, user-friendly, and customizable media annotation solution. It is developed using the Angular-Meteor framework, leveraging its robustness, scalability, and real-time capabilities. The software is currently in beta testing, with positive feedback from researchers in diverse fields. Its advanced features make it an ideal tool for researchers across various domains. We request the consideration of Anotemos for presentation at the US-RSE Conference, where researcher software engineers can gain insights into its features, benefits, and potential impact on research projects.
+
+
+
+
+
+
+
+
+
+
+
+ Assembly and analysis of metagenomics datasets along with protein sequence analysis are among the most computationally demanding tasks in bioinformatics. ExaBiome project is developing GPU accelerated solutions for exascale era machines to tackle these problems at unprecedented scale. The algorithms involved in these software pipelines do not fit the typical portfolio of algorithms that are amenable to GPU porting, instead, these are irregular and sparse in nature which makes GPU porting a significant challenge. Moreover it is a challenge to integrate complex GPU kernels within a CPU optimized software infrastructure that depends largely on dynamic data structures. This talk will give an overview of development of sequence alignment and local assembly GPU kernels that have been successfully ported and optimized for GPU based systems and the integration of these kernels within Exabiome software stack for demonstrating unprecedented capability of solving scientific problems in bioinformatics.
+
+
+
+
+
+
+
+
+
+
+
+ In codes used to simulate multi-physics hydrodynamics, it is common for variables to reside on different parts of a mesh, or on different, but related, meshes. For example, in some codes all variables may reside on cell centers, while in others, scalars may reside on cell centers, vectors on cell faces and tensors on cell corners, etc. Further, different methods may be used for the calculation of derivatives or divergences of different variables, or for the interpolation or mapping of variables from one mesh to another. This poses a challenge for libraries of 3D physics models, where the physical processes have dependencies on space, and therefore, mesh dependency. For such libraries to be able to support a general set of multi-physics hydrodynamics host codes, they must be able to represent the physics in a way that is independent of mesh-related details. To solve this problem, we present a Multi-Mesh Operations (MMOPS) library for the mesh-agnostic representation of 3D physics.
+ MMOPS is a light-weight C++ abstraction providing an interface for the development of general purpose calculations between variables of different user-defined types, while deferring the specification of the details of these types to be provided by the host code. As an example, consider three variables, a, b, c representing a vector and two scalar quantities residing on the cell corners, cell centers and cell corners of a mesh, respectively. MMOPS provides a `class mapped_variable` to represent these variables, for which the host code provides an arbitrary compile-time tag indicating where the variable data resides on the mesh, and a mapping function method used to indicate how to map the variable from one part of the mesh to another, using tag dispatching under the hood. This way, we can perform operations using `a`, `b`, `c`, namely `mapped_variable` instantiations representing a, b, c, such as `c(i) = a(c.tag(), i, dir) + b(c.tag(), i)` where, `i` is an index representing the ith cell on `c`’s mesh, and `dir` is an index representing the desired directional component of vector `a`. In general, if either `a` or `b` have a different mesh representation than `c`, then they get mapped to `c`’s mesh using the mapping functions provided by the host code when constructing `a` and `b`, which can be different. In the above example, since `a` is on the same mesh as `c`, it doesn’t get mapped but instead is directly accessed, and since `b` lives on a different mesh than `c`, it gets mapped to `c`’s mesh, i.e. to cell corners.
+ We demonstrate that MMOPS provides a zero to nearly zero-cost abstraction of the de- scribed functionality, in the sense that it incurs in little to no performance penalty (depending on compiler) compared to a manual benchmark implementation of the same functionality. A description of the library, usage examples, and benchmarking tests will also be presented.
+
+
+
+
+
+
+
+
+
+
+
+ The High Throughput Discovery Lab at the Rosalind Franklin Institute aims to iteratively expand the reaction toolkit used in drug discovery to enable new regions of biologically relevant chemical space to be explored. The current reaction toolkit, that underpins traditional drug discovery workflows, has to date been dominated by a small number (<10) of reaction classes that have remained largely unchanged for 30 years. It has been argued that this has contributed to attrition and stagnation in drug discovery. We are working to create a semi-automated approach to explore large regions of chemical space to identify novel bioactive molecules. The approach involves creating arrays of hundreds of reactions, in which different pairs of substrates are combined. The design of subsequent reaction arrays is informed by the biological activity of the products that are obtained. However, the multi-step laboratory process to create, purify and test the reaction products introduces high requirements for data linkage, making data management incredibly important.
+ This talk focuses on how we built the data infrastructure using a mix of open-source and licensed technology. We will discuss how the Franklin aims to increase automation in data processing and how the technology we have implemented will make this possible.
+
+
+
+
+
+---
+
+## Session 7A: ML/AI
+
+
+
+
+
+
+
+
+
+
+
+ Increasingly, scientific research teams desire to in- corporate machine learning into their existing computational workflows. Codebases must be augmented, and datasets must be prepared for domain-specific machine learning processes. Team members involved in software development and data maintenance, particularly research software engineers, can foster the design, implementation, and maintenance of infrastructures that allow for new methodologies in the pursuit of discovery. In this paper, we highlight some of the main challenges and offer assistance in planning and implementing machine learning projects for science.
+
+
+
+
+
+
+
+
+
+
+
+
+ Artificial intelligence (AI) and machine learning (ML) have been shown to be increasingly helpful tools in a growing number of use-cases relevant to scientific research, despite significant software-related obstacles. There exist large technical costs to setting up, using, and maintaining AI/ML models in production. This often prevents researchers from utilizing these models in their work. The growing field of machine learning operations (MLOps) aims to automate much of the AI/ML life cycle while increasing access to these models. This paper presents the initial work in creating a nuclear energy MLOps platform for use by researchers at Idaho National Laboratory (INL) and aims to reduce the barriers of using AI/ML in scientific research. Our goal is to promote the integration of the latest AI/ML technologies into researchers' workflows and create more opportunity for scientific innovation. In this paper we discuss how our MLOps efforts aim to increase usage and the impact of AI/ML models created by researchers. We also present several use-cases that are currently integrated. Finally, we evaluate the maturity of our project as well as our plans for future functionality.
+
+
+
+
+
+
+
+
+
+
+
+ Machine learning models, specifically neural networks, have garnered extensive recognition due to their remarkable performance across various domains. Nevertheless, concerns pertaining to their robustness and interpretability have necessitated the immediate requirement for comprehensive methodologies and tools. This scholarly article introduces the "Adversarial Observation" framework, which integrates adversarial and explainable techniques into the software development cycle to address these crucial aspects.
+ Industry practitioners have voiced an urgent need for tools and guidance to fortify their machine learning systems. Research studies have underscored the fact that a substantial number of organizations lack the necessary tools to tackle adversarial machine learning and ensure system security. Furthermore, the absence of consensus on interpretability in machine learning presents a significant challenge, with minimal agreement on evaluation benchmarks. These concerns highlight the pivotal role played by the Adversarial Observation framework.
+ The Adversarial Observation framework provides model-agnostic algorithms for adversarial attacks and interpretable techniques. Two notable methods, namely the Fast Gradient Sign Method (FGSM) and the Adversarial Particle Swarm Optimization (APSO) technique, have been implemented. These methods reliably generate adversarial noise, enabling the evaluation of model resilience against attacks and the training of less vulnerable models.
+ In terms of explainable AI (XAI), the framework incorporates activation mapping to visually depict and analyze significant input regions driving model predictions. Additionally, a modified APSO algorithm fulfills a dual purpose by determining global feature importance and facilitating local interpretation. This systematic assessment of feature significance reveals underlying decision rules, enhancing transparency and comprehension of machine learning models.
+ By incorporating the Adversarial Observation framework, organizations can assess the resilience of their models, address biases, and make well-informed decisions. The framework plays a pivotal role in the software development cycle, ensuring the highest standards of transparency and reliability. It empowers a deeper understanding of models through visualization, feature analysis, and interpretation, thereby fostering trust and facilitating the responsible development and deployment of AI technologies.
+ In conclusion, the Adversarial Observation framework represents a crucial milestone in the development of trustworthy and dependable AI systems. Its integration of robustness, interpretability, and fairness into the software development cycle enhances transparency and reliability. By addressing vulnerabilities and biases, organizations can make well-informed decisions, improve fairness, and establish trust with stakeholders. The significance of the framework is further underscored by the pressing need for tools expressed by industry practitioners and the lack of consensus on interpretability in machine learning. Ultimately, the Adversarial Observation framework contributes to the responsible development and deployment of AI technologies, fostering public trust and promoting the adoption of AI systems in critical domains.
+
+
+
+
+
+
+
+
+
+
+
+ The expected long-term outcome of our research is to determine the ways in which a focus on scientific model code quality can improve both scientific reliability and model performance. In this work, we focus on climate models which are complex software implementations of the scientific and mathematical abstractions of systems that govern the climate.
+ Climate models integrate the physical understanding of climate and produce simulations of climate patterns. The model code is often hundreds of thousands of lines of highly sophisticated software, written in high-performance languages such as Fortran. These models are developed with teams of experts, including climate scientists and high-performance computing developers. The sheer complexity of the software behind the climate models (which have evolved over many years) makes them vulnerable to performance, usability, and maintainability bugs that hinder performance and weaken scientific confidence. Understanding how the social structures behind the software and model function have been examined but the complex interactions of domain experts and software experts are poorly understood.
+ The expected short-term outcomes of our research are a) develop a set of software quality indicators for the climate models, providing model maintainers and users with specific areas to improve the model code; b) develop new techniques for analyzing large bodies of unstructured text to explain how users perceive a research software project’s capabilities and failings aligned with international efforts to improve the quality of scientific software.
+ We follow two main approaches. (1) Analytics: analysis of climate models and their artifacts. These artifacts include the software code itself, including the way the model is deployed and run with end users; the bug reports and other feedback on the software quality; and the simulation testing used to validate the model outputs. Our analysis will be incorporated into a Fortran analysis tool to identify Fortran quality issues automatically. This analysis is incomplete however without a clear understanding of the social context in which it was produced. (2) Social Context: we examine the socio-technical artifacts created around climate models. These include a) outputs from workshops, interviews, and surveys with stakeholders, including climate scientists and model software developers; b) explicit issue and bug reports recorded on the model, such as the fact the model is failing/crashing at a particular place; c) implicitly discussed software problems and feature requests from related discussion forums. We hypothesize that both approaches will help to identify technical debts in the climate models.
+ Manually eliciting software requirements from these diverse sources of feedback can be time-consuming and expensive. Hence, we will use state-of-the-art Natural Language Processing (NLP) approaches that require less human effort. The web artifacts, interviews, and scientific texts of climate models provide reflections on the Climate Community of Practice (CoP). We will use an unsupervised topic model, Latent Dirichlet Allocation (LDA) to study how different narratives (such as specific modules of climate models, research interests, and needs of the community members) of a climate CoP have evolved over a period.
+ LDA assumes that documents are mixtures of topics, and a topic is a probability distribution over words. The gist of a topic can be inferred from its most probable words. We focus on the discussion forum of the Community Earth System Model (CESM). CESM is a collaboratively developed fully coupled global climate model focused on computer simulations of Earth's climate states.
+ We infer 15 topics on around 7000 posts from the year 2003 to 2023 on the discussion forum using MALLET topic modeling library. We ask a domain expert to assign a label to a topic and use the labels to analyze the posts. We plot the proportions of words in a document assigned to a topic over a period. We observe certain trends over around 20 years. The topic of version management of CESM models gained attention from 2018 on-wards till 2021. There is a steady increase in discussion of the topic of Coupled Model Intercomparison Project (CMIP) and Shared Socio-economic Pathways (SSPs). Discussions about issues related to installing and setting up CESM models and parallel computing have declined since 2016 and 2020 respectively. Topics of source code related changes, ocean modeling, and errors encountered while running CESM models are discussed throughout the period. We also observe that questions related to parallel computing received fewer responses, while questions related to compiling CESM models received higher responses. These trends and insights can be used by the software engineering group of CESM to prioritize its actions to facilitate the use of the models.
+ We believe that this qualitative study scaffolded using topic models will complement climate science research by facilitating the generation of software requirements, onboarding of new users of the models, responding to new problems using solutions to similar problems, and preventing reinvention.
+
+
+
+
+
+---
+
+## Session 7B: Research & Development Tooling 3
+
+
+
+
+
+
+
+
+
+
+ Alchemical free energy methods, which can estimate relative potency of potential drugs by computationally transmuting one molecule into another, have become key components of drug discovery pipelines. Despite many ongoing innovations in this area, with several methodological improvements published every year, it remains challenging to consistently run free energy campaigns using state-of-the-art tools and best practices. In many cases, doing so requires expert knowledge, and/or the use of expensive closed source software. The Open Free Energy project (https://openfree.energy/) was created to address these issues. The consortium, a joint effort between several academic and industry partners, aims to create and maintain reproducible and extensible open source tools for running large scale free energy campaigns.
+ This contribution will present the Open Free Energy project and its progress building an open source ecosystem for alchemical free energy calculations. It will describe the kind of scientific discovery enabled by the Open Free Energy ecosystem, approaches in the core packages to facilitate reproducibility, efforts to enhance scalability, and our work toward more community engagement, including interactions with both industry and with academic drug discovery work. Finally, it will discuss the long-term sustainability of the project as a hosted project of the Open Molecular Software Foundation, a 501(c)(3) nonprofit for the development of chemical research software.
+
+
+
+
+
+
+
+
+
+
+
+ Background: The NSAPH (National Studies on Air Pollution and Health) lab focuses on analyzing the impact of air pollution on public health. Typically, studies in Environmental Health require merging diverse datasets coming from multiple domains such as health, exposures, and population demographics. Exposure data is obtained from various sources and presented in different formats, posing challenges in data management and integration. The manual process of extracting and aggregating data is repetitive, inefficient, and prone to errors. Harmonizing formats and standards is difficult due to the mix of public and proprietary data sources. Reproducibility is crucial in scientific work, but the heavy computations involved in processing exposure data are sensitive to the computational environment, making different versions of components potentially affect the results. Additionally, while some exposure data are public datasets that are shareable for reproducible research, there are some exceptions of proprietary data, such as ESRI shapefile, that cannot be publicly shared, further complicating reproducibility efforts in NSAPH.
+ Aim: Our main objective is to leverage our expertise in bioinformatics to create a robust data platform tailored for aggregating exposure and spatial data. We are building a data platform that is focused on exposure data, such as pollution, temperature, humidity, and smoke. This platform incorporates a deployment system, package management capabilities, and a configuration toolkit to ensure compatibility and generalizability across various spatial aggregations, such as zip code, ZCTA (zip code tabulation areas), and counties. Through the development of this data platform, our aim is to streamline exposure data processing, enable efficient transformation of exposure data, and facilitate reproducibility in working with exposure data.
+ Methods: The methodology employed in this study utilizes the CWL (Common Workflow Language) programming language for the data pipeline. Docker is utilized for deployment purposes, while PostgreSQL serves as the data warehouse. Apache Superset is employed for data exploration and visualization. The study incorporates various types of data transformations, including isomorphic transformations for reversible conversions and union transformations for combining data from different sources. Additionally, rollups are performed to extract specific data elements, and approximations are used for imprecise conversions. In the case of tabular data, simple aggregations are conducted using SQL functions. For spatial operations, the methodology includes adjustable rasterization methods such as downscaling and resampling (nearest, majority). Furthermore, a data loader is developed to handle diverse spatial file types, including NetCDF, Parquet, CSV, and FST.
+ Results: We developed DORIEH (data for observational research in environmental health), a comprehensive system designed for the transformation and storage of exposure data. Within this system, we implemented various utilities, notably the gridMET (Grid-based Meteorological Ensemble Tool) data pipeline, which encompasses multiple crucial steps. These steps include retrieving shapefiles from an API, importing exposure spatial data, aggregating exposure data from grids into selected spatial aggregations (e.g ZCTA, county, zip codes) utilizing adaptable rasterization methods, and ultimately storing the transformed data into our dedicated database. Furthermore, we constructed a versatile data loader capable of handling diverse file types, while also incorporating parallelization techniques to enhance processing efficiency. Additionally, DORIEH provides basic visualization capabilities that serve as quality checks for the data.
+ Conclusion: Our study addresses the challenges faced by the NSAPH group in analyzing the impact of environmental exposures on health. By developing the DORIEH data platform and implementing various utilities, including the flexible and configurable spatial aggregation data pipeline and a flexible data loader, we have made significant progress in overcoming the limitations of manual data extraction and aggregation. The platform enables streamlined exposure data processing, efficient transformation, and storage, while ensuring compatibility and reproducibility in working with exposure and spatial data.
+
+
+
+
+
+
+
+
+
+
+
+ Accurately capturing the huge span of dynamical scales in astrophysical systems often requires vast computing resources such as those provided by exascale supercomputers. The majority of computational throughput for the first exascale supercomputers is expected to come from hardware accelerators such as GPUs. These accelerators, however, will likely come from a variety of manufacturers. Each vendors uses its low-level programming interface (such as CUDA and HIP) which can require moderate to significate code development. While performance portability frameworks such as Kokkos allow research software engineers to target multiple architectures with one code base, adoption at the application level lags behind. To address this issue in computational fluid dynamics, we developed Parthenon, a performance portable framework for block-structured adaptive mesh refinement (AMR), a staple feature of many fluid dynamics methods. Parthenon drives a number of astrophysical and terrestrial plasma evolution codes including AthenaPK, a performance portable magnetohydroynamics (MHD) astrophysics code based on the widely used Athena++ code. Running AthenaPK on Frontier, the world’s first exascale supercomputer, we explore simulations of galaxy clusters with feedback from a central supermassive black hole. These simulations further understanding of the thermalization of feedback in galaxy clusters. In this talk we present our efforts developing performance portable astrophysics codes in the Parthenon collaboration and our experience running astrophysics simulations on the first exascale supercomputer. LA-UR-23-26938
+
+
+
+
+
+
+
+
+
+
+
+ LINCC (LSST Interdisciplinary Network for Collaboration and Computing) is an ambitious effort to support the astronomy community by developing cloud-based analysis frameworks for science expected from the new Large Survey of Space and Time. The goal is to enable the delivery of critical computational infrastructure and code for petabyte-scale analyses, mechanisms to search for one-in-a-million events in continuous streams of data, and community organizations and communication channels that enable researchers to develop and share their algorithms and software.
+ We are particularly interested in supporting early science and commissioning efforts. The team develops software packages in different areas of interest to LSST; such as RAIL, a package for estimating redshift from photometry, and KMBOD, a package for detecting slowly moving asteroids. I will concentrate on our effort with LSDB and TAPE packages that focus on cross-matching and time-domain analysis. We are currently developing capabilities to: i) efficiently retrieve and cross-match large catalogs; ii) facilitate easy color-correction and recalibration on time-domain data from different surveys to enable analysis on long lightcurves; iii) provide custom functions that can be efficiently executed on large amounts of data (such as structure function and periodogram calculations); iv) enable large-scale calculation with custom, user-provided functions, e.g., continuous auto-regressive moving average models implemented in JAX.
+ LINCC is already supporting the community through an incubator program and a series of technical talks. I will present these efforts and show our current status, results, and code; and discuss the lesson learned from collaboration between scientists and software engineers!
+
+
+
+
+
+---
+
+## Session 8: Culture & Community 2
+
+
+
+
+
+
+
+
+
+
+
+ Princeton University’s central Research Software Engineering (RSE) Group is a central team of research software engineers who work directly with campus research groups to create the most efficient, scalable, and sustainable research codes possible in order to enable new scientific and scholarly advances. As the Group has grown, it has evolved in numerous ways, with new partners across academic units, new partnership models and operational procedures, and a reshuffled internal organization. In the summer of 2023, the RSE Group further evolved by incorporating, for the first time, two formal programs for RSE interns and fellows.
+ We present an experience report for the inaugural RSE summer internship and fellowship programs at Princeton University. These two programs, separate but concurrently held during the summer of 2023, represented our first formal attempt to introduce currently enrolled students to the RSE discipline in a structured setting with assigned mentors and well-defined projects. The projects varied widely in nature, spanning academic units in mathematics, social sciences, machine learning, molecular biology, and high energy physics. The interns and fellows were exposed to a diverse range of RSE programming languages, software packages, and software engineering best practices.
+ The two programs, with eight total student participants, further spanned in-person and remote work, undergraduate and graduate students, and multiple continents. We report on the experience of the interns, fellows, and mentors, including lessons learned and recommendations for improving future programs.
+
+
+
+
+
+
+
+
+
+
+
+
+ The National Energy Research Scientific Computing Center, NERSC, is a U.S. Department of Energy high-performance computing facility, used by over 9000 scientists and researchers for novel scientific research. NERSC staff support and engage with users to improve the use of this resource. We have now begun working towards creating a community of practice consisting of NERSC users, staff, and affiliates to pool resources, knowledge and build networks across scientific fields. Our highly interdisciplinary users have expertise in research computing in their respective science fields, and as such, access to a collective knowledge in the form of a community allows resource sharing, peer-mentorship, peer teaching and collaboration opportunities. Thus, we believe the benefits of such a community could lead to improved scientific output due to better peer-support for technical and research related issues.
+ In order to prepare a community creation strategy, gain insight into user needs, and understand how a community of practice could support those needs, NERSC staff conducted focus groups with users in the Spring of 2023. The findings from these focus groups provided significant insight into the challenges users face in interacting with one another and even with NERSC staff, and will inform our next steps and ongoing strategy. This presentation will outline the current state of the NERSC user community, the methodology for running user focus groups, qualitative and quantitative findings, and plans for building the NERSC user community of practice based on these findings.
+
+
+
+
+
+
+
+
+
+
+
+ The emergence of the Research Software Engineer (RSE) as a role correlates with the growing complexity of scientific challenges and the diversity of software team skills. At the same time, it is still a challenge for research funding agencies and institutions to directly fund activities that are explicitly engineering focused.
+ In this presentation, we describe research software science (RSS), an idea related to RSE, that is particularly suited to research software teams. RSS focuses on using the scientific method to understand and improve how software is developed and used in research. RSS promotes the use of scientific methodologies to explore and establish broadly applicable knowledge. Specifically, RSS incorporates scientific approaches from cognitive and social sciences in addition to existing scientific knowledge already present in software teams. By leverage cognitive and social science methodologies and tools, research software teams can gain better insight into how software is developed and used for research and share that insight by virtue of the scientific approaches used to gain that insight.
+ Using RSS, we can pursue sustainable, repeatable, and reproducible software improvements that positively impact research software toward improved scientific discovery. Also, by introducing an explicit scientific focus to the enterprise of software development and use, we can more easily justify direct support and funding from agencies and institutions whose charter is to sponsor scientific research. Direct funding of RSS activities is within these charters and RSE activities are needed, more easily justified, and improved by RSS investments.
+
+
+
+
+
+
+
+
+
+
+
+
+ To address the lack of software development and engineering training for intermediate and advanced developers of research software, we present INnovative Training Enabled by a Research Software Engineering Community of Trainers (INTERSECT). INTERSECT, funded by NSF, provides expert-led training courses designed to build a pipeline of researchers trained in best practices for research software development. This training will enable researchers to produce better software and, for some, assume the role of Research Software Engineer (RSE).
+ INTERSECT sponsors an annual RSE-trainer workshop, focused on the curation and communal generation of research software engineering training material. These workshops connect RSE practitioner-instructors from across the country to leverage knowledge from multiple institutions and to strengthen the RSE community. The first workshop, held in 2022 laid the foundation for the format, structure, and content for the INTERSECT bootcamp, a multi-day, hands-on, research software engineering training event.
+ INTERSECT brings together RSE instructors from U.S. institutions to exploit the expertise of a growing RSE community. In July 2023, INTERSECT will sponsor a week-long bootcamp for intermediate and advanced participants from U.S. institutions. We will use an existing open-source platform to make the INTERSECT-curated material from the bootcamp available. The public availability of the material allows the RSE community to continually engage with the training material and helps coordinate the effort across the RSE-trainer community.
+ In this talk we will introduce the INTERSECT project. We will discuss outcomes of the 2023 bootcamp, including curriculum specifics, lessons learned, and long term objectives. We will also describe how people can get involved as contributors or participants.
+
+
+
+
+
+
+---
+
+## Session 9: Panel - Funding Agencies
+
+TBD.
diff --git a/pages/redirects/dates.md b/pages/redirects/dates.md
new file mode 100644
index 0000000..722cbe1
--- /dev/null
+++ b/pages/redirects/dates.md
@@ -0,0 +1,5 @@
+---
+layout: page
+permalink: /dates/
+redirect: /about/dates/
+---
diff --git a/pages/search.html b/pages/search.html
new file mode 100644
index 0000000..5fac259
--- /dev/null
+++ b/pages/search.html
@@ -0,0 +1,39 @@
+---
+title: Search
+sitemap: false
+permalink: /search/
+not_editable: true
+excluded_in_search: true
+layout: page
+---
+
+
+
+Loading results
+
+
+
+
+
+
diff --git a/pages/sponsor/sponsor.md b/pages/sponsor/sponsor.md
new file mode 100644
index 0000000..0c27b70
--- /dev/null
+++ b/pages/sponsor/sponsor.md
@@ -0,0 +1,16 @@
+---
+layout: page
+title: Sponsor
+description:
+menubar: sponsor
+permalink: sponsor/
+menubar_toc: true
+set_last_modified: true
+---
+
+## Contact Information
+
+For any inquiries or questions about sponsorship opportunities, please get in touch with
+us at . Our team will be happy to provide you with more
+information and work with you to find the sponsorship level that best fits your needs.
+Thank you for considering sponsoring the US-RSE Association!
diff --git a/pages/tags.html b/pages/tags.html
new file mode 100644
index 0000000..c651f8c
--- /dev/null
+++ b/pages/tags.html
@@ -0,0 +1,35 @@
+---
+layout: page
+title: 'Tag Index'
+permalink: /tags/
+---
+
+{%- capture site_tags -%}
+ {%- for tag in site.tags -%}
+ {{- tag | first -}}{%- unless forloop.last -%},{%- endunless -%}
+ {%- endfor -%}
+{%- endcapture -%}
+{%- assign tags_list = site_tags | split:',' | sort -%}
+
+{%- for tag in tags_list -%}
+ {{- tag -}} ({{site.tags[tag].size}})
+{%- endfor -%}
+
+