Skip to content

Commit

Permalink
Built site for gh-pages
Browse files Browse the repository at this point in the history
  • Loading branch information
Quarto GHA Workflow Runner committed Sep 17, 2023
1 parent 966104b commit 78cd4e4
Show file tree
Hide file tree
Showing 8 changed files with 130 additions and 41 deletions.
2 changes: 1 addition & 1 deletion .nojekyll
Original file line number Diff line number Diff line change
@@ -1 +1 @@
247e82c0
249abd75
2 changes: 1 addition & 1 deletion materials/d1-01-welcome/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,7 @@ <h2>Workshop Policies</h2>
<h2>Meet the Team!</h2>
<div class="columns">
<div class="column" style="width:50%;">
<div id="fig-539a35d47e664c97a50115a146a7f1bd-1" class="quarto-figure quarto-figure-center" data-fig-align="center" width="70%" alt="Eric Nantz">
<div id="fig-539a35d47e664c97a50115a146a7f1bd-1" class="quarto-figure quarto-figure-center" data-fig-align="center" alt="Eric Nantz" width="70%">
<figure class="quarto-float quarto-float-fig">
<div>
<img data-src="assets/img/people/enantz.jpg" id="fig-539a35d47e664c97a50115a146a7f1bd-1" class="quarto-figure-center" style="width:70.0%" alt="Eric Nantz">
Expand Down
82 changes: 75 additions & 7 deletions materials/d1-03-performance/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles"><meta charset="utf-8">
<meta name="generator" content="quarto-1.4.369">

<meta name="author" content="TBD">
<title>Shiny in Production - Performance</title>
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
Expand Down Expand Up @@ -399,13 +398,21 @@ <h1 class="title">Performance</h1>
<p class="subtitle">posit::conf(2023) <br> Shiny in Production: Tools &amp; Techniques</p>

<div class="quarto-title-authors">
<div class="quarto-title-author">
<div class="quarto-title-author-name">
TBD
</div>
</div>
</div>

</section>
<section id="performance-agenda" class="slide level2">
<h2>Performance Agenda</h2>
<ul>
<li class="fragment">Profiling your Shiny app with {profvis}</li>
<li class="fragment">Lightning-quick data loading/querying with {arrow} &amp; <em>.parquet</em> files</li>
<li class="fragment">Asynchronous processes with {crew}</li>
</ul>
</section>
<section>
<section id="profvis-an-r-package-for-profiling-r-code-including-shiny-apps" class="title-slide slide level1 center">
<h1>{profvis}: an R package for profiling R code <br>(including Shiny apps)</h1>

</section>
<section id="what-is-profvis" class="slide level2">
<h2>What is {profvis}?</h2>
Expand Down Expand Up @@ -478,6 +485,66 @@ <h2>Demo!</h2>
<li>Describe the flamegraph, change the filters to only show events that took time</li>
<li>Navigate to the ‘data’ tab and discuss what took the most time</li>
</ul>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section></section>
<section>
<section id="arrow-the-.parquet-file-format" class="title-slide slide level1 center">
<h1>{arrow} &amp; the <em>.parquet</em> file format</h1>

