├── FortranCon2020-community ├── README.md ├── assets │ ├── FortranCon-community-diagram.odg │ ├── FortranCon-community-diagram.svg │ └── monthly-call-screenshot.png ├── dist │ ├── reset.css │ ├── reveal.css │ ├── reveal.esm.js │ ├── reveal.js │ └── theme │ │ ├── beige.css │ │ ├── black.css │ │ ├── blood.css │ │ ├── fonts │ │ ├── league-gothic │ │ │ ├── LICENSE │ │ │ ├── league-gothic.css │ │ │ ├── league-gothic.eot │ │ │ ├── league-gothic.ttf │ │ │ └── league-gothic.woff │ │ └── source-sans-pro │ │ │ ├── LICENSE │ │ │ ├── source-sans-pro-italic.eot │ │ │ ├── source-sans-pro-italic.ttf │ │ │ ├── source-sans-pro-italic.woff │ │ │ ├── source-sans-pro-regular.eot │ │ │ ├── source-sans-pro-regular.ttf │ │ │ ├── source-sans-pro-regular.woff │ │ │ ├── source-sans-pro-semibold.eot │ │ │ ├── source-sans-pro-semibold.ttf │ │ │ ├── source-sans-pro-semibold.woff │ │ │ ├── source-sans-pro-semibolditalic.eot │ │ │ ├── source-sans-pro-semibolditalic.ttf │ │ │ ├── source-sans-pro-semibolditalic.woff │ │ │ └── source-sans-pro.css │ │ ├── league.css │ │ ├── moon.css │ │ ├── night.css │ │ ├── serif.css │ │ ├── simple.css │ │ ├── sky.css │ │ ├── solarized.css │ │ └── white.css ├── index.html ├── plugin │ ├── highlight │ │ ├── highlight.esm.js │ │ ├── highlight.js │ │ ├── monokai.css │ │ ├── plugin.js │ │ └── zenburn.css │ ├── markdown │ │ ├── markdown.esm.js │ │ ├── markdown.js │ │ └── plugin.js │ ├── math │ │ ├── math.esm.js │ │ ├── math.js │ │ └── plugin.js │ ├── notes │ │ ├── notes.esm.js │ │ ├── notes.js │ │ ├── plugin.js │ │ └── speaker-view.html │ ├── search │ │ ├── plugin.js │ │ ├── search.esm.js │ │ └── search.js │ └── zoom │ │ ├── plugin.js │ │ ├── zoom.esm.js │ │ └── zoom.js └── slides │ ├── about-me.md │ ├── challenges.md │ ├── community.md │ ├── compilers.md │ ├── discourse.md │ ├── fpm.md │ ├── motivation.md │ ├── outlook.md │ ├── overview.md │ ├── pillars.md │ ├── stdlib.md │ ├── takeaways.md │ ├── thank-you.md │ ├── title.md │ └── website.md ├── FortranCon2020-fpm ├── README.md ├── fpm-presentation.odp └── fpm-presentation.pdf ├── FortranCon2020-stdlib ├── README.md ├── apidocsstdlib.png └── stdlib_talk.tex ├── FortranCon2021-fpm ├── .gitignore ├── Figures │ ├── bootstrapping.pdf │ ├── bootstrapping.svg │ ├── dependencies.pdf │ ├── dependencies.svg │ ├── features.pdf │ ├── features.svg │ ├── fpm-projects.pdf │ ├── fpm-projects.svg │ ├── get-fpm.pdf │ ├── get-fpm.svg │ ├── layout.pdf │ ├── layout.svg │ ├── logo-cpp.pdf │ ├── logo-fortran.png │ ├── logo-haskell.pdf │ ├── logo-python.pdf │ └── logo-rust.pdf ├── LICENSE ├── README.md ├── beamercolorthemeMCTC.sty ├── beamerouterthemeMCTC.sty ├── data │ └── fpm-projects.txt ├── main.tex └── plot │ ├── fpm-events.txt │ ├── fpm-projects.plt │ └── fpm-projects.txt ├── FortranCon2021-gsoc-fpm-flags └── README.md ├── FortranCon2021-linked_list └── README.md ├── FortranCon2021-state-of-fortran └── README.md ├── FortranCon2021-stdlib ├── README.md ├── contrib.png ├── examples │ ├── Makefile │ ├── ex_bitsets.f90 │ ├── ex_logger.f90 │ └── ex_sorting.f90 ├── fortran_logo_256x256.png ├── stdlib-talk.pdf └── stdlib-talk.tex ├── FortranCon2021-string └── README.md ├── FortranCon2021-vegetables ├── README.md ├── is_leap_year │ ├── .gitignore │ ├── README.md │ ├── fpm.toml │ ├── src │ │ └── is_leap_year_m.f90 │ └── test │ │ ├── bad_test.f90 │ │ ├── fancy_test.f90 │ │ ├── good_test.f90 │ │ ├── main.f90 │ │ └── ugly_test.f90 ├── presentation.odp └── presentation.pdf ├── PackagingCon2021-fpm ├── .gitignore ├── Figures │ ├── logo-brew.png │ ├── logo-conda-forge.pdf │ ├── logo-fortran.png │ ├── logo-msys2.png │ └── logo-spack.pdf ├── README.md ├── beamercolorthemeMCTC.sty ├── beamerouterthemeMCTC.sty └── main.tex ├── README.md └── deRSE23 ├── Discourse_screenshot.png ├── README.md ├── Simpsons.png ├── contrib.png ├── contributor_graph.png ├── deRSE23-community.tex ├── deRSE23.pdf ├── fortran_logo_256x256.png ├── fpm_diagram.pdf ├── lfortran_screenshot.png ├── nature_screenshot.png ├── punch-cards-hires.png ├── r-source_screenshot.png ├── scipy_screenshot.png ├── simpson_horizontal.png ├── vscode_fortran.png └── website_screenshot.png /FortranCon2020-community/README.md: -------------------------------------------------------------------------------- 1 | # FortranCon2020-community 2 | 3 | Slides for the FortranCon2020 community talk. 4 | Content is licensed under [CC-BY](https://creativecommons.org/licenses/by/4.0/). 5 | Reveal.js is licensed under [MIT](https://github.com/hakimel/reveal.js/blob/master/LICENSE). 6 | 7 | **Presenter**: [Milan Curcic](https://github.com/milancurcic) 8 | 9 | **Co-authors**: 10 | [Ondrej Certik](https://github.com/certik), 11 | [Laurence Kedward](https://github.com/lkedward), 12 | [Vincent Magnin](https://github.com/vmagnin), 13 | [Ivan Pribec](https://github.com/ivan-pi), 14 | [Brad Richardson](https://github.com/everythingfunctional), 15 | [Jeremie Vandenplas](https://github.com/jvdp1). 16 | 17 | **Title**: Toward a thriving open source Fortran community 18 | 19 | **Abstract**: 20 | A thriving community around a programming language is essential for onboarding 21 | new users and retaining existing ones. 22 | Besides a few discussion boards and mailing lists, Fortran has not had a 23 | healthy online community in the modern internet era, like many other 24 | programming languages have. 25 | Despite the development of the language, its user base has been 26 | declining as a result. 27 | Many new software projects are being started in languages like C++, Python, 28 | or Julia, despite Fortran being better suited for the task at hand. 29 | In this talk, we will discuss the need for and the ongoing development of the new 30 | fortran-lang (https://fortran-lang.org) community and its suite of projects 31 | that currently include a standard library, package manager, and a website. 32 | Fortran-lang aims to provide a central place for Fortran users, beginning and 33 | expert alike, to find recommended tools, libraries, tutorials, and 34 | discussion venues that are inclusive and welcoming of newcomers. 35 | We believe that an organized community and a home of Fortran on the internet, 36 | in addition to the Standards Committee and compiler developers, 37 | are essential for the long-term thriving—and not just mere survival—of Fortran. 38 | Finally, we will discuss the next steps, the one-year vision, and the 10-year 39 | vision for going forward. 40 | -------------------------------------------------------------------------------- /FortranCon2020-community/assets/FortranCon-community-diagram.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/assets/FortranCon-community-diagram.odg -------------------------------------------------------------------------------- /FortranCon2020-community/assets/monthly-call-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/assets/monthly-call-screenshot.png -------------------------------------------------------------------------------- /FortranCon2020-community/dist/reset.css: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ 2 | v4.0 | 20180602 3 | License: none (public domain) 4 | */ 5 | 6 | html, body, div, span, applet, object, iframe, 7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 8 | a, abbr, acronym, address, big, cite, code, 9 | del, dfn, em, img, ins, kbd, q, s, samp, 10 | small, strike, strong, sub, sup, tt, var, 11 | b, u, i, center, 12 | dl, dt, dd, ol, ul, li, 13 | fieldset, form, label, legend, 14 | table, caption, tbody, tfoot, thead, tr, th, td, 15 | article, aside, canvas, details, embed, 16 | figure, figcaption, footer, header, hgroup, 17 | main, menu, nav, output, ruby, section, summary, 18 | time, mark, audio, video { 19 | margin: 0; 20 | padding: 0; 21 | border: 0; 22 | font-size: 100%; 23 | font: inherit; 24 | vertical-align: baseline; 25 | } 26 | /* HTML5 display-role reset for older browsers */ 27 | article, aside, details, figcaption, figure, 28 | footer, header, hgroup, main, menu, nav, section { 29 | display: block; 30 | } -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/beige.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Beige theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | @import url(fonts/league-gothic/league-gothic.css); 7 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 8 | /********************************************* 9 | * GLOBAL STYLES 10 | *********************************************/ 11 | :root { 12 | --background-color: #f7f3de; 13 | --main-font: Lato, sans-serif; 14 | --main-font-size: 40px; 15 | --main-color: #333; 16 | --block-margin: 20px; 17 | --heading-margin: 0 0 20px 0; 18 | --heading-font: League Gothic, Impact, sans-serif; 19 | --heading-color: #333; 20 | --heading-line-height: 1.2; 21 | --heading-letter-spacing: normal; 22 | --heading-text-transform: uppercase; 23 | --heading-text-shadow: none; 24 | --heading-font-weight: normal; 25 | --heading1-text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); 26 | --heading1-size: 3.77em; 27 | --heading2-size: 2.11em; 28 | --heading3-size: 1.55em; 29 | --heading4-size: 1em; 30 | --code-font: monospace; 31 | --link-color: #8b743d; 32 | --link-color-hover: #c0a86e; 33 | --selection-background-color: rgba(79, 64, 28, 0.99); 34 | --selection-color: #fff; } 35 | 36 | .reveal-viewport { 37 | background: #f7f2d3; 38 | background: -moz-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); 39 | background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, white), color-stop(100%, #f7f2d3)); 40 | background: -webkit-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); 41 | background: -o-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); 42 | background: -ms-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); 43 | background: radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); 44 | background-color: #f7f3de; } 45 | 46 | .reveal { 47 | font-family: "Lato", sans-serif; 48 | font-size: 40px; 49 | font-weight: normal; 50 | color: #333; } 51 | 52 | .reveal ::selection { 53 | color: #fff; 54 | background: rgba(79, 64, 28, 0.99); 55 | text-shadow: none; } 56 | 57 | .reveal ::-moz-selection { 58 | color: #fff; 59 | background: rgba(79, 64, 28, 0.99); 60 | text-shadow: none; } 61 | 62 | .reveal .slides section, 63 | .reveal .slides section > section { 64 | line-height: 1.3; 65 | font-weight: inherit; } 66 | 67 | /********************************************* 68 | * HEADERS 69 | *********************************************/ 70 | .reveal h1, 71 | .reveal h2, 72 | .reveal h3, 73 | .reveal h4, 74 | .reveal h5, 75 | .reveal h6 { 76 | margin: 0 0 20px 0; 77 | color: #333; 78 | font-family: "League Gothic", Impact, sans-serif; 79 | font-weight: normal; 80 | line-height: 1.2; 81 | letter-spacing: normal; 82 | text-transform: uppercase; 83 | text-shadow: none; 84 | word-wrap: break-word; } 85 | 86 | .reveal h1 { 87 | font-size: 3.77em; } 88 | 89 | .reveal h2 { 90 | font-size: 2.11em; } 91 | 92 | .reveal h3 { 93 | font-size: 1.55em; } 94 | 95 | .reveal h4 { 96 | font-size: 1em; } 97 | 98 | .reveal h1 { 99 | text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); } 100 | 101 | /********************************************* 102 | * OTHER 103 | *********************************************/ 104 | .reveal p { 105 | margin: 20px 0; 106 | line-height: 1.3; } 107 | 108 | /* Ensure certain elements are never larger than the slide itself */ 109 | .reveal img, 110 | .reveal video, 111 | .reveal iframe { 112 | max-width: 95%; 113 | max-height: 95%; } 114 | 115 | .reveal strong, 116 | .reveal b { 117 | font-weight: bold; } 118 | 119 | .reveal em { 120 | font-style: italic; } 121 | 122 | .reveal ol, 123 | .reveal dl, 124 | .reveal ul { 125 | display: inline-block; 126 | text-align: left; 127 | margin: 0 0 0 1em; } 128 | 129 | .reveal ol { 130 | list-style-type: decimal; } 131 | 132 | .reveal ul { 133 | list-style-type: disc; } 134 | 135 | .reveal ul ul { 136 | list-style-type: square; } 137 | 138 | .reveal ul ul ul { 139 | list-style-type: circle; } 140 | 141 | .reveal ul ul, 142 | .reveal ul ol, 143 | .reveal ol ol, 144 | .reveal ol ul { 145 | display: block; 146 | margin-left: 40px; } 147 | 148 | .reveal dt { 149 | font-weight: bold; } 150 | 151 | .reveal dd { 152 | margin-left: 40px; } 153 | 154 | .reveal blockquote { 155 | display: block; 156 | position: relative; 157 | width: 70%; 158 | margin: 20px auto; 159 | padding: 5px; 160 | font-style: italic; 161 | background: rgba(255, 255, 255, 0.05); 162 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } 163 | 164 | .reveal blockquote p:first-child, 165 | .reveal blockquote p:last-child { 166 | display: inline-block; } 167 | 168 | .reveal q { 169 | font-style: italic; } 170 | 171 | .reveal pre { 172 | display: block; 173 | position: relative; 174 | width: 90%; 175 | margin: 20px auto; 176 | text-align: left; 177 | font-size: 0.55em; 178 | font-family: monospace; 179 | line-height: 1.2em; 180 | word-wrap: break-word; 181 | box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } 182 | 183 | .reveal code { 184 | font-family: monospace; 185 | text-transform: none; } 186 | 187 | .reveal pre code { 188 | display: block; 189 | padding: 5px; 190 | overflow: auto; 191 | max-height: 400px; 192 | word-wrap: normal; } 193 | 194 | .reveal table { 195 | margin: auto; 196 | border-collapse: collapse; 197 | border-spacing: 0; } 198 | 199 | .reveal table th { 200 | font-weight: bold; } 201 | 202 | .reveal table th, 203 | .reveal table td { 204 | text-align: left; 205 | padding: 0.2em 0.5em 0.2em 0.5em; 206 | border-bottom: 1px solid; } 207 | 208 | .reveal table th[align="center"], 209 | .reveal table td[align="center"] { 210 | text-align: center; } 211 | 212 | .reveal table th[align="right"], 213 | .reveal table td[align="right"] { 214 | text-align: right; } 215 | 216 | .reveal table tbody tr:last-child th, 217 | .reveal table tbody tr:last-child td { 218 | border-bottom: none; } 219 | 220 | .reveal sup { 221 | vertical-align: super; 222 | font-size: smaller; } 223 | 224 | .reveal sub { 225 | vertical-align: sub; 226 | font-size: smaller; } 227 | 228 | .reveal small { 229 | display: inline-block; 230 | font-size: 0.6em; 231 | line-height: 1.2em; 232 | vertical-align: top; } 233 | 234 | .reveal small * { 235 | vertical-align: top; } 236 | 237 | .reveal img { 238 | margin: 20px 0; } 239 | 240 | /********************************************* 241 | * LINKS 242 | *********************************************/ 243 | .reveal a { 244 | color: #8b743d; 245 | text-decoration: none; 246 | transition: color .15s ease; } 247 | 248 | .reveal a:hover { 249 | color: #c0a86e; 250 | text-shadow: none; 251 | border: none; } 252 | 253 | .reveal .roll span:after { 254 | color: #fff; 255 | background: #564826; } 256 | 257 | /********************************************* 258 | * Frame helper 259 | *********************************************/ 260 | .reveal .r-frame { 261 | border: 4px solid #333; 262 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } 263 | 264 | .reveal a .r-frame { 265 | transition: all .15s linear; } 266 | 267 | .reveal a:hover .r-frame { 268 | border-color: #8b743d; 269 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } 270 | 271 | /********************************************* 272 | * NAVIGATION CONTROLS 273 | *********************************************/ 274 | .reveal .controls { 275 | color: #8b743d; } 276 | 277 | /********************************************* 278 | * PROGRESS BAR 279 | *********************************************/ 280 | .reveal .progress { 281 | background: rgba(0, 0, 0, 0.2); 282 | color: #8b743d; } 283 | 284 | /********************************************* 285 | * PRINT BACKGROUND 286 | *********************************************/ 287 | @media print { 288 | .backgrounds { 289 | background-color: #f7f3de; } } 290 | -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/black.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Black theme for reveal.js. This is the opposite of the 'white' theme. 3 | * 4 | * By Hakim El Hattab, http://hakim.se 5 | */ 6 | @import url(fonts/source-sans-pro/source-sans-pro.css); 7 | section.has-light-background, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4, section.has-light-background h5, section.has-light-background h6 { 8 | color: #222; } 9 | 10 | /********************************************* 11 | * GLOBAL STYLES 12 | *********************************************/ 13 | :root { 14 | --background-color: #191919; 15 | --main-font: Source Sans Pro, Helvetica, sans-serif; 16 | --main-font-size: 42px; 17 | --main-color: #fff; 18 | --block-margin: 20px; 19 | --heading-margin: 0 0 20px 0; 20 | --heading-font: Source Sans Pro, Helvetica, sans-serif; 21 | --heading-color: #fff; 22 | --heading-line-height: 1.2; 23 | --heading-letter-spacing: normal; 24 | --heading-text-transform: uppercase; 25 | --heading-text-shadow: none; 26 | --heading-font-weight: 600; 27 | --heading1-text-shadow: none; 28 | --heading1-size: 2.5em; 29 | --heading2-size: 1.6em; 30 | --heading3-size: 1.3em; 31 | --heading4-size: 1em; 32 | --code-font: monospace; 33 | --link-color: #42affa; 34 | --link-color-hover: #8dcffc; 35 | --selection-background-color: #bee4fd; 36 | --selection-color: #fff; } 37 | 38 | .reveal-viewport { 39 | background: #191919; 40 | background-color: #191919; } 41 | 42 | .reveal { 43 | font-family: "Source Sans Pro", Helvetica, sans-serif; 44 | font-size: 42px; 45 | font-weight: normal; 46 | color: #fff; } 47 | 48 | .reveal ::selection { 49 | color: #fff; 50 | background: #bee4fd; 51 | text-shadow: none; } 52 | 53 | .reveal ::-moz-selection { 54 | color: #fff; 55 | background: #bee4fd; 56 | text-shadow: none; } 57 | 58 | .reveal .slides section, 59 | .reveal .slides section > section { 60 | line-height: 1.3; 61 | font-weight: inherit; } 62 | 63 | /********************************************* 64 | * HEADERS 65 | *********************************************/ 66 | .reveal h1, 67 | .reveal h2, 68 | .reveal h3, 69 | .reveal h4, 70 | .reveal h5, 71 | .reveal h6 { 72 | margin: 0 0 20px 0; 73 | color: #fff; 74 | font-family: "Source Sans Pro", Helvetica, sans-serif; 75 | font-weight: 600; 76 | line-height: 1.2; 77 | letter-spacing: normal; 78 | text-transform: uppercase; 79 | text-shadow: none; 80 | word-wrap: break-word; } 81 | 82 | .reveal h1 { 83 | font-size: 2.5em; } 84 | 85 | .reveal h2 { 86 | font-size: 1.6em; } 87 | 88 | .reveal h3 { 89 | font-size: 1.3em; } 90 | 91 | .reveal h4 { 92 | font-size: 1em; } 93 | 94 | .reveal h1 { 95 | text-shadow: none; } 96 | 97 | /********************************************* 98 | * OTHER 99 | *********************************************/ 100 | .reveal p { 101 | margin: 20px 0; 102 | line-height: 1.3; } 103 | 104 | /* Ensure certain elements are never larger than the slide itself */ 105 | .reveal img, 106 | .reveal video, 107 | .reveal iframe { 108 | max-width: 95%; 109 | max-height: 95%; } 110 | 111 | .reveal strong, 112 | .reveal b { 113 | font-weight: bold; } 114 | 115 | .reveal em { 116 | font-style: italic; } 117 | 118 | .reveal ol, 119 | .reveal dl, 120 | .reveal ul { 121 | display: inline-block; 122 | text-align: left; 123 | margin: 0 0 0 1em; } 124 | 125 | .reveal ol { 126 | list-style-type: decimal; } 127 | 128 | .reveal ul { 129 | list-style-type: disc; } 130 | 131 | .reveal ul ul { 132 | list-style-type: square; } 133 | 134 | .reveal ul ul ul { 135 | list-style-type: circle; } 136 | 137 | .reveal ul ul, 138 | .reveal ul ol, 139 | .reveal ol ol, 140 | .reveal ol ul { 141 | display: block; 142 | margin-left: 40px; } 143 | 144 | .reveal dt { 145 | font-weight: bold; } 146 | 147 | .reveal dd { 148 | margin-left: 40px; } 149 | 150 | .reveal blockquote { 151 | display: block; 152 | position: relative; 153 | width: 70%; 154 | margin: 20px auto; 155 | padding: 5px; 156 | font-style: italic; 157 | background: rgba(255, 255, 255, 0.05); 158 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } 159 | 160 | .reveal blockquote p:first-child, 161 | .reveal blockquote p:last-child { 162 | display: inline-block; } 163 | 164 | .reveal q { 165 | font-style: italic; } 166 | 167 | .reveal pre { 168 | display: block; 169 | position: relative; 170 | width: 90%; 171 | margin: 20px auto; 172 | text-align: left; 173 | font-size: 0.55em; 174 | font-family: monospace; 175 | line-height: 1.2em; 176 | word-wrap: break-word; 177 | box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } 178 | 179 | .reveal code { 180 | font-family: monospace; 181 | text-transform: none; } 182 | 183 | .reveal pre code { 184 | display: block; 185 | padding: 5px; 186 | overflow: auto; 187 | max-height: 400px; 188 | word-wrap: normal; } 189 | 190 | .reveal table { 191 | margin: auto; 192 | border-collapse: collapse; 193 | border-spacing: 0; } 194 | 195 | .reveal table th { 196 | font-weight: bold; } 197 | 198 | .reveal table th, 199 | .reveal table td { 200 | text-align: left; 201 | padding: 0.2em 0.5em 0.2em 0.5em; 202 | border-bottom: 1px solid; } 203 | 204 | .reveal table th[align="center"], 205 | .reveal table td[align="center"] { 206 | text-align: center; } 207 | 208 | .reveal table th[align="right"], 209 | .reveal table td[align="right"] { 210 | text-align: right; } 211 | 212 | .reveal table tbody tr:last-child th, 213 | .reveal table tbody tr:last-child td { 214 | border-bottom: none; } 215 | 216 | .reveal sup { 217 | vertical-align: super; 218 | font-size: smaller; } 219 | 220 | .reveal sub { 221 | vertical-align: sub; 222 | font-size: smaller; } 223 | 224 | .reveal small { 225 | display: inline-block; 226 | font-size: 0.6em; 227 | line-height: 1.2em; 228 | vertical-align: top; } 229 | 230 | .reveal small * { 231 | vertical-align: top; } 232 | 233 | .reveal img { 234 | margin: 20px 0; } 235 | 236 | /********************************************* 237 | * LINKS 238 | *********************************************/ 239 | .reveal a { 240 | color: #42affa; 241 | text-decoration: none; 242 | transition: color .15s ease; } 243 | 244 | .reveal a:hover { 245 | color: #8dcffc; 246 | text-shadow: none; 247 | border: none; } 248 | 249 | .reveal .roll span:after { 250 | color: #fff; 251 | background: #068de9; } 252 | 253 | /********************************************* 254 | * Frame helper 255 | *********************************************/ 256 | .reveal .r-frame { 257 | border: 4px solid #fff; 258 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } 259 | 260 | .reveal a .r-frame { 261 | transition: all .15s linear; } 262 | 263 | .reveal a:hover .r-frame { 264 | border-color: #42affa; 265 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } 266 | 267 | /********************************************* 268 | * NAVIGATION CONTROLS 269 | *********************************************/ 270 | .reveal .controls { 271 | color: #42affa; } 272 | 273 | /********************************************* 274 | * PROGRESS BAR 275 | *********************************************/ 276 | .reveal .progress { 277 | background: rgba(0, 0, 0, 0.2); 278 | color: #42affa; } 279 | 280 | /********************************************* 281 | * PRINT BACKGROUND 282 | *********************************************/ 283 | @media print { 284 | .backgrounds { 285 | background-color: #191919; } } 286 | -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/blood.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Blood theme for reveal.js 3 | * Author: Walther http://github.com/Walther 4 | * 5 | * Designed to be used with highlight.js theme 6 | * "monokai_sublime.css" available from 7 | * https://github.com/isagalaev/highlight.js/ 8 | * 9 | * For other themes, change $codeBackground accordingly. 10 | * 11 | */ 12 | @import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic); 13 | /********************************************* 14 | * GLOBAL STYLES 15 | *********************************************/ 16 | :root { 17 | --background-color: #222; 18 | --main-font: Ubuntu, sans-serif; 19 | --main-font-size: 40px; 20 | --main-color: #eee; 21 | --block-margin: 20px; 22 | --heading-margin: 0 0 20px 0; 23 | --heading-font: Ubuntu, sans-serif; 24 | --heading-color: #eee; 25 | --heading-line-height: 1.2; 26 | --heading-letter-spacing: normal; 27 | --heading-text-transform: uppercase; 28 | --heading-text-shadow: 2px 2px 2px #222; 29 | --heading-font-weight: normal; 30 | --heading1-text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); 31 | --heading1-size: 3.77em; 32 | --heading2-size: 2.11em; 33 | --heading3-size: 1.55em; 34 | --heading4-size: 1em; 35 | --code-font: monospace; 36 | --link-color: #a23; 37 | --link-color-hover: #dd5566; 38 | --selection-background-color: #a23; 39 | --selection-color: #fff; } 40 | 41 | .reveal-viewport { 42 | background: #222; 43 | background-color: #222; } 44 | 45 | .reveal { 46 | font-family: Ubuntu, "sans-serif"; 47 | font-size: 40px; 48 | font-weight: normal; 49 | color: #eee; } 50 | 51 | .reveal ::selection { 52 | color: #fff; 53 | background: #a23; 54 | text-shadow: none; } 55 | 56 | .reveal ::-moz-selection { 57 | color: #fff; 58 | background: #a23; 59 | text-shadow: none; } 60 | 61 | .reveal .slides section, 62 | .reveal .slides section > section { 63 | line-height: 1.3; 64 | font-weight: inherit; } 65 | 66 | /********************************************* 67 | * HEADERS 68 | *********************************************/ 69 | .reveal h1, 70 | .reveal h2, 71 | .reveal h3, 72 | .reveal h4, 73 | .reveal h5, 74 | .reveal h6 { 75 | margin: 0 0 20px 0; 76 | color: #eee; 77 | font-family: Ubuntu, "sans-serif"; 78 | font-weight: normal; 79 | line-height: 1.2; 80 | letter-spacing: normal; 81 | text-transform: uppercase; 82 | text-shadow: 2px 2px 2px #222; 83 | word-wrap: break-word; } 84 | 85 | .reveal h1 { 86 | font-size: 3.77em; } 87 | 88 | .reveal h2 { 89 | font-size: 2.11em; } 90 | 91 | .reveal h3 { 92 | font-size: 1.55em; } 93 | 94 | .reveal h4 { 95 | font-size: 1em; } 96 | 97 | .reveal h1 { 98 | text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); } 99 | 100 | /********************************************* 101 | * OTHER 102 | *********************************************/ 103 | .reveal p { 104 | margin: 20px 0; 105 | line-height: 1.3; } 106 | 107 | /* Ensure certain elements are never larger than the slide itself */ 108 | .reveal img, 109 | .reveal video, 110 | .reveal iframe { 111 | max-width: 95%; 112 | max-height: 95%; } 113 | 114 | .reveal strong, 115 | .reveal b { 116 | font-weight: bold; } 117 | 118 | .reveal em { 119 | font-style: italic; } 120 | 121 | .reveal ol, 122 | .reveal dl, 123 | .reveal ul { 124 | display: inline-block; 125 | text-align: left; 126 | margin: 0 0 0 1em; } 127 | 128 | .reveal ol { 129 | list-style-type: decimal; } 130 | 131 | .reveal ul { 132 | list-style-type: disc; } 133 | 134 | .reveal ul ul { 135 | list-style-type: square; } 136 | 137 | .reveal ul ul ul { 138 | list-style-type: circle; } 139 | 140 | .reveal ul ul, 141 | .reveal ul ol, 142 | .reveal ol ol, 143 | .reveal ol ul { 144 | display: block; 145 | margin-left: 40px; } 146 | 147 | .reveal dt { 148 | font-weight: bold; } 149 | 150 | .reveal dd { 151 | margin-left: 40px; } 152 | 153 | .reveal blockquote { 154 | display: block; 155 | position: relative; 156 | width: 70%; 157 | margin: 20px auto; 158 | padding: 5px; 159 | font-style: italic; 160 | background: rgba(255, 255, 255, 0.05); 161 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } 162 | 163 | .reveal blockquote p:first-child, 164 | .reveal blockquote p:last-child { 165 | display: inline-block; } 166 | 167 | .reveal q { 168 | font-style: italic; } 169 | 170 | .reveal pre { 171 | display: block; 172 | position: relative; 173 | width: 90%; 174 | margin: 20px auto; 175 | text-align: left; 176 | font-size: 0.55em; 177 | font-family: monospace; 178 | line-height: 1.2em; 179 | word-wrap: break-word; 180 | box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } 181 | 182 | .reveal code { 183 | font-family: monospace; 184 | text-transform: none; } 185 | 186 | .reveal pre code { 187 | display: block; 188 | padding: 5px; 189 | overflow: auto; 190 | max-height: 400px; 191 | word-wrap: normal; } 192 | 193 | .reveal table { 194 | margin: auto; 195 | border-collapse: collapse; 196 | border-spacing: 0; } 197 | 198 | .reveal table th { 199 | font-weight: bold; } 200 | 201 | .reveal table th, 202 | .reveal table td { 203 | text-align: left; 204 | padding: 0.2em 0.5em 0.2em 0.5em; 205 | border-bottom: 1px solid; } 206 | 207 | .reveal table th[align="center"], 208 | .reveal table td[align="center"] { 209 | text-align: center; } 210 | 211 | .reveal table th[align="right"], 212 | .reveal table td[align="right"] { 213 | text-align: right; } 214 | 215 | .reveal table tbody tr:last-child th, 216 | .reveal table tbody tr:last-child td { 217 | border-bottom: none; } 218 | 219 | .reveal sup { 220 | vertical-align: super; 221 | font-size: smaller; } 222 | 223 | .reveal sub { 224 | vertical-align: sub; 225 | font-size: smaller; } 226 | 227 | .reveal small { 228 | display: inline-block; 229 | font-size: 0.6em; 230 | line-height: 1.2em; 231 | vertical-align: top; } 232 | 233 | .reveal small * { 234 | vertical-align: top; } 235 | 236 | .reveal img { 237 | margin: 20px 0; } 238 | 239 | /********************************************* 240 | * LINKS 241 | *********************************************/ 242 | .reveal a { 243 | color: #a23; 244 | text-decoration: none; 245 | transition: color .15s ease; } 246 | 247 | .reveal a:hover { 248 | color: #dd5566; 249 | text-shadow: none; 250 | border: none; } 251 | 252 | .reveal .roll span:after { 253 | color: #fff; 254 | background: #6a1520; } 255 | 256 | /********************************************* 257 | * Frame helper 258 | *********************************************/ 259 | .reveal .r-frame { 260 | border: 4px solid #eee; 261 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } 262 | 263 | .reveal a .r-frame { 264 | transition: all .15s linear; } 265 | 266 | .reveal a:hover .r-frame { 267 | border-color: #a23; 268 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } 269 | 270 | /********************************************* 271 | * NAVIGATION CONTROLS 272 | *********************************************/ 273 | .reveal .controls { 274 | color: #a23; } 275 | 276 | /********************************************* 277 | * PROGRESS BAR 278 | *********************************************/ 279 | .reveal .progress { 280 | background: rgba(0, 0, 0, 0.2); 281 | color: #a23; } 282 | 283 | /********************************************* 284 | * PRINT BACKGROUND 285 | *********************************************/ 286 | @media print { 287 | .backgrounds { 288 | background-color: #222; } } 289 | 290 | .reveal p { 291 | font-weight: 300; 292 | text-shadow: 1px 1px #222; } 293 | 294 | .reveal h1, 295 | .reveal h2, 296 | .reveal h3, 297 | .reveal h4, 298 | .reveal h5, 299 | .reveal h6 { 300 | font-weight: 700; } 301 | 302 | .reveal p code { 303 | background-color: #23241f; 304 | display: inline-block; 305 | border-radius: 7px; } 306 | 307 | .reveal small code { 308 | vertical-align: baseline; } 309 | -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/league-gothic/LICENSE: -------------------------------------------------------------------------------- 1 | SIL Open Font License (OFL) 2 | http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL 3 | -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/league-gothic/league-gothic.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'League Gothic'; 3 | src: url('league-gothic.eot'); 4 | src: url('league-gothic.eot?#iefix') format('embedded-opentype'), 5 | url('league-gothic.woff') format('woff'), 6 | url('league-gothic.ttf') format('truetype'); 7 | 8 | font-weight: normal; 9 | font-style: normal; 10 | } -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/league-gothic/league-gothic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/dist/theme/fonts/league-gothic/league-gothic.eot -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/league-gothic/league-gothic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/dist/theme/fonts/league-gothic/league-gothic.ttf -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/league-gothic/league-gothic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/dist/theme/fonts/league-gothic/league-gothic.woff -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/source-sans-pro/LICENSE: -------------------------------------------------------------------------------- 1 | SIL Open Font License 2 | 3 | Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name ‘Source’. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. 4 | 5 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 6 | This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL 7 | 8 | —————————————————————————————- 9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 10 | —————————————————————————————- 11 | 12 | PREAMBLE 13 | The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. 14 | 15 | The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. 16 | 17 | DEFINITIONS 18 | “Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. 19 | 20 | “Reserved Font Name” refers to any names specified as such after the copyright statement(s). 21 | 22 | “Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s). 23 | 24 | “Modified Version” refers to any derivative made by adding to, deleting, or substituting—in part or in whole—any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. 25 | 26 | “Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. 27 | 28 | PERMISSION & CONDITIONS 29 | Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 30 | 31 | 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 32 | 33 | 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 34 | 35 | 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 36 | 37 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 38 | 39 | 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. 40 | 41 | TERMINATION 42 | This license becomes null and void if any of the above conditions are not met. 43 | 44 | DISCLAIMER 45 | THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/fonts/source-sans-pro/source-sans-pro.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Source Sans Pro'; 3 | src: url('source-sans-pro-regular.eot'); 4 | src: url('source-sans-pro-regular.eot?#iefix') format('embedded-opentype'), 5 | url('source-sans-pro-regular.woff') format('woff'), 6 | url('source-sans-pro-regular.ttf') format('truetype'); 7 | font-weight: normal; 8 | font-style: normal; 9 | } 10 | 11 | @font-face { 12 | font-family: 'Source Sans Pro'; 13 | src: url('source-sans-pro-italic.eot'); 14 | src: url('source-sans-pro-italic.eot?#iefix') format('embedded-opentype'), 15 | url('source-sans-pro-italic.woff') format('woff'), 16 | url('source-sans-pro-italic.ttf') format('truetype'); 17 | font-weight: normal; 18 | font-style: italic; 19 | } 20 | 21 | @font-face { 22 | font-family: 'Source Sans Pro'; 23 | src: url('source-sans-pro-semibold.eot'); 24 | src: url('source-sans-pro-semibold.eot?#iefix') format('embedded-opentype'), 25 | url('source-sans-pro-semibold.woff') format('woff'), 26 | url('source-sans-pro-semibold.ttf') format('truetype'); 27 | font-weight: 600; 28 | font-style: normal; 29 | } 30 | 31 | @font-face { 32 | font-family: 'Source Sans Pro'; 33 | src: url('source-sans-pro-semibolditalic.eot'); 34 | src: url('source-sans-pro-semibolditalic.eot?#iefix') format('embedded-opentype'), 35 | url('source-sans-pro-semibolditalic.woff') format('woff'), 36 | url('source-sans-pro-semibolditalic.ttf') format('truetype'); 37 | font-weight: 600; 38 | font-style: italic; 39 | } -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/league.css: -------------------------------------------------------------------------------- 1 | /** 2 | * League theme for reveal.js. 3 | * 4 | * This was the default theme pre-3.0.0. 5 | * 6 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 7 | */ 8 | @import url(fonts/league-gothic/league-gothic.css); 9 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 10 | /********************************************* 11 | * GLOBAL STYLES 12 | *********************************************/ 13 | :root { 14 | --background-color: #2b2b2b; 15 | --main-font: Lato, sans-serif; 16 | --main-font-size: 40px; 17 | --main-color: #eee; 18 | --block-margin: 20px; 19 | --heading-margin: 0 0 20px 0; 20 | --heading-font: League Gothic, Impact, sans-serif; 21 | --heading-color: #eee; 22 | --heading-line-height: 1.2; 23 | --heading-letter-spacing: normal; 24 | --heading-text-transform: uppercase; 25 | --heading-text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); 26 | --heading-font-weight: normal; 27 | --heading1-text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); 28 | --heading1-size: 3.77em; 29 | --heading2-size: 2.11em; 30 | --heading3-size: 1.55em; 31 | --heading4-size: 1em; 32 | --code-font: monospace; 33 | --link-color: #13DAEC; 34 | --link-color-hover: #71e9f4; 35 | --selection-background-color: #FF5E99; 36 | --selection-color: #fff; } 37 | 38 | .reveal-viewport { 39 | background: #1c1e20; 40 | background: -moz-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); 41 | background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #555a5f), color-stop(100%, #1c1e20)); 42 | background: -webkit-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); 43 | background: -o-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); 44 | background: -ms-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); 45 | background: radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); 46 | background-color: #2b2b2b; } 47 | 48 | .reveal { 49 | font-family: "Lato", sans-serif; 50 | font-size: 40px; 51 | font-weight: normal; 52 | color: #eee; } 53 | 54 | .reveal ::selection { 55 | color: #fff; 56 | background: #FF5E99; 57 | text-shadow: none; } 58 | 59 | .reveal ::-moz-selection { 60 | color: #fff; 61 | background: #FF5E99; 62 | text-shadow: none; } 63 | 64 | .reveal .slides section, 65 | .reveal .slides section > section { 66 | line-height: 1.3; 67 | font-weight: inherit; } 68 | 69 | /********************************************* 70 | * HEADERS 71 | *********************************************/ 72 | .reveal h1, 73 | .reveal h2, 74 | .reveal h3, 75 | .reveal h4, 76 | .reveal h5, 77 | .reveal h6 { 78 | margin: 0 0 20px 0; 79 | color: #eee; 80 | font-family: "League Gothic", Impact, sans-serif; 81 | font-weight: normal; 82 | line-height: 1.2; 83 | letter-spacing: normal; 84 | text-transform: uppercase; 85 | text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); 86 | word-wrap: break-word; } 87 | 88 | .reveal h1 { 89 | font-size: 3.77em; } 90 | 91 | .reveal h2 { 92 | font-size: 2.11em; } 93 | 94 | .reveal h3 { 95 | font-size: 1.55em; } 96 | 97 | .reveal h4 { 98 | font-size: 1em; } 99 | 100 | .reveal h1 { 101 | text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); } 102 | 103 | /********************************************* 104 | * OTHER 105 | *********************************************/ 106 | .reveal p { 107 | margin: 20px 0; 108 | line-height: 1.3; } 109 | 110 | /* Ensure certain elements are never larger than the slide itself */ 111 | .reveal img, 112 | .reveal video, 113 | .reveal iframe { 114 | max-width: 95%; 115 | max-height: 95%; } 116 | 117 | .reveal strong, 118 | .reveal b { 119 | font-weight: bold; } 120 | 121 | .reveal em { 122 | font-style: italic; } 123 | 124 | .reveal ol, 125 | .reveal dl, 126 | .reveal ul { 127 | display: inline-block; 128 | text-align: left; 129 | margin: 0 0 0 1em; } 130 | 131 | .reveal ol { 132 | list-style-type: decimal; } 133 | 134 | .reveal ul { 135 | list-style-type: disc; } 136 | 137 | .reveal ul ul { 138 | list-style-type: square; } 139 | 140 | .reveal ul ul ul { 141 | list-style-type: circle; } 142 | 143 | .reveal ul ul, 144 | .reveal ul ol, 145 | .reveal ol ol, 146 | .reveal ol ul { 147 | display: block; 148 | margin-left: 40px; } 149 | 150 | .reveal dt { 151 | font-weight: bold; } 152 | 153 | .reveal dd { 154 | margin-left: 40px; } 155 | 156 | .reveal blockquote { 157 | display: block; 158 | position: relative; 159 | width: 70%; 160 | margin: 20px auto; 161 | padding: 5px; 162 | font-style: italic; 163 | background: rgba(255, 255, 255, 0.05); 164 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } 165 | 166 | .reveal blockquote p:first-child, 167 | .reveal blockquote p:last-child { 168 | display: inline-block; } 169 | 170 | .reveal q { 171 | font-style: italic; } 172 | 173 | .reveal pre { 174 | display: block; 175 | position: relative; 176 | width: 90%; 177 | margin: 20px auto; 178 | text-align: left; 179 | font-size: 0.55em; 180 | font-family: monospace; 181 | line-height: 1.2em; 182 | word-wrap: break-word; 183 | box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } 184 | 185 | .reveal code { 186 | font-family: monospace; 187 | text-transform: none; } 188 | 189 | .reveal pre code { 190 | display: block; 191 | padding: 5px; 192 | overflow: auto; 193 | max-height: 400px; 194 | word-wrap: normal; } 195 | 196 | .reveal table { 197 | margin: auto; 198 | border-collapse: collapse; 199 | border-spacing: 0; } 200 | 201 | .reveal table th { 202 | font-weight: bold; } 203 | 204 | .reveal table th, 205 | .reveal table td { 206 | text-align: left; 207 | padding: 0.2em 0.5em 0.2em 0.5em; 208 | border-bottom: 1px solid; } 209 | 210 | .reveal table th[align="center"], 211 | .reveal table td[align="center"] { 212 | text-align: center; } 213 | 214 | .reveal table th[align="right"], 215 | .reveal table td[align="right"] { 216 | text-align: right; } 217 | 218 | .reveal table tbody tr:last-child th, 219 | .reveal table tbody tr:last-child td { 220 | border-bottom: none; } 221 | 222 | .reveal sup { 223 | vertical-align: super; 224 | font-size: smaller; } 225 | 226 | .reveal sub { 227 | vertical-align: sub; 228 | font-size: smaller; } 229 | 230 | .reveal small { 231 | display: inline-block; 232 | font-size: 0.6em; 233 | line-height: 1.2em; 234 | vertical-align: top; } 235 | 236 | .reveal small * { 237 | vertical-align: top; } 238 | 239 | .reveal img { 240 | margin: 20px 0; } 241 | 242 | /********************************************* 243 | * LINKS 244 | *********************************************/ 245 | .reveal a { 246 | color: #13DAEC; 247 | text-decoration: none; 248 | transition: color .15s ease; } 249 | 250 | .reveal a:hover { 251 | color: #71e9f4; 252 | text-shadow: none; 253 | border: none; } 254 | 255 | .reveal .roll span:after { 256 | color: #fff; 257 | background: #0d99a5; } 258 | 259 | /********************************************* 260 | * Frame helper 261 | *********************************************/ 262 | .reveal .r-frame { 263 | border: 4px solid #eee; 264 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } 265 | 266 | .reveal a .r-frame { 267 | transition: all .15s linear; } 268 | 269 | .reveal a:hover .r-frame { 270 | border-color: #13DAEC; 271 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } 272 | 273 | /********************************************* 274 | * NAVIGATION CONTROLS 275 | *********************************************/ 276 | .reveal .controls { 277 | color: #13DAEC; } 278 | 279 | /********************************************* 280 | * PROGRESS BAR 281 | *********************************************/ 282 | .reveal .progress { 283 | background: rgba(0, 0, 0, 0.2); 284 | color: #13DAEC; } 285 | 286 | /********************************************* 287 | * PRINT BACKGROUND 288 | *********************************************/ 289 | @media print { 290 | .backgrounds { 291 | background-color: #2b2b2b; } } 292 | -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/moon.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Solarized Dark theme for reveal.js. 3 | * Author: Achim Staebler 4 | */ 5 | @import url(fonts/league-gothic/league-gothic.css); 6 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 7 | /** 8 | * Solarized colors by Ethan Schoonover 9 | */ 10 | html * { 11 | color-profile: sRGB; 12 | rendering-intent: auto; } 13 | 14 | /********************************************* 15 | * GLOBAL STYLES 16 | *********************************************/ 17 | :root { 18 | --background-color: #002b36; 19 | --main-font: Lato, sans-serif; 20 | --main-font-size: 40px; 21 | --main-color: #93a1a1; 22 | --block-margin: 20px; 23 | --heading-margin: 0 0 20px 0; 24 | --heading-font: League Gothic, Impact, sans-serif; 25 | --heading-color: #eee8d5; 26 | --heading-line-height: 1.2; 27 | --heading-letter-spacing: normal; 28 | --heading-text-transform: uppercase; 29 | --heading-text-shadow: none; 30 | --heading-font-weight: normal; 31 | --heading1-text-shadow: none; 32 | --heading1-size: 3.77em; 33 | --heading2-size: 2.11em; 34 | --heading3-size: 1.55em; 35 | --heading4-size: 1em; 36 | --code-font: monospace; 37 | --link-color: #268bd2; 38 | --link-color-hover: #78b9e6; 39 | --selection-background-color: #d33682; 40 | --selection-color: #fff; } 41 | 42 | .reveal-viewport { 43 | background: #002b36; 44 | background-color: #002b36; } 45 | 46 | .reveal { 47 | font-family: "Lato", sans-serif; 48 | font-size: 40px; 49 | font-weight: normal; 50 | color: #93a1a1; } 51 | 52 | .reveal ::selection { 53 | color: #fff; 54 | background: #d33682; 55 | text-shadow: none; } 56 | 57 | .reveal ::-moz-selection { 58 | color: #fff; 59 | background: #d33682; 60 | text-shadow: none; } 61 | 62 | .reveal .slides section, 63 | .reveal .slides section > section { 64 | line-height: 1.3; 65 | font-weight: inherit; } 66 | 67 | /********************************************* 68 | * HEADERS 69 | *********************************************/ 70 | .reveal h1, 71 | .reveal h2, 72 | .reveal h3, 73 | .reveal h4, 74 | .reveal h5, 75 | .reveal h6 { 76 | margin: 0 0 20px 0; 77 | color: #eee8d5; 78 | font-family: "League Gothic", Impact, sans-serif; 79 | font-weight: normal; 80 | line-height: 1.2; 81 | letter-spacing: normal; 82 | text-transform: uppercase; 83 | text-shadow: none; 84 | word-wrap: break-word; } 85 | 86 | .reveal h1 { 87 | font-size: 3.77em; } 88 | 89 | .reveal h2 { 90 | font-size: 2.11em; } 91 | 92 | .reveal h3 { 93 | font-size: 1.55em; } 94 | 95 | .reveal h4 { 96 | font-size: 1em; } 97 | 98 | .reveal h1 { 99 | text-shadow: none; } 100 | 101 | /********************************************* 102 | * OTHER 103 | *********************************************/ 104 | .reveal p { 105 | margin: 20px 0; 106 | line-height: 1.3; } 107 | 108 | /* Ensure certain elements are never larger than the slide itself */ 109 | .reveal img, 110 | .reveal video, 111 | .reveal iframe { 112 | max-width: 95%; 113 | max-height: 95%; } 114 | 115 | .reveal strong, 116 | .reveal b { 117 | font-weight: bold; } 118 | 119 | .reveal em { 120 | font-style: italic; } 121 | 122 | .reveal ol, 123 | .reveal dl, 124 | .reveal ul { 125 | display: inline-block; 126 | text-align: left; 127 | margin: 0 0 0 1em; } 128 | 129 | .reveal ol { 130 | list-style-type: decimal; } 131 | 132 | .reveal ul { 133 | list-style-type: disc; } 134 | 135 | .reveal ul ul { 136 | list-style-type: square; } 137 | 138 | .reveal ul ul ul { 139 | list-style-type: circle; } 140 | 141 | .reveal ul ul, 142 | .reveal ul ol, 143 | .reveal ol ol, 144 | .reveal ol ul { 145 | display: block; 146 | margin-left: 40px; } 147 | 148 | .reveal dt { 149 | font-weight: bold; } 150 | 151 | .reveal dd { 152 | margin-left: 40px; } 153 | 154 | .reveal blockquote { 155 | display: block; 156 | position: relative; 157 | width: 70%; 158 | margin: 20px auto; 159 | padding: 5px; 160 | font-style: italic; 161 | background: rgba(255, 255, 255, 0.05); 162 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } 163 | 164 | .reveal blockquote p:first-child, 165 | .reveal blockquote p:last-child { 166 | display: inline-block; } 167 | 168 | .reveal q { 169 | font-style: italic; } 170 | 171 | .reveal pre { 172 | display: block; 173 | position: relative; 174 | width: 90%; 175 | margin: 20px auto; 176 | text-align: left; 177 | font-size: 0.55em; 178 | font-family: monospace; 179 | line-height: 1.2em; 180 | word-wrap: break-word; 181 | box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } 182 | 183 | .reveal code { 184 | font-family: monospace; 185 | text-transform: none; } 186 | 187 | .reveal pre code { 188 | display: block; 189 | padding: 5px; 190 | overflow: auto; 191 | max-height: 400px; 192 | word-wrap: normal; } 193 | 194 | .reveal table { 195 | margin: auto; 196 | border-collapse: collapse; 197 | border-spacing: 0; } 198 | 199 | .reveal table th { 200 | font-weight: bold; } 201 | 202 | .reveal table th, 203 | .reveal table td { 204 | text-align: left; 205 | padding: 0.2em 0.5em 0.2em 0.5em; 206 | border-bottom: 1px solid; } 207 | 208 | .reveal table th[align="center"], 209 | .reveal table td[align="center"] { 210 | text-align: center; } 211 | 212 | .reveal table th[align="right"], 213 | .reveal table td[align="right"] { 214 | text-align: right; } 215 | 216 | .reveal table tbody tr:last-child th, 217 | .reveal table tbody tr:last-child td { 218 | border-bottom: none; } 219 | 220 | .reveal sup { 221 | vertical-align: super; 222 | font-size: smaller; } 223 | 224 | .reveal sub { 225 | vertical-align: sub; 226 | font-size: smaller; } 227 | 228 | .reveal small { 229 | display: inline-block; 230 | font-size: 0.6em; 231 | line-height: 1.2em; 232 | vertical-align: top; } 233 | 234 | .reveal small * { 235 | vertical-align: top; } 236 | 237 | .reveal img { 238 | margin: 20px 0; } 239 | 240 | /********************************************* 241 | * LINKS 242 | *********************************************/ 243 | .reveal a { 244 | color: #268bd2; 245 | text-decoration: none; 246 | transition: color .15s ease; } 247 | 248 | .reveal a:hover { 249 | color: #78b9e6; 250 | text-shadow: none; 251 | border: none; } 252 | 253 | .reveal .roll span:after { 254 | color: #fff; 255 | background: #1a6091; } 256 | 257 | /********************************************* 258 | * Frame helper 259 | *********************************************/ 260 | .reveal .r-frame { 261 | border: 4px solid #93a1a1; 262 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } 263 | 264 | .reveal a .r-frame { 265 | transition: all .15s linear; } 266 | 267 | .reveal a:hover .r-frame { 268 | border-color: #268bd2; 269 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } 270 | 271 | /********************************************* 272 | * NAVIGATION CONTROLS 273 | *********************************************/ 274 | .reveal .controls { 275 | color: #268bd2; } 276 | 277 | /********************************************* 278 | * PROGRESS BAR 279 | *********************************************/ 280 | .reveal .progress { 281 | background: rgba(0, 0, 0, 0.2); 282 | color: #268bd2; } 283 | 284 | /********************************************* 285 | * PRINT BACKGROUND 286 | *********************************************/ 287 | @media print { 288 | .backgrounds { 289 | background-color: #002b36; } } 290 | -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/night.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Black theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | @import url(https://fonts.googleapis.com/css?family=Montserrat:700); 7 | @import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic); 8 | /********************************************* 9 | * GLOBAL STYLES 10 | *********************************************/ 11 | :root { 12 | --background-color: #111; 13 | --main-font: Open Sans, sans-serif; 14 | --main-font-size: 40px; 15 | --main-color: #eee; 16 | --block-margin: 20px; 17 | --heading-margin: 0 0 20px 0; 18 | --heading-font: Montserrat, Impact, sans-serif; 19 | --heading-color: #eee; 20 | --heading-line-height: 1.2; 21 | --heading-letter-spacing: -0.03em; 22 | --heading-text-transform: none; 23 | --heading-text-shadow: none; 24 | --heading-font-weight: normal; 25 | --heading1-text-shadow: none; 26 | --heading1-size: 3.77em; 27 | --heading2-size: 2.11em; 28 | --heading3-size: 1.55em; 29 | --heading4-size: 1em; 30 | --code-font: monospace; 31 | --link-color: #e7ad52; 32 | --link-color-hover: #f3d7ac; 33 | --selection-background-color: #e7ad52; 34 | --selection-color: #fff; } 35 | 36 | .reveal-viewport { 37 | background: #111; 38 | background-color: #111; } 39 | 40 | .reveal { 41 | font-family: "Open Sans", sans-serif; 42 | font-size: 40px; 43 | font-weight: normal; 44 | color: #eee; } 45 | 46 | .reveal ::selection { 47 | color: #fff; 48 | background: #e7ad52; 49 | text-shadow: none; } 50 | 51 | .reveal ::-moz-selection { 52 | color: #fff; 53 | background: #e7ad52; 54 | text-shadow: none; } 55 | 56 | .reveal .slides section, 57 | .reveal .slides section > section { 58 | line-height: 1.3; 59 | font-weight: inherit; } 60 | 61 | /********************************************* 62 | * HEADERS 63 | *********************************************/ 64 | .reveal h1, 65 | .reveal h2, 66 | .reveal h3, 67 | .reveal h4, 68 | .reveal h5, 69 | .reveal h6 { 70 | margin: 0 0 20px 0; 71 | color: #eee; 72 | font-family: "Montserrat", Impact, sans-serif; 73 | font-weight: normal; 74 | line-height: 1.2; 75 | letter-spacing: -0.03em; 76 | text-transform: none; 77 | text-shadow: none; 78 | word-wrap: break-word; } 79 | 80 | .reveal h1 { 81 | font-size: 3.77em; } 82 | 83 | .reveal h2 { 84 | font-size: 2.11em; } 85 | 86 | .reveal h3 { 87 | font-size: 1.55em; } 88 | 89 | .reveal h4 { 90 | font-size: 1em; } 91 | 92 | .reveal h1 { 93 | text-shadow: none; } 94 | 95 | /********************************************* 96 | * OTHER 97 | *********************************************/ 98 | .reveal p { 99 | margin: 20px 0; 100 | line-height: 1.3; } 101 | 102 | /* Ensure certain elements are never larger than the slide itself */ 103 | .reveal img, 104 | .reveal video, 105 | .reveal iframe { 106 | max-width: 95%; 107 | max-height: 95%; } 108 | 109 | .reveal strong, 110 | .reveal b { 111 | font-weight: bold; } 112 | 113 | .reveal em { 114 | font-style: italic; } 115 | 116 | .reveal ol, 117 | .reveal dl, 118 | .reveal ul { 119 | display: inline-block; 120 | text-align: left; 121 | margin: 0 0 0 1em; } 122 | 123 | .reveal ol { 124 | list-style-type: decimal; } 125 | 126 | .reveal ul { 127 | list-style-type: disc; } 128 | 129 | .reveal ul ul { 130 | list-style-type: square; } 131 | 132 | .reveal ul ul ul { 133 | list-style-type: circle; } 134 | 135 | .reveal ul ul, 136 | .reveal ul ol, 137 | .reveal ol ol, 138 | .reveal ol ul { 139 | display: block; 140 | margin-left: 40px; } 141 | 142 | .reveal dt { 143 | font-weight: bold; } 144 | 145 | .reveal dd { 146 | margin-left: 40px; } 147 | 148 | .reveal blockquote { 149 | display: block; 150 | position: relative; 151 | width: 70%; 152 | margin: 20px auto; 153 | padding: 5px; 154 | font-style: italic; 155 | background: rgba(255, 255, 255, 0.05); 156 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } 157 | 158 | .reveal blockquote p:first-child, 159 | .reveal blockquote p:last-child { 160 | display: inline-block; } 161 | 162 | .reveal q { 163 | font-style: italic; } 164 | 165 | .reveal pre { 166 | display: block; 167 | position: relative; 168 | width: 90%; 169 | margin: 20px auto; 170 | text-align: left; 171 | font-size: 0.55em; 172 | font-family: monospace; 173 | line-height: 1.2em; 174 | word-wrap: break-word; 175 | box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } 176 | 177 | .reveal code { 178 | font-family: monospace; 179 | text-transform: none; } 180 | 181 | .reveal pre code { 182 | display: block; 183 | padding: 5px; 184 | overflow: auto; 185 | max-height: 400px; 186 | word-wrap: normal; } 187 | 188 | .reveal table { 189 | margin: auto; 190 | border-collapse: collapse; 191 | border-spacing: 0; } 192 | 193 | .reveal table th { 194 | font-weight: bold; } 195 | 196 | .reveal table th, 197 | .reveal table td { 198 | text-align: left; 199 | padding: 0.2em 0.5em 0.2em 0.5em; 200 | border-bottom: 1px solid; } 201 | 202 | .reveal table th[align="center"], 203 | .reveal table td[align="center"] { 204 | text-align: center; } 205 | 206 | .reveal table th[align="right"], 207 | .reveal table td[align="right"] { 208 | text-align: right; } 209 | 210 | .reveal table tbody tr:last-child th, 211 | .reveal table tbody tr:last-child td { 212 | border-bottom: none; } 213 | 214 | .reveal sup { 215 | vertical-align: super; 216 | font-size: smaller; } 217 | 218 | .reveal sub { 219 | vertical-align: sub; 220 | font-size: smaller; } 221 | 222 | .reveal small { 223 | display: inline-block; 224 | font-size: 0.6em; 225 | line-height: 1.2em; 226 | vertical-align: top; } 227 | 228 | .reveal small * { 229 | vertical-align: top; } 230 | 231 | .reveal img { 232 | margin: 20px 0; } 233 | 234 | /********************************************* 235 | * LINKS 236 | *********************************************/ 237 | .reveal a { 238 | color: #e7ad52; 239 | text-decoration: none; 240 | transition: color .15s ease; } 241 | 242 | .reveal a:hover { 243 | color: #f3d7ac; 244 | text-shadow: none; 245 | border: none; } 246 | 247 | .reveal .roll span:after { 248 | color: #fff; 249 | background: #d08a1d; } 250 | 251 | /********************************************* 252 | * Frame helper 253 | *********************************************/ 254 | .reveal .r-frame { 255 | border: 4px solid #eee; 256 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } 257 | 258 | .reveal a .r-frame { 259 | transition: all .15s linear; } 260 | 261 | .reveal a:hover .r-frame { 262 | border-color: #e7ad52; 263 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } 264 | 265 | /********************************************* 266 | * NAVIGATION CONTROLS 267 | *********************************************/ 268 | .reveal .controls { 269 | color: #e7ad52; } 270 | 271 | /********************************************* 272 | * PROGRESS BAR 273 | *********************************************/ 274 | .reveal .progress { 275 | background: rgba(0, 0, 0, 0.2); 276 | color: #e7ad52; } 277 | 278 | /********************************************* 279 | * PRINT BACKGROUND 280 | *********************************************/ 281 | @media print { 282 | .backgrounds { 283 | background-color: #111; } } 284 | -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/serif.css: -------------------------------------------------------------------------------- 1 | /** 2 | * A simple theme for reveal.js presentations, similar 3 | * to the default theme. The accent color is brown. 4 | * 5 | * This theme is Copyright (C) 2012-2013 Owen Versteeg, http://owenversteeg.com - it is MIT licensed. 6 | */ 7 | .reveal a { 8 | line-height: 1.3em; } 9 | 10 | /********************************************* 11 | * GLOBAL STYLES 12 | *********************************************/ 13 | :root { 14 | --background-color: #F0F1EB; 15 | --main-font: Palatino Linotype, Book Antiqua, Palatino, FreeSerif, serif; 16 | --main-font-size: 40px; 17 | --main-color: #000; 18 | --block-margin: 20px; 19 | --heading-margin: 0 0 20px 0; 20 | --heading-font: Palatino Linotype, Book Antiqua, Palatino, FreeSerif, serif; 21 | --heading-color: #383D3D; 22 | --heading-line-height: 1.2; 23 | --heading-letter-spacing: normal; 24 | --heading-text-transform: none; 25 | --heading-text-shadow: none; 26 | --heading-font-weight: normal; 27 | --heading1-text-shadow: none; 28 | --heading1-size: 3.77em; 29 | --heading2-size: 2.11em; 30 | --heading3-size: 1.55em; 31 | --heading4-size: 1em; 32 | --code-font: monospace; 33 | --link-color: #51483D; 34 | --link-color-hover: #8b7c69; 35 | --selection-background-color: #26351C; 36 | --selection-color: #fff; } 37 | 38 | .reveal-viewport { 39 | background: #F0F1EB; 40 | background-color: #F0F1EB; } 41 | 42 | .reveal { 43 | font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif; 44 | font-size: 40px; 45 | font-weight: normal; 46 | color: #000; } 47 | 48 | .reveal ::selection { 49 | color: #fff; 50 | background: #26351C; 51 | text-shadow: none; } 52 | 53 | .reveal ::-moz-selection { 54 | color: #fff; 55 | background: #26351C; 56 | text-shadow: none; } 57 | 58 | .reveal .slides section, 59 | .reveal .slides section > section { 60 | line-height: 1.3; 61 | font-weight: inherit; } 62 | 63 | /********************************************* 64 | * HEADERS 65 | *********************************************/ 66 | .reveal h1, 67 | .reveal h2, 68 | .reveal h3, 69 | .reveal h4, 70 | .reveal h5, 71 | .reveal h6 { 72 | margin: 0 0 20px 0; 73 | color: #383D3D; 74 | font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif; 75 | font-weight: normal; 76 | line-height: 1.2; 77 | letter-spacing: normal; 78 | text-transform: none; 79 | text-shadow: none; 80 | word-wrap: break-word; } 81 | 82 | .reveal h1 { 83 | font-size: 3.77em; } 84 | 85 | .reveal h2 { 86 | font-size: 2.11em; } 87 | 88 | .reveal h3 { 89 | font-size: 1.55em; } 90 | 91 | .reveal h4 { 92 | font-size: 1em; } 93 | 94 | .reveal h1 { 95 | text-shadow: none; } 96 | 97 | /********************************************* 98 | * OTHER 99 | *********************************************/ 100 | .reveal p { 101 | margin: 20px 0; 102 | line-height: 1.3; } 103 | 104 | /* Ensure certain elements are never larger than the slide itself */ 105 | .reveal img, 106 | .reveal video, 107 | .reveal iframe { 108 | max-width: 95%; 109 | max-height: 95%; } 110 | 111 | .reveal strong, 112 | .reveal b { 113 | font-weight: bold; } 114 | 115 | .reveal em { 116 | font-style: italic; } 117 | 118 | .reveal ol, 119 | .reveal dl, 120 | .reveal ul { 121 | display: inline-block; 122 | text-align: left; 123 | margin: 0 0 0 1em; } 124 | 125 | .reveal ol { 126 | list-style-type: decimal; } 127 | 128 | .reveal ul { 129 | list-style-type: disc; } 130 | 131 | .reveal ul ul { 132 | list-style-type: square; } 133 | 134 | .reveal ul ul ul { 135 | list-style-type: circle; } 136 | 137 | .reveal ul ul, 138 | .reveal ul ol, 139 | .reveal ol ol, 140 | .reveal ol ul { 141 | display: block; 142 | margin-left: 40px; } 143 | 144 | .reveal dt { 145 | font-weight: bold; } 146 | 147 | .reveal dd { 148 | margin-left: 40px; } 149 | 150 | .reveal blockquote { 151 | display: block; 152 | position: relative; 153 | width: 70%; 154 | margin: 20px auto; 155 | padding: 5px; 156 | font-style: italic; 157 | background: rgba(255, 255, 255, 0.05); 158 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } 159 | 160 | .reveal blockquote p:first-child, 161 | .reveal blockquote p:last-child { 162 | display: inline-block; } 163 | 164 | .reveal q { 165 | font-style: italic; } 166 | 167 | .reveal pre { 168 | display: block; 169 | position: relative; 170 | width: 90%; 171 | margin: 20px auto; 172 | text-align: left; 173 | font-size: 0.55em; 174 | font-family: monospace; 175 | line-height: 1.2em; 176 | word-wrap: break-word; 177 | box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } 178 | 179 | .reveal code { 180 | font-family: monospace; 181 | text-transform: none; } 182 | 183 | .reveal pre code { 184 | display: block; 185 | padding: 5px; 186 | overflow: auto; 187 | max-height: 400px; 188 | word-wrap: normal; } 189 | 190 | .reveal table { 191 | margin: auto; 192 | border-collapse: collapse; 193 | border-spacing: 0; } 194 | 195 | .reveal table th { 196 | font-weight: bold; } 197 | 198 | .reveal table th, 199 | .reveal table td { 200 | text-align: left; 201 | padding: 0.2em 0.5em 0.2em 0.5em; 202 | border-bottom: 1px solid; } 203 | 204 | .reveal table th[align="center"], 205 | .reveal table td[align="center"] { 206 | text-align: center; } 207 | 208 | .reveal table th[align="right"], 209 | .reveal table td[align="right"] { 210 | text-align: right; } 211 | 212 | .reveal table tbody tr:last-child th, 213 | .reveal table tbody tr:last-child td { 214 | border-bottom: none; } 215 | 216 | .reveal sup { 217 | vertical-align: super; 218 | font-size: smaller; } 219 | 220 | .reveal sub { 221 | vertical-align: sub; 222 | font-size: smaller; } 223 | 224 | .reveal small { 225 | display: inline-block; 226 | font-size: 0.6em; 227 | line-height: 1.2em; 228 | vertical-align: top; } 229 | 230 | .reveal small * { 231 | vertical-align: top; } 232 | 233 | .reveal img { 234 | margin: 20px 0; } 235 | 236 | /********************************************* 237 | * LINKS 238 | *********************************************/ 239 | .reveal a { 240 | color: #51483D; 241 | text-decoration: none; 242 | transition: color .15s ease; } 243 | 244 | .reveal a:hover { 245 | color: #8b7c69; 246 | text-shadow: none; 247 | border: none; } 248 | 249 | .reveal .roll span:after { 250 | color: #fff; 251 | background: #25211c; } 252 | 253 | /********************************************* 254 | * Frame helper 255 | *********************************************/ 256 | .reveal .r-frame { 257 | border: 4px solid #000; 258 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } 259 | 260 | .reveal a .r-frame { 261 | transition: all .15s linear; } 262 | 263 | .reveal a:hover .r-frame { 264 | border-color: #51483D; 265 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } 266 | 267 | /********************************************* 268 | * NAVIGATION CONTROLS 269 | *********************************************/ 270 | .reveal .controls { 271 | color: #51483D; } 272 | 273 | /********************************************* 274 | * PROGRESS BAR 275 | *********************************************/ 276 | .reveal .progress { 277 | background: rgba(0, 0, 0, 0.2); 278 | color: #51483D; } 279 | 280 | /********************************************* 281 | * PRINT BACKGROUND 282 | *********************************************/ 283 | @media print { 284 | .backgrounds { 285 | background-color: #F0F1EB; } } 286 | -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/simple.css: -------------------------------------------------------------------------------- 1 | /** 2 | * A simple theme for reveal.js presentations, similar 3 | * to the default theme. The accent color is darkblue. 4 | * 5 | * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed. 6 | * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 7 | */ 8 | @import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700); 9 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 10 | section.has-dark-background, section.has-dark-background h1, section.has-dark-background h2, section.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 { 11 | color: #fff; } 12 | 13 | /********************************************* 14 | * GLOBAL STYLES 15 | *********************************************/ 16 | :root { 17 | --background-color: #fff; 18 | --main-font: Lato, sans-serif; 19 | --main-font-size: 40px; 20 | --main-color: #000; 21 | --block-margin: 20px; 22 | --heading-margin: 0 0 20px 0; 23 | --heading-font: News Cycle, Impact, sans-serif; 24 | --heading-color: #000; 25 | --heading-line-height: 1.2; 26 | --heading-letter-spacing: normal; 27 | --heading-text-transform: none; 28 | --heading-text-shadow: none; 29 | --heading-font-weight: normal; 30 | --heading1-text-shadow: none; 31 | --heading1-size: 3.77em; 32 | --heading2-size: 2.11em; 33 | --heading3-size: 1.55em; 34 | --heading4-size: 1em; 35 | --code-font: monospace; 36 | --link-color: #00008B; 37 | --link-color-hover: #0000f1; 38 | --selection-background-color: rgba(0, 0, 0, 0.99); 39 | --selection-color: #fff; } 40 | 41 | .reveal-viewport { 42 | background: #fff; 43 | background-color: #fff; } 44 | 45 | .reveal { 46 | font-family: "Lato", sans-serif; 47 | font-size: 40px; 48 | font-weight: normal; 49 | color: #000; } 50 | 51 | .reveal ::selection { 52 | color: #fff; 53 | background: rgba(0, 0, 0, 0.99); 54 | text-shadow: none; } 55 | 56 | .reveal ::-moz-selection { 57 | color: #fff; 58 | background: rgba(0, 0, 0, 0.99); 59 | text-shadow: none; } 60 | 61 | .reveal .slides section, 62 | .reveal .slides section > section { 63 | line-height: 1.3; 64 | font-weight: inherit; } 65 | 66 | /********************************************* 67 | * HEADERS 68 | *********************************************/ 69 | .reveal h1, 70 | .reveal h2, 71 | .reveal h3, 72 | .reveal h4, 73 | .reveal h5, 74 | .reveal h6 { 75 | margin: 0 0 20px 0; 76 | color: #000; 77 | font-family: "News Cycle", Impact, sans-serif; 78 | font-weight: normal; 79 | line-height: 1.2; 80 | letter-spacing: normal; 81 | text-transform: none; 82 | text-shadow: none; 83 | word-wrap: break-word; } 84 | 85 | .reveal h1 { 86 | font-size: 3.77em; } 87 | 88 | .reveal h2 { 89 | font-size: 2.11em; } 90 | 91 | .reveal h3 { 92 | font-size: 1.55em; } 93 | 94 | .reveal h4 { 95 | font-size: 1em; } 96 | 97 | .reveal h1 { 98 | text-shadow: none; } 99 | 100 | /********************************************* 101 | * OTHER 102 | *********************************************/ 103 | .reveal p { 104 | margin: 20px 0; 105 | line-height: 1.3; } 106 | 107 | /* Ensure certain elements are never larger than the slide itself */ 108 | .reveal img, 109 | .reveal video, 110 | .reveal iframe { 111 | max-width: 95%; 112 | max-height: 95%; } 113 | 114 | .reveal strong, 115 | .reveal b { 116 | font-weight: bold; } 117 | 118 | .reveal em { 119 | font-style: italic; } 120 | 121 | .reveal ol, 122 | .reveal dl, 123 | .reveal ul { 124 | display: inline-block; 125 | text-align: left; 126 | margin: 0 0 0 1em; } 127 | 128 | .reveal ol { 129 | list-style-type: decimal; } 130 | 131 | .reveal ul { 132 | list-style-type: disc; } 133 | 134 | .reveal ul ul { 135 | list-style-type: square; } 136 | 137 | .reveal ul ul ul { 138 | list-style-type: circle; } 139 | 140 | .reveal ul ul, 141 | .reveal ul ol, 142 | .reveal ol ol, 143 | .reveal ol ul { 144 | display: block; 145 | margin-left: 40px; } 146 | 147 | .reveal dt { 148 | font-weight: bold; } 149 | 150 | .reveal dd { 151 | margin-left: 40px; } 152 | 153 | .reveal blockquote { 154 | display: block; 155 | position: relative; 156 | width: 70%; 157 | margin: 20px auto; 158 | padding: 5px; 159 | font-style: italic; 160 | background: rgba(255, 255, 255, 0.05); 161 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } 162 | 163 | .reveal blockquote p:first-child, 164 | .reveal blockquote p:last-child { 165 | display: inline-block; } 166 | 167 | .reveal q { 168 | font-style: italic; } 169 | 170 | .reveal pre { 171 | display: block; 172 | position: relative; 173 | width: 90%; 174 | margin: 20px auto; 175 | text-align: left; 176 | font-size: 0.55em; 177 | font-family: monospace; 178 | line-height: 1.2em; 179 | word-wrap: break-word; 180 | box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } 181 | 182 | .reveal code { 183 | font-family: monospace; 184 | text-transform: none; } 185 | 186 | .reveal pre code { 187 | display: block; 188 | padding: 5px; 189 | overflow: auto; 190 | max-height: 400px; 191 | word-wrap: normal; } 192 | 193 | .reveal table { 194 | margin: auto; 195 | border-collapse: collapse; 196 | border-spacing: 0; } 197 | 198 | .reveal table th { 199 | font-weight: bold; } 200 | 201 | .reveal table th, 202 | .reveal table td { 203 | text-align: left; 204 | padding: 0.2em 0.5em 0.2em 0.5em; 205 | border-bottom: 1px solid; } 206 | 207 | .reveal table th[align="center"], 208 | .reveal table td[align="center"] { 209 | text-align: center; } 210 | 211 | .reveal table th[align="right"], 212 | .reveal table td[align="right"] { 213 | text-align: right; } 214 | 215 | .reveal table tbody tr:last-child th, 216 | .reveal table tbody tr:last-child td { 217 | border-bottom: none; } 218 | 219 | .reveal sup { 220 | vertical-align: super; 221 | font-size: smaller; } 222 | 223 | .reveal sub { 224 | vertical-align: sub; 225 | font-size: smaller; } 226 | 227 | .reveal small { 228 | display: inline-block; 229 | font-size: 0.6em; 230 | line-height: 1.2em; 231 | vertical-align: top; } 232 | 233 | .reveal small * { 234 | vertical-align: top; } 235 | 236 | .reveal img { 237 | margin: 20px 0; } 238 | 239 | /********************************************* 240 | * LINKS 241 | *********************************************/ 242 | .reveal a { 243 | color: #00008B; 244 | text-decoration: none; 245 | transition: color .15s ease; } 246 | 247 | .reveal a:hover { 248 | color: #0000f1; 249 | text-shadow: none; 250 | border: none; } 251 | 252 | .reveal .roll span:after { 253 | color: #fff; 254 | background: #00003f; } 255 | 256 | /********************************************* 257 | * Frame helper 258 | *********************************************/ 259 | .reveal .r-frame { 260 | border: 4px solid #000; 261 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } 262 | 263 | .reveal a .r-frame { 264 | transition: all .15s linear; } 265 | 266 | .reveal a:hover .r-frame { 267 | border-color: #00008B; 268 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } 269 | 270 | /********************************************* 271 | * NAVIGATION CONTROLS 272 | *********************************************/ 273 | .reveal .controls { 274 | color: #00008B; } 275 | 276 | /********************************************* 277 | * PROGRESS BAR 278 | *********************************************/ 279 | .reveal .progress { 280 | background: rgba(0, 0, 0, 0.2); 281 | color: #00008B; } 282 | 283 | /********************************************* 284 | * PRINT BACKGROUND 285 | *********************************************/ 286 | @media print { 287 | .backgrounds { 288 | background-color: #fff; } } 289 | -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/sky.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Sky theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | @import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic); 7 | @import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700); 8 | .reveal a { 9 | line-height: 1.3em; } 10 | 11 | /********************************************* 12 | * GLOBAL STYLES 13 | *********************************************/ 14 | :root { 15 | --background-color: #f7fbfc; 16 | --main-font: Open Sans, sans-serif; 17 | --main-font-size: 40px; 18 | --main-color: #333; 19 | --block-margin: 20px; 20 | --heading-margin: 0 0 20px 0; 21 | --heading-font: Quicksand, sans-serif; 22 | --heading-color: #333; 23 | --heading-line-height: 1.2; 24 | --heading-letter-spacing: -0.08em; 25 | --heading-text-transform: uppercase; 26 | --heading-text-shadow: none; 27 | --heading-font-weight: normal; 28 | --heading1-text-shadow: none; 29 | --heading1-size: 3.77em; 30 | --heading2-size: 2.11em; 31 | --heading3-size: 1.55em; 32 | --heading4-size: 1em; 33 | --code-font: monospace; 34 | --link-color: #3b759e; 35 | --link-color-hover: #74a7cb; 36 | --selection-background-color: #134674; 37 | --selection-color: #fff; } 38 | 39 | .reveal-viewport { 40 | background: #add9e4; 41 | background: -moz-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%); 42 | background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #f7fbfc), color-stop(100%, #add9e4)); 43 | background: -webkit-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%); 44 | background: -o-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%); 45 | background: -ms-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%); 46 | background: radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%); 47 | background-color: #f7fbfc; } 48 | 49 | .reveal { 50 | font-family: "Open Sans", sans-serif; 51 | font-size: 40px; 52 | font-weight: normal; 53 | color: #333; } 54 | 55 | .reveal ::selection { 56 | color: #fff; 57 | background: #134674; 58 | text-shadow: none; } 59 | 60 | .reveal ::-moz-selection { 61 | color: #fff; 62 | background: #134674; 63 | text-shadow: none; } 64 | 65 | .reveal .slides section, 66 | .reveal .slides section > section { 67 | line-height: 1.3; 68 | font-weight: inherit; } 69 | 70 | /********************************************* 71 | * HEADERS 72 | *********************************************/ 73 | .reveal h1, 74 | .reveal h2, 75 | .reveal h3, 76 | .reveal h4, 77 | .reveal h5, 78 | .reveal h6 { 79 | margin: 0 0 20px 0; 80 | color: #333; 81 | font-family: "Quicksand", sans-serif; 82 | font-weight: normal; 83 | line-height: 1.2; 84 | letter-spacing: -0.08em; 85 | text-transform: uppercase; 86 | text-shadow: none; 87 | word-wrap: break-word; } 88 | 89 | .reveal h1 { 90 | font-size: 3.77em; } 91 | 92 | .reveal h2 { 93 | font-size: 2.11em; } 94 | 95 | .reveal h3 { 96 | font-size: 1.55em; } 97 | 98 | .reveal h4 { 99 | font-size: 1em; } 100 | 101 | .reveal h1 { 102 | text-shadow: none; } 103 | 104 | /********************************************* 105 | * OTHER 106 | *********************************************/ 107 | .reveal p { 108 | margin: 20px 0; 109 | line-height: 1.3; } 110 | 111 | /* Ensure certain elements are never larger than the slide itself */ 112 | .reveal img, 113 | .reveal video, 114 | .reveal iframe { 115 | max-width: 95%; 116 | max-height: 95%; } 117 | 118 | .reveal strong, 119 | .reveal b { 120 | font-weight: bold; } 121 | 122 | .reveal em { 123 | font-style: italic; } 124 | 125 | .reveal ol, 126 | .reveal dl, 127 | .reveal ul { 128 | display: inline-block; 129 | text-align: left; 130 | margin: 0 0 0 1em; } 131 | 132 | .reveal ol { 133 | list-style-type: decimal; } 134 | 135 | .reveal ul { 136 | list-style-type: disc; } 137 | 138 | .reveal ul ul { 139 | list-style-type: square; } 140 | 141 | .reveal ul ul ul { 142 | list-style-type: circle; } 143 | 144 | .reveal ul ul, 145 | .reveal ul ol, 146 | .reveal ol ol, 147 | .reveal ol ul { 148 | display: block; 149 | margin-left: 40px; } 150 | 151 | .reveal dt { 152 | font-weight: bold; } 153 | 154 | .reveal dd { 155 | margin-left: 40px; } 156 | 157 | .reveal blockquote { 158 | display: block; 159 | position: relative; 160 | width: 70%; 161 | margin: 20px auto; 162 | padding: 5px; 163 | font-style: italic; 164 | background: rgba(255, 255, 255, 0.05); 165 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } 166 | 167 | .reveal blockquote p:first-child, 168 | .reveal blockquote p:last-child { 169 | display: inline-block; } 170 | 171 | .reveal q { 172 | font-style: italic; } 173 | 174 | .reveal pre { 175 | display: block; 176 | position: relative; 177 | width: 90%; 178 | margin: 20px auto; 179 | text-align: left; 180 | font-size: 0.55em; 181 | font-family: monospace; 182 | line-height: 1.2em; 183 | word-wrap: break-word; 184 | box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } 185 | 186 | .reveal code { 187 | font-family: monospace; 188 | text-transform: none; } 189 | 190 | .reveal pre code { 191 | display: block; 192 | padding: 5px; 193 | overflow: auto; 194 | max-height: 400px; 195 | word-wrap: normal; } 196 | 197 | .reveal table { 198 | margin: auto; 199 | border-collapse: collapse; 200 | border-spacing: 0; } 201 | 202 | .reveal table th { 203 | font-weight: bold; } 204 | 205 | .reveal table th, 206 | .reveal table td { 207 | text-align: left; 208 | padding: 0.2em 0.5em 0.2em 0.5em; 209 | border-bottom: 1px solid; } 210 | 211 | .reveal table th[align="center"], 212 | .reveal table td[align="center"] { 213 | text-align: center; } 214 | 215 | .reveal table th[align="right"], 216 | .reveal table td[align="right"] { 217 | text-align: right; } 218 | 219 | .reveal table tbody tr:last-child th, 220 | .reveal table tbody tr:last-child td { 221 | border-bottom: none; } 222 | 223 | .reveal sup { 224 | vertical-align: super; 225 | font-size: smaller; } 226 | 227 | .reveal sub { 228 | vertical-align: sub; 229 | font-size: smaller; } 230 | 231 | .reveal small { 232 | display: inline-block; 233 | font-size: 0.6em; 234 | line-height: 1.2em; 235 | vertical-align: top; } 236 | 237 | .reveal small * { 238 | vertical-align: top; } 239 | 240 | .reveal img { 241 | margin: 20px 0; } 242 | 243 | /********************************************* 244 | * LINKS 245 | *********************************************/ 246 | .reveal a { 247 | color: #3b759e; 248 | text-decoration: none; 249 | transition: color .15s ease; } 250 | 251 | .reveal a:hover { 252 | color: #74a7cb; 253 | text-shadow: none; 254 | border: none; } 255 | 256 | .reveal .roll span:after { 257 | color: #fff; 258 | background: #264c66; } 259 | 260 | /********************************************* 261 | * Frame helper 262 | *********************************************/ 263 | .reveal .r-frame { 264 | border: 4px solid #333; 265 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } 266 | 267 | .reveal a .r-frame { 268 | transition: all .15s linear; } 269 | 270 | .reveal a:hover .r-frame { 271 | border-color: #3b759e; 272 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } 273 | 274 | /********************************************* 275 | * NAVIGATION CONTROLS 276 | *********************************************/ 277 | .reveal .controls { 278 | color: #3b759e; } 279 | 280 | /********************************************* 281 | * PROGRESS BAR 282 | *********************************************/ 283 | .reveal .progress { 284 | background: rgba(0, 0, 0, 0.2); 285 | color: #3b759e; } 286 | 287 | /********************************************* 288 | * PRINT BACKGROUND 289 | *********************************************/ 290 | @media print { 291 | .backgrounds { 292 | background-color: #f7fbfc; } } 293 | -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/solarized.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Solarized Light theme for reveal.js. 3 | * Author: Achim Staebler 4 | */ 5 | @import url(fonts/league-gothic/league-gothic.css); 6 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 7 | /** 8 | * Solarized colors by Ethan Schoonover 9 | */ 10 | html * { 11 | color-profile: sRGB; 12 | rendering-intent: auto; } 13 | 14 | /********************************************* 15 | * GLOBAL STYLES 16 | *********************************************/ 17 | :root { 18 | --background-color: #fdf6e3; 19 | --main-font: Lato, sans-serif; 20 | --main-font-size: 40px; 21 | --main-color: #657b83; 22 | --block-margin: 20px; 23 | --heading-margin: 0 0 20px 0; 24 | --heading-font: League Gothic, Impact, sans-serif; 25 | --heading-color: #586e75; 26 | --heading-line-height: 1.2; 27 | --heading-letter-spacing: normal; 28 | --heading-text-transform: uppercase; 29 | --heading-text-shadow: none; 30 | --heading-font-weight: normal; 31 | --heading1-text-shadow: none; 32 | --heading1-size: 3.77em; 33 | --heading2-size: 2.11em; 34 | --heading3-size: 1.55em; 35 | --heading4-size: 1em; 36 | --code-font: monospace; 37 | --link-color: #268bd2; 38 | --link-color-hover: #78b9e6; 39 | --selection-background-color: #d33682; 40 | --selection-color: #fff; } 41 | 42 | .reveal-viewport { 43 | background: #fdf6e3; 44 | background-color: #fdf6e3; } 45 | 46 | .reveal { 47 | font-family: "Lato", sans-serif; 48 | font-size: 40px; 49 | font-weight: normal; 50 | color: #657b83; } 51 | 52 | .reveal ::selection { 53 | color: #fff; 54 | background: #d33682; 55 | text-shadow: none; } 56 | 57 | .reveal ::-moz-selection { 58 | color: #fff; 59 | background: #d33682; 60 | text-shadow: none; } 61 | 62 | .reveal .slides section, 63 | .reveal .slides section > section { 64 | line-height: 1.3; 65 | font-weight: inherit; } 66 | 67 | /********************************************* 68 | * HEADERS 69 | *********************************************/ 70 | .reveal h1, 71 | .reveal h2, 72 | .reveal h3, 73 | .reveal h4, 74 | .reveal h5, 75 | .reveal h6 { 76 | margin: 0 0 20px 0; 77 | color: #586e75; 78 | font-family: "League Gothic", Impact, sans-serif; 79 | font-weight: normal; 80 | line-height: 1.2; 81 | letter-spacing: normal; 82 | text-transform: uppercase; 83 | text-shadow: none; 84 | word-wrap: break-word; } 85 | 86 | .reveal h1 { 87 | font-size: 3.77em; } 88 | 89 | .reveal h2 { 90 | font-size: 2.11em; } 91 | 92 | .reveal h3 { 93 | font-size: 1.55em; } 94 | 95 | .reveal h4 { 96 | font-size: 1em; } 97 | 98 | .reveal h1 { 99 | text-shadow: none; } 100 | 101 | /********************************************* 102 | * OTHER 103 | *********************************************/ 104 | .reveal p { 105 | margin: 20px 0; 106 | line-height: 1.3; } 107 | 108 | /* Ensure certain elements are never larger than the slide itself */ 109 | .reveal img, 110 | .reveal video, 111 | .reveal iframe { 112 | max-width: 95%; 113 | max-height: 95%; } 114 | 115 | .reveal strong, 116 | .reveal b { 117 | font-weight: bold; } 118 | 119 | .reveal em { 120 | font-style: italic; } 121 | 122 | .reveal ol, 123 | .reveal dl, 124 | .reveal ul { 125 | display: inline-block; 126 | text-align: left; 127 | margin: 0 0 0 1em; } 128 | 129 | .reveal ol { 130 | list-style-type: decimal; } 131 | 132 | .reveal ul { 133 | list-style-type: disc; } 134 | 135 | .reveal ul ul { 136 | list-style-type: square; } 137 | 138 | .reveal ul ul ul { 139 | list-style-type: circle; } 140 | 141 | .reveal ul ul, 142 | .reveal ul ol, 143 | .reveal ol ol, 144 | .reveal ol ul { 145 | display: block; 146 | margin-left: 40px; } 147 | 148 | .reveal dt { 149 | font-weight: bold; } 150 | 151 | .reveal dd { 152 | margin-left: 40px; } 153 | 154 | .reveal blockquote { 155 | display: block; 156 | position: relative; 157 | width: 70%; 158 | margin: 20px auto; 159 | padding: 5px; 160 | font-style: italic; 161 | background: rgba(255, 255, 255, 0.05); 162 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } 163 | 164 | .reveal blockquote p:first-child, 165 | .reveal blockquote p:last-child { 166 | display: inline-block; } 167 | 168 | .reveal q { 169 | font-style: italic; } 170 | 171 | .reveal pre { 172 | display: block; 173 | position: relative; 174 | width: 90%; 175 | margin: 20px auto; 176 | text-align: left; 177 | font-size: 0.55em; 178 | font-family: monospace; 179 | line-height: 1.2em; 180 | word-wrap: break-word; 181 | box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } 182 | 183 | .reveal code { 184 | font-family: monospace; 185 | text-transform: none; } 186 | 187 | .reveal pre code { 188 | display: block; 189 | padding: 5px; 190 | overflow: auto; 191 | max-height: 400px; 192 | word-wrap: normal; } 193 | 194 | .reveal table { 195 | margin: auto; 196 | border-collapse: collapse; 197 | border-spacing: 0; } 198 | 199 | .reveal table th { 200 | font-weight: bold; } 201 | 202 | .reveal table th, 203 | .reveal table td { 204 | text-align: left; 205 | padding: 0.2em 0.5em 0.2em 0.5em; 206 | border-bottom: 1px solid; } 207 | 208 | .reveal table th[align="center"], 209 | .reveal table td[align="center"] { 210 | text-align: center; } 211 | 212 | .reveal table th[align="right"], 213 | .reveal table td[align="right"] { 214 | text-align: right; } 215 | 216 | .reveal table tbody tr:last-child th, 217 | .reveal table tbody tr:last-child td { 218 | border-bottom: none; } 219 | 220 | .reveal sup { 221 | vertical-align: super; 222 | font-size: smaller; } 223 | 224 | .reveal sub { 225 | vertical-align: sub; 226 | font-size: smaller; } 227 | 228 | .reveal small { 229 | display: inline-block; 230 | font-size: 0.6em; 231 | line-height: 1.2em; 232 | vertical-align: top; } 233 | 234 | .reveal small * { 235 | vertical-align: top; } 236 | 237 | .reveal img { 238 | margin: 20px 0; } 239 | 240 | /********************************************* 241 | * LINKS 242 | *********************************************/ 243 | .reveal a { 244 | color: #268bd2; 245 | text-decoration: none; 246 | transition: color .15s ease; } 247 | 248 | .reveal a:hover { 249 | color: #78b9e6; 250 | text-shadow: none; 251 | border: none; } 252 | 253 | .reveal .roll span:after { 254 | color: #fff; 255 | background: #1a6091; } 256 | 257 | /********************************************* 258 | * Frame helper 259 | *********************************************/ 260 | .reveal .r-frame { 261 | border: 4px solid #657b83; 262 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } 263 | 264 | .reveal a .r-frame { 265 | transition: all .15s linear; } 266 | 267 | .reveal a:hover .r-frame { 268 | border-color: #268bd2; 269 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } 270 | 271 | /********************************************* 272 | * NAVIGATION CONTROLS 273 | *********************************************/ 274 | .reveal .controls { 275 | color: #268bd2; } 276 | 277 | /********************************************* 278 | * PROGRESS BAR 279 | *********************************************/ 280 | .reveal .progress { 281 | background: rgba(0, 0, 0, 0.2); 282 | color: #268bd2; } 283 | 284 | /********************************************* 285 | * PRINT BACKGROUND 286 | *********************************************/ 287 | @media print { 288 | .backgrounds { 289 | background-color: #fdf6e3; } } 290 | -------------------------------------------------------------------------------- /FortranCon2020-community/dist/theme/white.css: -------------------------------------------------------------------------------- 1 | /** 2 | * White theme for reveal.js. This is the opposite of the 'black' theme. 3 | * 4 | * By Hakim El Hattab, http://hakim.se 5 | */ 6 | @import url(fonts/source-sans-pro/source-sans-pro.css); 7 | section.has-dark-background, section.has-dark-background h1, section.has-dark-background h2, section.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 { 8 | color: #fff; } 9 | 10 | /********************************************* 11 | * GLOBAL STYLES 12 | *********************************************/ 13 | :root { 14 | --background-color: #fff; 15 | --main-font: Source Sans Pro, Helvetica, sans-serif; 16 | --main-font-size: 42px; 17 | --main-color: #222; 18 | --block-margin: 20px; 19 | --heading-margin: 0 0 20px 0; 20 | --heading-font: Source Sans Pro, Helvetica, sans-serif; 21 | --heading-color: #222; 22 | --heading-line-height: 1.2; 23 | --heading-letter-spacing: normal; 24 | --heading-text-transform: uppercase; 25 | --heading-text-shadow: none; 26 | --heading-font-weight: 600; 27 | --heading1-text-shadow: none; 28 | --heading1-size: 2.5em; 29 | --heading2-size: 1.6em; 30 | --heading3-size: 1.3em; 31 | --heading4-size: 1em; 32 | --code-font: monospace; 33 | --link-color: #2a76dd; 34 | --link-color-hover: #6ca0e8; 35 | --selection-background-color: #98bdef; 36 | --selection-color: #fff; } 37 | 38 | .reveal-viewport { 39 | background: #fff; 40 | background-color: #fff; } 41 | 42 | .reveal { 43 | font-family: "Source Sans Pro", Helvetica, sans-serif; 44 | font-size: 42px; 45 | font-weight: normal; 46 | color: #222; } 47 | 48 | .reveal ::selection { 49 | color: #fff; 50 | background: #98bdef; 51 | text-shadow: none; } 52 | 53 | .reveal ::-moz-selection { 54 | color: #fff; 55 | background: #98bdef; 56 | text-shadow: none; } 57 | 58 | .reveal .slides section, 59 | .reveal .slides section > section { 60 | line-height: 1.3; 61 | font-weight: inherit; } 62 | 63 | /********************************************* 64 | * HEADERS 65 | *********************************************/ 66 | .reveal h1, 67 | .reveal h2, 68 | .reveal h3, 69 | .reveal h4, 70 | .reveal h5, 71 | .reveal h6 { 72 | margin: 0 0 20px 0; 73 | color: #222; 74 | font-family: "Source Sans Pro", Helvetica, sans-serif; 75 | font-weight: 600; 76 | line-height: 1.2; 77 | letter-spacing: normal; 78 | text-transform: uppercase; 79 | text-shadow: none; 80 | word-wrap: break-word; } 81 | 82 | .reveal h1 { 83 | font-size: 2.5em; } 84 | 85 | .reveal h2 { 86 | font-size: 1.6em; } 87 | 88 | .reveal h3 { 89 | font-size: 1.3em; } 90 | 91 | .reveal h4 { 92 | font-size: 1em; } 93 | 94 | .reveal h1 { 95 | text-shadow: none; } 96 | 97 | /********************************************* 98 | * OTHER 99 | *********************************************/ 100 | .reveal p { 101 | margin: 20px 0; 102 | line-height: 1.3; } 103 | 104 | /* Ensure certain elements are never larger than the slide itself */ 105 | .reveal img, 106 | .reveal video, 107 | .reveal iframe { 108 | max-width: 95%; 109 | max-height: 95%; } 110 | 111 | .reveal strong, 112 | .reveal b { 113 | font-weight: bold; } 114 | 115 | .reveal em { 116 | font-style: italic; } 117 | 118 | .reveal ol, 119 | .reveal dl, 120 | .reveal ul { 121 | display: inline-block; 122 | text-align: left; 123 | margin: 0 0 0 1em; } 124 | 125 | .reveal ol { 126 | list-style-type: decimal; } 127 | 128 | .reveal ul { 129 | list-style-type: disc; } 130 | 131 | .reveal ul ul { 132 | list-style-type: square; } 133 | 134 | .reveal ul ul ul { 135 | list-style-type: circle; } 136 | 137 | .reveal ul ul, 138 | .reveal ul ol, 139 | .reveal ol ol, 140 | .reveal ol ul { 141 | display: block; 142 | margin-left: 40px; } 143 | 144 | .reveal dt { 145 | font-weight: bold; } 146 | 147 | .reveal dd { 148 | margin-left: 40px; } 149 | 150 | .reveal blockquote { 151 | display: block; 152 | position: relative; 153 | width: 70%; 154 | margin: 20px auto; 155 | padding: 5px; 156 | font-style: italic; 157 | background: rgba(255, 255, 255, 0.05); 158 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } 159 | 160 | .reveal blockquote p:first-child, 161 | .reveal blockquote p:last-child { 162 | display: inline-block; } 163 | 164 | .reveal q { 165 | font-style: italic; } 166 | 167 | .reveal pre { 168 | display: block; 169 | position: relative; 170 | width: 90%; 171 | margin: 20px auto; 172 | text-align: left; 173 | font-size: 0.55em; 174 | font-family: monospace; 175 | line-height: 1.2em; 176 | word-wrap: break-word; 177 | box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } 178 | 179 | .reveal code { 180 | font-family: monospace; 181 | text-transform: none; } 182 | 183 | .reveal pre code { 184 | display: block; 185 | padding: 5px; 186 | overflow: auto; 187 | max-height: 400px; 188 | word-wrap: normal; } 189 | 190 | .reveal table { 191 | margin: auto; 192 | border-collapse: collapse; 193 | border-spacing: 0; } 194 | 195 | .reveal table th { 196 | font-weight: bold; } 197 | 198 | .reveal table th, 199 | .reveal table td { 200 | text-align: left; 201 | padding: 0.2em 0.5em 0.2em 0.5em; 202 | border-bottom: 1px solid; } 203 | 204 | .reveal table th[align="center"], 205 | .reveal table td[align="center"] { 206 | text-align: center; } 207 | 208 | .reveal table th[align="right"], 209 | .reveal table td[align="right"] { 210 | text-align: right; } 211 | 212 | .reveal table tbody tr:last-child th, 213 | .reveal table tbody tr:last-child td { 214 | border-bottom: none; } 215 | 216 | .reveal sup { 217 | vertical-align: super; 218 | font-size: smaller; } 219 | 220 | .reveal sub { 221 | vertical-align: sub; 222 | font-size: smaller; } 223 | 224 | .reveal small { 225 | display: inline-block; 226 | font-size: 0.6em; 227 | line-height: 1.2em; 228 | vertical-align: top; } 229 | 230 | .reveal small * { 231 | vertical-align: top; } 232 | 233 | .reveal img { 234 | margin: 20px 0; } 235 | 236 | /********************************************* 237 | * LINKS 238 | *********************************************/ 239 | .reveal a { 240 | color: #2a76dd; 241 | text-decoration: none; 242 | transition: color .15s ease; } 243 | 244 | .reveal a:hover { 245 | color: #6ca0e8; 246 | text-shadow: none; 247 | border: none; } 248 | 249 | .reveal .roll span:after { 250 | color: #fff; 251 | background: #1a53a1; } 252 | 253 | /********************************************* 254 | * Frame helper 255 | *********************************************/ 256 | .reveal .r-frame { 257 | border: 4px solid #222; 258 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } 259 | 260 | .reveal a .r-frame { 261 | transition: all .15s linear; } 262 | 263 | .reveal a:hover .r-frame { 264 | border-color: #2a76dd; 265 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } 266 | 267 | /********************************************* 268 | * NAVIGATION CONTROLS 269 | *********************************************/ 270 | .reveal .controls { 271 | color: #2a76dd; } 272 | 273 | /********************************************* 274 | * PROGRESS BAR 275 | *********************************************/ 276 | .reveal .progress { 277 | background: rgba(0, 0, 0, 0.2); 278 | color: #2a76dd; } 279 | 280 | /********************************************* 281 | * PRINT BACKGROUND 282 | *********************************************/ 283 | @media print { 284 | .backgrounds { 285 | background-color: #fff; } } 286 | -------------------------------------------------------------------------------- /FortranCon2020-community/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | 37 | 38 | 39 | 40 | 41 | 42 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /FortranCon2020-community/plugin/highlight/monokai.css: -------------------------------------------------------------------------------- 1 | /* 2 | Monokai style - ported by Luigi Maselli - http://grigio.org 3 | */ 4 | 5 | .hljs { 6 | display: block; 7 | overflow-x: auto; 8 | padding: 0.5em; 9 | background: #272822; 10 | color: #ddd; 11 | } 12 | 13 | .hljs-tag, 14 | .hljs-keyword, 15 | .hljs-selector-tag, 16 | .hljs-literal, 17 | .hljs-strong, 18 | .hljs-name { 19 | color: #f92672; 20 | } 21 | 22 | .hljs-code { 23 | color: #66d9ef; 24 | } 25 | 26 | .hljs-class .hljs-title { 27 | color: white; 28 | } 29 | 30 | .hljs-attribute, 31 | .hljs-symbol, 32 | .hljs-regexp, 33 | .hljs-link { 34 | color: #bf79db; 35 | } 36 | 37 | .hljs-string, 38 | .hljs-bullet, 39 | .hljs-subst, 40 | .hljs-title, 41 | .hljs-section, 42 | .hljs-emphasis, 43 | .hljs-type, 44 | .hljs-built_in, 45 | .hljs-builtin-name, 46 | .hljs-selector-attr, 47 | .hljs-selector-pseudo, 48 | .hljs-addition, 49 | .hljs-variable, 50 | .hljs-template-tag, 51 | .hljs-template-variable { 52 | color: #a6e22e; 53 | } 54 | 55 | .hljs-comment, 56 | .hljs-quote, 57 | .hljs-deletion, 58 | .hljs-meta { 59 | color: #75715e; 60 | } 61 | 62 | .hljs-keyword, 63 | .hljs-selector-tag, 64 | .hljs-literal, 65 | .hljs-doctag, 66 | .hljs-title, 67 | .hljs-section, 68 | .hljs-type, 69 | .hljs-selector-id { 70 | font-weight: bold; 71 | } 72 | -------------------------------------------------------------------------------- /FortranCon2020-community/plugin/highlight/zenburn.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Zenburn style from voldmar.ru (c) Vladimir Epifanov 4 | based on dark.css by Ivan Sagalaev 5 | 6 | */ 7 | 8 | .hljs { 9 | display: block; 10 | overflow-x: auto; 11 | padding: 0.5em; 12 | background: #3f3f3f; 13 | color: #dcdcdc; 14 | } 15 | 16 | .hljs-keyword, 17 | .hljs-selector-tag, 18 | .hljs-tag { 19 | color: #e3ceab; 20 | } 21 | 22 | .hljs-template-tag { 23 | color: #dcdcdc; 24 | } 25 | 26 | .hljs-number { 27 | color: #8cd0d3; 28 | } 29 | 30 | .hljs-variable, 31 | .hljs-template-variable, 32 | .hljs-attribute { 33 | color: #efdcbc; 34 | } 35 | 36 | .hljs-literal { 37 | color: #efefaf; 38 | } 39 | 40 | .hljs-subst { 41 | color: #8f8f8f; 42 | } 43 | 44 | .hljs-title, 45 | .hljs-name, 46 | .hljs-selector-id, 47 | .hljs-selector-class, 48 | .hljs-section, 49 | .hljs-type { 50 | color: #efef8f; 51 | } 52 | 53 | .hljs-symbol, 54 | .hljs-bullet, 55 | .hljs-link { 56 | color: #dca3a3; 57 | } 58 | 59 | .hljs-deletion, 60 | .hljs-string, 61 | .hljs-built_in, 62 | .hljs-builtin-name { 63 | color: #cc9393; 64 | } 65 | 66 | .hljs-addition, 67 | .hljs-comment, 68 | .hljs-quote, 69 | .hljs-meta { 70 | color: #7f9f7f; 71 | } 72 | 73 | 74 | .hljs-emphasis { 75 | font-style: italic; 76 | } 77 | 78 | .hljs-strong { 79 | font-weight: bold; 80 | } 81 | -------------------------------------------------------------------------------- /FortranCon2020-community/plugin/math/math.esm.js: -------------------------------------------------------------------------------- 1 | function e(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(n){for(var r=1;r { 8 | 9 | // The reveal.js instance this plugin is attached to 10 | let deck; 11 | 12 | let defaultOptions = { 13 | messageStyle: 'none', 14 | tex2jax: { 15 | inlineMath: [ [ '$', '$' ], [ '\\(', '\\)' ] ], 16 | skipTags: [ 'script', 'noscript', 'style', 'textarea', 'pre' ] 17 | }, 18 | skipStartupTypeset: true 19 | }; 20 | 21 | function loadScript( url, callback ) { 22 | 23 | let head = document.querySelector( 'head' ); 24 | let script = document.createElement( 'script' ); 25 | script.type = 'text/javascript'; 26 | script.src = url; 27 | 28 | // Wrapper for callback to make sure it only fires once 29 | let finish = () => { 30 | if( typeof callback === 'function' ) { 31 | callback.call(); 32 | callback = null; 33 | } 34 | } 35 | 36 | script.onload = finish; 37 | 38 | // IE 39 | script.onreadystatechange = () => { 40 | if ( this.readyState === 'loaded' ) { 41 | finish(); 42 | } 43 | } 44 | 45 | // Normal browsers 46 | head.appendChild( script ); 47 | 48 | } 49 | 50 | return { 51 | id: 'math', 52 | 53 | init: function( reveal ) { 54 | 55 | deck = reveal; 56 | 57 | let revealOptions = deck.getConfig().math || {}; 58 | 59 | let options = { ...defaultOptions, ...revealOptions }; 60 | let mathjax = options.mathjax || 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js'; 61 | let config = options.config || 'TeX-AMS_HTML-full'; 62 | let url = mathjax + '?config=' + config; 63 | 64 | options.tex2jax = { ...defaultOptions.tex2jax, ...revealOptions.tex2jax }; 65 | 66 | options.mathjax = options.config = null; 67 | 68 | loadScript( url, function() { 69 | 70 | MathJax.Hub.Config( options ); 71 | 72 | // Typeset followed by an immediate reveal.js layout since 73 | // the typesetting process could affect slide height 74 | MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub, deck.getRevealElement() ] ); 75 | MathJax.Hub.Queue( deck.layout ); 76 | 77 | // Reprocess equations in slides when they turn visible 78 | deck.on( 'slidechanged', function( event ) { 79 | 80 | MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub, event.currentSlide ] ); 81 | 82 | } ); 83 | 84 | } ); 85 | 86 | } 87 | } 88 | 89 | }; 90 | 91 | export default Plugin; 92 | -------------------------------------------------------------------------------- /FortranCon2020-community/plugin/notes/plugin.js: -------------------------------------------------------------------------------- 1 | import speakerViewHTML from './speaker-view.html'; 2 | 3 | import marked from 'marked'; 4 | 5 | /** 6 | * Handles opening of and synchronization with the reveal.js 7 | * notes window. 8 | * 9 | * Handshake process: 10 | * 1. This window posts 'connect' to notes window 11 | * - Includes URL of presentation to show 12 | * 2. Notes window responds with 'connected' when it is available 13 | * 3. This window proceeds to send the current presentation state 14 | * to the notes window 15 | */ 16 | const Plugin = () => { 17 | 18 | let popup = null; 19 | 20 | let deck; 21 | 22 | function openNotes() { 23 | 24 | if (popup && !popup.closed) { 25 | popup.focus(); 26 | return; 27 | } 28 | 29 | popup = window.open( 'about:blank', 'reveal.js - Notes', 'width=1100,height=700' ); 30 | popup.marked = marked; 31 | popup.document.write( speakerViewHTML ); 32 | 33 | if( !popup ) { 34 | alert( 'Speaker view popup failed to open. Please make sure popups are allowed and reopen the speaker view.' ); 35 | return; 36 | } 37 | 38 | /** 39 | * Connect to the notes window through a postmessage handshake. 40 | * Using postmessage enables us to work in situations where the 41 | * origins differ, such as a presentation being opened from the 42 | * file system. 43 | */ 44 | function connect() { 45 | // Keep trying to connect until we get a 'connected' message back 46 | let connectInterval = setInterval( function() { 47 | popup.postMessage( JSON.stringify( { 48 | namespace: 'reveal-notes', 49 | type: 'connect', 50 | url: window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search, 51 | state: deck.getState() 52 | } ), '*' ); 53 | }, 500 ); 54 | 55 | window.addEventListener( 'message', function( event ) { 56 | let data = JSON.parse( event.data ); 57 | if( data && data.namespace === 'reveal-notes' && data.type === 'connected' ) { 58 | clearInterval( connectInterval ); 59 | onConnected(); 60 | } 61 | if( data && data.namespace === 'reveal-notes' && data.type === 'call' ) { 62 | callRevealApi( data.methodName, data.arguments, data.callId ); 63 | } 64 | } ); 65 | } 66 | 67 | /** 68 | * Calls the specified Reveal.js method with the provided argument 69 | * and then pushes the result to the notes frame. 70 | */ 71 | function callRevealApi( methodName, methodArguments, callId ) { 72 | 73 | let result = deck[methodName].apply( deck, methodArguments ); 74 | popup.postMessage( JSON.stringify( { 75 | namespace: 'reveal-notes', 76 | type: 'return', 77 | result: result, 78 | callId: callId 79 | } ), '*' ); 80 | 81 | } 82 | 83 | /** 84 | * Posts the current slide data to the notes window 85 | */ 86 | function post( event ) { 87 | 88 | let slideElement = deck.getCurrentSlide(), 89 | notesElement = slideElement.querySelector( 'aside.notes' ), 90 | fragmentElement = slideElement.querySelector( '.current-fragment' ); 91 | 92 | let messageData = { 93 | namespace: 'reveal-notes', 94 | type: 'state', 95 | notes: '', 96 | markdown: false, 97 | whitespace: 'normal', 98 | state: deck.getState() 99 | }; 100 | 101 | // Look for notes defined in a slide attribute 102 | if( slideElement.hasAttribute( 'data-notes' ) ) { 103 | messageData.notes = slideElement.getAttribute( 'data-notes' ); 104 | messageData.whitespace = 'pre-wrap'; 105 | } 106 | 107 | // Look for notes defined in a fragment 108 | if( fragmentElement ) { 109 | let fragmentNotes = fragmentElement.querySelector( 'aside.notes' ); 110 | if( fragmentNotes ) { 111 | notesElement = fragmentNotes; 112 | } 113 | else if( fragmentElement.hasAttribute( 'data-notes' ) ) { 114 | messageData.notes = fragmentElement.getAttribute( 'data-notes' ); 115 | messageData.whitespace = 'pre-wrap'; 116 | 117 | // In case there are slide notes 118 | notesElement = null; 119 | } 120 | } 121 | 122 | // Look for notes defined in an aside element 123 | if( notesElement ) { 124 | messageData.notes = notesElement.innerHTML; 125 | messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string'; 126 | } 127 | 128 | popup.postMessage( JSON.stringify( messageData ), '*' ); 129 | 130 | } 131 | 132 | /** 133 | * Called once we have established a connection to the notes 134 | * window. 135 | */ 136 | function onConnected() { 137 | 138 | // Monitor events that trigger a change in state 139 | deck.on( 'slidechanged', post ); 140 | deck.on( 'fragmentshown', post ); 141 | deck.on( 'fragmenthidden', post ); 142 | deck.on( 'overviewhidden', post ); 143 | deck.on( 'overviewshown', post ); 144 | deck.on( 'paused', post ); 145 | deck.on( 'resumed', post ); 146 | 147 | // Post the initial state 148 | post(); 149 | 150 | } 151 | 152 | connect(); 153 | 154 | } 155 | 156 | return { 157 | id: 'notes', 158 | 159 | init: function( reveal ) { 160 | 161 | deck = reveal; 162 | 163 | if( !/receiver/i.test( window.location.search ) ) { 164 | 165 | // If the there's a 'notes' query set, open directly 166 | if( window.location.search.match( /(\?|\&)notes/gi ) !== null ) { 167 | openNotes(); 168 | } 169 | 170 | // Open the notes when the 's' key is hit 171 | deck.addKeyBinding({keyCode: 83, key: 'S', description: 'Speaker notes view'}, function() { 172 | openNotes(); 173 | } ); 174 | 175 | } 176 | 177 | }, 178 | 179 | open: openNotes 180 | }; 181 | 182 | }; 183 | 184 | export default Plugin; 185 | -------------------------------------------------------------------------------- /FortranCon2020-community/plugin/search/plugin.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Handles finding a text string anywhere in the slides and showing the next occurrence to the user 3 | * by navigatating to that slide and highlighting it. 4 | * 5 | * @author Jon Snyder , February 2013 6 | */ 7 | 8 | const Plugin = () => { 9 | 10 | // The reveal.js instance this plugin is attached to 11 | let deck; 12 | 13 | let searchElement; 14 | let searchButton; 15 | let searchInput; 16 | 17 | let matchedSlides; 18 | let currentMatchedIndex; 19 | let searchboxDirty; 20 | let hilitor; 21 | 22 | function render() { 23 | 24 | searchElement = document.createElement( 'div' ); 25 | searchElement.classList.add( 'searchbox' ); 26 | searchElement.style.position = 'absolute'; 27 | searchElement.style.top = '10px'; 28 | searchElement.style.right = '10px'; 29 | searchElement.style.zIndex = 10; 30 | 31 | //embedded base64 search icon Designed by Sketchdock - http://www.sketchdock.com/: 32 | searchElement.innerHTML = ` 33 | `; 34 | 35 | searchInput = searchElement.querySelector( '.searchinput' ); 36 | searchInput.style.width = '240px'; 37 | searchInput.style.fontSize = '14px'; 38 | searchInput.style.padding = '4px 6px'; 39 | searchInput.style.color = '#000'; 40 | searchInput.style.background = '#fff'; 41 | searchInput.style.borderRadius = '2px'; 42 | searchInput.style.border = '0'; 43 | searchInput.style.outline = '0'; 44 | searchInput.style.boxShadow = '0 2px 18px rgba(0, 0, 0, 0.2)'; 45 | searchInput.style['-webkit-appearance'] = 'none'; 46 | 47 | deck.getRevealElement().appendChild( searchElement ); 48 | 49 | // searchButton.addEventListener( 'click', function(event) { 50 | // doSearch(); 51 | // }, false ); 52 | 53 | searchInput.addEventListener( 'keyup', function( event ) { 54 | switch (event.keyCode) { 55 | case 13: 56 | event.preventDefault(); 57 | doSearch(); 58 | searchboxDirty = false; 59 | break; 60 | default: 61 | searchboxDirty = true; 62 | } 63 | }, false ); 64 | 65 | closeSearch(); 66 | 67 | } 68 | 69 | function openSearch() { 70 | if( !searchElement ) render(); 71 | 72 | searchElement.style.display = 'inline'; 73 | searchInput.focus(); 74 | searchInput.select(); 75 | } 76 | 77 | function closeSearch() { 78 | if( !searchElement ) render(); 79 | 80 | searchElement.style.display = 'none'; 81 | if(hilitor) hilitor.remove(); 82 | } 83 | 84 | function toggleSearch() { 85 | if( !searchElement ) render(); 86 | 87 | if (searchElement.style.display !== 'inline') { 88 | openSearch(); 89 | } 90 | else { 91 | closeSearch(); 92 | } 93 | } 94 | 95 | function doSearch() { 96 | //if there's been a change in the search term, perform a new search: 97 | if (searchboxDirty) { 98 | var searchstring = searchInput.value; 99 | 100 | if (searchstring === '') { 101 | if(hilitor) hilitor.remove(); 102 | matchedSlides = null; 103 | } 104 | else { 105 | //find the keyword amongst the slides 106 | hilitor = new Hilitor("slidecontent"); 107 | matchedSlides = hilitor.apply(searchstring); 108 | currentMatchedIndex = 0; 109 | } 110 | } 111 | 112 | if (matchedSlides) { 113 | //navigate to the next slide that has the keyword, wrapping to the first if necessary 114 | if (matchedSlides.length && (matchedSlides.length <= currentMatchedIndex)) { 115 | currentMatchedIndex = 0; 116 | } 117 | if (matchedSlides.length > currentMatchedIndex) { 118 | deck.slide(matchedSlides[currentMatchedIndex].h, matchedSlides[currentMatchedIndex].v); 119 | currentMatchedIndex++; 120 | } 121 | } 122 | } 123 | 124 | // Original JavaScript code by Chirp Internet: www.chirp.com.au 125 | // Please acknowledge use of this code by including this header. 126 | // 2/2013 jon: modified regex to display any match, not restricted to word boundaries. 127 | function Hilitor(id, tag) { 128 | 129 | var targetNode = document.getElementById(id) || document.body; 130 | var hiliteTag = tag || "EM"; 131 | var skipTags = new RegExp("^(?:" + hiliteTag + "|SCRIPT|FORM)$"); 132 | var colors = ["#ff6", "#a0ffff", "#9f9", "#f99", "#f6f"]; 133 | var wordColor = []; 134 | var colorIdx = 0; 135 | var matchRegex = ""; 136 | var matchingSlides = []; 137 | 138 | this.setRegex = function(input) 139 | { 140 | input = input.replace(/^[^\w]+|[^\w]+$/g, "").replace(/[^\w'-]+/g, "|"); 141 | matchRegex = new RegExp("(" + input + ")","i"); 142 | } 143 | 144 | this.getRegex = function() 145 | { 146 | return matchRegex.toString().replace(/^\/\\b\(|\)\\b\/i$/g, "").replace(/\|/g, " "); 147 | } 148 | 149 | // recursively apply word highlighting 150 | this.hiliteWords = function(node) 151 | { 152 | if(node == undefined || !node) return; 153 | if(!matchRegex) return; 154 | if(skipTags.test(node.nodeName)) return; 155 | 156 | if(node.hasChildNodes()) { 157 | for(var i=0; i < node.childNodes.length; i++) 158 | this.hiliteWords(node.childNodes[i]); 159 | } 160 | if(node.nodeType == 3) { // NODE_TEXT 161 | var nv, regs; 162 | if((nv = node.nodeValue) && (regs = matchRegex.exec(nv))) { 163 | //find the slide's section element and save it in our list of matching slides 164 | var secnode = node; 165 | while (secnode != null && secnode.nodeName != 'SECTION') { 166 | secnode = secnode.parentNode; 167 | } 168 | 169 | var slideIndex = deck.getIndices(secnode); 170 | var slidelen = matchingSlides.length; 171 | var alreadyAdded = false; 172 | for (var i=0; i < slidelen; i++) { 173 | if ( (matchingSlides[i].h === slideIndex.h) && (matchingSlides[i].v === slideIndex.v) ) { 174 | alreadyAdded = true; 175 | } 176 | } 177 | if (! alreadyAdded) { 178 | matchingSlides.push(slideIndex); 179 | } 180 | 181 | if(!wordColor[regs[0].toLowerCase()]) { 182 | wordColor[regs[0].toLowerCase()] = colors[colorIdx++ % colors.length]; 183 | } 184 | 185 | var match = document.createElement(hiliteTag); 186 | match.appendChild(document.createTextNode(regs[0])); 187 | match.style.backgroundColor = wordColor[regs[0].toLowerCase()]; 188 | match.style.fontStyle = "inherit"; 189 | match.style.color = "#000"; 190 | 191 | var after = node.splitText(regs.index); 192 | after.nodeValue = after.nodeValue.substring(regs[0].length); 193 | node.parentNode.insertBefore(match, after); 194 | } 195 | } 196 | }; 197 | 198 | // remove highlighting 199 | this.remove = function() 200 | { 201 | var arr = document.getElementsByTagName(hiliteTag); 202 | var el; 203 | while(arr.length && (el = arr[0])) { 204 | el.parentNode.replaceChild(el.firstChild, el); 205 | } 206 | }; 207 | 208 | // start highlighting at target node 209 | this.apply = function(input) 210 | { 211 | if(input == undefined || !input) return; 212 | this.remove(); 213 | this.setRegex(input); 214 | this.hiliteWords(targetNode); 215 | return matchingSlides; 216 | }; 217 | 218 | } 219 | 220 | return { 221 | 222 | id: 'search', 223 | 224 | init: reveal => { 225 | 226 | deck = reveal; 227 | deck.registerKeyboardShortcut( 'CTRL + Shift + F', 'Search' ); 228 | 229 | document.addEventListener( 'keydown', function( event ) { 230 | if( event.key == "F" && (event.ctrlKey || event.metaKey) ) { //Control+Shift+f 231 | event.preventDefault(); 232 | toggleSearch(); 233 | } 234 | }, false ); 235 | 236 | }, 237 | 238 | open: openSearch 239 | 240 | } 241 | }; 242 | 243 | export default Plugin; -------------------------------------------------------------------------------- /FortranCon2020-community/plugin/zoom/plugin.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * reveal.js Zoom plugin 3 | */ 4 | const Plugin = { 5 | 6 | id: 'zoom', 7 | 8 | init: function( reveal ) { 9 | 10 | reveal.getRevealElement().addEventListener( 'mousedown', function( event ) { 11 | var defaultModifier = /Linux/.test( window.navigator.platform ) ? 'ctrl' : 'alt'; 12 | 13 | var modifier = ( reveal.getConfig().zoomKey ? reveal.getConfig().zoomKey : defaultModifier ) + 'Key'; 14 | var zoomLevel = ( reveal.getConfig().zoomLevel ? reveal.getConfig().zoomLevel : 2 ); 15 | 16 | if( event[ modifier ] && !reveal.isOverview() ) { 17 | event.preventDefault(); 18 | 19 | zoom.to({ 20 | x: event.clientX, 21 | y: event.clientY, 22 | scale: zoomLevel, 23 | pan: false 24 | }); 25 | } 26 | } ); 27 | 28 | } 29 | 30 | }; 31 | 32 | export default () => Plugin; 33 | 34 | /*! 35 | * zoom.js 0.3 (modified for use with reveal.js) 36 | * http://lab.hakim.se/zoom-js 37 | * MIT licensed 38 | * 39 | * Copyright (C) 2011-2014 Hakim El Hattab, http://hakim.se 40 | */ 41 | var zoom = (function(){ 42 | 43 | // The current zoom level (scale) 44 | var level = 1; 45 | 46 | // The current mouse position, used for panning 47 | var mouseX = 0, 48 | mouseY = 0; 49 | 50 | // Timeout before pan is activated 51 | var panEngageTimeout = -1, 52 | panUpdateInterval = -1; 53 | 54 | // Check for transform support so that we can fallback otherwise 55 | var supportsTransforms = 'WebkitTransform' in document.body.style || 56 | 'MozTransform' in document.body.style || 57 | 'msTransform' in document.body.style || 58 | 'OTransform' in document.body.style || 59 | 'transform' in document.body.style; 60 | 61 | if( supportsTransforms ) { 62 | // The easing that will be applied when we zoom in/out 63 | document.body.style.transition = 'transform 0.8s ease'; 64 | document.body.style.OTransition = '-o-transform 0.8s ease'; 65 | document.body.style.msTransition = '-ms-transform 0.8s ease'; 66 | document.body.style.MozTransition = '-moz-transform 0.8s ease'; 67 | document.body.style.WebkitTransition = '-webkit-transform 0.8s ease'; 68 | } 69 | 70 | // Zoom out if the user hits escape 71 | document.addEventListener( 'keyup', function( event ) { 72 | if( level !== 1 && event.keyCode === 27 ) { 73 | zoom.out(); 74 | } 75 | } ); 76 | 77 | // Monitor mouse movement for panning 78 | document.addEventListener( 'mousemove', function( event ) { 79 | if( level !== 1 ) { 80 | mouseX = event.clientX; 81 | mouseY = event.clientY; 82 | } 83 | } ); 84 | 85 | /** 86 | * Applies the CSS required to zoom in, prefers the use of CSS3 87 | * transforms but falls back on zoom for IE. 88 | * 89 | * @param {Object} rect 90 | * @param {Number} scale 91 | */ 92 | function magnify( rect, scale ) { 93 | 94 | var scrollOffset = getScrollOffset(); 95 | 96 | // Ensure a width/height is set 97 | rect.width = rect.width || 1; 98 | rect.height = rect.height || 1; 99 | 100 | // Center the rect within the zoomed viewport 101 | rect.x -= ( window.innerWidth - ( rect.width * scale ) ) / 2; 102 | rect.y -= ( window.innerHeight - ( rect.height * scale ) ) / 2; 103 | 104 | if( supportsTransforms ) { 105 | // Reset 106 | if( scale === 1 ) { 107 | document.body.style.transform = ''; 108 | document.body.style.OTransform = ''; 109 | document.body.style.msTransform = ''; 110 | document.body.style.MozTransform = ''; 111 | document.body.style.WebkitTransform = ''; 112 | } 113 | // Scale 114 | else { 115 | var origin = scrollOffset.x +'px '+ scrollOffset.y +'px', 116 | transform = 'translate('+ -rect.x +'px,'+ -rect.y +'px) scale('+ scale +')'; 117 | 118 | document.body.style.transformOrigin = origin; 119 | document.body.style.OTransformOrigin = origin; 120 | document.body.style.msTransformOrigin = origin; 121 | document.body.style.MozTransformOrigin = origin; 122 | document.body.style.WebkitTransformOrigin = origin; 123 | 124 | document.body.style.transform = transform; 125 | document.body.style.OTransform = transform; 126 | document.body.style.msTransform = transform; 127 | document.body.style.MozTransform = transform; 128 | document.body.style.WebkitTransform = transform; 129 | } 130 | } 131 | else { 132 | // Reset 133 | if( scale === 1 ) { 134 | document.body.style.position = ''; 135 | document.body.style.left = ''; 136 | document.body.style.top = ''; 137 | document.body.style.width = ''; 138 | document.body.style.height = ''; 139 | document.body.style.zoom = ''; 140 | } 141 | // Scale 142 | else { 143 | document.body.style.position = 'relative'; 144 | document.body.style.left = ( - ( scrollOffset.x + rect.x ) / scale ) + 'px'; 145 | document.body.style.top = ( - ( scrollOffset.y + rect.y ) / scale ) + 'px'; 146 | document.body.style.width = ( scale * 100 ) + '%'; 147 | document.body.style.height = ( scale * 100 ) + '%'; 148 | document.body.style.zoom = scale; 149 | } 150 | } 151 | 152 | level = scale; 153 | 154 | if( document.documentElement.classList ) { 155 | if( level !== 1 ) { 156 | document.documentElement.classList.add( 'zoomed' ); 157 | } 158 | else { 159 | document.documentElement.classList.remove( 'zoomed' ); 160 | } 161 | } 162 | } 163 | 164 | /** 165 | * Pan the document when the mosue cursor approaches the edges 166 | * of the window. 167 | */ 168 | function pan() { 169 | var range = 0.12, 170 | rangeX = window.innerWidth * range, 171 | rangeY = window.innerHeight * range, 172 | scrollOffset = getScrollOffset(); 173 | 174 | // Up 175 | if( mouseY < rangeY ) { 176 | window.scroll( scrollOffset.x, scrollOffset.y - ( 1 - ( mouseY / rangeY ) ) * ( 14 / level ) ); 177 | } 178 | // Down 179 | else if( mouseY > window.innerHeight - rangeY ) { 180 | window.scroll( scrollOffset.x, scrollOffset.y + ( 1 - ( window.innerHeight - mouseY ) / rangeY ) * ( 14 / level ) ); 181 | } 182 | 183 | // Left 184 | if( mouseX < rangeX ) { 185 | window.scroll( scrollOffset.x - ( 1 - ( mouseX / rangeX ) ) * ( 14 / level ), scrollOffset.y ); 186 | } 187 | // Right 188 | else if( mouseX > window.innerWidth - rangeX ) { 189 | window.scroll( scrollOffset.x + ( 1 - ( window.innerWidth - mouseX ) / rangeX ) * ( 14 / level ), scrollOffset.y ); 190 | } 191 | } 192 | 193 | function getScrollOffset() { 194 | return { 195 | x: window.scrollX !== undefined ? window.scrollX : window.pageXOffset, 196 | y: window.scrollY !== undefined ? window.scrollY : window.pageYOffset 197 | } 198 | } 199 | 200 | return { 201 | /** 202 | * Zooms in on either a rectangle or HTML element. 203 | * 204 | * @param {Object} options 205 | * - element: HTML element to zoom in on 206 | * OR 207 | * - x/y: coordinates in non-transformed space to zoom in on 208 | * - width/height: the portion of the screen to zoom in on 209 | * - scale: can be used instead of width/height to explicitly set scale 210 | */ 211 | to: function( options ) { 212 | 213 | // Due to an implementation limitation we can't zoom in 214 | // to another element without zooming out first 215 | if( level !== 1 ) { 216 | zoom.out(); 217 | } 218 | else { 219 | options.x = options.x || 0; 220 | options.y = options.y || 0; 221 | 222 | // If an element is set, that takes precedence 223 | if( !!options.element ) { 224 | // Space around the zoomed in element to leave on screen 225 | var padding = 20; 226 | var bounds = options.element.getBoundingClientRect(); 227 | 228 | options.x = bounds.left - padding; 229 | options.y = bounds.top - padding; 230 | options.width = bounds.width + ( padding * 2 ); 231 | options.height = bounds.height + ( padding * 2 ); 232 | } 233 | 234 | // If width/height values are set, calculate scale from those values 235 | if( options.width !== undefined && options.height !== undefined ) { 236 | options.scale = Math.max( Math.min( window.innerWidth / options.width, window.innerHeight / options.height ), 1 ); 237 | } 238 | 239 | if( options.scale > 1 ) { 240 | options.x *= options.scale; 241 | options.y *= options.scale; 242 | 243 | magnify( options, options.scale ); 244 | 245 | if( options.pan !== false ) { 246 | 247 | // Wait with engaging panning as it may conflict with the 248 | // zoom transition 249 | panEngageTimeout = setTimeout( function() { 250 | panUpdateInterval = setInterval( pan, 1000 / 60 ); 251 | }, 800 ); 252 | 253 | } 254 | } 255 | } 256 | }, 257 | 258 | /** 259 | * Resets the document zoom state to its default. 260 | */ 261 | out: function() { 262 | clearTimeout( panEngageTimeout ); 263 | clearInterval( panUpdateInterval ); 264 | 265 | magnify( { x: 0, y: 0 }, 1 ); 266 | 267 | level = 1; 268 | }, 269 | 270 | // Alias 271 | magnify: function( options ) { this.to( options ) }, 272 | reset: function() { this.out() }, 273 | 274 | zoomLevel: function() { 275 | return level; 276 | } 277 | } 278 | 279 | })(); 280 | -------------------------------------------------------------------------------- /FortranCon2020-community/plugin/zoom/zoom.esm.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * reveal.js Zoom plugin 3 | */ 4 | var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(o){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;o[i]&&!e.isOverview()&&(o.preventDefault(),t.to({x:o.clientX,y:o.clientY,scale:d,pan:!1}))}))}},t=function(){var e=1,o=0,n=0,i=-1,d=-1,s="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style;function r(t,o){var n=y();if(t.width=t.width||1,t.height=t.height||1,t.x-=(window.innerWidth-t.width*o)/2,t.y-=(window.innerHeight-t.height*o)/2,s)if(1===o)document.body.style.transform="",document.body.style.OTransform="",document.body.style.msTransform="",document.body.style.MozTransform="",document.body.style.WebkitTransform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-t.x+"px,"+-t.y+"px) scale("+o+")";document.body.style.transformOrigin=i,document.body.style.OTransformOrigin=i,document.body.style.msTransformOrigin=i,document.body.style.MozTransformOrigin=i,document.body.style.WebkitTransformOrigin=i,document.body.style.transform=d,document.body.style.OTransform=d,document.body.style.msTransform=d,document.body.style.MozTransform=d,document.body.style.WebkitTransform=d}else 1===o?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+t.x)/o+"px",document.body.style.top=-(n.y+t.y)/o+"px",document.body.style.width=100*o+"%",document.body.style.height=100*o+"%",document.body.style.zoom=o);e=o,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function m(){var t=.12*window.innerWidth,i=.12*window.innerHeight,d=y();nwindow.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),owindow.innerWidth-t&&window.scroll(d.x+(1-(window.innerWidth-o)/t)*(14/e),d.y)}function y(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return s&&(document.body.style.transition="transform 0.8s ease",document.body.style.OTransition="-o-transform 0.8s ease",document.body.style.msTransition="-ms-transform 0.8s ease",document.body.style.MozTransition="-moz-transform 0.8s ease",document.body.style.WebkitTransition="-webkit-transform 0.8s ease"),document.addEventListener("keyup",(function(o){1!==e&&27===o.keyCode&&t.out()})),document.addEventListener("mousemove",(function(t){1!==e&&(o=t.clientX,n=t.clientY)})),{to:function(o){if(1!==e)t.out();else{if(o.x=o.x||0,o.y=o.y||0,o.element){var n=o.element.getBoundingClientRect();o.x=n.left-20,o.y=n.top-20,o.width=n.width+40,o.height=n.height+40}void 0!==o.width&&void 0!==o.height&&(o.scale=Math.max(Math.min(window.innerWidth/o.width,window.innerHeight/o.height),1)),o.scale>1&&(o.x*=o.scale,o.y*=o.scale,r(o,o.scale),!1!==o.pan&&(i=setTimeout((function(){d=setInterval(m,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),r({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();export default function(){return e} 5 | -------------------------------------------------------------------------------- /FortranCon2020-community/plugin/zoom/zoom.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).RevealZoom=t()}(this,(function(){"use strict"; 2 | /*! 3 | * reveal.js Zoom plugin 4 | */var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(o){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;o[i]&&!e.isOverview()&&(o.preventDefault(),t.to({x:o.clientX,y:o.clientY,scale:d,pan:!1}))}))}},t=function(){var e=1,o=0,n=0,i=-1,d=-1,s="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style;function r(t,o){var n=y();if(t.width=t.width||1,t.height=t.height||1,t.x-=(window.innerWidth-t.width*o)/2,t.y-=(window.innerHeight-t.height*o)/2,s)if(1===o)document.body.style.transform="",document.body.style.OTransform="",document.body.style.msTransform="",document.body.style.MozTransform="",document.body.style.WebkitTransform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-t.x+"px,"+-t.y+"px) scale("+o+")";document.body.style.transformOrigin=i,document.body.style.OTransformOrigin=i,document.body.style.msTransformOrigin=i,document.body.style.MozTransformOrigin=i,document.body.style.WebkitTransformOrigin=i,document.body.style.transform=d,document.body.style.OTransform=d,document.body.style.msTransform=d,document.body.style.MozTransform=d,document.body.style.WebkitTransform=d}else 1===o?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+t.x)/o+"px",document.body.style.top=-(n.y+t.y)/o+"px",document.body.style.width=100*o+"%",document.body.style.height=100*o+"%",document.body.style.zoom=o);e=o,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function m(){var t=.12*window.innerWidth,i=.12*window.innerHeight,d=y();nwindow.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),owindow.innerWidth-t&&window.scroll(d.x+(1-(window.innerWidth-o)/t)*(14/e),d.y)}function y(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return s&&(document.body.style.transition="transform 0.8s ease",document.body.style.OTransition="-o-transform 0.8s ease",document.body.style.msTransition="-ms-transform 0.8s ease",document.body.style.MozTransition="-moz-transform 0.8s ease",document.body.style.WebkitTransition="-webkit-transform 0.8s ease"),document.addEventListener("keyup",(function(o){1!==e&&27===o.keyCode&&t.out()})),document.addEventListener("mousemove",(function(t){1!==e&&(o=t.clientX,n=t.clientY)})),{to:function(o){if(1!==e)t.out();else{if(o.x=o.x||0,o.y=o.y||0,o.element){var n=o.element.getBoundingClientRect();o.x=n.left-20,o.y=n.top-20,o.width=n.width+40,o.height=n.height+40}void 0!==o.width&&void 0!==o.height&&(o.scale=Math.max(Math.min(window.innerWidth/o.width,window.innerHeight/o.height),1)),o.scale>1&&(o.x*=o.scale,o.y*=o.scale,r(o,o.scale),!1!==o.pan&&(i=setTimeout((function(){d=setInterval(m,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),r({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();return function(){return e}})); 5 | -------------------------------------------------------------------------------- /FortranCon2020-community/slides/about-me.md: -------------------------------------------------------------------------------- 1 | ### About me 2 | 3 | * Meteorologist and oceanographer 4 | * Research at University of Miami 🌊 5 | * Founded [Cloudrun](https://cloudrun.co) in 2017 6 | * Authored a Modern Fortran [book](https://www.manning.com/books/modern-fortran) 📖 7 | * I live and work in Boca Raton, FL 🌴 8 | * More at [milancurcic.com](https://milancurcic.com) 9 | -------------------------------------------------------------------------------- /FortranCon2020-community/slides/challenges.md: -------------------------------------------------------------------------------- 1 | ## Challenges 2 | 3 | * Currently not funded 4 | * Sometimes we disagree 5 | * Scaling up the community 6 | * We learn as we go 7 | -------------------------------------------------------------------------------- /FortranCon2020-community/slides/community.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | ## Community 4 | 5 | 6 |
7 | -------------------------------------------------------------------------------- /FortranCon2020-community/slides/compilers.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | ## Compilers ⚙ 4 |
5 | 6 | 7 |
8 | 9 | ### Compilers 10 | 11 | * gfortran currently the only mature open source compiler 12 | * Lack of a Fortran interpreter makes rapid prototyping 13 | difficult 14 | * Flang and LFortran under development (both LLVM based) 15 | * Lacking support for GPUs and other emerging platforms 16 |
17 | 18 | 19 |
20 | 21 | ### Long-term goals 22 | 23 | * Community-developed open source compiler and interpreter 24 | * Prototype language features before including them in the standard 25 | * Native and seamless support for CPUs, GPUs, and other emerging platforms 26 | * Cross-platform for major OS's 27 | * Closer collaboration with commercial vendors 28 |
29 | 30 | 31 |
32 | 33 | ### Compiler talks at FortranCon 34 | 35 | * gfortran talk by Thomas König 36 | * Flang talk by Gary Klimowicz 37 | * LFortran talk by Ondřej Čertík 38 |
39 | -------------------------------------------------------------------------------- /FortranCon2020-community/slides/discourse.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | ### Growing and nurturing the community 4 |
5 | 6 | 7 |
8 | 9 | ### Growing and nurturing the community 10 | 11 | * Moderated discussion board 12 | * Mailing list 13 | * Newsletter 14 | * Monthly call 15 | * Social channels 16 |
17 | 18 | 19 |
20 | 21 | ### Discussion board 22 | 23 | * Moderated to ensure welcoming, constructive, and respectful discussion 24 | * Since May 4: 25 | - 58 members 26 | - 57 topics 27 | - 397 posts 28 | * https://fortran-lang.discourse.group 29 |
30 | 31 | 32 |
33 | 34 | ### Mailing list 35 | 36 | * Moderated to ensure welcoming, constructive, and respectful discussion 37 | * News and announcements 38 | * Since May 1: 39 | - 61 members 40 | - 16 topics 41 | - 91 posts 42 | * https://groups.io/g/fortran-lang 43 |
44 | 45 | 46 |
47 | 48 | ### Newsletter 49 | 50 | 51 |
52 | 53 | 54 |
55 | 56 | ### Monthly call 57 | 58 | 59 |
60 | 61 |
62 | 63 | ### Social channels 64 | 65 | * Twitter: https://twitter.com/fortranlang 66 | * Youtube: https://www.youtube.com/channel/UCTYRAlVmMCGGcrMkKxQLurw 67 |
68 | -------------------------------------------------------------------------------- /FortranCon2020-community/slides/fpm.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | ## Fortran Package Manager (fpm) 📦 4 |
5 | 6 |
7 | 8 | ### Fortran Package Manager (fpm) 9 | 10 | * Package manager + build system for Fortran 11 | * Inspired by Rust's Cargo 🦀 12 | * Focus on User Experience: 13 | - Easy to install and use 14 | - Package your application or library 15 | - Install dependencies seamlessly and automatically 16 |
17 | 18 | 19 |
20 | 21 | ### fpm is a package manager 📦 22 | 23 | Compile and link external Fortran dependencies by simply specifying a git URL: 24 | 25 | ```toml 26 | [dependencies] 27 | datetime = {git="https://github.com/wavebitscientific/datetime-fortran"} 28 | ``` 29 |
30 | 31 | 32 |
33 | 34 | ### fpm is a build system 🔨 35 | 36 | Never again maintain complex Makefiles, CMakeLists, or custom build scripts 37 |
38 | 39 | 40 |
41 | 42 | ### Example use 43 | 44 | ```shell 45 | $ fpm new # create a new Fortran project 46 | $ fpm build # build the project 47 | $ fpm install # (build and) install 48 | $ fpm run # (build and) run the program 49 | $ fpm test # (build and) run tests 50 | ``` 51 |
52 | 53 | 54 |
55 | 56 | ### In-depth look at fpm 57 | 58 | * See the fpm talk by Brad Richardson 59 |
60 | 61 | 62 |
63 | 64 | ### fpm on GitHub 65 | 66 | https://github.com/fortran-lang/fpm 67 |
68 | -------------------------------------------------------------------------------- /FortranCon2020-community/slides/motivation.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | ## Problem and Motivation 4 |
5 | 6 |
7 | 8 | ### Problem and Motivation 9 | 10 | Fortran is a powerful, easy-to-learn language, and 11 | 12 | 1. It lacks modern tooling 13 | 2. Has a poor ecosystem of libraries 14 | 3. Its users are scattered and disconnected 15 | 16 | ➡ **User adoption and new Fortran projects are diminishing** 17 |
18 | 19 | 20 |
21 | 22 | ### Fortran lacks modern tooling 23 | 24 | * No comprehensive standard library 25 | * No go-to build system 26 | * No package management solution 27 | * Open source compilers few and far between 28 | 29 | ➡ **Great language that can be difficult to work with** 30 |
31 | 32 | 33 |
34 | 35 | ### Poor library ecosystem 36 | 37 | * Fortran started in the pre-internet era 38 | * Before email, websites, or version control 39 | * GitHub? Forget about it! 40 | * Scarce open source library ecosystem 41 | 42 | ➡ **Many wheels re-invented but not shared** 43 |
44 | 45 | 46 |
47 | 48 | ### Fortran users are scattered and disconnected 49 | 50 | * Difficult to find other users 51 | * No central online presence 52 | * Conferences and meetups few and far between 53 | 54 | ➡ **Difficult to stay motivated and makes you re-invent the wheel** 55 |
56 | 57 | 58 |
59 | 60 | ### Fortran also has a PR problem 61 | 62 | * Most of society still only knows of FORTRAN 63 | * Mainframes, punchcards, and UPPERCASE 64 | * Images deeply engraved into the cultural DNA 65 | * Fortran is not the village idiot of programming languages, 66 | yet, it is being treated as such 67 | 68 | ➡ **This is bad. We need to change it.** 69 |
70 | 71 | 72 |
73 | 74 | ### Our desires for Fortran 75 | 76 | * Fortran should be easy and fun to work with 77 | * It should feel like play and not work 78 | * Rich ecosystem of open source libraries 79 | * Run Fortran code on any architecture: CPUs, GPUs, emerging platforms 80 |
81 | 82 | 83 |
84 | 85 | ### How do we get there? 86 | 87 | We need: 88 | 89 | * A rich standard library 90 | * An easy-to-use, fast package manager 91 | * A cutting-edge open source compiler and interpreter 92 | * A modern, beautiful website and learning resources to attract new users 93 | * A welcoming and inclusive online community 94 |
95 | -------------------------------------------------------------------------------- /FortranCon2020-community/slides/outlook.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | ## Next steps 4 |
5 | 6 | 7 |
8 | 9 | ### Next steps 10 | 11 | * stdlib and fpm under ongoing development 12 | * Draft an fpm specification, begin Fortran implementation 13 | * Get more users for stdlib and fpm 14 | * Write tutorials for fortran-lang.org 15 | * Collaborate with J3 and WG5 as much as we can 16 |
17 | 18 | 19 |
20 | 21 | ### One year outlook 22 | 23 | * 50+ active code contributors 👫👫 24 | * Stable (non-experimental) release of stdlib 25 | * Fortran implementation of fpm 26 | * fpm can install most modern Fortran projects 27 | * Complete tutorials on most Fortran features 28 |
29 | 30 | 31 |
32 | 33 | ### One year outlook (continued) 34 | 35 | * Google Summer of Code 2021 36 | * Seek sponsorship to support travel to meetings 37 | * NumFocus or non-profit organization 38 | * Present at conferences: FortranCon, SciPyConf, Supercomputing 39 |
40 | 41 |
42 | 43 | ### Ten-year outlook 44 | 45 | * 100+ active code contributors 👫👫👫👫 46 | * Mature open source compiler and interpreter targeting CPUs, GPUs, and other emerging platforms ⚙ 47 | * stdlib ships with all major compilers 🧰 48 | * Seek sponsorship to support full-time developers 💵 49 |
50 | -------------------------------------------------------------------------------- /FortranCon2020-community/slides/overview.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | -------------------------------------------------------------------------------- /FortranCon2020-community/slides/pillars.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | ### Four pillars of fortran-lang 4 |
5 | 6 | 7 |
8 | 9 | ### Four pillars of fortran-lang 10 | 11 | 1. Standard Library 🧰 12 | 2. Package Manager 📦 13 | 3. Compilers ⚙ 14 | 4. Website 🌐 15 |
16 | 17 | 18 |
19 | 20 | ### First pillar: Standard Library 🧰 21 |
22 | 23 |
24 | 25 | ### Second pillar: Package Manager 📦 26 |
27 | 28 |
29 | 30 | ### Third pillar: Compilers ⚙ 31 |
32 | 33 | 34 |
35 | 36 | ### Fourth pillar: Website 🌐 37 |
38 | -------------------------------------------------------------------------------- /FortranCon2020-community/slides/stdlib.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | ## Fortran Standard Library (stdlib) 🧰 4 |
5 | 6 | 7 |
8 | 9 | ### Why stdlib? 10 | 11 | * Fortran has a limited set of built-in procedures 12 | * Limited capacity for general purpose programming 13 | * Wheels keep getting re-invented 14 | * Many requests to the Fortran Committee can be prototyped in libraries 15 |
16 | 17 | 18 |
19 | 20 | ### Implemented so far 21 | 22 | * 34 procedures across 9 modules: 23 | `ascii`, `error`, `io`, `kinds`, `linalg`, `optval`, `quadrature`, `stats`, `system` 24 | * Compatible with any rank and kind 25 | * 16 direct source code contributors 26 | * 47 total contributors 27 |
28 | 29 | 30 |
31 | 32 | ### In-depth look at stdlib 33 | 34 | * See the next talk by Jérémie Vandenplas 35 |
36 | 37 | 38 |
39 | 40 | ### Links 41 | 42 | * Code: https://github.com/fortran-lang/stdlib 43 | * API docs: https://stdlib.fortran-lang.org 44 |
45 | -------------------------------------------------------------------------------- /FortranCon2020-community/slides/takeaways.md: -------------------------------------------------------------------------------- 1 | ### Takeaways 2 | 3 | 1. fortran-lang is a young community project for the betterment of Fortran 4 | 2. Standard library, package manager, and the website are the current ongoing projects 5 | 3. Toward a community compiler and collaboration with vendors and standard committees 6 | 7 | Join us: https://fortran-lang.org 8 | -------------------------------------------------------------------------------- /FortranCon2020-community/slides/thank-you.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | ## Thank you! 🙏 4 |
5 | -------------------------------------------------------------------------------- /FortranCon2020-community/slides/title.md: -------------------------------------------------------------------------------- 1 | ### Toward a thriving open source Fortran community 2 | 3 | [Milan Curcic](https://github.com/milancurcic), 4 | [Ondřej Čertík](https://github.com/certik), 5 | [Laurence Kedward](https://github.com/lkedward), 6 | [Vincent Magnin](https://github.com/vmagnin), 7 | [Ivan Pribec](https://github.com/ivan-pi), 8 | [Brad Richardson](https://github.com/everythingfunctional), 9 | and [Jérémie Vandenplas](https://github.com/jvdp1) 10 | 11 | 2 July, FortranCon 2020 12 | -------------------------------------------------------------------------------- /FortranCon2020-community/slides/website.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | ## fortran-lang.org 🌐 4 |
5 | 6 |
7 | 8 | ### Home of Fortran on the internet 9 | 10 | * A central place for all Fortran users to find everything they need 11 | * Tutorials, compilers, and other resources 12 | * A moderated discussion board 13 | * Mailing list 14 | * Newsletter 15 |
16 | 17 |
18 | 19 |
20 | -------------------------------------------------------------------------------- /FortranCon2020-fpm/README.md: -------------------------------------------------------------------------------- 1 | # FortranCon2020-fpm 2 | 3 | **Presenter** [Brad Richardson](https://github.com/everythingfunctional) 4 | 5 | **Co-authors**: 6 | [Ondrej Certik](https://github.com/certik), 7 | [Milan Curcic](https://github.com/milancurcic). 8 | 9 | **Title**: Fortran Package Manager 10 | 11 | **Abstract**: 12 | While Fortran is the oldest high level language, it has done quite well in 13 | keeping up with the times in terms of features and capabilities of the language 14 | itself. However, modern practices and developers have become accustomed to tools 15 | and ecosystems which provide many conveniences in a programming environment. 16 | Unfortunately, Fortran has not kept pace with such tooling and ecosystems. One 17 | such tool which has become popular is a package manager. A package manger is a 18 | tool that manages the dependencies of a project on other libraries. This is 19 | accomplished by keeping track of the dependencies, with specifiable version 20 | constraints, and automating the process of fetching them - including transitive 21 | dependencies - for use in the compilation of the project. Often included are the 22 | facilities for compiling, running, and testing the project, as well as searching 23 | for available open source libraries, and generating a template for new projects. 24 | This paper describes the development of just such a tool for Fortran, aptly 25 | named the Fortran Package Manager (FPM). 26 | -------------------------------------------------------------------------------- /FortranCon2020-fpm/fpm-presentation.odp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-fpm/fpm-presentation.odp -------------------------------------------------------------------------------- /FortranCon2020-fpm/fpm-presentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-fpm/fpm-presentation.pdf -------------------------------------------------------------------------------- /FortranCon2020-stdlib/README.md: -------------------------------------------------------------------------------- 1 | # FortranCon2020-stdlib 2 | 3 | **Authors**: 4 | [Jeremie Vandenplas](https://github.com/jvdp1), jeremie.vandenplas@wur.nl, Wageningen University & Research 5 | [Bálint Aradi](https://github.com/aradi), aradi@uni-bremen.de, University of Bremen 6 | [Izaak Beekman](https://github.com/zbeekman), contact@izaakbeekman.com, ParaTools Inc. 7 | [Ondrej Certik](https://github.com/certik), ondrej@certik.us, Los Alamos National Laboratory 8 | [Milan Curcic](https://github.com/milancuric), caomaco@gmail.com, University of Miami 9 | [Pierre de Buyl](https://github.com/pdebuyl), pdebuyl@pdebuyl.be, KU Leuven 10 | [Juan Fiol](https://github.com/fiolj),, 11 | [Michael Hirsch](https://github.com/scivision), info@scivision.dev, SciVision, Inc. 12 | [Ivan Pribec](https://github.com/ivan-pi), ivan.pribec@tum.de, Technical University of Munich 13 | [Nathaniel Shaffer](https://github.com/nshaffer), nrshaffer@protonmail.com, Los Alamos National Laboratory 14 | 15 | **To be acknowledged in the presentation (following comments):** 16 | [Neil Carlson](https://github.com/nncarlson) 17 | [Pedro Costa](https://github.com/p-costa) 18 | [???](https://github.com/JHenneberg) 19 | [Yuichiro Sakamoto](https://github.com/sakamoti) 20 | [Ashwin Vishnu](https://github.com/ashwinvis) 21 | 22 | **Track**: Junior presentations (15 + 5 minutes discussion) 23 | 24 | **Presenter**: [Jeremie Vandenplas](https://github.com/jvdp1) 25 | 26 | **Title**: Fortran Standard Library 27 | 28 | **Abstract**: 29 | The Fortran Standard, as published by the International Organization for Standardization (ISO), does not include a Standard Library. 30 | The language can be extended with new intrinsic procedure and modules, but these must be formally standardized and then implemented by compiler vendors before becoming available to users. 31 | Therefore, the goal of this project is to provide a community driven and agreed upon de facto "standard" library for Modern Fortran, called the Fortran Standard Library (stdlib; https://github.com/fortran-lang/stdlib). 32 | This library aims to provide to the community a set of procedures for science, engineering, and mathematics. 33 | The overall scope of the Fortran Standard Library is therefore similar to the one of SciPy or to the default built-in Matlab scientific environment. 34 | Currently the library includes procedures for catching and handling errors, handling optional arguments, facilitating I/O operations, linear algebra, numerical integration, and descriptive statistics. 35 | Started a few months ago, no less than 15 people already contributed to the development of the Fortran Standard Library and its documentation. 36 | Many other programmers are also involved in active discussions about its development through GitHub issues. 37 | The development of this library is part of the Fortran-lang project and aims to collaborate with the Fortran Standards Committee. 38 | -------------------------------------------------------------------------------- /FortranCon2020-stdlib/apidocsstdlib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2020-stdlib/apidocsstdlib.png -------------------------------------------------------------------------------- /FortranCon2021-fpm/.gitignore: -------------------------------------------------------------------------------- 1 | /*.aux 2 | /*.log 3 | /*.nav 4 | /*.out 5 | /*.snm 6 | /*.toc 7 | /*.bak 8 | /*.pdf 9 | /*.vrb 10 | -------------------------------------------------------------------------------- /FortranCon2021-fpm/Figures/bootstrapping.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2021-fpm/Figures/bootstrapping.pdf -------------------------------------------------------------------------------- /FortranCon2021-fpm/Figures/bootstrapping.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 40 | 42 | 45 | 49 | 53 | 54 | 63 | 64 | 69 | 73 | 79 | 85 | 91 | fpm.F90 102 | ./fpm-tmp 113 | fpm 124 | $FC fpm.F90 135 | ./fpm-tmp install 146 | curl 157 | 158 | 159 | -------------------------------------------------------------------------------- /FortranCon2021-fpm/Figures/dependencies.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2021-fpm/Figures/dependencies.pdf -------------------------------------------------------------------------------- /FortranCon2021-fpm/Figures/features.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2021-fpm/Figures/features.pdf -------------------------------------------------------------------------------- /FortranCon2021-fpm/Figures/fpm-projects.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2021-fpm/Figures/fpm-projects.pdf -------------------------------------------------------------------------------- /FortranCon2021-fpm/Figures/get-fpm.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2021-fpm/Figures/get-fpm.pdf -------------------------------------------------------------------------------- /FortranCon2021-fpm/Figures/layout.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2021-fpm/Figures/layout.pdf -------------------------------------------------------------------------------- /FortranCon2021-fpm/Figures/logo-cpp.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2021-fpm/Figures/logo-cpp.pdf -------------------------------------------------------------------------------- /FortranCon2021-fpm/Figures/logo-fortran.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2021-fpm/Figures/logo-fortran.png -------------------------------------------------------------------------------- /FortranCon2021-fpm/Figures/logo-haskell.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2021-fpm/Figures/logo-haskell.pdf -------------------------------------------------------------------------------- /FortranCon2021-fpm/Figures/logo-python.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2021-fpm/Figures/logo-python.pdf -------------------------------------------------------------------------------- /FortranCon2021-fpm/Figures/logo-rust.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2021-fpm/Figures/logo-rust.pdf -------------------------------------------------------------------------------- /FortranCon2021-fpm/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Sebastian Ehlert 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /FortranCon2021-fpm/README.md: -------------------------------------------------------------------------------- 1 | # FortranCon2021: fpm 2 | 3 | ## Authors 4 | 5 | - [Sebastian Ehlert](https://github.com/awvwgk) 6 | - [Ondřej Čertík](https://github.com/certik) 7 | - [Milan Curcic](https://github.com/milancurcic) 8 | - [Jakub Jelínek](https://github.com/kubajj) 9 | - [Laurence Kedward](https://github.com/lkedward) 10 | - [Vincent Magnin](https://github.com/vmagnin) 11 | - [Emanuele Pagone](https://github.com/epagone) 12 | - [Brad Richardson](https://github.com/everythingfunctional) 13 | - [John Urban](https://github.com/urbanjost) 14 | 15 | ## Track 16 | 17 | Fortran-lang minisymposium (12 + 3 minutes discussion) 18 | 19 | ## Presenter 20 | 21 | [Sebastian Ehlert](https://github.com/awvwgk) 22 | 23 | ## Title: 24 | 25 | Fortran package manager 26 | 27 | ## Abstract 28 | 29 | A language-specific package manager is an important element to build an efficient ecosystem of libraries and projects. 30 | Fortran has long missed a dedicated package manager, making the user experience of practitioners cumbersome. With the Fortran package manager (fpm) we are addressing these needs creating a reliable and productive tool that makes building applications and using libraries intuitive. 31 | Fpm takes care of fetching and building all transitive dependencies used to build the main project making especially easy to reuse other projects. 32 | As a cross-platform reproducable development and production environment fpm simplifies the difficulties in building, running, testing, and installing Fortran-centric projects. 33 | Support for all major Fortran compilers and platforms is available. 34 | 35 | Fpm is written in Fortran and built with itself, making it easy to bootstrap and install fpm on any platform with a Fortran compiler. 36 | The positive effect of a Fortran implementation is the easy accessibility of the codebase, which enables the community to contribute back and improve fpm further. 37 | While fpm is relatively new and still rapidly developing, it already found adoption even for large-scale projects today. 38 | Features to incorporate build requirements emerging from developing parallel applications or integrations with GUI environments are planned or under active development. 39 | 40 | ## Slides 41 | 42 | To build the slides use 43 | 44 | ``` 45 | lualatex main 46 | lualatex main 47 | ``` 48 | 49 | The fonts Source Sans Pro and Source Code Pro are required. 50 | 51 | 52 | ## License 53 | 54 | This talk is available under the MIT license, with exception for the beamer theme which is dual licensed with GPL-3.0-or-later and the LaTeX Project Public License. 55 | -------------------------------------------------------------------------------- /FortranCon2021-fpm/beamercolorthemeMCTC.sty: -------------------------------------------------------------------------------- 1 | % Copyright 2019 Sebastian Ehlert 2 | % 3 | % This file may be distributed and/or modified 4 | % 5 | % 1. under the LaTeX Project Public License and/or 6 | % 2. under the GNU Public License. 7 | % 8 | % See the file doc/licenses/LICENSE for more details. 9 | 10 | \definecolor{darkgrey}{HTML}{929084} 11 | \colorlet{dark}{darkgrey!35!black} 12 | \definecolor{palegrey}{HTML}{DDE0D9} 13 | \colorlet{light}{palegrey!35!white} 14 | 15 | \setbeamercolor{uni blue}{fg=light,bg=blue} 16 | \setbeamercolor{uni grey}{fg=black,bg=darkgrey} 17 | \setbeamercolor{uni yellow}{fg=dark,bg=yellow} 18 | 19 | \setbeamercolor{structure}{fg=dark,bg=light} 20 | \setbeamercolor{normal text}{fg=dark,bg=light!50} 21 | \setbeamercolor{frametitle}{parent=normal text,bg=} 22 | 23 | \setbeamercolor{titlelike}{parent=structure} 24 | \setbeamercolor{author}{parent=normal text} 25 | \setbeamercolor{institute}{parent=normal text} 26 | \setbeamercolor{date}{parent=normal text} 27 | 28 | \setbeamerfont{title in head/foot}{family=\ttfamily} 29 | \setbeamerfont{page number in head/foot}{family=\ttfamily} 30 | \setbeamerfont{subsection in head/foot}{family=\ttfamily} 31 | 32 | \setbeamercolor*{palette primary}{fg=light,bg=blue} 33 | \setbeamercolor*{palette secondary}{parent=structure} 34 | \setbeamercolor*{palette tertiary}{parent=structure,fg=structure.bg,bg=structure.fg} 35 | \setbeamercolor*{palette quaternary}{parent=structure,fg=white,bg=structure.fg} 36 | 37 | \setbeamercolor{block title}{parent=structure,fg=white,bg=structure.fg!75!dark} 38 | \setbeamercolor{block title alerted}{parent=alerted text,fg=white,bg=alerted text.fg!75!dark} 39 | \setbeamercolor{block title example}{parent=example text,fg=white,bg=example text.fg!75!dark} 40 | 41 | \setbeamercolor{block body}{parent=normal text,parent=block title,bg=block title.bg!10!bg} 42 | \setbeamercolor{block body alerted}{parent=normal text,parent=block title alerted,bg=block title alerted.bg!10!bg} 43 | \setbeamercolor{block body example}{parent=normal text,parent=block title example,bg=block title example.bg!10!bg} 44 | -------------------------------------------------------------------------------- /FortranCon2021-fpm/beamerouterthemeMCTC.sty: -------------------------------------------------------------------------------- 1 | % Copyright 2007 by Till Tantau 2 | % Copyright 2015 by Vedran Mileti\'c, Joseph Wright 3 | % Copyright 2019 Sebastian Ehlert 4 | % 5 | % This file may be distributed and/or modified 6 | % 7 | % 1. under the LaTeX Project Public License and/or 8 | % 2. under the GNU Public License. 9 | % 10 | % See the file doc/licenses/LICENSE for more details. 11 | 12 | \setbeamercolor{section in head/foot}{parent=palette tertiary} 13 | \setbeamercolor{subsection in head/foot}{parent=palette secondary} 14 | \setbeamercolor{author in head/foot}{parent=subsection in head/foot} 15 | \setbeamercolor{title in head/foot}{parent=subsection in head/foot} 16 | 17 | \newif\ifbeamer@theme@subsection 18 | \beamer@theme@subsectiontrue 19 | 20 | \DeclareOptionBeamer{subsection}[true]{\csname beamer@theme@subsection#1\endcsname} 21 | \ProcessOptionsBeamer 22 | 23 | \mode 24 | 25 | \AtBeginDocument{ 26 | \pgfdeclareverticalshading{beamer@topshade}{\paperwidth}{% 27 | color(0pt)=(bg); 28 | color(1pt)=(black!50!bg)} 29 | } 30 | 31 | \setbeamertemplate{mini frames}[box] 32 | % Head 33 | \defbeamertemplate*{headline}{awvwgk theme} 34 | {% 35 | \begin{beamercolorbox}[colsep=.1pt]{upper separation line head} 36 | \end{beamercolorbox} 37 | \begin{beamercolorbox}{section in head/foot} 38 | \vskip2pt\hskip5pt\raisebox{-6.5pt}{\pgfuseimage{logo}}% 39 | \hskip2pt\insertnavigation{.8\paperwidth}\vskip2pt 40 | \end{beamercolorbox}% 41 | \ifbeamer@theme@subsection% 42 | \begin{beamercolorbox}[colsep=.1pt]{middle separation line head} 43 | \end{beamercolorbox} 44 | \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,% 45 | leftskip=.4cm,rightskip=.4cm plus1fil]{subsection in head/foot} 46 | \usebeamerfont{subsection in head/foot}\insertsubsectionhead 47 | \end{beamercolorbox}% 48 | \vskip-3.625ex 49 | \pgfuseshading{beamer@topshade} 50 | \vskip+3.625ex 51 | \vskip-1pt 52 | \fi% 53 | \begin{beamercolorbox}[colsep=.1pt]{lower separation line head} 54 | \end{beamercolorbox} 55 | \pgfuseshading{beamer@topshade} 56 | \vskip-1pt 57 | } 58 | 59 | \defbeamertemplate*{footline}{awvwgk theme} 60 | {% 61 | %\leavevmode% 62 | %\begin{beamercolorbox}[colsep=.1pt]{upper separation line foot}% 63 | %\end{beamercolorbox}% 64 | \hbox{% 65 | \begin{beamercolorbox}% 66 | [ht=2.5ex,dp=1.125ex,leftskip=.4cm,rightskip=.4cm]% 67 | {author in head/foot}% 68 | \usebeamerfont{title in head/foot}% 69 | \insertshortauthor\ -\ \insertshorttitle\hfill% 70 | \usebeamerfont{page number in head/foot}% 71 | \usebeamertemplate{page number in head/foot}% 72 | \end{beamercolorbox} 73 | }% 74 | \vskip-3.625ex% 75 | \pgfuseshading{beamer@topshade}% 76 | \vskip+3.625ex% 77 | \vskip-1pt% 78 | } 79 | 80 | 81 | \mode 82 | 83 | -------------------------------------------------------------------------------- /FortranCon2021-fpm/plot/fpm-events.txt: -------------------------------------------------------------------------------- 1 | date event description 2 | 2021-09-24 180 FortranCon2021 3 | 2021-08-26 180 0.4.0 4 | 2021-06-23 180 0.3.0 5 | 2021-04-29 180 HN(26977499) 6 | 2021-03-30 180 v0.2.0 7 | 2021-03-06 180 v0.1.4 8 | 2020-12-18 180 v0.1.3 9 | 2020-12-08 180 v0.1.2 10 | 2020-12-05 180 v0.1.1 11 | 2020-11-25 180 v0.1.0 12 | 2020-07-04 180 FortranCon2020 13 | -------------------------------------------------------------------------------- /FortranCon2021-fpm/plot/fpm-projects.plt: -------------------------------------------------------------------------------- 1 | #set terminal svg size 700,700 font "Source Sans Pro,18" 2 | #set tics font "Source Code Pro,18" 3 | set key top left outside horizontal autotitle columnhead 4 | 5 | set xtics rotate by -45 nomirror 6 | set ytics out nomirror 7 | set format x "%Y-%m-%d" 8 | set xdata time 9 | set timefmt "%Y-%m-%d" 10 | set xrange ["2020-04-01":"2021-10-01"] 11 | 12 | set style fill solid border -1 13 | set boxwidth 1 absolute 14 | 15 | plot \ 16 | "plot/fpm-projects.txt" using 1:2 smooth cumulative lc rgb "#734f96" lw 2, \ 17 | "plot/fpm-events.txt" using 1:2 with boxes lw 0 18 | -------------------------------------------------------------------------------- /FortranCon2021-fpm/plot/fpm-projects.txt: -------------------------------------------------------------------------------- 1 | date projects 2 | 2020-04-26 1 3 | 2020-05-23 1 4 | 2020-05-23 1 5 | 2020-05-30 1 6 | 2020-05-30 1 7 | 2020-05-30 1 8 | 2020-06-04 1 9 | 2020-06-04 1 10 | 2020-06-04 1 11 | 2020-06-04 1 12 | 2020-06-05 1 13 | 2020-06-10 1 14 | 2020-06-10 1 15 | 2020-06-14 1 16 | 2020-06-17 1 17 | 2020-07-05 1 18 | 2020-07-07 1 19 | 2020-07-07 1 20 | 2020-07-07 1 21 | 2020-07-07 1 22 | 2020-07-07 1 23 | 2020-07-07 1 24 | 2020-07-07 1 25 | 2020-07-07 1 26 | 2020-07-10 1 27 | 2020-07-12 1 28 | 2020-07-15 1 29 | 2020-07-16 1 30 | 2020-07-18 1 31 | 2020-07-30 1 32 | 2020-08-02 1 33 | 2020-08-03 1 34 | 2020-08-03 1 35 | 2020-08-22 1 36 | 2020-08-28 1 37 | 2020-09-12 1 38 | 2020-10-03 1 39 | 2020-10-04 1 40 | 2020-10-05 1 41 | 2020-10-07 1 42 | 2020-10-14 1 43 | 2020-10-31 1 44 | 2020-11-07 1 45 | 2020-11-09 1 46 | 2020-11-10 1 47 | 2020-11-14 1 48 | 2020-11-27 1 49 | 2020-12-13 1 50 | 2020-12-14 1 51 | 2020-12-15 1 52 | 2020-12-16 1 53 | 2020-12-16 1 54 | 2020-12-17 1 55 | 2020-12-20 1 56 | 2020-12-22 1 57 | 2020-12-23 1 58 | 2020-12-23 1 59 | 2020-12-29 1 60 | 2020-12-30 1 61 | 2021-01-03 1 62 | 2021-01-03 1 63 | 2021-01-06 1 64 | 2021-01-12 1 65 | 2021-01-13 1 66 | 2021-01-15 1 67 | 2021-01-16 1 68 | 2021-02-02 1 69 | 2021-02-03 1 70 | 2021-02-05 1 71 | 2021-02-08 1 72 | 2021-02-09 1 73 | 2021-02-10 1 74 | 2021-02-11 1 75 | 2021-02-17 1 76 | 2021-02-18 1 77 | 2021-02-19 1 78 | 2021-02-19 1 79 | 2021-02-19 1 80 | 2021-02-20 1 81 | 2021-02-22 1 82 | 2021-02-24 1 83 | 2021-02-25 1 84 | 2021-03-02 1 85 | 2021-03-12 1 86 | 2021-03-13 1 87 | 2021-03-14 1 88 | 2021-03-16 1 89 | 2021-03-18 1 90 | 2021-03-18 1 91 | 2021-03-19 1 92 | 2021-03-19 1 93 | 2021-03-20 1 94 | 2021-03-22 1 95 | 2021-03-26 1 96 | 2021-03-28 1 97 | 2021-03-28 1 98 | 2021-03-28 1 99 | 2021-03-31 1 100 | 2021-04-02 1 101 | 2021-04-03 1 102 | 2021-04-03 1 103 | 2021-04-03 1 104 | 2021-04-05 1 105 | 2021-04-05 1 106 | 2021-04-07 1 107 | 2021-04-10 1 108 | 2021-04-11 1 109 | 2021-04-16 1 110 | 2021-04-16 1 111 | 2021-04-22 1 112 | 2021-04-23 1 113 | 2021-04-25 1 114 | 2021-04-25 1 115 | 2021-04-26 1 116 | 2021-04-27 1 117 | 2021-05-07 1 118 | 2021-05-07 1 119 | 2021-05-11 1 120 | 2021-05-14 1 121 | 2021-05-18 1 122 | 2021-05-21 1 123 | 2021-05-25 1 124 | 2021-05-26 1 125 | 2021-05-26 1 126 | 2021-05-29 1 127 | 2021-05-31 1 128 | 2021-05-31 1 129 | 2021-06-03 1 130 | 2021-06-03 1 131 | 2021-06-04 1 132 | 2021-06-05 1 133 | 2021-06-06 1 134 | 2021-06-07 1 135 | 2021-06-08 1 136 | 2021-06-15 1 137 | 2021-06-18 1 138 | 2021-06-18 1 139 | 2021-06-23 1 140 | 2021-06-25 1 141 | 2021-06-30 1 142 | 2021-07-02 1 143 | 2021-07-04 1 144 | 2021-07-05 1 145 | 2021-07-06 1 146 | 2021-07-12 1 147 | 2021-07-14 1 148 | 2021-07-15 1 149 | 2021-07-16 1 150 | 2021-07-16 1 151 | 2021-07-16 1 152 | 2021-07-20 1 153 | 2021-07-22 1 154 | 2021-07-24 1 155 | 2021-07-27 1 156 | 2021-08-10 1 157 | 2021-08-11 1 158 | 2021-08-14 1 159 | 2021-08-15 1 160 | 2021-08-17 1 161 | 2021-08-21 1 162 | 2021-08-22 1 163 | 2021-08-26 1 164 | 2021-08-29 1 165 | 2021-08-29 1 166 | 2021-08-29 1 167 | 2021-08-30 1 168 | 2021-08-30 1 169 | 2021-09-08 1 170 | 2021-09-09 1 171 | 2021-09-10 1 172 | 2021-09-11 1 173 | 2021-09-12 1 174 | 2021-09-15 1 175 | -------------------------------------------------------------------------------- /FortranCon2021-gsoc-fpm-flags/README.md: -------------------------------------------------------------------------------- 1 | # FortranCon2021: Handling Compiler Flags in fpm (GSoC) 2 | 3 | __Presenter:__ [Jakub Jelinek](https://github.com/kubajj) 4 | 5 | __Co-Authors:__ [Laurence Kedward](https://github.com/LKedward), [Brad Richardson](https://github.com/everythingfunctional), [Sebastian Ehlert](https://github.com/awvwgk) 6 | 7 | __Session:__ Fortran-lang minisymposium (10 min) 8 | 9 | __Abstract:__ 10 | The Fortran Package Manager (fpm) aims to be a Fortran-specific build system to simplify compiling Fortran code and using third-party dependencies. 11 | Fpm is currently in alpha development status and supports a wide range of features. 12 | Recent work, undertaken as part of the Google Summer of Code programme, has implemented the syntax and logic required to provide fine-grain control of compiler flags by package maintainers. 13 | Specifying compiler flags for fpm projects is a complex problem due the existence of multiple Fortran compilers, each with their own set of flags. 14 | Moveover, package maintainers often need to specify different flags for a variety of build profiles, such as ‘debug’ and ‘release’, as well as across a variety of target operating systems. 15 | What is more, some packages require specific compiler flags other than the default ones built into fpm and complex projects with various package dependencies might need specific flags for each package, therefore a priority system for compiler profiles was designed and implemented. 16 | 17 | In this presentation, detail is given on the new functionality for specifying compiler flags in fpm including: the syntax for the manifest file; the behaviour for package dependencies; and common use-case examples. 18 | -------------------------------------------------------------------------------- /FortranCon2021-linked_list/README.md: -------------------------------------------------------------------------------- 1 | # FortranCon2021: Linked List (GSoC) 2 | 3 | __Presenter:__ [Chetan Karwa](https://github.com/ChetanKarwa) 4 | 5 | __Co-Authors:__ [Arjen Markus](https://github.com/arjenmarkus), [Milan Curcic](https://github.com/milancurcic) 6 | 7 | __Session:__ Fortran-lang minisymposium (10 min). 8 | 9 | __Abstract:__ 10 | 11 | The Fortran-lang stdlib was introduced to provide extensive support to Fortran developers by providing modules that can be directly used in their programs. A linked list is one of the classical data structures that has numerous applications. 12 | Example: 13 | - It can be used as a self-growing container. 14 | - It can store linearly dependent data. (web history, slides in some presentation, etc) 15 | - Acts as a building block for other data structures such as Priority Queue, Fibonacci Heap, stack, queue, etc. 16 | 17 | The goal of the Google Summer of Code project was to implement an efficient linked list module that is devoid of any memory leaks. The module covers several APIs that are important in the initial phase. 18 | The Linked list developed is a Generic Heterogeneous list i.e. it supports storage of multiple data types in the same list. 19 | The APIs can be further explained in detail in the presentation with suitable examples. 20 | -------------------------------------------------------------------------------- /FortranCon2021-state-of-fortran/README.md: -------------------------------------------------------------------------------- 1 | # FortranCon2021: The State of Fortran 2 | 3 | __Presenter:__ [Laurence Kedward](https://github.com/LKedward) 4 | 5 | __Co-Authors:__ 6 | Bálint Aradi, 7 | Ondřej Čertík, 8 | Milan Curcic, 9 | Sebastian Engel, 10 | Rohit Goswami, 11 | Michael Hirsch, 12 | Asdrubal Lozada-Blanco, 13 | Vincent Magnin, 14 | Arjen Markus, 15 | Emanuele Pagone, 16 | Ivan Pribec, 17 | Brad Richardson, 18 | Harris Snyder, 19 | Carlos Une, 20 | John Urban, 21 | Jérémie Vandenplas 22 | 23 | __Session:__ Fortran-lang minisymposium (10 min) 24 | 25 | __Abstract:__ 26 | A new community of developers has formed to unite Fortran users and modernize the Fortran ecosystem. 27 | In this presentation, we describe the high-level features of Fortran that continue to make it a good choice for scientists and engineers in the 21st century. We will also outline ongoing community efforts including the development of a Fortran standard library and package manager, the fostering of a friendly and welcoming online community, improved compiler support, and language feature development. 28 | The lessons learned are common across contemporary programming languages and help reduce the learning curve and increase adoption of Fortran. 29 | -------------------------------------------------------------------------------- /FortranCon2021-stdlib/README.md: -------------------------------------------------------------------------------- 1 | # FortranCon2021-stdlib 2 | 3 | **Authors**: 4 | [Nathaniel Shaffer](https://github.com/nshaffer) (University of Rochester), 5 | [Gabriel Brown](https://github.com/ghbrown) (University of Illinois Urbana-Champaign), 6 | [Ondřej Čertik](https://github.com/certik) (Los Alamos National Laboratory), 7 | [William Clodius](https://githiub.com/wclodius2), 8 | [Milan Curcic](https://github.com/milancuric) (University of Miami), 9 | [Laurence Kedward](https://github.com/lkedward) (University of Bristol), 10 | [Sebastian Ehlert](https://github.com/awvwgk) (University of Bonn), 11 | [Gareth Davies](https://github.com/gareth-nx), 12 | [Aman Godara](https://github.com/Aman-Godara), 13 | [Michael Hirsch](https://github.com/scivision) (Scivision), 14 | [Jing](https://github.com/Jim-215-Fisher), 15 | [Chetan Karwa](https://github.com/chetankarwa) (Sardar Vallabhbhai NIT Surat), 16 | [Arjen Markus](https://github.com/arjenmarkus), 17 | [Ivan Pribec](https://github.com/ivan-pi) (Technical University of Munich), 18 | [Harris Snyder](https://github.com/hsnyder) (Structura Biotechnology, Inc.), 19 | [Jeremie Vandenplas](https://github.com/jvdp1) (Wageningen University & Research), 20 | [Evan Voyles](https://github.com/ejovo13) (Kalamazoo College), 21 | 22 | 23 | **To be acknowledged in the presentation (following comments):** 24 | 25 | **Track**: Minisymposium: fortran-lang 26 | 27 | **Presenter**: [Nathaniel Shaffer](https://github.com/nshaffer) 28 | 29 | **Title**: What's new in the Fortran Standard Library? 30 | 31 | **Abstract**: 32 | The Fortran standard library (stdlib) is now well into its second year of development. 33 | In this past year, stdlib has grown not only in its functionality but in its contributor base, with most of the new development coming from new contributors, including two Google Summer of Code students. 34 | Stdlib provides new functionality for working with bit sets, logging, quadrature, sorting, strings, and more. 35 | In addition to new capabilities in stdlib itself, there have also been several technical improvements to the documentation and build system. 36 | The full API documentation is generated by the FORD tool and hosted online at the fortran-lang website. 37 | Furthermore, Github's Continuous Integration pipeline is used to ensure cross-platform support by building stdlib and running its test suite on every pull request. 38 | There has also been progress toward supporting the Fortran Package Manager (fpm) both for building stdlib as a standalone library and for incorporating stdlib as a dependency in fpm projects. 39 | These enhancements bring stdlib closer to its goal of being a featureful and easy-to-use library for general and widespread use. 40 | -------------------------------------------------------------------------------- /FortranCon2021-stdlib/contrib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2021-stdlib/contrib.png -------------------------------------------------------------------------------- /FortranCon2021-stdlib/examples/Makefile: -------------------------------------------------------------------------------- 1 | FC = gfortran 2 | STDLIB_CFLAGS = $(shell pkg-config --cflags fortran_stdlib) 3 | STDLIB_LIBS = $(shell pkg-config --libs fortran_stdlib) 4 | 5 | all: ex_bitsets ex_logger ex_sorting 6 | 7 | ex_bitsets: ex_bitsets.f90 8 | $(FC) $(STDLIB_CFLAGS) $^ -o $@ $(STDLIB_LIBS) 9 | 10 | ex_logger: ex_logger.f90 11 | $(FC) $(STDLIB_CFLAGS) $^ -o $@ $(STDLIB_LIBS) 12 | 13 | ex_sorting: ex_sorting.f90 14 | $(FC) $(STDLIB_CFLAGS) $^ -o $@ $(STDLIB_LIBS) 15 | 16 | clean: 17 | $(RM) ex_bitsets 18 | $(RM) ex_logger 19 | $(RM) ex_sorting 20 | 21 | -------------------------------------------------------------------------------- /FortranCon2021-stdlib/examples/ex_bitsets.f90: -------------------------------------------------------------------------------- 1 | use, intrinsic :: iso_fortran_env, only: output_unit 2 | use stdlib_bitsets 3 | implicit none 4 | 5 | integer :: i 6 | type(bitset_64) :: b1, b2 7 | 8 | ! initialization from string 9 | call b1%from_string('001100') 10 | call b1%write_bitset(output_unit) ! S6B001110 11 | 12 | ! initialization from logical array 13 | b2 = [(.true., i=1,6)] 14 | call b2%write_bitset(output_unit) ! S6B111111 15 | 16 | ! binary operations overwrite first arg 17 | call xor(b1, b2) 18 | call b1%write_bitset(output_unit) ! S6B110001 19 | call b2%write_bitset(output_unit) ! S6B111111 20 | 21 | ! set specific position/contiguous subset (zero-based!) 22 | call b1%set(2, 4) 23 | print *, b1 == b2 ! T 24 | end 25 | 26 | -------------------------------------------------------------------------------- /FortranCon2021-stdlib/examples/ex_logger.f90: -------------------------------------------------------------------------------- 1 | program ex_logger 2 | use stdlib_logger, only: global_logger 3 | implicit none 4 | 5 | call global_logger%add_log_file('log.txt') 6 | 7 | call global_logger%log_debug('I am invisible') 8 | call global_logger%log_information('Something informative') 9 | call global_logger%log_error('Oopsie daisy') 10 | end program 11 | -------------------------------------------------------------------------------- /FortranCon2021-stdlib/examples/ex_sorting.f90: -------------------------------------------------------------------------------- 1 | use stdlib_sorting, only: sort_index 2 | use stdlib_kinds, only: int64 3 | implicit none 4 | 5 | integer :: digits(6) = [3,1,4,1,5,9] 6 | character :: chars(6) = ['a','b','c','d','e','f'] 7 | integer(int64) :: index(6) 8 | call sort_index(digits, index) 9 | print '(6i1)', digits ! 113459 10 | print '(6i1)', index ! 241356 11 | print '(6a1)', chars(index) ! bdacef 12 | end 13 | -------------------------------------------------------------------------------- /FortranCon2021-stdlib/fortran_logo_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2021-stdlib/fortran_logo_256x256.png -------------------------------------------------------------------------------- /FortranCon2021-stdlib/stdlib-talk.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2021-stdlib/stdlib-talk.pdf -------------------------------------------------------------------------------- /FortranCon2021-string/README.md: -------------------------------------------------------------------------------- 1 | # FortranCon 2021: Improving Strings Support in Fortran (GSoC Project) 2 | 3 | __Presenter__: [Aman Godara](https://aman-godara.github.io) 4 | 5 | __Co-Authors__: [Sebastian Ehlert](https://github.com/awvwgk), [Milan Curcic](https://github.com/milancurcic) 6 | 7 | __Session__: Fortran-lang Mini Symposium 8 | 9 | __Abstract__: 10 | To provide better support for strings, the Fortran Standard Library (*stdlib*) introduces `stdlib_string_type`, `stdlib_strings` and `stdlib_stringlist` module. 11 | 12 | Since the start of the project, several string inquiry and manipulation procedures like *pad*, *find*, *replace_all*, etc have been added, adhering to the philosophy of unifying the community and providing simple and intuitive abstraction to the users. 13 | 14 | Every type of usage from common ones like *reversing a string* to peculiar ones like *finding n-th non-overlapping substring* are developed in close collaboration with the community. 15 | Flexible high-level procedures like *slice* catering to every possible need while low-level APIs like *count* are optimized to readily build upon (as stand-alone or in combination with other provided APIs) to meet any specific requirement of a user. 16 | 17 | All procedures work with deferred-length intrinsic character as smoothly as with *string_type*. This allows for a seamless integration of stdlib's string processing with the existing projects. Moreover, APIs being backward compatible will continue to serve old projects even with their latest versions. -------------------------------------------------------------------------------- /FortranCon2021-vegetables/README.md: -------------------------------------------------------------------------------- 1 | # FortranCon2021-vegetables 2 | 3 | **Presenter** [Brad Richardson](https://everythingfunctional.com) 4 | 5 | **Title**: Your Requirements Specification as an Executable Test Suite 6 | 7 | **Abstract**: 8 | Automated testing is a well established best practice in software development, 9 | so you are writing test suites for your Fortran projects right? 10 | But how useful is your test suite after you have finished writing it? 11 | Does it help you to pinpoint the source of bugs? 12 | Does it help you to make changes to functionality, or get in the way? 13 | Would a new developer find it useful for getting their bearings in your project? 14 | Can you tell which requirement a given test is meant to verify? 15 | 16 | Experience in the nuclear power industry, 17 | with its emphasis on quality assurance and high standards for verification, 18 | provides motivation to always have satisfactory answers to these questions. 19 | This presentation provides guidance for writing a well organized suite of tests that leads to positive answers to the previous questions. 20 | The primary lesson is that a test suite organized as an executable verification of the requirements of the project 21 | provides long term value in the form of easier on-boarding for new team members and increased developer productivity during maintenance activities. 22 | Examples and demonstrations are provided using the Vegetables Unit Testing Framework, 23 | which has been designed to aid in writing test suites of the form described above. 24 | -------------------------------------------------------------------------------- /FortranCon2021-vegetables/is_leap_year/.gitignore: -------------------------------------------------------------------------------- 1 | build/* 2 | -------------------------------------------------------------------------------- /FortranCon2021-vegetables/is_leap_year/README.md: -------------------------------------------------------------------------------- 1 | # is_leap_year 2 | 3 | Example project for demonstrating good and bad testing practices. 4 | -------------------------------------------------------------------------------- /FortranCon2021-vegetables/is_leap_year/fpm.toml: -------------------------------------------------------------------------------- 1 | name = "is_leap_year" 2 | version = "0.1.0" 3 | license = "MIT" 4 | author = "Brad Richardson" 5 | maintainer = "everythingfunctional@protonmail.com" 6 | copyright = "Copyright 2021, Brad Richardson" 7 | 8 | [dev-dependencies] 9 | vegetables = { git = "https://gitlab.com/everythingfunctional/vegetables.git", tag = "v7.2.1" } 10 | strff = { git = "https://gitlab.com/everythingfunctional/strff.git", tag = "v2.1.0" } 11 | -------------------------------------------------------------------------------- /FortranCon2021-vegetables/is_leap_year/src/is_leap_year_m.f90: -------------------------------------------------------------------------------- 1 | module is_leap_year_m 2 | implicit none 3 | private 4 | public :: is_leap_year 5 | contains 6 | pure function is_leap_year(year) 7 | integer, intent(in) :: year 8 | logical :: is_leap_year 9 | 10 | is_leap_year = mod(year, 4) == 0 11 | end function 12 | end module 13 | -------------------------------------------------------------------------------- /FortranCon2021-vegetables/is_leap_year/test/bad_test.f90: -------------------------------------------------------------------------------- 1 | module bad_test 2 | use is_leap_year_m, only: is_leap_year 3 | use vegetables, only: & 4 | result_t, test_item_t, assert_not, assert_that, describe, it 5 | 6 | implicit none 7 | private 8 | public :: test_is_leap_year 9 | contains 10 | function test_is_leap_year() result(tests) 11 | type(test_item_t) :: tests 12 | 13 | tests = describe(& 14 | "is_leap_year", & 15 | [ it("is true for leap years", check_leap_year) & 16 | , it("is false for non leap years", check_non_leap_year) & 17 | ]) 18 | end function 19 | 20 | function check_leap_year() result(result_) 21 | type(result_t) :: result_ 22 | 23 | result_ = & 24 | assert_that(is_leap_year(2016), "2016") & 25 | .and.assert_that(is_leap_year(2000), "2000") 26 | end function 27 | 28 | function check_non_leap_year() result(result_) 29 | type(result_t) :: result_ 30 | 31 | result_ = & 32 | assert_not(is_leap_year(1999), "1999") & 33 | .and.assert_not(is_leap_year(1900), "1900") 34 | end function 35 | end module 36 | -------------------------------------------------------------------------------- /FortranCon2021-vegetables/is_leap_year/test/fancy_test.f90: -------------------------------------------------------------------------------- 1 | module fancy_test 2 | use is_leap_year_m, only: is_leap_year 3 | use strff, only: to_string 4 | use vegetables, only: & 5 | example_t, & 6 | input_t, & 7 | integer_input_t, & 8 | result_t, & 9 | test_item_t, & 10 | assert_not, & 11 | assert_that, & 12 | describe, & 13 | fail, & 14 | it 15 | 16 | implicit none 17 | private 18 | public :: test_is_leap_year 19 | contains 20 | function test_is_leap_year() result(tests) 21 | type(test_item_t) :: tests 22 | 23 | tests = describe(& 24 | "is_leap_year", & 25 | [ it( & 26 | "returns false for years that are not divisible by 4", & 27 | [ example_t(integer_input_t(2002)) & 28 | , example_t(integer_input_t(2003)) & 29 | ], & 30 | check_not_leap_year) & 31 | , it( & 32 | "returns true for years that are divisible by 4 but not by 100", & 33 | [ example_t(integer_input_t(2004)) & 34 | , example_t(integer_input_t(2008)) & 35 | ], & 36 | check_leap_year) & 37 | , it( & 38 | "returns false for years that are divisible by 100 but not by 400", & 39 | [ example_t(integer_input_t(1900)) & 40 | , example_t(integer_input_t(2100)) & 41 | ], & 42 | check_not_leap_year) & 43 | , it( & 44 | "returns true for years that are divisible by 400", & 45 | [ example_t(integer_input_t(2000)) & 46 | , example_t(integer_input_t(2400)) & 47 | ], & 48 | check_leap_year) & 49 | ]) 50 | end function 51 | 52 | function check_not_leap_year(input) result(result_) 53 | class(input_t), intent(in) :: input 54 | type(result_t) :: result_ 55 | 56 | select type (input) 57 | type is (integer_input_t) 58 | associate(year => input%input()) 59 | result_ = assert_not(is_leap_year(year), to_string(year)) 60 | end associate 61 | class default 62 | result_ = fail("Didn't get an integer_input_t") 63 | end select 64 | end function 65 | 66 | function check_leap_year(input) result(result_) 67 | class(input_t), intent(in) :: input 68 | type(result_t) :: result_ 69 | 70 | select type (input) 71 | type is (integer_input_t) 72 | associate(year => input%input()) 73 | result_ = assert_that(is_leap_year(year), to_string(year)) 74 | end associate 75 | class default 76 | result_ = fail("Didn't get an integer_input_t") 77 | end select 78 | end function 79 | end module 80 | -------------------------------------------------------------------------------- /FortranCon2021-vegetables/is_leap_year/test/good_test.f90: -------------------------------------------------------------------------------- 1 | module good_test 2 | use is_leap_year_m, only: is_leap_year 3 | use vegetables, only: & 4 | result_t, test_item_t, assert_not, assert_that, describe, it 5 | 6 | implicit none 7 | private 8 | public :: test_is_leap_year 9 | contains 10 | function test_is_leap_year() result(tests) 11 | type(test_item_t) :: tests 12 | 13 | tests = describe(& 14 | "is_leap_year", & 15 | [ it( & 16 | "returns false for years that are not divisible by 4", & 17 | check_not_divisible_by_4) & 18 | , it( & 19 | "returns true for years that are divisible by 4 but not by 100", & 20 | check_divisible_by_4_but_not_100) & 21 | , it( & 22 | "returns false for years that are divisible by 100 but not by 400", & 23 | check_divisible_by_100_but_not_400) & 24 | , it( & 25 | "returns true for years that are divisible by 400", & 26 | check_divisible_by_400) & 27 | ]) 28 | end function 29 | 30 | function check_not_divisible_by_4() result(result_) 31 | type(result_t) :: result_ 32 | 33 | result_ = & 34 | assert_not(is_leap_year(2002), "2002") & 35 | .and.assert_not(is_leap_year(2003), "2003") 36 | end function 37 | 38 | function check_divisible_by_4_but_not_100() result(result_) 39 | type(result_t) :: result_ 40 | 41 | result_ = & 42 | assert_that(is_leap_year(2004), "2004") & 43 | .and.assert_that(is_leap_year(2008), "2008") 44 | end function 45 | 46 | function check_divisible_by_100_but_not_400() result(result_) 47 | type(result_t) :: result_ 48 | 49 | result_ = & 50 | assert_not(is_leap_year(1900), "1900") & 51 | .and.assert_not(is_leap_year(2100), "2100") 52 | end function 53 | 54 | function check_divisible_by_400() result(result_) 55 | type(result_t) :: result_ 56 | 57 | result_ = & 58 | assert_that(is_leap_year(2000), "2000") & 59 | .and.assert_that(is_leap_year(2400), "2400") 60 | end function 61 | end module 62 | -------------------------------------------------------------------------------- /FortranCon2021-vegetables/is_leap_year/test/main.f90: -------------------------------------------------------------------------------- 1 | ! Generated by make_vegetable_driver. DO NOT EDIT 2 | program main 3 | implicit none 4 | 5 | call run() 6 | contains 7 | subroutine run() 8 | use bad_test, only: & 9 | bad_is_leap_year => test_is_leap_year 10 | use fancy_test, only: & 11 | fancy_is_leap_year => test_is_leap_year 12 | use good_test, only: & 13 | good_is_leap_year => test_is_leap_year 14 | use ugly_test, only: & 15 | ugly_is_leap_year => test_is_leap_year 16 | use vegetables, only: test_item_t, test_that, run_tests 17 | 18 | type(test_item_t) :: tests 19 | type(test_item_t) :: individual_tests(4) 20 | 21 | individual_tests(1) = bad_is_leap_year() 22 | individual_tests(2) = fancy_is_leap_year() 23 | individual_tests(3) = good_is_leap_year() 24 | individual_tests(4) = ugly_is_leap_year() 25 | tests = test_that(individual_tests) 26 | 27 | call run_tests(tests) 28 | end subroutine 29 | end program 30 | -------------------------------------------------------------------------------- /FortranCon2021-vegetables/is_leap_year/test/ugly_test.f90: -------------------------------------------------------------------------------- 1 | module ugly_test 2 | use is_leap_year_m, only: is_leap_year 3 | use vegetables, only: & 4 | result_t, test_item_t, assert_not, assert_that, describe, it 5 | 6 | implicit none 7 | private 8 | public :: test_is_leap_year 9 | contains 10 | function test_is_leap_year() result(tests) 11 | type(test_item_t) :: tests 12 | 13 | tests = describe("is_leap_year", [it("works", check_is_leap_year)]) 14 | end function 15 | 16 | function check_is_leap_year() result(result_) 17 | type(result_t) :: result_ 18 | 19 | result_ = & 20 | assert_not(is_leap_year(1)) & 21 | .and.assert_that(is_leap_year(4)) 22 | end function 23 | end module 24 | -------------------------------------------------------------------------------- /FortranCon2021-vegetables/presentation.odp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2021-vegetables/presentation.odp -------------------------------------------------------------------------------- /FortranCon2021-vegetables/presentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/FortranCon2021-vegetables/presentation.pdf -------------------------------------------------------------------------------- /PackagingCon2021-fpm/.gitignore: -------------------------------------------------------------------------------- 1 | /*.aux 2 | /*.log 3 | /*.nav 4 | /*.out 5 | /*.snm 6 | /*.toc 7 | /*.bak 8 | /*.pdf 9 | /*.vrb 10 | -------------------------------------------------------------------------------- /PackagingCon2021-fpm/Figures/logo-brew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/PackagingCon2021-fpm/Figures/logo-brew.png -------------------------------------------------------------------------------- /PackagingCon2021-fpm/Figures/logo-conda-forge.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/PackagingCon2021-fpm/Figures/logo-conda-forge.pdf -------------------------------------------------------------------------------- /PackagingCon2021-fpm/Figures/logo-fortran.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/PackagingCon2021-fpm/Figures/logo-fortran.png -------------------------------------------------------------------------------- /PackagingCon2021-fpm/Figures/logo-msys2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/PackagingCon2021-fpm/Figures/logo-msys2.png -------------------------------------------------------------------------------- /PackagingCon2021-fpm/Figures/logo-spack.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/PackagingCon2021-fpm/Figures/logo-spack.pdf -------------------------------------------------------------------------------- /PackagingCon2021-fpm/README.md: -------------------------------------------------------------------------------- 1 | # PackagingCon2021: fpm 2 | 3 | ## Authors 4 | 5 | - [Sebastian Ehlert](https://github.com/awvwgk) 6 | - [Ondřej Čertík](https://github.com/certik) 7 | - [Milan Curcic](https://github.com/milancurcic) 8 | - [Jakub Jelínek](https://github.com/kubajj) 9 | - [Laurence Kedward](https://github.com/lkedward) 10 | - [Vincent Magnin](https://github.com/vmagnin) 11 | - [Emanuele Pagone](https://github.com/epagone) 12 | - [Brad Richardson](https://github.com/everythingfunctional) 13 | - [John Urban](https://github.com/urbanjost) 14 | 15 | ## Presenter 16 | 17 | [Sebastian Ehlert](https://github.com/awvwgk) 18 | 19 | ## Title: 20 | 21 | Fortran Package Manager: Toward a rich ecosystem of Fortran packages 22 | 23 | ## Abstract 24 | 25 | Fortran is the oldest programming language still in use today, targeting high-performance scientific and engineering applications. 26 | Traditionally, Fortran software has used build systems that are not portable or are difficult to use or extend. 27 | This has presented a significant barrier to entry for users, and has made it difficult to use libraries as dependencies, or distribute your own library for use in other projects. 28 | Fortran Package Manager (fpm) is a new language-specific package manager and build system. 29 | The key goals are to improve the user experience and nurture the growth of a rich ecosystem of Fortran libraries. 30 | 31 | Fpm assumes sane defaults so that most users can enjoy a zero-configuration experience, while providing options to customize behavior. 32 | Fpm can scaffold a new Fortran project, fetch and build remote dependencies, and run tests and project executables. 33 | It supports multiple compilers, runs on all major operating systems and can bootstrap itself. 34 | While new and rapidly developing, it is already used as a build system for large projects and has been met with an overwhelming response from the Fortran community. 35 | We want to discuss technical challenges that are specific to building Fortran projects and further next steps. 36 | -------------------------------------------------------------------------------- /PackagingCon2021-fpm/beamercolorthemeMCTC.sty: -------------------------------------------------------------------------------- 1 | % Copyright 2019 Sebastian Ehlert 2 | % 3 | % This file may be distributed and/or modified 4 | % 5 | % 1. under the LaTeX Project Public License and/or 6 | % 2. under the GNU Public License. 7 | % 8 | % See the file doc/licenses/LICENSE for more details. 9 | 10 | \definecolor{darkgrey}{HTML}{929084} 11 | \colorlet{dark}{darkgrey!35!black} 12 | \definecolor{palegrey}{HTML}{DDE0D9} 13 | \colorlet{light}{palegrey!35!white} 14 | 15 | \setbeamercolor{uni blue}{fg=light,bg=blue} 16 | \setbeamercolor{uni grey}{fg=black,bg=darkgrey} 17 | \setbeamercolor{uni yellow}{fg=dark,bg=yellow} 18 | 19 | \setbeamercolor{structure}{fg=dark,bg=light} 20 | \setbeamercolor{normal text}{fg=dark,bg=light!50} 21 | \setbeamercolor{frametitle}{parent=normal text,bg=} 22 | 23 | \setbeamercolor{titlelike}{parent=structure} 24 | \setbeamercolor{author}{parent=normal text} 25 | \setbeamercolor{institute}{parent=normal text} 26 | \setbeamercolor{date}{parent=normal text} 27 | 28 | \setbeamerfont{title in head/foot}{family=\ttfamily} 29 | \setbeamerfont{page number in head/foot}{family=\ttfamily} 30 | \setbeamerfont{subsection in head/foot}{family=\ttfamily} 31 | 32 | \setbeamercolor*{palette primary}{fg=light,bg=blue} 33 | \setbeamercolor*{palette secondary}{parent=structure} 34 | \setbeamercolor*{palette tertiary}{parent=structure,fg=structure.bg,bg=structure.fg} 35 | \setbeamercolor*{palette quaternary}{parent=structure,fg=white,bg=structure.fg} 36 | 37 | \setbeamercolor{block title}{parent=structure,fg=white,bg=structure.fg!75!dark} 38 | \setbeamercolor{block title alerted}{parent=alerted text,fg=white,bg=alerted text.fg!75!dark} 39 | \setbeamercolor{block title example}{parent=example text,fg=white,bg=example text.fg!75!dark} 40 | 41 | \setbeamercolor{block body}{parent=normal text,parent=block title,bg=block title.bg!10!bg} 42 | \setbeamercolor{block body alerted}{parent=normal text,parent=block title alerted,bg=block title alerted.bg!10!bg} 43 | \setbeamercolor{block body example}{parent=normal text,parent=block title example,bg=block title example.bg!10!bg} 44 | -------------------------------------------------------------------------------- /PackagingCon2021-fpm/beamerouterthemeMCTC.sty: -------------------------------------------------------------------------------- 1 | % Copyright 2007 by Till Tantau 2 | % Copyright 2015 by Vedran Mileti\'c, Joseph Wright 3 | % Copyright 2019 Sebastian Ehlert 4 | % 5 | % This file may be distributed and/or modified 6 | % 7 | % 1. under the LaTeX Project Public License and/or 8 | % 2. under the GNU Public License. 9 | % 10 | % See the file doc/licenses/LICENSE for more details. 11 | 12 | \setbeamercolor{section in head/foot}{parent=palette tertiary} 13 | \setbeamercolor{subsection in head/foot}{parent=palette secondary} 14 | \setbeamercolor{author in head/foot}{parent=subsection in head/foot} 15 | \setbeamercolor{title in head/foot}{parent=subsection in head/foot} 16 | 17 | \newif\ifbeamer@theme@subsection 18 | \beamer@theme@subsectiontrue 19 | 20 | \DeclareOptionBeamer{subsection}[true]{\csname beamer@theme@subsection#1\endcsname} 21 | \ProcessOptionsBeamer 22 | 23 | \mode 24 | 25 | \AtBeginDocument{ 26 | \pgfdeclareverticalshading{beamer@topshade}{\paperwidth}{% 27 | color(0pt)=(bg); 28 | color(1pt)=(black!50!bg)} 29 | } 30 | 31 | \setbeamertemplate{mini frames}[box] 32 | % Head 33 | \defbeamertemplate*{headline}{awvwgk theme} 34 | {% 35 | \begin{beamercolorbox}[colsep=.1pt]{upper separation line head} 36 | \end{beamercolorbox} 37 | \begin{beamercolorbox}{section in head/foot} 38 | \vskip2pt\hskip5pt\raisebox{-6.5pt}{\pgfuseimage{logo}}% 39 | \hskip2pt\insertnavigation{.8\paperwidth}\vskip2pt 40 | \end{beamercolorbox}% 41 | \ifbeamer@theme@subsection% 42 | \begin{beamercolorbox}[colsep=.1pt]{middle separation line head} 43 | \end{beamercolorbox} 44 | \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,% 45 | leftskip=.4cm,rightskip=.4cm plus1fil]{subsection in head/foot} 46 | \usebeamerfont{subsection in head/foot}\insertsubsectionhead 47 | \end{beamercolorbox}% 48 | \vskip-3.625ex 49 | \pgfuseshading{beamer@topshade} 50 | \vskip+3.625ex 51 | \vskip-1pt 52 | \fi% 53 | \begin{beamercolorbox}[colsep=.1pt]{lower separation line head} 54 | \end{beamercolorbox} 55 | \pgfuseshading{beamer@topshade} 56 | \vskip-1pt 57 | } 58 | 59 | \defbeamertemplate*{footline}{awvwgk theme} 60 | {% 61 | %\leavevmode% 62 | %\begin{beamercolorbox}[colsep=.1pt]{upper separation line foot}% 63 | %\end{beamercolorbox}% 64 | \hbox{% 65 | \begin{beamercolorbox}% 66 | [ht=2.5ex,dp=1.125ex,leftskip=.4cm,rightskip=.4cm]% 67 | {author in head/foot}% 68 | \usebeamerfont{title in head/foot}% 69 | \insertshortauthor\ -\ \insertshorttitle\hfill% 70 | \usebeamerfont{page number in head/foot}% 71 | \usebeamertemplate{page number in head/foot}% 72 | \end{beamercolorbox} 73 | }% 74 | \vskip-3.625ex% 75 | \pgfuseshading{beamer@topshade}% 76 | \vskip+3.625ex% 77 | \vskip-1pt% 78 | } 79 | 80 | 81 | \mode 82 | 83 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # fortran-lang talks 2 | 3 | Repository to collaborate on fortran-lang talks and presentations. 4 | 5 | ## How to contribute 6 | 7 | If you're working on a presentation about fortran-lang or any of its projects, 8 | submit a PR that adds a subdirectory with the following format: 9 | 10 | ``` 11 | - 12 | ``` 13 | 14 | and in that directory add a README.md that contains your name, title, and 15 | abstract. 16 | Any other files in the directory will be your presentation assets--slides, web 17 | pages, videos, etc. 18 | -------------------------------------------------------------------------------- /deRSE23/Discourse_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/deRSE23/Discourse_screenshot.png -------------------------------------------------------------------------------- /deRSE23/README.md: -------------------------------------------------------------------------------- 1 | # deRSE23 Submission 2 | 3 | Abstract (and slides) for the [deRSE23](https://de-rse23.sciencesconf.org/) conference. 4 | 5 | * Title: Introducing the Fortran-lang community 6 | * Presenter: Ivan Pribec 7 | * Co-authors: Vincent Magnin, Asdrubal Lozada-Blanco, Ondrej Certik, Jeremie Vandenplas, Milan Curcic, Rohit Goswami, Sebastian Ehlert, Ioannis Nikiteas, Gabriele Bellomia, Carl Burkert, Emanuele Pagone, Brad Richardson, Amir Shahmoradi 8 | 9 | ## Abstract 10 | 11 | A thriving community is vital for the success and continuity of a programming language. Despite Fortran’s role in science and engineering and the evolution of the language itself, attracting new users and retaining existing ones has been a challenge for Fortran. To address this, the open-source community Fortran-lang has formed in 2019. Here, we present the efforts of Fortran-lang including the Fortran package manager, standard library, website, and LFortran compiler. Fortran-lang aims to provide a central hub for Fortran users, complementing the language standardization and compiler communities. Building on the best practices in software development, we strive to simplify the language learning process and promote Fortran adoption. 12 | -------------------------------------------------------------------------------- /deRSE23/Simpsons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/deRSE23/Simpsons.png -------------------------------------------------------------------------------- /deRSE23/contrib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/deRSE23/contrib.png -------------------------------------------------------------------------------- /deRSE23/contributor_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/deRSE23/contributor_graph.png -------------------------------------------------------------------------------- /deRSE23/deRSE23.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/deRSE23/deRSE23.pdf -------------------------------------------------------------------------------- /deRSE23/fortran_logo_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/deRSE23/fortran_logo_256x256.png -------------------------------------------------------------------------------- /deRSE23/fpm_diagram.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/deRSE23/fpm_diagram.pdf -------------------------------------------------------------------------------- /deRSE23/lfortran_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/deRSE23/lfortran_screenshot.png -------------------------------------------------------------------------------- /deRSE23/nature_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/deRSE23/nature_screenshot.png -------------------------------------------------------------------------------- /deRSE23/punch-cards-hires.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/deRSE23/punch-cards-hires.png -------------------------------------------------------------------------------- /deRSE23/r-source_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/deRSE23/r-source_screenshot.png -------------------------------------------------------------------------------- /deRSE23/scipy_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/deRSE23/scipy_screenshot.png -------------------------------------------------------------------------------- /deRSE23/simpson_horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/deRSE23/simpson_horizontal.png -------------------------------------------------------------------------------- /deRSE23/vscode_fortran.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/deRSE23/vscode_fortran.png -------------------------------------------------------------------------------- /deRSE23/website_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortran-lang/talks/186b5b1861afe75643b337ad4e90a8e322331aef/deRSE23/website_screenshot.png --------------------------------------------------------------------------------