added my version of slides under index-boris.html

This commit is contained in:
Boris Glavic 2020-01-12 08:23:37 -06:00
parent 81dd126150
commit 6253f95331

View file

@ -0,0 +1,845 @@
<!DOCTYPE html>
<html class=" js no-mobile desktop no-ie ff ff72 slides-section talks-section 2020-1-cidr-vizier-section gradient rgba opacity textshadow multiplebgs boxshadow borderimage borderradius no-cssreflections csstransforms csstransitions no-touch no-retina fontface domloaded w-1920 gt-240 gt-320 gt-480 gt-640 gt-768 gt-800 gt-1024 gt-1280 gt-1440 gt-1680 no-portrait landscape" id="index-page" lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<title>Your notebook is not crumby enough, REPLace it</title>
<meta name="description" content="Your notebook is not crumby enough, REPLace it">
<meta name="author" content="Oliver Kennedy">
<meta name="author" content="Mike Brachmann">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<link rel="stylesheet" href="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/reveal.css">
<link rel="stylesheet" href="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/ubodin.css" id="theme">
<!-- Code syntax highlighting -->
<link rel="stylesheet" href="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/zenburn.css">
<style type="text/css">
.reveal .slides section .fragment.growbig {
opacity: 1;
visibility: inherit; }
.reveal .slides section .fragment.growbig.visible {
-webkit-transform: scale(7);
transform: scale(7); }
</style>
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? '../../reveal.js-3.7.0/css/print/pdf.css' : '../reveal.js-3.7.0/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script><link rel="stylesheet" type="text/css" href="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/paper.html">
<!--[if lt IE 9]>
<script src="../reveal.js-3.5.0/lib/js/html5shiv.js"></script>
<![endif]--><script type="text/javascript" src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/data-src-svg.js"></script><script type="text/javascript" src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/math.js"></script>
<script type="text/javascript" src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/highlight-9.js"></script><script type="text/javascript" src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/zoom.js"></script><script type="text/javascript" src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/notes.js"></script><script type="text/javascript" src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/MathJax.js"></script><style type="text/css">.MathJax_Hover_Frame {border-radius: .25em; -webkit-border-radius: .25em; -moz-border-radius: .25em; -khtml-border-radius: .25em; box-shadow: 0px 0px 15px #83A; -webkit-box-shadow: 0px 0px 15px #83A; -moz-box-shadow: 0px 0px 15px #83A; -khtml-box-shadow: 0px 0px 15px #83A; border: 1px solid #A6D ! important; display: inline-block; position: absolute}
.MathJax_Menu_Button .MathJax_Hover_Arrow {position: absolute; cursor: pointer; display: inline-block; border: 2px solid #AAA; border-radius: 4px; -webkit-border-radius: 4px; -moz-border-radius: 4px; -khtml-border-radius: 4px; font-family: 'Courier New',Courier; font-size: 9px; color: #F0F0F0}
.MathJax_Menu_Button .MathJax_Hover_Arrow span {display: block; background-color: #AAA; border: 1px solid; border-radius: 3px; line-height: 0; padding: 4px}
.MathJax_Hover_Arrow:hover {color: white!important; border: 2px solid #CCC!important}
.MathJax_Hover_Arrow:hover span {background-color: #CCC!important}
</style><style type="text/css">#MathJax_About {position: fixed; left: 50%; width: auto; text-align: center; border: 3px outset; padding: 1em 2em; background-color: #DDDDDD; color: black; cursor: default; font-family: message-box; font-size: 120%; font-style: normal; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; z-index: 201; border-radius: 15px; -webkit-border-radius: 15px; -moz-border-radius: 15px; -khtml-border-radius: 15px; box-shadow: 0px 10px 20px #808080; -webkit-box-shadow: 0px 10px 20px #808080; -moz-box-shadow: 0px 10px 20px #808080; -khtml-box-shadow: 0px 10px 20px #808080; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}
#MathJax_About.MathJax_MousePost {outline: none}
.MathJax_Menu {position: absolute; background-color: white; color: black; width: auto; padding: 5px 0px; border: 1px solid #CCCCCC; margin: 0; cursor: default; font: menu; text-align: left; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; z-index: 201; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; -khtml-border-radius: 5px; box-shadow: 0px 10px 20px #808080; -webkit-box-shadow: 0px 10px 20px #808080; -moz-box-shadow: 0px 10px 20px #808080; -khtml-box-shadow: 0px 10px 20px #808080; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}
.MathJax_MenuItem {padding: 1px 2em; background: transparent}
.MathJax_MenuArrow {position: absolute; right: .5em; padding-top: .25em; color: #666666; font-size: .75em}
.MathJax_MenuActive .MathJax_MenuArrow {color: white}
.MathJax_MenuArrow.RTL {left: .5em; right: auto}
.MathJax_MenuCheck {position: absolute; left: .7em}
.MathJax_MenuCheck.RTL {right: .7em; left: auto}
.MathJax_MenuRadioCheck {position: absolute; left: .7em}
.MathJax_MenuRadioCheck.RTL {right: .7em; left: auto}
.MathJax_MenuLabel {padding: 1px 2em 3px 1.33em; font-style: italic}
.MathJax_MenuRule {border-top: 1px solid #DDDDDD; margin: 4px 3px}
.MathJax_MenuDisabled {color: GrayText}
.MathJax_MenuActive {background-color: #606872; color: white}
.MathJax_MenuDisabled:focus, .MathJax_MenuLabel:focus {background-color: #E8E8E8}
.MathJax_ContextMenu:focus {outline: none}
.MathJax_ContextMenu .MathJax_MenuItem:focus {outline: none}
#MathJax_AboutClose {top: .2em; right: .2em}
.MathJax_Menu .MathJax_MenuClose {top: -10px; left: -10px}
.MathJax_MenuClose {position: absolute; cursor: pointer; display: inline-block; border: 2px solid #AAA; border-radius: 18px; -webkit-border-radius: 18px; -moz-border-radius: 18px; -khtml-border-radius: 18px; font-family: 'Courier New',Courier; font-size: 24px; color: #F0F0F0}
.MathJax_MenuClose span {display: block; background-color: #AAA; border: 1.5px solid; border-radius: 18px; -webkit-border-radius: 18px; -moz-border-radius: 18px; -khtml-border-radius: 18px; line-height: 0; padding: 8px 0 6px}
.MathJax_MenuClose:hover {color: white!important; border: 2px solid #CCC!important}
.MathJax_MenuClose:hover span {background-color: #CCC!important}
.MathJax_MenuClose:hover:focus {outline: none}
</style><style type="text/css">.MathJax_Preview .MJXf-math {color: inherit!important}
</style><style type="text/css">.MJX_Assistive_MathML {position: absolute!important; top: 0; left: 0; 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; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none}
.MJX_Assistive_MathML.MJX_Assistive_MathML_Block {width: 100%!important}
</style><style type="text/css">#MathJax_Zoom {position: absolute; background-color: #F0F0F0; overflow: auto; display: block; z-index: 301; padding: .5em; border: 1px solid black; margin: 0; font-weight: normal; font-style: normal; text-align: left; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; box-shadow: 5px 5px 15px #AAAAAA; -webkit-box-shadow: 5px 5px 15px #AAAAAA; -moz-box-shadow: 5px 5px 15px #AAAAAA; -khtml-box-shadow: 5px 5px 15px #AAAAAA; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}
#MathJax_ZoomOverlay {position: absolute; left: 0; top: 0; z-index: 300; display: inline-block; width: 100%; height: 100%; border: 0; padding: 0; margin: 0; background-color: white; opacity: 0; filter: alpha(opacity=0)}
#MathJax_ZoomFrame {position: relative; display: inline-block; height: 0; width: 0}
#MathJax_ZoomEventTrap {position: absolute; left: 0; top: 0; z-index: 302; display: inline-block; border: 0; padding: 0; margin: 0; background-color: white; opacity: 0; filter: alpha(opacity=0)}
</style><style type="text/css">.MathJax_Preview {color: #888}
#MathJax_Message {position: fixed; left: 1px; bottom: 2px; background-color: #E6E6E6; border: 1px solid #959595; margin: 0px; padding: 2px 8px; z-index: 102; color: black; font-size: 80%; width: auto; white-space: nowrap}
#MathJax_MSIE_Frame {position: absolute; top: 0; left: 0; width: 0px; z-index: 101; border: 0px; margin: 0px; padding: 0px}
.MathJax_Error {color: #CC0000; font-style: italic}
</style><style type="text/css">.MJXp-script {font-size: .8em}
.MJXp-right {-webkit-transform-origin: right; -moz-transform-origin: right; -ms-transform-origin: right; -o-transform-origin: right; transform-origin: right}
.MJXp-bold {font-weight: bold}
.MJXp-italic {font-style: italic}
.MJXp-scr {font-family: MathJax_Script,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-frak {font-family: MathJax_Fraktur,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-sf {font-family: MathJax_SansSerif,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-cal {font-family: MathJax_Caligraphic,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-mono {font-family: MathJax_Typewriter,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-largeop {font-size: 150%}
.MJXp-largeop.MJXp-int {vertical-align: -.2em}
.MJXp-math {display: inline-block; line-height: 1.2; text-indent: 0; font-family: 'Times New Roman',Times,STIXGeneral,serif; white-space: nowrap; border-collapse: collapse}
.MJXp-display {display: block; text-align: center; margin: 1em 0}
.MJXp-math span {display: inline-block}
.MJXp-box {display: block!important; text-align: center}
.MJXp-box:after {content: " "}
.MJXp-rule {display: block!important; margin-top: .1em}
.MJXp-char {display: block!important}
.MJXp-mo {margin: 0 .15em}
.MJXp-mfrac {margin: 0 .125em; vertical-align: .25em}
.MJXp-denom {display: inline-table!important; width: 100%}
.MJXp-denom > * {display: table-row!important}
.MJXp-surd {vertical-align: top}
.MJXp-surd > * {display: block!important}
.MJXp-script-box > * {display: table!important; height: 50%}
.MJXp-script-box > * > * {display: table-cell!important; vertical-align: top}
.MJXp-script-box > *:last-child > * {vertical-align: bottom}
.MJXp-script-box > * > * > * {display: block!important}
.MJXp-mphantom {visibility: hidden}
.MJXp-munderover {display: inline-table!important}
.MJXp-over {display: inline-block!important; text-align: center}
.MJXp-over > * {display: block!important}
.MJXp-munderover > * {display: table-row!important}
.MJXp-mtable {vertical-align: .25em; margin: 0 .125em}
.MJXp-mtable > * {display: inline-table!important; vertical-align: middle}
.MJXp-mtr {display: table-row!important}
.MJXp-mtd {display: table-cell!important; text-align: center; padding: .5em 0 0 .5em}
.MJXp-mtr > .MJXp-mtd:first-child {padding-left: 0}
.MJXp-mtr:first-child > .MJXp-mtd {padding-top: 0}
.MJXp-mlabeledtr {display: table-row!important}
.MJXp-mlabeledtr > .MJXp-mtd:first-child {padding-left: 0}
.MJXp-mlabeledtr:first-child > .MJXp-mtd {padding-top: 0}
.MJXp-merror {background-color: #FFFF88; color: #CC0000; border: 1px solid #CC0000; padding: 1px 3px; font-style: normal; font-size: 90%}
.MJXp-scale0 {-webkit-transform: scaleX(.0); -moz-transform: scaleX(.0); -ms-transform: scaleX(.0); -o-transform: scaleX(.0); transform: scaleX(.0)}
.MJXp-scale1 {-webkit-transform: scaleX(.1); -moz-transform: scaleX(.1); -ms-transform: scaleX(.1); -o-transform: scaleX(.1); transform: scaleX(.1)}
.MJXp-scale2 {-webkit-transform: scaleX(.2); -moz-transform: scaleX(.2); -ms-transform: scaleX(.2); -o-transform: scaleX(.2); transform: scaleX(.2)}
.MJXp-scale3 {-webkit-transform: scaleX(.3); -moz-transform: scaleX(.3); -ms-transform: scaleX(.3); -o-transform: scaleX(.3); transform: scaleX(.3)}
.MJXp-scale4 {-webkit-transform: scaleX(.4); -moz-transform: scaleX(.4); -ms-transform: scaleX(.4); -o-transform: scaleX(.4); transform: scaleX(.4)}
.MJXp-scale5 {-webkit-transform: scaleX(.5); -moz-transform: scaleX(.5); -ms-transform: scaleX(.5); -o-transform: scaleX(.5); transform: scaleX(.5)}
.MJXp-scale6 {-webkit-transform: scaleX(.6); -moz-transform: scaleX(.6); -ms-transform: scaleX(.6); -o-transform: scaleX(.6); transform: scaleX(.6)}
.MJXp-scale7 {-webkit-transform: scaleX(.7); -moz-transform: scaleX(.7); -ms-transform: scaleX(.7); -o-transform: scaleX(.7); transform: scaleX(.7)}
.MJXp-scale8 {-webkit-transform: scaleX(.8); -moz-transform: scaleX(.8); -ms-transform: scaleX(.8); -o-transform: scaleX(.8); transform: scaleX(.8)}
.MJXp-scale9 {-webkit-transform: scaleX(.9); -moz-transform: scaleX(.9); -ms-transform: scaleX(.9); -o-transform: scaleX(.9); transform: scaleX(.9)}
.MathJax_PHTML .noError {vertical-align: ; font-size: 90%; text-align: left; color: black; padding: 1px 3px; border: 1px solid}
</style><style type="text/css">.MathJax_Display {text-align: center; margin: 1em 0em; position: relative; display: block!important; text-indent: 0; max-width: none; max-height: none; min-width: 0; min-height: 0; width: 100%}
.MathJax .merror {background-color: #FFFF88; color: #CC0000; border: 1px solid #CC0000; padding: 1px 3px; font-style: normal; font-size: 90%}
.MathJax .MJX-monospace {font-family: monospace}
.MathJax .MJX-sans-serif {font-family: sans-serif}
#MathJax_Tooltip {background-color: InfoBackground; color: InfoText; border: 1px solid black; box-shadow: 2px 2px 5px #AAAAAA; -webkit-box-shadow: 2px 2px 5px #AAAAAA; -moz-box-shadow: 2px 2px 5px #AAAAAA; -khtml-box-shadow: 2px 2px 5px #AAAAAA; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true'); padding: 3px 4px; z-index: 401; position: absolute; left: 0; top: 0; width: auto; height: auto; display: none}
.MathJax {display: inline; font-style: normal; font-weight: normal; line-height: normal; font-size: 100%; font-size-adjust: none; text-indent: 0; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0; min-height: 0; border: 0; padding: 0; margin: 0}
.MathJax:focus, body :focus .MathJax {display: inline-table}
.MathJax.MathJax_FullWidth {text-align: center; display: table-cell!important; width: 10000em!important}
.MathJax img, .MathJax nobr, .MathJax a {border: 0; padding: 0; margin: 0; max-width: none; max-height: none; min-width: 0; min-height: 0; vertical-align: 0; line-height: normal; text-decoration: none}
img.MathJax_strut {border: 0!important; padding: 0!important; margin: 0!important; vertical-align: 0!important}
.MathJax span {display: inline; position: static; border: 0; padding: 0; margin: 0; vertical-align: 0; line-height: normal; text-decoration: none}
.MathJax nobr {white-space: nowrap!important}
.MathJax img {display: inline!important; float: none!important}
.MathJax * {transition: none; -webkit-transition: none; -moz-transition: none; -ms-transition: none; -o-transition: none}
.MathJax_Processing {visibility: hidden; position: fixed; width: 0; height: 0; overflow: hidden}
.MathJax_Processed {display: none!important}
.MathJax_ExBox {display: block!important; overflow: hidden; width: 1px; height: 60ex; min-height: 0; max-height: none}
.MathJax .MathJax_EmBox {display: block!important; overflow: hidden; width: 1px; height: 60em; min-height: 0; max-height: none}
.MathJax_LineBox {display: table!important}
.MathJax_LineBox span {display: table-cell!important; width: 10000em!important; min-width: 0; max-width: none; padding: 0; border: 0; margin: 0}
.MathJax .MathJax_HitBox {cursor: text; background: white; opacity: 0; filter: alpha(opacity=0)}
.MathJax .MathJax_HitBox * {filter: none; opacity: 1; background: transparent}
#MathJax_Tooltip * {filter: none; opacity: 1; background: transparent}
@font-face {font-family: MathJax_Blank; src: url('about:blank')}
.MathJax .noError {vertical-align: ; font-size: 90%; text-align: left; color: black; padding: 1px 3px; border: 1px solid}
</style></head>
<body style="transition: transform 0.8s ease 0s;"><div style="visibility: hidden; overflow: hidden; position: absolute; top: 0px; height: 1px; width: auto; padding: 0px; border: 0px none; margin: 0px; text-align: left; text-indent: 0px; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal;"><div id="MathJax_Hidden"><br><br><br><br><br></div></div><div id="MathJax_Message" style="display: none;"></div>
<div class="reveal fade center ready" role="application" data-transition-speed="default" data-background-transition="fade">
<div class="header">
<!-- Any Talk-Specific Header Content Goes Here -->
<center>
<a href="http://www.buffalo.edu/" target="_blank">
<img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/ub-1line-ro-white.png" height="20">
</a>
</center>
</div>
<div class="footer">
<!-- Any Talk-Specific Footer Content Goes Here -->
<div style="float: left; margin-top: 15px; ">
Exploring <u><b>O</b></u>nline <u><b>D</b></u>ata <u><b>In</b></u>teractions
</div>
<a href="https://odin.cse.buffalo.edu/" target="_blank">
<img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/odin-1line-white.png" style="float: right;" height="40">
</a>
</div>
<div class="slides" style="width: 960px; height: 700px; inset: 50% auto auto 50%; transform: translate(-50%, -50%) scale(1.31794);">
<!-- Any section element inside of this container is displayed as a slide -->
<section style="top: 0px; display: block;" class="stack present" data-previous-indexv="0">
<!-- Credits... introduce everyone, etc... -->
<section style="top: 105px; display: block;" class="present">
<h3>
<img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/vizier-blue.svg" style="vertical-align: middle; margin-right: 20px;" height="100px">
<span style="vertical-align: middle;">VizierDB</span>
</h3>
<hr>
<h3>Your notebook is not crumby enough, REPLace it</h3>
<hr>
<h4><u>Michael&nbsp;Brachmann</u>,
William&nbsp;Spoth,
Oliver&nbsp;Kennedy,
Boris&nbsp;Glavic,
Heiko&nbsp;Mueller,
Sonia&nbsp;Castelo,
Carlos&nbsp;Bautista,
Juliana&nbsp;Freire</h4>
</section>
<section class="future" aria-hidden="true" style="top: 274.5px; display: block;" hidden="">
<h2>Demo</h2>
</section>
<section class="future" aria-hidden="true" style="top: 102px; display: block;" hidden="">
<p style="margin-top: -20px">
<img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/vizier-blue.svg" style="vertical-align: middle; margin-right: 20px;" height="70px">
<span style="vertical-align: middle; font-weight: bold; font-size: 120%"><b>VizierDB</b></span>
</p><div style="font-size: 70%; margin-top: -30px">A Data-First Notebook Built for Reproducibility</div>
<p></p>
<hr style="margin-bottom: 50px;">
<ol>
<li>Automatic Refresh &amp; Dependency Management</li>
<li class="fragment highlight-blue" data-fragment-index="0">Caveats: Tracking Errors and Assumptions</li>
<li class="fragment highlight-blue" data-fragment-index="0">Hybrid Notebook/Spreadsheet</li>
<li>History &amp; Version Management</li>
<li>Polyglot &amp; Multimodal</li>
</ol>
</section>
</section>
<section style="top: 0px; display: block;" class="stack future" data-previous-indexv="0" aria-hidden="true" hidden="">
<!--
Problem: Documentation Disconnected from Data
Solution: Annotate/propagate data
Formally Define Caveats
- Possible Worlds / Heuristic Choices
- Link to IDBs/PDBs
- Pick One World + Mark "Uncertain" Values
- Ex on TI-/BI-DB/CTables
- Emphasize: Don't need to be able to enumerate all worlds:
- Just need one world and the ability to decide what is certain
- Introduce the Caveat function
- Examples:
- 3 examples above
- Re-emphasize that enumeration is not required
- Propagation Overview
-->
<section style="top: 121px; display: block;" class="" aria-hidden="true">
<h3>Data Errors Suck</h3>
<img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/data_error.png">
<attribution><a href="https://xkcd.com/2239/">https://xkcd.com/2239/</a></attribution>
</section>
<section class="future" aria-hidden="true" style="top: 149px; display: block;" hidden="">
<p>
<span class="fragment" data-fragment-index="0">
<img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/female-computer-user.svg" style="vertical-align: middle;" height="70px">
<span style="vertical-align: middle; padding-left: 70px; padding-right: 70px"></span>
</span>
<img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/db.svg" style="vertical-align: middle;" height="70px">
<span style="vertical-align: middle; padding-left: 70px; padding-right: 70px"></span>
<img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/male-computer-user.png" style="vertical-align: middle;" height="70px">
</p>
<p class="fragment" data-fragment-index="1">
<span style="margin-right: 250px; vertical-align: middle;"></span>
<span style="margin-left: 250px; vertical-align: middle;"></span>
<br>
<span style="margin-right: 100px; vertical-align: middle;">Assumption</span>
<span style="font-size: 300%; vertical-align: middle;" class="fragment" data-fragment-index="2"></span>
<span style="margin-left: 100px; vertical-align: middle;">Assumption</span>
</p>
<attribution>freesvg.org</attribution>
</section>
<section class="future" aria-hidden="true" style="top: 186.5px; display: none;" hidden="">
<h3>Communicating Assumptions</h3>
<ul>
<li>README.txt</li>
<li>Wikis</li>
<li>Notebooks</li>
</ul>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;" hidden="">
<img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/montoya.jpeg" height="400px">
<attribution>© 20th Century Fox</attribution>
</section>
<section style="top: 121px; display: block;" class="" aria-hidden="true">
<h3>How to Deal With Errors? (Idealized)</h3>
<p>
<ol>
<li class="fragment" data-fragment-index="1"><b>Detect Data Errors</b>
</li>
<li class="fragment" data-fragment-index="2"><b>Repair Data Errors</b>
</li>
<li class="fragment" data-fragment-index="3"><b>Live happily ever after!</b>
</li>
</ol>
</p>
<img class="fragment" data-fragment-index="3" src="https://static.vecteezy.com/system/resources/previews/000/181/838/non_2x/happily-ever-after-vector.jpg" height="300px">
</section>
<section style="top: 121px; display: block;" class="" aria-hidden="true">
<h3>How to Deal With Errors? (Actually)</h3>
<ul>
<li><b>Detect Data Errors</b>
</li>
<ul>
<li>false positives and negatives!</li>
<li>errors may be subjective!</li>
<li>not all errors affect analysis!</li>
</ul>
<li><b>Repair Data Errors</b>
</li>
<ul>
<li>gold standard unknown!</li>
<li>correctness of repair often not verifiable!</li>
</ul>
</ul>
</section>
<section class="future" style="top: 121px; display: block;" class="" aria-hidden="true" hidden="">
<!--
* embrace uncertainty
* user has to currenlty manually do all the following (even if detection and repair are automatic)
-->
<h3><b>Takeaway: Need to embrace uncertainty!</b></h3>
<ul>
<li class="fragment" data-fragment-index="0"><b>However, currently user has to manually:</b></li>
<ol>
<li class="fragment" data-fragment-index="1">Document errors and repairs</li>
<li class="fragment" data-fragment-index="2">Document assumptions</li>
<li class="fragment" data-fragment-index="3">Determine impact on analysis results</li>
</ol>
</ul>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;" hidden="">
<h3>What is a Caveat?</h3>
<div style="margin-top: 70px;">
<p class="fragment" data-fragment-index="0-3"><b>Annotation</b> on data value(s) that indicates a concern, e.g.,</p>
<ul class="fragment" data-fragment-index="1">
<li data-fragment-index="1">The value is assumed to be erroneous</li>
<li data-fragment-index="2">The value is result of a heuristic repair</li>
<li data-fragment-index="3">The value is an outlier</li>
</ul>
</div>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;" hidden="">
<h3>Caveats consist of ...</h3>
<ul class="fragment" data-fragment-index="4">
<li>A reference to the operation that detected/caused the caveat (e.g., a repair)</li>
<li>Documentation (free text or structured)</li>
<li>A set of possible alternative values <i>(optional)</i></li>
</ul>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;" hidden="">
<pre><code class="sql hljs">
caveat(race_ethnicity,
'Unexpected race_ethnicity: ' &amp; race_ethnicity)
</code></pre>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;" hidden="">
<pre><code class="sql hljs">
CASE WHEN race_ethnicity NOT IN ('Black Non-Hispanic', <span class="hljs-comment">/* ... */</span>)
THEN caveat(race_ethnicity,
'Unexpected race_ethnicity: ' &amp; race_ethnicity)
ELSE race_ethnicity
</code></pre>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;" hidden="">
<pre><code class="sql hljs">
<span class="hljs-keyword">SELECT</span>
<span class="hljs-keyword">CASE</span> <span class="hljs-keyword">WHEN</span> race_ethnicity <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">IN</span> (<span class="hljs-string">'Black Non-Hispanic'</span>, <span class="hljs-comment">/* ... */</span>)
<span class="hljs-keyword">THEN</span> caveat(race_ethnicity,
<span class="hljs-string">'Unexpected race_ethnicity: '</span> &amp; race_ethnicity)
<span class="hljs-keyword">ELSE</span> race_ethnicity
<span class="hljs-keyword">END</span>, <span class="hljs-comment">/* ... */</span>
<span class="hljs-keyword">FROM</span> R
</code></pre>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;" hidden="">
<table>
<tbody><tr>
<td><img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/db.svg" style="vertical-align: middle;" height="100px"></td>
<td class="fragment" data-fragment-index="1">
<span style="vertical-align: middle; font-size: 150%; padding-right: 20px;"></span>
<img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/Prismatic-Cloud-Gears-2.svg" style="vertical-align: middle;" height="100px">
<span style="vertical-align: middle; font-size: 150%; padding-left: 20px;"></span>
</td>
<td class="fragment" data-fragment-index="1"><img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/AX11-graph.svg" style="vertical-align: middle;" height="100px"></td>
</tr>
<tr>
<td style="font-size: 150%;" class="fragment" data-fragment-index="0"></td>
<td></td>
<td style="font-size: 150%;" class="fragment" data-fragment-index="2"></td>
</tr>
<tr>
<td class="fragment" data-fragment-index="0">Caveats</td>
<td style="font-size: 150%" class="fragment" data-fragment-index="2"></td>
<td class="fragment" data-fragment-index="2">Caveats</td>
</tr>
</tbody></table>
<attribution>freesvg.org</attribution>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;" hidden="">
<h3>Propagation</h3>
<p>Can twiddling the caveatted value change the output?</p>
<p class="fragment" data-fragment-index="0" style="margin-top: 50px;"><span class="MathJax_Preview" style="color: inherit; display: none;"></span><span class="MathJax" id="MathJax-Element-1-Frame" tabindex="0" style="position: relative;" data-mathml="&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;&amp;#x2190;&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;mo&gt;&amp;#x00D7;&lt;/mo&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;/math&gt;" role="presentation"><nobr aria-hidden="true"><span class="math" id="MathJax-Span-1" style="width: 7.384em; display: inline-block;"><span style="display: inline-block; position: relative; width: 7.024em; height: 0px; font-size: 105%;"><span style="position: absolute; clip: rect(1.693em, 1007.02em, 2.915em, -1000em); top: -2.56em; left: 0em;"><span class="mrow" id="MathJax-Span-2"><span class="mi" id="MathJax-Span-3" style="font-family: STIXGeneral; font-style: italic;">C<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.022em;"></span></span><span class="mo" id="MathJax-Span-4" style="font-family: STIXGeneral; padding-left: 0.313em;"></span><span class="mo" id="MathJax-Span-5" style="font-family: STIXGeneral; padding-left: 0.313em;">(</span><span class="mn" id="MathJax-Span-6" style="font-family: STIXGeneral;">5</span><span class="mo" id="MathJax-Span-7" style="font-family: STIXGeneral; padding-left: 0.25em;">×</span><span class="mi" id="MathJax-Span-8" style="font-family: STIXGeneral; font-style: italic; padding-left: 0.25em;">X<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.044em;"></span></span><span class="mo" id="MathJax-Span-9" style="font-family: STIXGeneral;">)</span><span class="mo" id="MathJax-Span-10" style="font-family: STIXGeneral; padding-left: 0.25em;">+</span><span class="mi" id="MathJax-Span-11" style="font-family: STIXGeneral; font-style: italic; padding-left: 0.25em;">Y<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.077em;"></span></span></span><span style="display: inline-block; width: 0px; height: 2.56em;"></span></span></span><span style="display: inline-block; overflow: hidden; vertical-align: -0.248em; border-left: 0px solid; width: 0px; height: 1.033em;"></span></span></nobr><span class="MJX_Assistive_MathML" role="presentation"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>C</mi><mo stretchy="false"></mo><mo stretchy="false">(</mo><mn>5</mn><mo>×</mo><mi>X</mi><mo stretchy="false">)</mo><mo>+</mo><mi>Y</mi></math></span></span><script type="math/tex" id="MathJax-Element-1">C \leftarrow (5 \times X) + Y</script></p>
<p class="fragment" data-fragment-index="0">Caveats on <span class="MathJax_Preview" style="color: inherit; display: none;"></span><span class="MathJax" id="MathJax-Element-2-Frame" tabindex="0" style="position: relative;" data-mathml="&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/math&gt;" role="presentation"><nobr aria-hidden="true"><span class="math" id="MathJax-Span-12" style="width: 0.717em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.655em; height: 0px; font-size: 105%;"><span style="position: absolute; clip: rect(1.728em, 1000.66em, 2.738em, -1000em); top: -2.56em; left: 0em;"><span class="mrow" id="MathJax-Span-13"><span class="mi" id="MathJax-Span-14" style="font-family: STIXGeneral; font-style: italic;">X<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.044em;"></span></span></span><span style="display: inline-block; width: 0px; height: 2.56em;"></span></span></span><span style="display: inline-block; overflow: hidden; vertical-align: -0.063em; border-left: 0px solid; width: 0px; height: 0.811em;"></span></span></nobr><span class="MJX_Assistive_MathML" role="presentation"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>X</mi></math></span></span><script type="math/tex" id="MathJax-Element-2">X</script> and <span class="MathJax_Preview" style="color: inherit; display: none;"></span><span class="MathJax" id="MathJax-Element-3-Frame" tabindex="0" style="position: relative;" data-mathml="&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;/math&gt;" role="presentation"><nobr aria-hidden="true"><span class="math" id="MathJax-Span-15" style="width: 0.717em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.655em; height: 0px; font-size: 105%;"><span style="position: absolute; clip: rect(1.728em, 1000.66em, 2.738em, -1000em); top: -2.56em; left: 0em;"><span class="mrow" id="MathJax-Span-16"><span class="mi" id="MathJax-Span-17" style="font-family: STIXGeneral; font-style: italic;">Y<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.077em;"></span></span></span><span style="display: inline-block; width: 0px; height: 2.56em;"></span></span></span><span style="display: inline-block; overflow: hidden; vertical-align: -0.063em; border-left: 0px solid; width: 0px; height: 0.811em;"></span></span></nobr><span class="MJX_Assistive_MathML" role="presentation"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>Y</mi></math></span></span><script type="math/tex" id="MathJax-Element-3">Y</script> propagate to <span class="MathJax_Preview" style="color: inherit; display: none;"></span><span class="MathJax" id="MathJax-Element-4-Frame" tabindex="0" style="position: relative;" data-mathml="&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/math&gt;" role="presentation"><nobr aria-hidden="true"><span class="math" id="MathJax-Span-18" style="width: 0.777em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.714em; height: 0px; font-size: 105%;"><span style="position: absolute; clip: rect(1.715em, 1000.71em, 2.756em, -1000em); top: -2.56em; left: 0em;"><span class="mrow" id="MathJax-Span-19"><span class="mi" id="MathJax-Span-20" style="font-family: STIXGeneral; font-style: italic;">C<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.022em;"></span></span></span><span style="display: inline-block; width: 0px; height: 2.56em;"></span></span></span><span style="display: inline-block; overflow: hidden; vertical-align: -0.081em; border-left: 0px solid; width: 0px; height: 0.843em;"></span></span></nobr><span class="MJX_Assistive_MathML" role="presentation"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>C</mi></math></span></span><script type="math/tex" id="MathJax-Element-4">C</script><span class="fragment" data-fragment-index="1">*</span></p>
<p class="fragment" data-fragment-index="1" style="font-size:30%">Some conditions may apply</p>
</section>
</section>
<section style="top: 0px; display: block;" aria-hidden="true" class="stack future" data-previous-indexv="0" hidden="">
<section style="top: 274.5px; display: block;">
<h2>Sloooow!</h2>
</section>
<section class="future" aria-hidden="true" style="top: 74px; display: none;">
<img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/caveat-spreadsheet.png" height="150px;">
<p style="font-size: 200%">+</p>
<img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/caveat-list.png" height="150px;">
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<p>Is a value caveatted?</p>
<p class="fragment" data-fragment-index="0">≡ Certain answers in incomplete databases</p>
<p class="fragment" data-fragment-index="1">(coNP-complete)</p>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<h3>Conservative Approximation</h3>
<div>
<p style="margin-top: 20px; font-size: 60%;">
<b>Correctness of SQL Queries on Databases with Nulls.</b><br>
Paolo Guagliardo, Leonid Libkin
</p>
<p style="margin-top: 20px; font-size: 60%;">
<b>Uncertainty Annotated Databases - A Lightweight Approach for Approximating Certain Answers</b><br>
Su Feng, Aaron Huber, Boris Glavic, Oliver Kennedy
</p>
</div>
<ul>
<li class="fragment" data-fragment-index="0">Unmarked rows are guaranteed to be caveat-free.</li>
<li class="fragment" data-fragment-index="1">Marked rows might not be caveatted.</li>
</ul>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<p style="margin-top: 20px; font-size: 60%;">
<b>Uncertainty Annotated Databases - A Lightweight Approach for Approximating Certain Answers</b><br>
Su Feng, Aaron Huber, Boris Glavic, Oliver Kennedy
</p>
<p>Add and maintain a binary "has caveat"<br>column for each row/column.</p>
</section>
<section style="top: 193px; display: none;">
<h3>Enumerating Caveats</h3>
<dl>
<dt>Static Analysis</dt>
<dd>Which caveats could possibly affect the element?</dd>
<dt>Dynamic Analysis</dt>
<dd>Which specific caveats affect the element?</dd>
</dl>
</section>
</section>
<section style="top: 350px; display: none;" aria-hidden="true" class="stack future" data-previous-indexv="0" hidden="">
<section style="top: 350px; display: none;">
<dl>
<div style="margin-top: 20px;" class="fragment" data-fragment-index="0">
<dt>Oliver</dt>
<dd>I have this great tool for tracking assumptions!</dd>
</div>
<div style="margin-top: 20px;" class="fragment" data-fragment-index="1">
<dt>Data Scientist</dt>
<dd>Super! How does it work?</dd>
</div>
<div style="margin-top: 20px;" class="fragment" data-fragment-index="2">
<dt>Oliver</dt>
<dd>Well you just write a SQL query...</dd>
</div>
<div style="margin-top: 20px;" class="fragment" data-fragment-index="3">
<dt>Data Scientist</dt>
<dd>...</dd>
</div>
</dl>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/caveat-spreadsheet.png">
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<h3>Vizual</h3>
<p>Spreadsheet Operations → SQL DDL / SQL DML</p>
<dl>
<div class="fragment" data-fragment-index="0">
<dt>Edit Cell A3 to 'foo'</dt>
<dd style="font-family: monospace;">UPDATE R SET A = 'foo' WHERE ROWID = 3;</dd>
</div>
<div class="fragment" data-fragment-index="1">
<dt>Insert Row</dt>
<dd style="font-family: monospace;">INSERT INTO R() VALUES ();</dd>
</div>
<div class="fragment" data-fragment-index="2">
<dt>Insert Column `bar`</dt>
<dd style="font-family: monospace;">ALTER TABLE R ADD COLUMN `bar`;</dd>
</div>
</dl>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<p>This gives us an edit history in DDL/DML.</p>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<h3>Caveats on DDL/DML</h3>
<div class="fragment" data-fragment-index="0">
<h4 style="margin-top: 50px;">DML → SQL</h4>
<p style="font-size: 70%">
<b>Using Reenactment to Retroactively Capture Provenance for Transactions</b><br>
Bahareh Sadat Arab, Dieter Gawlick, Vasudha Krishnaswamy, Venkatesh Radhakrishnan, Boris Glavic
</p>
</div>
<div class="fragment" data-fragment-index="1">
<h4 style="margin-top: 50px;">DDL → SQL</h4>
<p style="font-size: 70%">
<b>Graceful database schema evolution: the PRISM workbench</b><br>
Carlo Curino, Hyun Jin Moon, Carlo Zaniolo
</p>
</div>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<pre><code class="sql hljs">
<span class="hljs-keyword">UPDATE</span> R <span class="hljs-keyword">SET</span> A = <span class="hljs-string">'foo'</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">ROWID</span> = <span class="hljs-number">3</span>;
</code></pre>
becomes
<pre><code class="sql hljs">
<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">CASE</span> <span class="hljs-keyword">ROWID</span>
<span class="hljs-keyword">WHEN</span> <span class="hljs-number">3</span> <span class="hljs-keyword">THEN</span> <span class="hljs-string">'foo'</span>
<span class="hljs-keyword">ELSE</span> A <span class="hljs-keyword">END</span> <span class="hljs-keyword">AS</span> A,
B, C, <span class="hljs-comment">/* ... */</span>
<span class="hljs-keyword">FROM</span> R
</code></pre>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<pre><code class="sql hljs">
<span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> R() <span class="hljs-keyword">VALUES</span> ();
</code></pre>
becomes
<pre><code class="sql hljs">
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> R
<span class="hljs-keyword">UNION</span> <span class="hljs-keyword">ALL</span>
<span class="hljs-keyword">SELECT</span> <span class="hljs-literal">NULL</span> <span class="hljs-keyword">AS</span> A, <span class="hljs-literal">NULL</span> <span class="hljs-keyword">AS</span> B,
<span class="hljs-literal">NULL</span> <span class="hljs-keyword">AS</span> C, <span class="hljs-comment">/* ... */</span>
</code></pre>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<pre><code class="sql hljs">
<span class="hljs-keyword">ALTER</span> <span class="hljs-keyword">TABLE</span> R <span class="hljs-keyword">ADD</span> <span class="hljs-keyword">COLUMN</span> <span class="hljs-string">`bar`</span>;
</code></pre>
becomes
<pre><code class="sql hljs">
<span class="hljs-keyword">SELECT</span> *, <span class="hljs-literal">NULL</span> <span class="hljs-keyword">as</span> <span class="hljs-string">`bar`</span> <span class="hljs-keyword">FROM</span> R;
</code></pre>
</section>
</section>
<section style="top: 350px; display: none;" aria-hidden="true" class="stack future" data-previous-indexv="0" hidden="">
<section style="top: 350px; display: none;">
<h3>
<img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/vizier-blue.svg" style="vertical-align: middle; margin-right: 20px;" height="100px">
<span style="vertical-align: middle;"><a href="https://vizierdb.info/">https://vizierdb.info</a></span>
</h3>
<pre style="margin-top: 50px;"><code class="sql hljs">
$&gt; pip3 <span class="hljs-keyword">install</span> <span class="hljs-comment">--user vizier-webapi</span>
$&gt; vizier
</code></pre>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<h3>
<img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/vizier-blue.svg" style="vertical-align: middle; margin-right: 50px;" height="100px">
<span style="vertical-align: middle;">
<span style="font-size: 50%;">[https://]</span>VizierDB<span style="font-size: 50%;">[.info]</span>
</span>
<img src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/qr.png" style="vertical-align: middle; margin-left: 50px" height="150px">
</h3>
<hr>
<h4 style="font-size: 70%">
Michael&nbsp;Brachmann,
William&nbsp;Spoth,
Oliver&nbsp;Kennedy,
Boris&nbsp;Glavic,
Heiko&nbsp;Mueller,
Sonia&nbsp;Castelo,
Carlos&nbsp;Bautista,
Juliana&nbsp;Freire</h4>
<hr>
<h4 style="font-size: 70%">
Ying&nbsp;Yang,
Su&nbsp;Feng,
Poonam&nbsp;Kumari,
Aaron&nbsp;Huber,
Niccolò&nbsp;Meneghetti,
Arindam&nbsp;Nandi,
Shivang&nbsp;Agarwal,
Olivia&nbsp;Alphonse,
Lisa&nbsp;Lu,
Gourab&nbsp;Malhotra,
Remi&nbsp;Rampin</h4>
<hr>
<p style="font-size: 16pt">Vizier is supported by NSF Awards ACI-1640864 and IIS-1750460 and gifts from Oracle</p>
</section>
</section>
<section style="top: 350px; display: none;" aria-hidden="true" class="stack future" data-previous-indexv="0" hidden="">
<section style="top: 350px; display: none;">
<h2>Bonus Slides</h2>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<pre><code class="sql hljs">
<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">VIEW</span> survey_responses <span class="hljs-keyword">AS</span>
<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">language</span>,
<span class="hljs-keyword">CASE</span> <span class="hljs-keyword">WHEN</span> <span class="hljs-keyword">CAST</span>(salary <span class="hljs-keyword">AS</span> <span class="hljs-built_in">float</span>) <span class="hljs-keyword">IS</span> <span class="hljs-literal">NULL</span> <span class="hljs-keyword">THEN</span>
caveat(<span class="hljs-literal">NULL</span>, <span class="hljs-string">'Could not cast [ '</span>&amp;salary&amp;<span class="hljs-string">' ] to float.'</span>)
<span class="hljs-keyword">ELSE</span> <span class="hljs-keyword">CAST</span>(salary <span class="hljs-keyword">AS</span> <span class="hljs-built_in">float</span>) <span class="hljs-keyword">END</span> <span class="hljs-keyword">AS</span> salary
<span class="hljs-keyword">FROM</span> raw_csv_data;
</code></pre>
<div class="fragment" data-fragment-index="0">
becomes
<pre><code class="sql hljs">
<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">VIEW</span> survey_responses <span class="hljs-keyword">AS</span>
<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">language</span>, <span class="hljs-keyword">CAST</span>(salary <span class="hljs-keyword">AS</span> <span class="hljs-built_in">float</span>) <span class="hljs-keyword">AS</span> salary,
<span class="hljs-literal">FALSE</span> <span class="hljs-keyword">AS</span> _caveat_field_language,
<span class="hljs-keyword">CAST</span>(salary <span class="hljs-keyword">as</span> <span class="hljs-built_in">float</span>) <span class="hljs-keyword">IS</span> <span class="hljs-literal">NULL</span> <span class="hljs-keyword">AS</span> _caveat_field_salary
<span class="hljs-literal">FALSE</span> <span class="hljs-keyword">AS</span> _caveat_row
<span class="hljs-keyword">FROM</span> raw_csv_data;
</code></pre>
</div>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<pre><code class="sql hljs">
<span class="hljs-keyword">SELECT</span> salary
<span class="hljs-keyword">FROM</span> survey_responses
<span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">language</span> = <span class="hljs-string">'Scala'</span>
</code></pre>
<div class="fragment" data-fragment-index="0">
becomes
<pre><code class="sql hljs">
<span class="hljs-keyword">SELECT</span> salary,
_caveat_field_salary <span class="hljs-keyword">AS</span> _caveat_field_salary,
_caveat_row <span class="hljs-keyword">AND</span> _caveat_field_language <span class="hljs-keyword">AS</span> _caveat_row
<span class="hljs-keyword">FROM</span> survey_responses
<span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">language</span> = <span class="hljs-string">'Scala'</span>
</code></pre>
</div>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<pre><code class="sql hljs">
<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">AVG</span>(salary) <span class="hljs-keyword">AS</span> salary
<span class="hljs-keyword">FROM</span> survey_responses
</code></pre>
<div class="fragment" data-fragment-index="0">
becomes
<pre><code class="sql hljs">
<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">AVG</span>(salary),
GROUP_OR(_caveat_field_salary
<span class="hljs-keyword">OR</span> _caveat_row) <span class="hljs-keyword">AS</span> _caveat_field_salary,
<span class="hljs-literal">FALSE</span> <span class="hljs-keyword">AS</span> _caveat_row
<span class="hljs-keyword">FROM</span> survey_responses
</code></pre>
</div>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<pre><code class="sql hljs">
<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">language</span>, <span class="hljs-keyword">AVG</span>(salary) <span class="hljs-keyword">AS</span> salary
<span class="hljs-keyword">FROM</span> survey_responses
<span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> <span class="hljs-keyword">language</span>
</code></pre>
<div class="fragment" data-fragment-index="0">
... first we evaluate
<pre><code class="sql hljs">
<span class="hljs-keyword">SELECT</span> GROUP_OR(_caveat_field_language)
<span class="hljs-keyword">FROM</span> survey_responses
</code></pre>
</div>
<p class="fragment" data-fragment-index="1">Can often be evaluated statically.</p>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<h3>If GROUP BY has caveats</h3>
<pre><code class="sql hljs">
<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">language</span>, <span class="hljs-keyword">AVG</span>(salary) <span class="hljs-keyword">AS</span> salary
<span class="hljs-literal">FALSE</span> <span class="hljs-keyword">AS</span> _caveat_field_language
<span class="hljs-literal">TRUE</span> <span class="hljs-keyword">AS</span> _caveat_field_salary
GROUP_AND(_caveat_field_language <span class="hljs-keyword">OR</span>
_caveat_row) <span class="hljs-keyword">AS</span> _caveat_row
<span class="hljs-keyword">FROM</span> by_language
<span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> <span class="hljs-keyword">language</span>
</code></pre>
</section>
<section class="future" aria-hidden="true" style="top: 350px; display: none;">
<h3>If no GROUP BY caveats</h3>
<pre><code class="sql hljs">
<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">language</span>, <span class="hljs-keyword">AVG</span>(salary) <span class="hljs-keyword">AS</span> salary
<span class="hljs-literal">FALSE</span> <span class="hljs-keyword">AS</span> _caveat_field_language
GROUP_OR(_caveat_field_salary,
_caveat_row) <span class="hljs-keyword">AS</span> _caveat_field_salary
GROUP_AND(_caveat_row) <span class="hljs-keyword">AS</span> _caveat_row
<span class="hljs-keyword">FROM</span> by_language
<span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> <span class="hljs-keyword">language</span>
</code></pre>
</section>
</section>
</div><div class="backgrounds"><div class="slide-background stack present" style="display: block;" data-loaded="true"><div class="slide-background present" style="display: block;" data-loaded="true"></div><div class="slide-background future" style="display: block;" data-loaded="true"></div><div class="slide-background future" style="display: block;" data-loaded="true"></div></div><div class="slide-background stack future" style="display: block;" data-loaded="true"><div class="slide-background present" style="display: block;" data-loaded="true"></div><div class="slide-background future" style="display: block;" data-loaded="true"></div><div class="slide-background future" style="display: none;" data-loaded="true"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div></div><div class="slide-background stack future" style="display: block;" data-loaded="true"><div class="slide-background present" style="display: block;" data-loaded="true"></div><div class="slide-background future" style="display: none;" data-loaded="true"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div></div><div class="slide-background stack future" style="display: none;" data-loaded="true"><div class="slide-background present" style="display: none;" data-loaded="true"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div></div><div class="slide-background stack future" style="display: none;"><div class="slide-background present" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div></div><div class="slide-background stack future" style="display: none;"><div class="slide-background present" style="display: none;"></div><div class="slide-background future" style="display: none;"></div></div><div class="slide-background stack future" style="display: none;"><div class="slide-background present" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div><div class="slide-background future" style="display: none;"></div></div></div><div class="progress" style="display: block;"><span style="width: 0px;"></span></div><aside class="controls" style="display: none;"><button class="navigate-left" aria-label="previous slide" disabled="disabled"></button><button class="navigate-right enabled" aria-label="next slide"></button><button class="navigate-up" aria-label="above slide" disabled="disabled"></button><button class="navigate-down enabled" aria-label="below slide"></button></aside><div class="slide-number" style="display: block;"><span class="slide-number-a">1</span><span class="slide-number-delimiter">.</span><span class="slide-number-b">1</span></div><div class="speaker-notes" data-prevent-swipe="" tabindex="0"></div><div class="pause-overlay"></div><div style="position: absolute; height: 1px; width: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px);" id="aria-status-div" aria-live="polite" aria-atomic="true">
VizierDB
Your notebook is not crumby enough, REPLace it
Michael&nbsp;Brachmann,
William&nbsp;Spoth,
Oliver&nbsp;Kennedy,
Boris&nbsp;Glavic,
Heiko&nbsp;Mueller,
Sonia&nbsp;Castelo,
Carlos&nbsp;Bautista,
Juliana&nbsp;Freire
</div></div>
<script src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/head.js"></script>
<script src="Your%20notebook%20is%20not%20crumby%20enough,%20REPLace%20it_files/reveal.js"></script>
<script>
// Full list of configuration options available at:
// https://github.com/hakimel/../reveal.js#configuration
Reveal.initialize({
controls: false,
progress: true,
history: true,
center: true,
slideNumber: true,
transition: 'fade', // none/fade/slide/convex/concave/zoom
// Optional ../reveal.js plugins
dependencies: [
{ src: '../../reveal.js-3.7.0/plugin/svginline/data-src-svg.js' },
{ src: '../reveal.js-3.5.0/lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: '../reveal.js-3.5.0/plugin/math/math.js',
condition: function() { return true; },
mathjax: '../reveal.js-3.5.0/js/MathJax.js'
},
{ src: '../reveal.js-3.5.0/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: '../reveal.js-3.5.0/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
//{ src: '../reveal.js-3.5.0/plugin/highlight/highlight.js', async: true, condition: function() { return !!document.querySelector( 'tt code' ); }, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: '../../reveal.js-3.7.0/plugin/highlight/highlight-9.16.2.js', async: true,
callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: '../reveal.js-3.5.0/plugin/zoom-js/zoom.js', async: true },
{ src: '../reveal.js-3.5.0/plugin/notes/notes.js', async: true }
]
});
</script>
<script>document.write('<script src="http://' + (location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1"></' + 'script>')</script><script src="http://odin.cse.buffalo.edu:35729/livereload.js?snipver=1"></script>
<div style="position: absolute; width: 0px; height: 0px; overflow: hidden; padding: 0px; border: 0px none; margin: 0px;"><div id="MathJax_Font_Test" style="position: absolute; visibility: hidden; top: 0px; left: 0px; width: auto; padding: 0px; border: 0px none; margin: 0px; white-space: nowrap; text-align: left; text-indent: 0px; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; font-size: 40px; font-weight: normal; font-style: normal; font-size-adjust: none; font-family: STIXSizeOneSym, sans-serif;"></div></div></body></html>