</section>
<section id="what-are-.parquet-files" class="slide level2">
<h2>What are <em>.parquet</em> files?</h2>
<ul>
<li class="fragment"><em>.parquet</em> is a <em>columnar</em> storage format</li>
<li class="fragment"><em>.parquet</em> files not only store data, but they also store metadata about your data (i.e., data types for each column, number of rows in the file, etc.)</li>
<li class="fragment">Smaller files</li>
<li class="fragment">Faster read speed</li>
</ul>
<aside class="notes">
<ul>
<li>HOT TAKE INCOMING: parquet is the new csv</li>
<li>parquet files typically are the data structure that lives behind projects like the open source Delta Lake</li>
<li>faster across pretty much all benchmarks</li>
</ul>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="what-is-the-arrow-r-package" class="slide level2">
<h2>What is the {arrow} R package?</h2>
<ul>
<li class="fragment">Part of the larger Apache Arrow project</li>
<li class="fragment">Connect to your data with {arrow}…</li>
<li class="fragment">… and query it with {dplyr}</li>
</ul>
<div class="fragment">
<p><a href="https://arrow.apache.org/">Apache Arrow Homepage</a></p>
<p><a href="https://posit.co/blog/shiny-and-arrow/">Shiny + Arrow Article</a></p>
<aside class="notes">
<ul>
<li>“multi-language toolbox for accelerated data interchange and in-memory processing”</li>
<li>I.e., a set of data manipulation standards (particularly against parquet files) that has been implemented in a bunch of languages including R, Python, Rust, Go, and more</li>
<li>{arrow} let’s you use {dplyr} verbs against a single parquet file (or, perhaps more importantly, a <em>set</em> of parquet files) to query the data in those files</li>
<li>When it comes to building Shiny apps, we should look for easy places where we can gain efficiency &amp; speed to improve our user experience (you don’t want users waiting 20 seconds for your data prep logic to run against a single massive csv); it’s very likely that the combination of .parquet + {arrow} + {dplyr} can meet your app performance needs (it does for at least 95% of my use cases – there are very few cases where I have to go beyond that and start looking into other engines for faster data manipulation)</li>
</ul>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
Expand All @@ -493,7 +560,8 @@ <h2>Demo!</h2>
<div class="footer footer-default">
<p><a href="https://posit-conf-2023.github.io/shiny-r-prod">posit-conf-2023.github.io/shiny-r-prod</a></p>
</div>
</section>
</div>
</section></section>
</div>
</div>

Expand Down
2 changes: 1 addition & 1 deletion materials/d1-9001-loadtesting/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,7 @@ <h2>The log</h2>
{"type":"WS_SEND","begin":"2023-09-07T13:04:17.805Z","message":"[\"D#0|m|{\\\"method\\\":\\\"update\\\",\\\"data\\\":{\\\"n_parts_display\\\":\\\"20\\\"}}\"]"}
{"type":"WS_CLOSE","begin":"2023-09-07T13:04:35.561Z"}</code></pre>
<div class="fragment">
<div id="fig-539a35d47e664c97a50115a146a7f1bd-2" class="absolute quarto-figure quarto-figure-center" width="500px" height="500px" data-top="50" data-right="250" style="top: 50px; right: 250px; width: 500px; height: 500px; ">
<div id="fig-539a35d47e664c97a50115a146a7f1bd-2" class="absolute quarto-figure quarto-figure-center" height="500px" width="500px" data-top="50" data-right="250" style="top: 50px; right: 250px; width: 500px; height: 500px; ">
<figure class="quarto-float quarto-float-fig">
<div>
<img data-src="assets/img/confused_minifig.jpg" id="fig-539a35d47e664c97a50115a146a7f1bd-2" class="absolute" style="top: 50px; right: 250px; width: 500px; height: 500px; ">
Expand Down
16 changes: 8 additions & 8 deletions schedule.html
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ <h1 class="title">Workshop Schedule</h1>
</tr>
</thead>
<tbody class="list">
<tr data-index="0" data-listing-date-sort="1694995200000" data-listing-file-modified-sort="1694917209422" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1" data-listing-word-count-sort="27" data-listing-title-sort="Welcome &amp; Setup" data-listing-filename-sort="d1-01-welcome.qmd">
<tr data-index="0" data-listing-date-sort="1694995200000" data-listing-file-modified-sort="1694920619503" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1" data-listing-word-count-sort="27" data-listing-title-sort="Welcome &amp; Setup" data-listing-filename-sort="d1-01-welcome.qmd">
<td>
<span class="listing-subtitle">9:00 - 9:30</span>
</td>
Expand All @@ -217,7 +217,7 @@ <h1 class="title">Workshop Schedule</h1>
<span class="listing-author">Eric Nantz &amp; Michael Thomas</span>
</td>
</tr>
<tr data-index="1" data-listing-date-sort="1694995200000" data-listing-file-modified-sort="1694917209422" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1" data-listing-word-count-sort="32" data-listing-title-sort="Application Structure" data-listing-filename-sort="d1-02-structure.qmd">
<tr data-index="1" data-listing-date-sort="1694995200000" data-listing-file-modified-sort="1694920619503" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1" data-listing-word-count-sort="32" data-listing-title-sort="Application Structure" data-listing-filename-sort="d1-02-structure.qmd">
<td>
<span class="listing-subtitle">9:30 - 10:30</span>
</td>
Expand All @@ -228,7 +228,7 @@ <h1 class="title">Workshop Schedule</h1>
<span class="listing-author">Eric Nantz &amp; Michael Thomas</span>
</td>
</tr>
<tr data-index="2" data-listing-date-sort="1694995200000" data-listing-file-modified-sort="1694917209422" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1" data-listing-word-count-sort="34" data-listing-title-sort="Coffee &amp; refreshments break" data-listing-filename-sort="d1-02b-break.qmd">
<tr data-index="2" data-listing-date-sort="1694995200000" data-listing-file-modified-sort="1694920619503" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1" data-listing-word-count-sort="34" data-listing-title-sort="Coffee &amp; refreshments break" data-listing-filename-sort="d1-02b-break.qmd">
<td>
<span class="listing-subtitle">10:30 - 11:00</span>
</td>
Expand All @@ -239,7 +239,7 @@ <h1 class="title">Workshop Schedule</h1>
<span class="listing-author">&nbsp;</span>
</td>
</tr>
<tr data-index="3" data-listing-date-sort="1694995200000" data-listing-file-modified-sort="1694917209422" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1" data-listing-word-count-sort="27" data-listing-title-sort="Performance" data-listing-filename-sort="d1-03-performance.qmd">
<tr data-index="3" data-listing-date-sort="1694995200000" data-listing-file-modified-sort="1694920619503" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1" data-listing-word-count-sort="27" data-listing-title-sort="Performance" data-listing-filename-sort="d1-03-performance.qmd">
<td>
<span class="listing-subtitle">TBD</span>
</td>
Expand All @@ -250,7 +250,7 @@ <h1 class="title">Workshop Schedule</h1>
<span class="listing-author">Eric Nantz &amp; Michael Thomas</span>
</td>
</tr>
<tr data-index="4" data-listing-date-sort="1694995200000" data-listing-file-modified-sort="1694917209422" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1" data-listing-word-count-sort="108" data-listing-title-sort="Lunch break" data-listing-filename-sort="d1-03b-lunch.qmd">
<tr data-index="4" data-listing-date-sort="1694995200000" data-listing-file-modified-sort="1694920619503" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1" data-listing-word-count-sort="108" data-listing-title-sort="Lunch break" data-listing-filename-sort="d1-03b-lunch.qmd">
<td>
<span class="listing-subtitle">12:30 - 13:30</span>
</td>
Expand All @@ -261,7 +261,7 @@ <h1 class="title">Workshop Schedule</h1>
<span class="listing-author">&nbsp;</span>
</td>
</tr>
<tr data-index="5" data-listing-date-sort="1694995200000" data-listing-file-modified-sort="1694917209422" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1" data-listing-word-count-sort="27" data-listing-title-sort="Deployment &amp; Administration" data-listing-filename-sort="d1-04-deploy-admin.qmd">
<tr data-index="5" data-listing-date-sort="1694995200000" data-listing-file-modified-sort="1694920619503" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1" data-listing-word-count-sort="27" data-listing-title-sort="Deployment &amp; Administration" data-listing-filename-sort="d1-04-deploy-admin.qmd">
<td>
<span class="listing-subtitle">TBD</span>
</td>
Expand All @@ -272,7 +272,7 @@ <h1 class="title">Workshop Schedule</h1>
<span class="listing-author">Eric Nantz &amp; Michael Thomas</span>
</td>
</tr>
<tr data-index="6" data-listing-date-sort="1694995200000" data-listing-file-modified-sort="1694917209422" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1" data-listing-word-count-sort="34" data-listing-title-sort="Coffee &amp; refreshments break" data-listing-filename-sort="d1-04b-break.qmd">
<tr data-index="6" data-listing-date-sort="1694995200000" data-listing-file-modified-sort="1694920619503" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1" data-listing-word-count-sort="34" data-listing-title-sort="Coffee &amp; refreshments break" data-listing-filename-sort="d1-04b-break.qmd">
<td>
<span class="listing-subtitle">15:00 - 15:30</span>
</td>
Expand All @@ -283,7 +283,7 @@ <h1 class="title">Workshop Schedule</h1>
<span class="listing-author">&nbsp;</span>
</td>
</tr>
<tr data-index="7" data-listing-date-sort="1694995200000" data-listing-file-modified-sort="1694917209422" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1" data-listing-word-count-sort="27" data-listing-title-sort="Load Testing" data-listing-filename-sort="d1-9001-loadtesting.qmd">
<tr data-index="7" data-listing-date-sort="1694995200000" data-listing-file-modified-sort="1694920619503" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="1" data-listing-word-count-sort="27" data-listing-title-sort="Load Testing" data-listing-filename-sort="d1-9001-loadtesting.qmd">
<td>
<span class="listing-subtitle">TBD</span>
</td>
Expand Down
23 changes: 22 additions & 1 deletion search.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
[
{
"objectID": "materials/d1-03-performance/index.html#performance-agenda",
"href": "materials/d1-03-performance/index.html#performance-agenda",
"title": "Performance",
"section": "Performance Agenda",
"text": "Performance Agenda\n\nProfiling your Shiny app with {profvis}\nLightning-quick data loading/querying with {arrow} & .parquet files\nAsynchronous processes with {crew}"
},
{
"objectID": "materials/d1-03-performance/index.html#what-is-profvis",
"href": "materials/d1-03-performance/index.html#what-is-profvis",
Expand All @@ -25,7 +32,21 @@
"href": "materials/d1-03-performance/index.html#demo",
"title": "Performance",
"section": "Demo!",
"text": "Demo!\n\n\n\nShow how to change the dev/run_dev.R script to enable {profvis} profiling\nLaunch the app, navigate to the “Overview” page, and change a filter\nStop the app, and wait for the report to load\nDescribe the flamegraph, change the filters to only show events that took time\nNavigate to the ‘data’ tab and discuss what took the most time\n\n\n\n\nposit-conf-2023.github.io/shiny-r-prod"
"text": "Demo!\n\n\n\nShow how to change the dev/run_dev.R script to enable {profvis} profiling\nLaunch the app, navigate to the “Overview” page, and change a filter\nStop the app, and wait for the report to load\nDescribe the flamegraph, change the filters to only show events that took time\nNavigate to the ‘data’ tab and discuss what took the most time"
},
{
"objectID": "materials/d1-03-performance/index.html#what-are-.parquet-files",
"href": "materials/d1-03-performance/index.html#what-are-.parquet-files",
"title": "Performance",
"section": "What are .parquet files?",
"text": "What are .parquet files?\n\n.parquet is a columnar storage format\n.parquet files not only store data, but they also store metadata about your data (i.e., data types for each column, number of rows in the file, etc.)\nSmaller files\nFaster read speed\n\n\n\nHOT TAKE INCOMING: parquet is the new csv\nparquet files typically are the data structure that lives behind projects like the open source Delta Lake\nfaster across pretty much all benchmarks"
},
{
"objectID": "materials/d1-03-performance/index.html#what-is-the-arrow-r-package",
"href": "materials/d1-03-performance/index.html#what-is-the-arrow-r-package",
"title": "Performance",
"section": "What is the {arrow} R package?",
"text": "What is the {arrow} R package?\n\nPart of the larger Apache Arrow project\nConnect to your data with {arrow}…\n… and query it with {dplyr}\n\n\nApache Arrow Homepage\nShiny + Arrow Article\n\n\n“multi-language toolbox for accelerated data interchange and in-memory processing”\nI.e., a set of data manipulation standards (particularly against parquet files) that has been implemented in a bunch of languages including R, Python, Rust, Go, and more\n{arrow} let’s you use {dplyr} verbs against a single parquet file (or, perhaps more importantly, a set of parquet files) to query the data in those files\nWhen it comes to building Shiny apps, we should look for easy places where we can gain efficiency & speed to improve our user experience (you don’t want users waiting 20 seconds for your data prep logic to run against a single massive csv); it’s very likely that the combination of .parquet + {arrow} + {dplyr} can meet your app performance needs (it does for at least 95% of my use cases – there are very few cases where I have to go beyond that and start looking into other engines for faster data manipulation)\n\n\n\n\nposit-conf-2023.github.io/shiny-r-prod"
},
{
"objectID": "materials/d1-02-structure/codealong-1.html",
Expand Down
Loading

0 comments on commit 78cd4e4

Please sign in to comment.