CINXE.COM
APIs are Illness and Cure: The Software Heterogeneity Problem in Web Programming (SPLASH 2020 - REBASE) - SPLASH 2020
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="https://2020.splashcon.org/favicon.ico?28d37e6d7e5e12d24c39bdba0f4f3cfd" rel="shortcut icon" type="image/x-icon" /> <link href="https://2020.splashcon.org/stylesheets/common_.css?d7bcca3579a066193caf560ede9d6399" rel="stylesheet" type="text/css" /> <title>APIs are Illness and Cure: The Software Heterogeneity Problem in Web Programming (SPLASH 2020 - REBASE) - SPLASH 2020</title> <script type="text/javascript">var show_webdsl_debug=false;</script> <script type="text/javascript">var contextpath="https://2020.splashcon.org";</script> <link rel="stylesheet" href="https://2020.splashcon.org/stylesheets/bootstrap/css/bootstrap.min.css?7f89537eaf606bff49f5cc1a7c24dbca" type="text/css" /><link rel="stylesheet" href="https://2020.splashcon.org/stylesheets/conf.css?e0c92ee5f52769e04d268b7588469bfe" type="text/css" /><link rel="stylesheet" href="https://2020.splashcon.org/getFile/ff776645-fe0c-41bc-a5f3-d351459352e4/header.css?1605369652019" type="text/css" /><link rel="stylesheet" href="https://2020.splashcon.org/stylesheets/flatpickr-4.3.2.min.css?8eedb7a0f2455c0dbbbbcc46c4172c0d" type="text/css" /><link rel="stylesheet" href="https://2020.splashcon.org/stylesheets/theme.bootstrap_3.min.css?6867e70881e6ed2c03b6c9cf9c3152e0" type="text/css" /><script type="text/javascript" src="//code.jquery.com/jquery-3.5.1.min.js"></script> <script type="text/javascript" src="https://2020.splashcon.org/javascript/flatpickr-4.3.2.min.js?c2885c17ae5fd471c9a40c437e8a2736"></script> <script type="text/javascript" src="https://2020.splashcon.org/javascript/jquery.tablesorter.combined.min.js?285b21976326641f8f1b910492e6d5d0"></script> <script type="text/javascript" src="https://2020.splashcon.org/javascript/jquery.tablesorter.pager.min.js?4551cdfea66f45a11ae5548f3d50a06f"></script> <script type="text/javascript" src="https://2020.splashcon.org/javascript/tablesorter-init.js?ee6babedf1a6be960e4543a1bb57b421"></script> <script type="text/javascript" src="https://2020.splashcon.org/javascript/bootstrap/js/bootstrap.min.js?2f34b630ffe30ba2ff2b91e3f3c322a1"></script> <script type="text/javascript" src="https://2020.splashcon.org/javascript/notify.min.js?e86d399917a84b69a4683f504c7a7813"></script> <script type="text/javascript" src="https://2020.splashcon.org/javascript/ajax.js?2dbd1cc4f8f2d52ae9c879d7346f4f8a"></script> <script type="text/javascript">(function($){ $(document).ready(function(){ $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) { event.preventDefault(); event.stopPropagation(); $(this).parent().siblings().removeClass('open'); $(this).parent().toggleClass('open'); }); }); })(jQuery); </script> <script type="text/javascript"> $(window).on('popstate', function(){ $('.modal.in').modal('hide') }); </script><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; $(node).find('.modal').on( 'shown.bs.modal', function(){ if(history.pushState){ history.pushState({ id: 'modal', modalId: $(this).attr('id') }, null, window.location.href); } } ).on( 'hidden.bs.modal', function (){ if( history.state != null && history.state.modalId == $(this).attr('id') ){ history.back(); } } ); }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script> <script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'G-4G0QWEKVQS', {'cookie_domain': 'auto', 'anonymizeIp': true });gtag('config', 'UA-9607501-2', {'cookie_domain': 'auto', 'anonymizeIp': true });</script> <style> .facet-placeholder.past-facets>div { font-size: 0px ; } .facet-placeholder.past-facets>div:after { content: "Hide past days/events"; font-size: 12px; } </style> <script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; $(node).find('input.flatpickr:not([id])').focusout( function(){ this.dispatchEvent( new KeyboardEvent('keydown',{keyCode:13, bubbles: true}) ); } ); }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script> <meta prefix='og: http://ogp.me/ns#' property='og:description' content='Rebase is a new conference for and by practitioners who want to engage academics about tomorrow鈥檚 technologies while fondly recalling the achievements of yesterday. The virtual edition combines two conferences, REBASE::Berlin and REBASE::Chicago, in one single event. Featuring 25 speakers over six days of conference in all time zones.'> <script type="text/javascript">function addEventModalLoadOnClick( containerNode ){ $(containerNode).find( "a[data-event-modal]" ).on("click", function(e){ var eventId = $(this).data("event-modal"); var modalElem = $("#modal-" + eventId); if(modalElem.length){ modalElem.modal({ backdrop: 'static', keyboard: true}, 'show'); } else { var loaderElem = $("#event-modal-loader"); loaderElem.find("input.event-id-input").val( eventId ); loaderElem.find("#load-modal-action").click(); } e.preventDefault(); } ); } </script><script type="text/javascript">function addStarredEventOnClick( containerNode ){ $(containerNode).find( "[data-event-star]" ).on("click", function(e){ var eventId = $(this).data("event-star"); var starEventFormElem = $("#event-star-form"); starEventFormElem.find("input.event-id-input").val( eventId ); starEventFormElem.find("#star-event-action").click(); e.preventDefault(); e.stopPropagation(); } ); } </script><script type="text/javascript">function pauseOnCloseModal( modalid ){ //pauses video (only youtube at the moment) when closing modal $('#' + modalid).on('hidden.bs.modal', function () { $(this).find('.embed-container iframe[src*=enablejsapi]').each( function(){ this.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*') } ); } ) } </script> <script type="text/javascript">$(document).ready( function(){ $('#program-menu a[data-fltr-type]').on('click', function(event){ event.preventDefault(); window.location = $(this).attr('href') + "?" + encodeURIComponent( $(this).data('fltr-type') ) + '=' + encodeURIComponent( $(this).data('fltr-val') ); }) }) </script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-4G0QWEKVQS"></script> <meta name='description' content='Rebase is a new conference for and by practitioners who want to engage academics about tomorrow鈥檚 technologies while fondly recalling the achievements of yesterday. The virtual edition combines two conferences, REBASE::Berlin and REBASE::Chicago, in one single event. Featuring 25 speakers over six days of conference in all time zones.'> <!--[if IE 9]><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/eligrey-classlist-js-polyfill@1.2.20171210/classList.min.js"></script><![endif]--> <meta prefix='og: http://ogp.me/ns#' property='og:title' content='APIs are Illness and Cure: The Software Heterogeneity Problem in Web Programming (SPLASH 2020 - REBASE) - SPLASH 2020'> <meta prefix='og: http://ogp.me/ns#' property='og:image' content='https://2020.splashcon.org/getImage/carousel/chocago.jpg?1602657013000'> </head> <body id="details"><div class="frame"><div class="logobar"><div class="container"><a href="https://2020.splashcon.org" class="navbar-brand navigate"><span class="brand-text">SPLASH 2020</span></a><div class="place">Sun 15 - Sat 21 November 2020 <a href="https://2020.splashcon.org/venue/splash-2020-venue" class="navigate">Online Conference</a></div></div></div><div class="navbar navbar-default"><div class="container"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navigationbar" class="navbar-toggle"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div><div id="navigationbar" class="navigationbar collapse navbar-collapse"><ul class="block nav navbar-nav"><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Attending <span class="caret"></span></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/venue/splash-2020-venue" class="navigate">Venue: Online</a></li><li class="block"><a href="https://2020.splashcon.org/attending/Students" class="navigate">Students</a></li><li class="block"><a href="https://2020.splashcon.org/attending/Registration" class="navigate">Registration</a></li><li class="block"><a href="https://2020.splashcon.org/attending/awards" class="navigate">Awards</a></li><li class="block"><a href="https://2020.splashcon.org/attending/sponsoring" class="navigate">Sponsoring</a></li><li class="block"><a href="https://2020.splashcon.org/attending/Conduct" class="navigate">Code of conduct</a></li><li class="block"><a href="https://2020.splashcon.org/attending/Certificate+of+Attendance" class="navigate">Certificate of Attendance</a></li></ul></li><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Info <span class="caret"></span></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/info/author-instructions" class="navigate">Presenter Instructions for OOPSLA/ECOOP/Onward!/GPCE/SLE/DLS</a></li><li class="block"><a href="https://2020.splashcon.org/info/presenter-instructions-sas" class="navigate">Presenter Instructions for SAS 2020</a></li><li class="block"><a href="https://2020.splashcon.org/info/presenter-instructions-for-rebase-2020" class="navigate">Presenter Instructions for REBASE 2020</a></li><li class="block"><a href="https://2020.splashcon.org/info/session-chair-instructions" class="navigate">Session Chair Instructions</a></li></ul></li><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Program <span class="caret"></span></a><ul id="program-menu" class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/program/program-splash-2020/" class="navigate">SPLASH Program</a></li><li class="block"><a href="https://2020.splashcon.org/program/program-splash-2020/" data-fltr-type="prog" data-fltr-val="Your Program" class="navigate"><span class="glyphicon glyphicon-star"></span> Your Program</a></li><li class="block divider"></li><li class="block"><a href="https://2020.splashcon.org/program/program-splash-2020/" data-fltr-type="date" data-fltr-val="Sun 15 Nov 2020" class="navigate">Sun 15 Nov</a></li><li class="block"><a href="https://2020.splashcon.org/program/program-splash-2020/" data-fltr-type="date" data-fltr-val="Mon 16 Nov 2020" class="navigate">Mon 16 Nov</a></li><li class="block"><a href="https://2020.splashcon.org/program/program-splash-2020/" data-fltr-type="date" data-fltr-val="Tue 17 Nov 2020" class="navigate">Tue 17 Nov</a></li><li class="block"><a href="https://2020.splashcon.org/program/program-splash-2020/" data-fltr-type="date" data-fltr-val="Wed 18 Nov 2020" class="navigate">Wed 18 Nov</a></li><li class="block"><a href="https://2020.splashcon.org/program/program-splash-2020/" data-fltr-type="date" data-fltr-val="Thu 19 Nov 2020" class="navigate">Thu 19 Nov</a></li><li class="block"><a href="https://2020.splashcon.org/program/program-splash-2020/" data-fltr-type="date" data-fltr-val="Fri 20 Nov 2020" class="navigate">Fri 20 Nov</a></li><li class="block"><a href="https://2020.splashcon.org/program/program-splash-2020/" data-fltr-type="date" data-fltr-val="Sat 21 Nov 2020" class="navigate">Sat 21 Nov</a></li></ul></li><li id="tracks-in-navbar" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Tracks <span class="caret"></span></a><ul class="block dropdown-menu multi-column columns-3"><div class="row"><div class="col-sm-5"><ul class="block multi-column-dropdown"><li class="block dropdown-header">SPLASH 2020</li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-oopsla" class="navigate">OOPSLA</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-Artifacts" class="navigate">OOPSLA Artifacts</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-Onward-Essays" class="navigate">Onward! Essays</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-Onward-papers" class="navigate">Onward! Papers</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-rebase" class="navigate">REBASE</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-Doctoral-Symposium" class="navigate">Doctoral Symposium</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-PLMW" class="navigate">PLMW</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-Posters" class="navigate">Posters</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-SPLASH-E" class="navigate">SPLASH-E</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-SRC" class="navigate">Student Research Competition</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-Student-Volunteers" class="navigate">Student Volunteers</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-Workshops" class="navigate">Workshops</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-splash-keynotes" class="navigate">Keynotes</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-meet-someone-new--msn-" class="navigate">Meet The Speakers (MTS)</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-ask-me-anything--ama-" class="navigate">Ask Me Anything (AMA)</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-cares" class="navigate">CARES</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-awards" class="navigate">Awards</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-opening" class="navigate">Opening</a></li><li class="block"><a href="https://2020.splashcon.org/track/splash-2020-closing" class="navigate">Closing</a></li></ul></div><div class="col-sm-7"><ul class="block multi-column-dropdown"><li class="block dropdown-header">Co-hosted Conferences</li><li class="block"><a href="https://conf.researchr.org/home/dls-2020" class="navigate"><strong>DLS</strong> </a></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>ECOOP</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org" class="navigate"><span class="glyphicon glyphicon-home"></span> ECOOP</a></li><li class="block"><a href="https://2020.ecoop.org/track/ecoop-2020-papers" class="navigate"><strong>ECOOP</strong> Research Papers</a></li><li class="block"><a href="https://2020.ecoop.org/track/ecoop-2020-artifacts" class="navigate"><strong>ECOOP</strong> Artifacts</a></li><li class="block"><a href="https://2020.ecoop.org/track/ecoop-2020-Student-Volunteers" class="navigate"><strong>ECOOP</strong> Student Volunteers</a></li><li class="block"><a href="https://2020.ecoop.org/track/ecoop-2020-doctoral-symposium" class="navigate"><strong>ECOOP</strong> Doctoral Symposium</a></li><li class="block"><a href="https://2020.ecoop.org/track/ecoop-2020-tutorials" class="navigate"><strong>ECOOP</strong> Tutorials</a></li><li class="block"><a href="https://2020.ecoop.org/track/ecoop-2020-Posters" class="navigate"><strong>ECOOP</strong> Posters</a></li></ul></li><li class="block"><a href="https://conf.researchr.org/home/gpce-2020" class="navigate"><strong>GPCE</strong> </a></li><li class="block"><a href="https://conf.researchr.org/home/sas-2020" class="navigate"><strong>SAS</strong> </a></li><li class="block"><a href="https://conf.researchr.org/home/sle-2020" class="navigate"><strong>SLE</strong> </a></li><li class="block dropdown-header">Workshops</li><li class="block"><a href="https://2020.splashcon.org/home/agere-2020" class="navigate"><strong>AGERE</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/home/COP-2020" class="navigate"><strong>COP</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/track/FTfJP-2020-papers" class="navigate"><strong>FTfJP</strong> </a></li><li class="block"><a href="https://2020.splashcon.org/home/hatra-2020" class="navigate"><strong>HATRA</strong> </a></li><li class="block"><a href="https://2020.splashcon.org/home/hilt-2020" class="navigate"><strong>HILT</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/home/ICOOOLPS-2020" class="navigate"><strong>ICOOOLPS</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/home/iwaco-2020" class="navigate"><strong>IWACO</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/home/JSTools-2020" class="navigate"><strong>JSTools</strong> </a></li><li class="block"><a href="https://2020.splashcon.org/home/live-2020" class="navigate"><strong>LIVE</strong> </a></li><li class="block"><a href="https://2020.splashcon.org/home/lpop-2020" class="navigate"><strong>LPOP</strong> </a></li><li class="block"><a href="https://2020.splashcon.org/home/nsad-2020" class="navigate"><strong>NSAD</strong> </a></li><li class="block"><a href="https://2020.splashcon.org/home/plateau-2020" class="navigate"><strong>PLATEAU</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/home/pride-2020" class="navigate"><strong>PRIDE</strong> </a></li><li class="block"><a href="https://2020.splashcon.org/home/rebls-2020" class="navigate"><strong>REBLS</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/home/soop-2020" class="navigate"><strong>SOOP</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/home/sysepl-2020" class="navigate"><strong>SySEPL</strong> </a></li><li class="block"><a href="https://2020.splashcon.org/home/tapas-2020" class="navigate"><strong>TAPAS</strong> </a></li><li class="block"><a href="https://2020.splashcon.org/home/vmil-2020" class="navigate"><strong>VMIL</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/home/vortex-2020" class="navigate"><strong>VORTEX</strong> </a></li><li class="block dropdown-header">Co-hosted Symposia</li><li class="block"><a href="https://2020.ecoop.org/home/scala-2020" class="navigate"><strong>Scala</strong> </a></li></ul></div></div></ul></li><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Organization <span class="caret"></span></a><ul class="block dropdown-menu multi-column columns-2"><div class="row"><div class="col-sm-6"><ul class="block multi-column-dropdown"><li class="block dropdown-header">SPLASH 2020 Committees</li><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-steering-committee" class="navigate">Steering Committee</a></li><li class="block dropdown-header">Track Committees </li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>OOPSLA</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-oopsla-review-committee" class="navigate">Review Committee</a></li><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-oopsla-external-review-committee" class="navigate">External Review Committee</a></li></ul></li><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-Artifacts-artifact-evaluation-committee" class="navigate"><strong>OOPSLA Artifacts</strong></a></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Onward! Essays</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-Onward-Essays-program-committee" class="navigate">Program Committee</a></li><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-Onward-Essays-onward--steering-committee" class="navigate">Onward! Steering Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Onward! Papers</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-Onward-papers-program-committee" class="navigate">Program Committee</a></li><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-Onward-papers-onward--steering-committee" class="navigate">Onward! Steering Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>REBASE</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-rebase-organizing-committee" class="navigate">REBASE Chicago</a></li><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-rebase-rebase-berlin" class="navigate">REBASE Berlin</a></li></ul></li><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-Doctoral-Symposium-program-committee" class="navigate"><strong>Doctoral Symposium</strong></a></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>PLMW</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-PLMW-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-PLMW-speakers---panelists" class="navigate">Speakers & Panelists</a></li><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-PLMW-mentors" class="navigate">Mentors</a></li></ul></li><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-Posters-organising-committee" class="navigate"><strong>Posters</strong></a></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>SPLASH-E</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-SPLASH-E-program-commitee" class="navigate">Program Commitee</a></li><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-SPLASH-E-steering-committee" class="navigate">Steering Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Student Research Competition</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-SRC-organizers" class="navigate">Organizers</a></li><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-SRC-reviewers" class="navigate">Reviewers/Judges</a></li></ul></li><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-Student-Volunteers-organizers" class="navigate"><strong>Student Volunteers</strong></a></li><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-Workshops-organizing-committee-" class="navigate"><strong>Workshops</strong></a></li><li class="block"><a href="https://2020.splashcon.org/committee/splash-2020-cares-program-committe" class="navigate"><strong>CARES</strong></a></li><li class="block dropdown-header">Contributors</li><li class="block"><a href="https://2020.splashcon.org/people-index" class="navigate"><span class="glyphicon glyphicon-search"></span><sup><span class="glyphicon glyphicon-user"></span></sup> People Index</a></li></ul></div><div class="col-sm-6"><ul class="block multi-column-dropdown"><li class="block dropdown-header">Co-hosted Conferences</li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>DLS</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://conf.researchr.org/committee/dls-2020/dls-2020-DLS-2019-1-program-committee" class="navigate">Program Committee</a></li><li class="block"><a href="https://conf.researchr.org/committee/dls-2020/dls-2020-DLS-2019-1-steering-committee" class="navigate">Steering Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>ECOOP</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-papers-program-committee" class="navigate"><strong>Research Papers</strong> <small>Program Committee</small></a></li><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-papers-external-review-committee" class="navigate"><strong>Research Papers</strong> <small>External Review Committee</small></a></li><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-artifacts-artifact-evaluation-committee" class="navigate"><strong>Artifacts</strong></a></li><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-Student-Volunteers-committee" class="navigate"><strong>Student Volunteers</strong></a></li><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-doctoral-symposium-academic-panel" class="navigate"><strong>Doctoral Symposium</strong> <small>Academic Panel</small></a></li><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-doctoral-symposium-organizing-committee" class="navigate"><strong>Doctoral Symposium</strong> <small>Organizing Committee</small></a></li><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-doctoral-symposium-program-committee" class="navigate"><strong>Doctoral Symposium</strong> <small>Program Committee</small></a></li><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-Posters-posters-committee" class="navigate"><strong>Posters</strong></a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>GPCE</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://conf.researchr.org/committee/gpce-2020/gpce-2020-GPCE-2019-18th-International-Conference-on-Generative-Programming-Concepts-Experiences-1-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://conf.researchr.org/committee/gpce-2020/gpce-2020-GPCE-2019-18th-International-Conference-on-Generative-Programming-Concepts-Experiences-1-program-committee" class="navigate">Program Committee</a></li><li class="block"><a href="https://conf.researchr.org/committee/gpce-2020/gpc-steering-committee" class="navigate">Steering Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>SAS</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://conf.researchr.org/committee/sas-2020/sas-2020-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://conf.researchr.org/committee/sas-2020/sas-2020-papers-invited-speakers" class="navigate">Invited Speakers</a></li><li class="block"><a href="https://conf.researchr.org/committee/sas-2020/sas-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://conf.researchr.org/committee/sas-2020/sas-2020-papers-program-committee" class="navigate">Program Committee</a></li><li class="block"><a href="https://conf.researchr.org/committee/sas-2020/sas-2020-papers-artifact-evaluation-committee" class="navigate">Artifact Evaluation Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>SLE</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://conf.researchr.org/committee/sle-2020/sle-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://conf.researchr.org/committee/sle-2020/sle-2020-papers-program-committee" class="navigate">Program Committee</a></li><li class="block"><a href="https://conf.researchr.org/committee/sle-2020/sle-2020-papers-artifact-evaluation-committee" class="navigate">Artifact Evaluation Committee</a></li></ul></li><li class="block dropdown-header">Workshops</li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>AGERE</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/agere-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.splashcon.org/committee/agere-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>COP</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/COP-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/COP-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>FTfJP</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/FTfJP-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/FTfJP-2020-papers-program-committee" class="navigate">Program Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/FTfJP-2020-papers-steering-commitee" class="navigate">Steering Commitee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>HATRA</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/hatra-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.splashcon.org/committee/hatra-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>HILT</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/hilt-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.splashcon.org/committee/hilt-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>ICOOOLPS</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/ICOOOLPS-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/ICOOOLPS-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>IWACO</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/iwaco-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/iwaco-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>JSTools</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/JSTools-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/JSTools-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>LIVE</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/live-2020-papers-organizing-committee" class="navigate">Organising Committee</a></li><li class="block"><a href="https://2020.splashcon.org/committee/live-2020-papers-program-committee" class="navigate">Programme Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>LPOP</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/lpop-2020-papers-organizing-committee" class="navigate">General Chairs</a></li><li class="block"><a href="https://2020.splashcon.org/committee/lpop-2020-papers-program-chairs" class="navigate">Program Chair</a></li><li class="block"><a href="https://2020.splashcon.org/committee/lpop-2020-papers-program-committee" class="navigate">Program Committee</a></li><li class="block"><a href="https://2020.splashcon.org/committee/lpop-2020-papers-publicity-chair" class="navigate">Publicity Chair</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>NSAD</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/nsad-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.splashcon.org/committee/nsad-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>PLATEAU</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/plateau-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>PRIDE</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/pride-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/pride-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>REBLS</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/rebls-2020-papers-program-committee" class="navigate">Program Committee</a></li><li class="block"><a href="https://2020.splashcon.org/committee/rebls-2020-papers-steering-committee" class="navigate">Steering Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>SOOP</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/soop-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/soop-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>SySEPL</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/sysepl-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/sysepl-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>TAPAS</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/tapas-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.splashcon.org/committee/tapas-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>VMIL</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/committee/vmil-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.splashcon.org/committee/vmil-2020-papers-program-committee" class="navigate">Program Committee</a></li><li class="block"><a href="https://2020.splashcon.org/committee/vmil-2020-papers-steering-committee" class="navigate">Steering Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>VORTEX</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/vortex-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/vortex-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="block dropdown-header">Co-hosted Symposia</li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Scala</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/scala-2020-papers-invited-speakers" class="navigate">Keynote</a></li><li class="block"><a href="https://2020.ecoop.org/committee/scala-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/scala-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li></ul></div></div></ul></li><li class="block"><a href="https://2020.splashcon.org/search//all" class="navigate"><span class="glyphicon glyphicon-search"></span><span class="hidden-sm"> Search</span></a></li><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle"><span class="hidden-sm">Series <span class="caret"></span></span><span title="Series" class="visible-sm"><span class="glyphicon glyphicon-repeat"></span> <span class="caret"></span></span></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.splashcon.org/series/splash" class="navigate"><span class="glyphicon glyphicon-home"></span> Series</a></li><li class="block divider"></li><li class="block"><a href="https://2025.splashcon.org" class="navigate">SPLASH 2025</a></li><li class="block"><a href="https://2024.splashcon.org" class="navigate">SPLASH 2024</a></li><li class="block"><a href="https://2023.splashcon.org" class="navigate">SPLASH 2023</a></li><li class="block"><a href="https://2022.splashcon.org" class="navigate">SPLASH 2022</a></li><li class="block"><a href="https://2021.splashcon.org" class="navigate">SPLASH 2021</a></li><li class="block"><span class="text-muted" style="margin-left: 2px;"><span class="glyphicon glyphicon-hand-right"></span> SPLASH 2020</span></li><li class="block"><a href="https://2019.splashcon.org" class="navigate">SPLASH 2019</a></li><li class="block"><a href="https://2018.splashcon.org" class="navigate">SPLASH 2018</a></li><li class="block"><a href="https://2017.splashcon.org" class="navigate">SPLASH 2017</a></li><li class="block"><a href="https://2016.splashcon.org" class="navigate">SPLASH 2016</a></li><li class="block"><a href="https://2015.splashcon.org" class="navigate">SPLASH 2015</a></li><li class="block"><a href="https://2014.splashcon.org" class="navigate">SPLASH 2014</a></li><li class="block"><a href="https://2013.splashcon.org" class="navigate">SPLASH 2013</a></li><li class="block"><a href="https://2012.splashcon.org" class="navigate">SPLASH 2012</a></li><li class="block"><a href="https://2011.splashcon.org" class="navigate">SPLASH 2011</a></li><li class="block"></li><li class="block"><a href="http://splashcon.org/2010/" target="_blank" class="navigate">SPLASH 2010 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"></li><li class="block"><a href="http://www.oopsla.org/oopsla2009/" target="_blank" class="navigate">OOPSLA 2009 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/oopsla2008/" target="_blank" class="navigate">OOPSLA 2008 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/oopsla2007/index.php?page=home/" target="_blank" class="navigate">OOPSLA 2007 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/2006/program.html" target="_blank" class="navigate">OOPSLA 2006 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/2005/ShowPage.do?id=Home" target="_blank" class="navigate">OOPSLA 2005 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/2004/ShowPage.do?id=Home" target="_blank" class="navigate">OOPSLA 2004 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/oopsla2003/files/" target="_blank" class="navigate">OOPSLA 2003 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/2002/" target="_blank" class="navigate">OOPSLA 2002 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/2001/" target="_blank" class="navigate">OOPSLA 2001 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/2000/" target="_blank" class="navigate">OOPSLA 2000 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li></ul></li></ul><div class="navbar-right"><ul class="block nav navbar-nav"><li class="block"><a href="https://conf.researchr.org/signin/splash-2020/https%3A%5Es%5Es2020.splashcon.org%5Esdetails%5Essplash-2020-rebase%5Es4%5EsAPIs-are-Illness-and-Cure-The-Software-Heterogeneity-Problem-in-Web-Programming" rel="nofollow" class="navigate">Sign in</a></li><li class="block"><a href="https://2020.splashcon.org/signup" class="navigate">Sign up</a></li></ul></div></div></div></div><div id="content" class="container"><script type="text/javascript">if(gtag) { gtag( 'event', 'Show Event Page' , {'event_category': 'Event Information', 'event_label': 'APIs are Illness and Cure: The Software Heterogeneity Problem in Web Programming'} ) }</script><div class="page-header"><span class="text-muted small"><span class="glyphicon glyphicon-home"></span> <a href="https://2020.splashcon.org" class="navigate">SPLASH 2020</a> (<a href="https://2020.splashcon.org/series/splash" class="navigate">series</a>) / </span><span class="text-muted small"><span class="glyphicon glyphicon-road"></span> <a href="https://2020.splashcon.org/track/splash-2020-rebase" class="navigate">REBASE</a> / </span><h2>APIs are Illness and Cure: The Software Heterogeneity Problem in Web Programming<h5><span class="pull-right"><span title="This talk is followed by an Ask Me Anything session with the speaker." class="output-badge"><span class="label-primary label">AMA</span></span></span></h5></h2></div><div class="row"><div class="col-sm-8 col-lg-9"><div class="row" style="padding:4px 0px;"><label class="col-sm-2 control-label" style="text-align:right;">Track</label><div class="col-sm-10"><a href="https://2020.splashcon.org/track/splash-2020-rebase" class="navigate">SPLASH 2020 REBASE</a></div></div><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; $(node).find('.modal').on('shown.bs.modal', function() {if(gtag) { gtag( 'event', 'Show Details in Modal' , {'event_category': 'Event Information', 'event_label': '' + $(this).find('.modal-title').text() + ''} ) } } ) }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script><div tabindex="-1" id="hidden-modal" class="modal"><div class="modal-dialog "><div class="modal-content"></div></div></div><div id="program-settings-modal" class="webdsl-placeholder"><div id="userProgramSettings" class="modal fade"><div class="modal-dialog "><div class="modal-content"><div class="modal-header"><a data-dismiss="modal" class="close"><span class="glyphicon glyphicon-remove"></span></a><h3>Program Display Configuration</h3></div><div class="modal-body"><form name="form11390898770538530f0e2bbdb67872b491120c5c8a7" id="form11390898770538530f0e2bbdb67872b491120c5c8a7" action="https://2020.splashcon.org/userProgramSettingsModalConferenceEdition" accept-charset="UTF-8" method="POST" role="form" class="form-horizontal"><input type="hidden" name="form11390898770538530f0e2bbdb67872b491120c5c8a7" value="1" /><input type="hidden" name="context" value="splash-2020" /><div class="panel panel-default timezone-panel"><div class="panel-heading clearfix"><div class="panel-title">Time Zone</div></div><div class="panel-body"><span class="help-block">The program is currently displayed in <strong>(GMT-06:00) Central Time (US & Canada)</strong>.</span><div class="row"><div class="col-sm-11 col-sm-offset-1"><label class="radio"><input type="radio" checked="checked" name="9659afaa126198132be460b106e35ccb" value="false" onchange="if( ($(this).val() == 'true' && this.checked) != $('#cec04de0447905c49fb377c6d9693505').is(':visible') ) { $('#cec04de0447905c49fb377c6d9693505').fadeToggle( 250 ); }"/><strong>Use conference time zone: (GMT-06:00) Central Time (US & Canada)</strong></label><label class="radio"><input type="radio" name="9659afaa126198132be460b106e35ccb" value="true" onchange="if( ($(this).val() == 'true' && this.checked) != $('#cec04de0447905c49fb377c6d9693505').is(':visible') ) { $('#cec04de0447905c49fb377c6d9693505').fadeToggle( 250 ); }"/>Select other time zone</label><div id="cec04de0447905c49fb377c6d9693505" style=" display: none;"><select name="0e35d6393a8ba494aa0723dd51b6899c" class="select form-control"><option value="" selected="selected" data-utc-minute-offset="0"></option><option value="Etc/GMT+12" data-utc-minute-offset="-720">(GMT-12:00) AoE (Anywhere On Earth)</option><option value="Pacific/Midway" data-utc-minute-offset="-660">(GMT-11:00) Midway Island, Samoa</option><option value="America/Adak" data-utc-minute-offset="-600">(GMT-10:00) Hawaii-Aleutian</option><option value="Etc/GMT+10" data-utc-minute-offset="-600">(GMT-10:00) Hawaii</option><option value="Pacific/Marquesas" data-utc-minute-offset="-570">(GMT-09:30) Marquesas Islands</option><option value="Pacific/Gambier" data-utc-minute-offset="-540">(GMT-09:00) Gambier Islands</option><option value="America/Anchorage" data-utc-minute-offset="-540">(GMT-09:00) Alaska</option><option value="America/Ensenada" data-utc-minute-offset="-480">(GMT-08:00) Tijuana, Baja California</option><option value="Etc/GMT+8" data-utc-minute-offset="-480">(GMT-08:00) Pitcairn Islands</option><option value="America/Los_Angeles" data-utc-minute-offset="-480">(GMT-08:00) Pacific Time (US & Canada)</option><option value="America/Denver" data-utc-minute-offset="-420">(GMT-07:00) Mountain Time (US & Canada)</option><option value="America/Chihuahua" data-utc-minute-offset="-360">(GMT-07:00) Chihuahua, La Paz, Mazatlan</option><option value="America/Dawson_Creek" data-utc-minute-offset="-420">(GMT-07:00) Arizona</option><option value="America/Belize" data-utc-minute-offset="-360">(GMT-06:00) Saskatchewan, Central America</option><option value="America/Cancun" data-utc-minute-offset="-300">(GMT-05:00) Guadalajara, Mexico City, Monterrey</option><option value="Chile/EasterIsland" data-utc-minute-offset="-300">(GMT-05:00) Easter Island</option><option value="America/Chicago" data-utc-minute-offset="-360">(GMT-06:00) Central Time (US & Canada)</option><option value="America/New_York" data-utc-minute-offset="-300">(GMT-05:00) Eastern Time (US & Canada)</option><option value="America/Havana" data-utc-minute-offset="-300">(GMT-05:00) Cuba</option><option value="America/Bogota" data-utc-minute-offset="-300">(GMT-05:00) Bogota, Lima, Quito, Rio Branco</option><option value="America/Caracas" data-utc-minute-offset="-240">(GMT-04:00) Caracas</option><option value="America/Santiago" data-utc-minute-offset="-180">(GMT-03:00) Santiago</option><option value="America/La_Paz" data-utc-minute-offset="-240">(GMT-04:00) La Paz</option><option value="Atlantic/Stanley" data-utc-minute-offset="-180">(GMT-03:00) Faukland Islands</option><option value="America/Campo_Grande" data-utc-minute-offset="-240">(GMT-04:00) Manaus, Amazonas, Brazil</option><option value="America/Goose_Bay" data-utc-minute-offset="-240">(GMT-04:00) Atlantic Time (Goose Bay)</option><option value="America/Glace_Bay" data-utc-minute-offset="-240">(GMT-04:00) Atlantic Time (Canada)</option><option value="America/St_Johns" data-utc-minute-offset="-210">(GMT-03:30) Newfoundland</option><option value="America/Araguaina" data-utc-minute-offset="-180">(GMT-03:00) UTC-3</option><option value="America/Montevideo" data-utc-minute-offset="-180">(GMT-03:00) Montevideo</option><option value="America/Miquelon" data-utc-minute-offset="-180">(GMT-03:00) Miquelon, St. Pierre</option><option value="America/Godthab" data-utc-minute-offset="-180">(GMT-03:00) Greenland</option><option value="America/Argentina/Buenos_Aires" data-utc-minute-offset="-180">(GMT-03:00) Buenos Aires</option><option value="America/Sao_Paulo" data-utc-minute-offset="-180">(GMT-03:00) Brasilia, Distrito Federal, Brazil</option><option value="America/Noronha" data-utc-minute-offset="-120">(GMT-02:00) Mid-Atlantic</option><option value="Atlantic/Cape_Verde" data-utc-minute-offset="-60">(GMT-01:00) Cape Verde Is.</option><option value="Atlantic/Azores" data-utc-minute-offset="-60">(GMT-01:00) Azores</option><option value="Etc/UTC" data-utc-minute-offset="0">(UTC) Coordinated Universal Time</option><option value="Europe/Belfast" data-utc-minute-offset="0">(GMT) Belfast</option><option value="Europe/Dublin" data-utc-minute-offset="0">(GMT) Dublin</option><option value="Europe/Lisbon" data-utc-minute-offset="0">(GMT) Lisbon</option><option value="Europe/London" data-utc-minute-offset="0">(GMT) London</option><option value="Africa/Abidjan" data-utc-minute-offset="0">(GMT) Monrovia, Reykjavik</option><option value="Europe/Amsterdam" data-utc-minute-offset="60">(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna</option><option value="Europe/Belgrade" data-utc-minute-offset="60">(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague</option><option value="Europe/Brussels" data-utc-minute-offset="60">(GMT+01:00) Brussels, Copenhagen, Madrid, Paris</option><option value="Africa/Algiers" data-utc-minute-offset="60">(GMT+01:00) West Central Africa</option><option value="Africa/Windhoek" data-utc-minute-offset="120">(GMT+02:00) Windhoek</option><option value="Europe/Athens" data-utc-minute-offset="120">(GMT+02:00) Athens</option><option value="Asia/Beirut" data-utc-minute-offset="120">(GMT+02:00) Beirut</option><option value="Africa/Cairo" data-utc-minute-offset="120">(GMT+02:00) Cairo</option><option value="Asia/Gaza" data-utc-minute-offset="120">(GMT+02:00) Gaza</option><option value="Africa/Blantyre" data-utc-minute-offset="120">(GMT+02:00) Harare, Pretoria</option><option value="Asia/Jerusalem" data-utc-minute-offset="120">(GMT+02:00) Jerusalem</option><option value="Europe/Minsk" data-utc-minute-offset="180">(GMT+03:00) Minsk</option><option value="Asia/Damascus" data-utc-minute-offset="180">(GMT+02:00) Syria</option><option value="Europe/Moscow" data-utc-minute-offset="180">(GMT+03:00) Moscow, St. Petersburg, Volgograd</option><option value="Africa/Addis_Ababa" data-utc-minute-offset="180">(GMT+03:00) Nairobi</option><option value="Asia/Tehran" data-utc-minute-offset="210">(GMT+03:30) Tehran</option><option value="Asia/Dubai" data-utc-minute-offset="240">(GMT+04:00) Abu Dhabi, Muscat</option><option value="Asia/Yerevan" data-utc-minute-offset="240">(GMT+04:00) Yerevan</option><option value="Asia/Kabul" data-utc-minute-offset="270">(GMT+04:30) Kabul</option><option value="Asia/Yekaterinburg" data-utc-minute-offset="300">(GMT+05:00) Ekaterinburg</option><option value="Asia/Tashkent" data-utc-minute-offset="300">(GMT+05:00) Tashkent</option><option value="Asia/Kolkata" data-utc-minute-offset="330">(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi</option><option value="Asia/Katmandu" data-utc-minute-offset="345">(GMT+05:45) Kathmandu</option><option value="Asia/Dhaka" data-utc-minute-offset="360">(GMT+06:00) Astana, Dhaka</option><option value="Asia/Novosibirsk" data-utc-minute-offset="420">(GMT+07:00) Novosibirsk</option><option value="Asia/Rangoon" data-utc-minute-offset="390">(GMT+06:30) Yangon (Rangoon)</option><option value="Asia/Bangkok" data-utc-minute-offset="420">(GMT+07:00) Bangkok, Hanoi, Jakarta</option><option value="Asia/Krasnoyarsk" data-utc-minute-offset="420">(GMT+07:00) Krasnoyarsk</option><option value="Asia/Hong_Kong" data-utc-minute-offset="480">(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi</option><option value="Asia/Irkutsk" data-utc-minute-offset="480">(GMT+08:00) Irkutsk, Ulaan Bataar</option><option value="Australia/Perth" data-utc-minute-offset="480">(GMT+08:00) Perth</option><option value="Australia/Eucla" data-utc-minute-offset="525">(GMT+08:45) Eucla</option><option value="Asia/Tokyo" data-utc-minute-offset="540">(GMT+09:00) Osaka, Sapporo, Tokyo</option><option value="Asia/Seoul" data-utc-minute-offset="540">(GMT+09:00) Seoul</option><option value="Asia/Yakutsk" data-utc-minute-offset="540">(GMT+09:00) Yakutsk</option><option value="Australia/Adelaide" data-utc-minute-offset="630">(GMT+10:30) Adelaide</option><option value="Australia/Darwin" data-utc-minute-offset="570">(GMT+09:30) Darwin</option><option value="Australia/Brisbane" data-utc-minute-offset="600">(GMT+10:00) Brisbane</option><option value="Australia/Hobart" data-utc-minute-offset="660">(GMT+11:00) Hobart</option><option value="Asia/Vladivostok" data-utc-minute-offset="600">(GMT+10:00) Vladivostok</option><option value="Australia/Lord_Howe" data-utc-minute-offset="660">(GMT+11:00) Lord Howe Island</option><option value="Etc/GMT-11" data-utc-minute-offset="660">(GMT+11:00) Solomon Is., New Caledonia</option><option value="Asia/Magadan" data-utc-minute-offset="660">(GMT+11:00) Magadan</option><option value="Pacific/Norfolk" data-utc-minute-offset="720">(GMT+12:00) Norfolk Island</option><option value="Asia/Anadyr" data-utc-minute-offset="720">(GMT+12:00) Anadyr, Kamchatka</option><option value="Pacific/Auckland" data-utc-minute-offset="780">(GMT+13:00) Auckland, Wellington</option><option value="Etc/GMT-12" data-utc-minute-offset="720">(GMT+12:00) Fiji, Kamchatka, Marshall Is.</option><option value="Pacific/Chatham" data-utc-minute-offset="825">(GMT+13:45) Chatham Islands</option><option value="Pacific/Tongatapu" data-utc-minute-offset="780">(GMT+13:00) Nuku'alofa</option><option value="Pacific/Kiritimati" data-utc-minute-offset="840">(GMT+14:00) Kiritimati</option></select><script type="text/javascript">var tzOffsetMin = new Date().getTimezoneOffset()*-1; var sel = document.getElementsByName('0e35d6393a8ba494aa0723dd51b6899c')[0] var opts = sel.options; for (var opt, j = 0; opt = opts[j]; j++) { if (opt.getAttribute('data-utc-minute-offset') == tzOffsetMin) { sel.selectedIndex = j; break; } } </script></div></div></div><br><span class="help-block"><small><span class="glyphicon glyphicon-info-sign"></span> The GMT offsets shown reflect the offsets <strong>at the moment of the conference</strong>.</small></span></div></div><div class="panel panel-default timeband-panel"><div class="panel-heading clearfix"><div class="panel-title">Time Band</div></div><div class="panel-body"><span class="help-block">By setting a time band, the program will dim events that are outside this time window. This is useful for (virtual) conferences with a continuous program (with repeated sessions).<br>The time band will also limit the events that are included in the personal iCalendar subscription service.</span><div class="row"><div class="col-sm-11 col-sm-offset-1"><label class="radio"><input type="radio" checked="checked" name="f1869fcfb40f29e9c9c46042f4fbda2c" value="false" onchange="if( ($(this).val() == 'true' && this.checked) != $('#c2371058bcb9b31dd10e115e7f712708').is(':visible') ) { $('#c2371058bcb9b31dd10e115e7f712708').fadeToggle( 250 ); }"/><strong>Display full program</strong></label><label class="radio"><input type="radio" name="f1869fcfb40f29e9c9c46042f4fbda2c" value="true" onchange="if( ($(this).val() == 'true' && this.checked) != $('#c2371058bcb9b31dd10e115e7f712708').is(':visible') ) { $('#c2371058bcb9b31dd10e115e7f712708').fadeToggle( 250 ); }"/>Specify a time band</label><div id="c2371058bcb9b31dd10e115e7f712708" style=" display: none;"><span class="input-group"><input name="a4e58ac1cd9cfb26fb62ecc29e600148" type="text" value="07:00" class="flatpickr inputDate form-control"/><script type="text/javascript">$("input:not(.flatpickr-input)[name=a4e58ac1cd9cfb26fb62ecc29e600148]").flatpickr({onOpen: function(dateObj, dateStr, instance){ if(dateStr == ''){ instance.jumpToDate( new Date() ); } }, allowInput: true, dateformat: 'H:i', altFormat: 'H:i' , altInput: true, time_24hr: true, noCalendar: true, enableTime : true}); </script><span class="input-group-addon"> - </span><input name="01ff55ee23f3ce1eb7d922f922eb09b1" type="text" value="19:00" class="flatpickr inputDate form-control"/><script type="text/javascript">$("input:not(.flatpickr-input)[name=01ff55ee23f3ce1eb7d922f922eb09b1]").flatpickr({onOpen: function(dateObj, dateStr, instance){ if(dateStr == ''){ instance.jumpToDate( new Date() ); } }, allowInput: true, dateformat: 'H:i', altFormat: 'H:i' , altInput: true, time_24hr: true, noCalendar: true, enableTime : true}); </script></span></div></div></div></div></div><div class="row form-group"><div class="col-sm-offset-2 col-sm-10"><button style="position: absolute; left: -9999px; width: 1px; height: 1px;" onclick='javascript:serverInvoke("https://2020.splashcon.org/userProgramSettingsModalConferenceEdition","userProgramSettingsModalConferenceEdition_apply18ec3dfeeecb5c44c1e40a40983898869", [{"name":"context", "value":"splash-2020"},],"form11390898770538530f0e2bbdb67872b491120c5c8a7", this.nextSibling, true,"program-settings-modal"); return false;'></button><a submitid="userProgramSettingsModalConferenceEdition_apply18ec3dfeeecb5c44c1e40a40983898869" href="javascript:void(0)" onclick="javascript:loadImageElem=this;$(this.previousSibling).click()" class="btn btn-primary btn btn-default">Save</a></div></div></form></div><div class="modal-footer"><a href="#" data-dismiss="modal" class="btn btn-default"><span class="glyphicon glyphicon-remove"></span> Close</a></div></div></div></div></div><div class="program-container"><div class="row" style="padding:4px 0px;"><label class="col-sm-2 control-label" style="text-align:right;">When</label><div class="col-sm-10"><strong>Sun 15 Nov 2020 17:00 - 17:40 at <a href="https://2020.splashcon.org/room/splash-2020-venue-splash-ii" class="room-link navigate">SPLASH-II</a></strong> - <a href="https://2020.splashcon.org/track/splash-2020-rebase#program" class="navigate">5</a><br/><strong><span title="Mirror of a session" class="mirror-label"><span class="glyphicon glyphicon-repeat flip"></span></span> Mon 16 Nov 2020 05:00 - 05:40 at <a href="https://2020.splashcon.org/room/splash-2020-venue-splash-ii" class="room-link navigate">SPLASH-II</a></strong> - <a href="https://2020.splashcon.org/track/splash-2020-rebase#program" class="navigate">5</a></div></div></div><div class="row" style="padding:4px 0px;"><label class="col-sm-2 control-label" style="text-align:right;">Abstract</label><div class="col-sm-10"><p>It is easier than ever before to build complex web applications. But developer tooling for understanding, testing, and maintaining these systems has not caught up. Something I heard over and over again when starting Akita was that developers could log, measure, monitor, but they have a hard time understanding what was really going on with their software systems. A major challenge comes from the fact that modern web applications run across many heterogenous components, often communicating via remote procedure calls. Current software analysis methods do not work here, as network calls across heterogeneous components subvert language-level modelings. And using network tools alone do not yield the full picture. The result is that developers end up piecing the whole story together through reading code, logs, and documentation. At Akita, we observe that network-based application programming interfaces (APIs) are both a root cause of what we call the Software Heterogeneity Problem鈥攁nd also the key to the solution. The proliferation of APIs for both internal and external use, with the rise of service-oriented architectures and the growth of the API economy, have made it easy to quickly build applications that are amalgams of cross-service network calls. At the same time, there is consolidation around a handful of interface definition languages for web APIs. This makes it possible for us to address the Software Heterogeneity problem by applying programming languages techniques at the API layer. In this talk, I will introduce the Software Heterogeneity Problem, show how we at Akita are solving this problem at the API layer, and outline API-level PL problems we can solve as a community.</p> <p><strong>The discussion and AMA for this talk will be moderated by Satish Chandra.</strong></p></div></div><div class="row" style="padding:4px 0px;"><label class="col-sm-2 control-label" style="text-align:right;">Bio</label><div class="col-sm-10"><p>Hi there. I鈥檓 Jean. I started Akita because I wanted to build practical, principled tooling for modern software systems. I鈥檝e spent my career in pursuit of better software tools. I grew up programming鈥攁nd it felt like magic that a kid like me could just conjure software. In college, I fell in love with programming tools: helping people make magic faster felt like pretty much the coolest thing a person could do. This was why I got my PhD in programming languages, at MIT. After that, I was a tenure-track professor at Carnegie Mellon University. The whole time I was in research, I wanted to build tools that could majorly help practicing software developers. Early in my PhD, I got obsessed with two problems around this that I couldn鈥檛 solve using application-level techniques. First, the legacy software problem: you can鈥檛 just easily port most code to a fancy new language or type system. And even if you could, you run into the second problem: the heterogeneity of software systems. Modern software is an ecosystem, with your data stores, data streams, services, and third-party APIs. This is how I became obsessed with APIs: APIs let you encapsulate any code written in any language鈥攁nd you can apply language design principles, just one zoom level up. This is why, while at CMU, I started doing research about APIs. This takes us to Spring 2018. Cambridge Analytica happened. GDPR was just about to come out. I realized that we were entering into a new era of software, where people were realizing that not having visibility or control over your software can hold you back in a major way. I called everyone on my LinkedIn who would talk to me and asked them about their tooling needs. When I realized there were big and interesting problems I was uniquely positioned to solve with my API tooling ideas, I just couldn鈥檛 miss out on the action. I took leave from CMU, sold my furniture, and drove across the country to the Bay Area to start Akita.</p></div></div><div class="row" style="padding:4px 0px;"><label class="col-sm-2 control-label" style="text-align:right;">APIs are Illness and Cure: The Software Heterogeneity Problem in Web Programming</label><div class="col-sm-10"><div class="row"><div class="col-sm-8"><div class="embed-container"><iframe loading="lazy" width="560" height="315" src="https://www.youtube-nocookie.com/embed/5WN6Z1kHHIE?enablejsapi=1" frameborder="0" allowfullscreen ></iframe></div></div></div></div></div><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; $(node).find('.modal').on('shown.bs.modal', function() {if(gtag) { gtag( 'event', 'Show Details in Modal' , {'event_category': 'Event Information', 'event_label': '' + $(this).find('.modal-title').text() + ''} ) } } ) }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script><div tabindex="-1" id="hidden-modal" class="modal"><div class="modal-dialog "><div class="modal-content"></div></div></div><div id="program-settings-modal" class="webdsl-placeholder"><div id="userProgramSettings" class="modal fade"><div class="modal-dialog "><div class="modal-content"><div class="modal-header"><a data-dismiss="modal" class="close"><span class="glyphicon glyphicon-remove"></span></a><h3>Program Display Configuration</h3></div><div class="modal-body"><form name="form11390898770538530f0e2bbdb67872b491120c5c8a7" id="form11390898770538530f0e2bbdb67872b491120c5c8a7" action="https://2020.splashcon.org/userProgramSettingsModalConferenceEdition" accept-charset="UTF-8" method="POST" role="form" class="form-horizontal"><input type="hidden" name="form11390898770538530f0e2bbdb67872b491120c5c8a7" value="1" /><input type="hidden" name="context" value="splash-2020" /><div class="panel panel-default timezone-panel"><div class="panel-heading clearfix"><div class="panel-title">Time Zone</div></div><div class="panel-body"><span class="help-block">The program is currently displayed in <strong>(GMT-06:00) Central Time (US & Canada)</strong>.</span><div class="row"><div class="col-sm-11 col-sm-offset-1"><label class="radio"><input type="radio" checked="checked" name="9659afaa126198132be460b106e35ccb" value="false" onchange="if( ($(this).val() == 'true' && this.checked) != $('#cec04de0447905c49fb377c6d9693505').is(':visible') ) { $('#cec04de0447905c49fb377c6d9693505').fadeToggle( 250 ); }"/><strong>Use conference time zone: (GMT-06:00) Central Time (US & Canada)</strong></label><label class="radio"><input type="radio" name="9659afaa126198132be460b106e35ccb" value="true" onchange="if( ($(this).val() == 'true' && this.checked) != $('#cec04de0447905c49fb377c6d9693505').is(':visible') ) { $('#cec04de0447905c49fb377c6d9693505').fadeToggle( 250 ); }"/>Select other time zone</label><div id="cec04de0447905c49fb377c6d9693505" style=" display: none;"><select name="0e35d6393a8ba494aa0723dd51b6899c" class="select form-control"><option value="" selected="selected" data-utc-minute-offset="0"></option><option value="Etc/GMT+12" data-utc-minute-offset="-720">(GMT-12:00) AoE (Anywhere On Earth)</option><option value="Pacific/Midway" data-utc-minute-offset="-660">(GMT-11:00) Midway Island, Samoa</option><option value="America/Adak" data-utc-minute-offset="-600">(GMT-10:00) Hawaii-Aleutian</option><option value="Etc/GMT+10" data-utc-minute-offset="-600">(GMT-10:00) Hawaii</option><option value="Pacific/Marquesas" data-utc-minute-offset="-570">(GMT-09:30) Marquesas Islands</option><option value="Pacific/Gambier" data-utc-minute-offset="-540">(GMT-09:00) Gambier Islands</option><option value="America/Anchorage" data-utc-minute-offset="-540">(GMT-09:00) Alaska</option><option value="America/Ensenada" data-utc-minute-offset="-480">(GMT-08:00) Tijuana, Baja California</option><option value="Etc/GMT+8" data-utc-minute-offset="-480">(GMT-08:00) Pitcairn Islands</option><option value="America/Los_Angeles" data-utc-minute-offset="-480">(GMT-08:00) Pacific Time (US & Canada)</option><option value="America/Denver" data-utc-minute-offset="-420">(GMT-07:00) Mountain Time (US & Canada)</option><option value="America/Chihuahua" data-utc-minute-offset="-360">(GMT-07:00) Chihuahua, La Paz, Mazatlan</option><option value="America/Dawson_Creek" data-utc-minute-offset="-420">(GMT-07:00) Arizona</option><option value="America/Belize" data-utc-minute-offset="-360">(GMT-06:00) Saskatchewan, Central America</option><option value="America/Cancun" data-utc-minute-offset="-300">(GMT-05:00) Guadalajara, Mexico City, Monterrey</option><option value="Chile/EasterIsland" data-utc-minute-offset="-300">(GMT-05:00) Easter Island</option><option value="America/Chicago" data-utc-minute-offset="-360">(GMT-06:00) Central Time (US & Canada)</option><option value="America/New_York" data-utc-minute-offset="-300">(GMT-05:00) Eastern Time (US & Canada)</option><option value="America/Havana" data-utc-minute-offset="-300">(GMT-05:00) Cuba</option><option value="America/Bogota" data-utc-minute-offset="-300">(GMT-05:00) Bogota, Lima, Quito, Rio Branco</option><option value="America/Caracas" data-utc-minute-offset="-240">(GMT-04:00) Caracas</option><option value="America/Santiago" data-utc-minute-offset="-180">(GMT-03:00) Santiago</option><option value="America/La_Paz" data-utc-minute-offset="-240">(GMT-04:00) La Paz</option><option value="Atlantic/Stanley" data-utc-minute-offset="-180">(GMT-03:00) Faukland Islands</option><option value="America/Campo_Grande" data-utc-minute-offset="-240">(GMT-04:00) Manaus, Amazonas, Brazil</option><option value="America/Goose_Bay" data-utc-minute-offset="-240">(GMT-04:00) Atlantic Time (Goose Bay)</option><option value="America/Glace_Bay" data-utc-minute-offset="-240">(GMT-04:00) Atlantic Time (Canada)</option><option value="America/St_Johns" data-utc-minute-offset="-210">(GMT-03:30) Newfoundland</option><option value="America/Araguaina" data-utc-minute-offset="-180">(GMT-03:00) UTC-3</option><option value="America/Montevideo" data-utc-minute-offset="-180">(GMT-03:00) Montevideo</option><option value="America/Miquelon" data-utc-minute-offset="-180">(GMT-03:00) Miquelon, St. Pierre</option><option value="America/Godthab" data-utc-minute-offset="-180">(GMT-03:00) Greenland</option><option value="America/Argentina/Buenos_Aires" data-utc-minute-offset="-180">(GMT-03:00) Buenos Aires</option><option value="America/Sao_Paulo" data-utc-minute-offset="-180">(GMT-03:00) Brasilia, Distrito Federal, Brazil</option><option value="America/Noronha" data-utc-minute-offset="-120">(GMT-02:00) Mid-Atlantic</option><option value="Atlantic/Cape_Verde" data-utc-minute-offset="-60">(GMT-01:00) Cape Verde Is.</option><option value="Atlantic/Azores" data-utc-minute-offset="-60">(GMT-01:00) Azores</option><option value="Etc/UTC" data-utc-minute-offset="0">(UTC) Coordinated Universal Time</option><option value="Europe/Belfast" data-utc-minute-offset="0">(GMT) Belfast</option><option value="Europe/Dublin" data-utc-minute-offset="0">(GMT) Dublin</option><option value="Europe/Lisbon" data-utc-minute-offset="0">(GMT) Lisbon</option><option value="Europe/London" data-utc-minute-offset="0">(GMT) London</option><option value="Africa/Abidjan" data-utc-minute-offset="0">(GMT) Monrovia, Reykjavik</option><option value="Europe/Amsterdam" data-utc-minute-offset="60">(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna</option><option value="Europe/Belgrade" data-utc-minute-offset="60">(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague</option><option value="Europe/Brussels" data-utc-minute-offset="60">(GMT+01:00) Brussels, Copenhagen, Madrid, Paris</option><option value="Africa/Algiers" data-utc-minute-offset="60">(GMT+01:00) West Central Africa</option><option value="Africa/Windhoek" data-utc-minute-offset="120">(GMT+02:00) Windhoek</option><option value="Europe/Athens" data-utc-minute-offset="120">(GMT+02:00) Athens</option><option value="Asia/Beirut" data-utc-minute-offset="120">(GMT+02:00) Beirut</option><option value="Africa/Cairo" data-utc-minute-offset="120">(GMT+02:00) Cairo</option><option value="Asia/Gaza" data-utc-minute-offset="120">(GMT+02:00) Gaza</option><option value="Africa/Blantyre" data-utc-minute-offset="120">(GMT+02:00) Harare, Pretoria</option><option value="Asia/Jerusalem" data-utc-minute-offset="120">(GMT+02:00) Jerusalem</option><option value="Europe/Minsk" data-utc-minute-offset="180">(GMT+03:00) Minsk</option><option value="Asia/Damascus" data-utc-minute-offset="180">(GMT+02:00) Syria</option><option value="Europe/Moscow" data-utc-minute-offset="180">(GMT+03:00) Moscow, St. Petersburg, Volgograd</option><option value="Africa/Addis_Ababa" data-utc-minute-offset="180">(GMT+03:00) Nairobi</option><option value="Asia/Tehran" data-utc-minute-offset="210">(GMT+03:30) Tehran</option><option value="Asia/Dubai" data-utc-minute-offset="240">(GMT+04:00) Abu Dhabi, Muscat</option><option value="Asia/Yerevan" data-utc-minute-offset="240">(GMT+04:00) Yerevan</option><option value="Asia/Kabul" data-utc-minute-offset="270">(GMT+04:30) Kabul</option><option value="Asia/Yekaterinburg" data-utc-minute-offset="300">(GMT+05:00) Ekaterinburg</option><option value="Asia/Tashkent" data-utc-minute-offset="300">(GMT+05:00) Tashkent</option><option value="Asia/Kolkata" data-utc-minute-offset="330">(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi</option><option value="Asia/Katmandu" data-utc-minute-offset="345">(GMT+05:45) Kathmandu</option><option value="Asia/Dhaka" data-utc-minute-offset="360">(GMT+06:00) Astana, Dhaka</option><option value="Asia/Novosibirsk" data-utc-minute-offset="420">(GMT+07:00) Novosibirsk</option><option value="Asia/Rangoon" data-utc-minute-offset="390">(GMT+06:30) Yangon (Rangoon)</option><option value="Asia/Bangkok" data-utc-minute-offset="420">(GMT+07:00) Bangkok, Hanoi, Jakarta</option><option value="Asia/Krasnoyarsk" data-utc-minute-offset="420">(GMT+07:00) Krasnoyarsk</option><option value="Asia/Hong_Kong" data-utc-minute-offset="480">(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi</option><option value="Asia/Irkutsk" data-utc-minute-offset="480">(GMT+08:00) Irkutsk, Ulaan Bataar</option><option value="Australia/Perth" data-utc-minute-offset="480">(GMT+08:00) Perth</option><option value="Australia/Eucla" data-utc-minute-offset="525">(GMT+08:45) Eucla</option><option value="Asia/Tokyo" data-utc-minute-offset="540">(GMT+09:00) Osaka, Sapporo, Tokyo</option><option value="Asia/Seoul" data-utc-minute-offset="540">(GMT+09:00) Seoul</option><option value="Asia/Yakutsk" data-utc-minute-offset="540">(GMT+09:00) Yakutsk</option><option value="Australia/Adelaide" data-utc-minute-offset="630">(GMT+10:30) Adelaide</option><option value="Australia/Darwin" data-utc-minute-offset="570">(GMT+09:30) Darwin</option><option value="Australia/Brisbane" data-utc-minute-offset="600">(GMT+10:00) Brisbane</option><option value="Australia/Hobart" data-utc-minute-offset="660">(GMT+11:00) Hobart</option><option value="Asia/Vladivostok" data-utc-minute-offset="600">(GMT+10:00) Vladivostok</option><option value="Australia/Lord_Howe" data-utc-minute-offset="660">(GMT+11:00) Lord Howe Island</option><option value="Etc/GMT-11" data-utc-minute-offset="660">(GMT+11:00) Solomon Is., New Caledonia</option><option value="Asia/Magadan" data-utc-minute-offset="660">(GMT+11:00) Magadan</option><option value="Pacific/Norfolk" data-utc-minute-offset="720">(GMT+12:00) Norfolk Island</option><option value="Asia/Anadyr" data-utc-minute-offset="720">(GMT+12:00) Anadyr, Kamchatka</option><option value="Pacific/Auckland" data-utc-minute-offset="780">(GMT+13:00) Auckland, Wellington</option><option value="Etc/GMT-12" data-utc-minute-offset="720">(GMT+12:00) Fiji, Kamchatka, Marshall Is.</option><option value="Pacific/Chatham" data-utc-minute-offset="825">(GMT+13:45) Chatham Islands</option><option value="Pacific/Tongatapu" data-utc-minute-offset="780">(GMT+13:00) Nuku'alofa</option><option value="Pacific/Kiritimati" data-utc-minute-offset="840">(GMT+14:00) Kiritimati</option></select><script type="text/javascript">var tzOffsetMin = new Date().getTimezoneOffset()*-1; var sel = document.getElementsByName('0e35d6393a8ba494aa0723dd51b6899c')[0] var opts = sel.options; for (var opt, j = 0; opt = opts[j]; j++) { if (opt.getAttribute('data-utc-minute-offset') == tzOffsetMin) { sel.selectedIndex = j; break; } } </script></div></div></div><br><span class="help-block"><small><span class="glyphicon glyphicon-info-sign"></span> The GMT offsets shown reflect the offsets <strong>at the moment of the conference</strong>.</small></span></div></div><div class="panel panel-default timeband-panel"><div class="panel-heading clearfix"><div class="panel-title">Time Band</div></div><div class="panel-body"><span class="help-block">By setting a time band, the program will dim events that are outside this time window. This is useful for (virtual) conferences with a continuous program (with repeated sessions).<br>The time band will also limit the events that are included in the personal iCalendar subscription service.</span><div class="row"><div class="col-sm-11 col-sm-offset-1"><label class="radio"><input type="radio" checked="checked" name="f1869fcfb40f29e9c9c46042f4fbda2c" value="false" onchange="if( ($(this).val() == 'true' && this.checked) != $('#c2371058bcb9b31dd10e115e7f712708').is(':visible') ) { $('#c2371058bcb9b31dd10e115e7f712708').fadeToggle( 250 ); }"/><strong>Display full program</strong></label><label class="radio"><input type="radio" name="f1869fcfb40f29e9c9c46042f4fbda2c" value="true" onchange="if( ($(this).val() == 'true' && this.checked) != $('#c2371058bcb9b31dd10e115e7f712708').is(':visible') ) { $('#c2371058bcb9b31dd10e115e7f712708').fadeToggle( 250 ); }"/>Specify a time band</label><div id="c2371058bcb9b31dd10e115e7f712708" style=" display: none;"><span class="input-group"><input name="a4e58ac1cd9cfb26fb62ecc29e600148" type="text" value="07:00" class="flatpickr inputDate form-control"/><script type="text/javascript">$("input:not(.flatpickr-input)[name=a4e58ac1cd9cfb26fb62ecc29e600148]").flatpickr({onOpen: function(dateObj, dateStr, instance){ if(dateStr == ''){ instance.jumpToDate( new Date() ); } }, allowInput: true, dateformat: 'H:i', altFormat: 'H:i' , altInput: true, time_24hr: true, noCalendar: true, enableTime : true}); </script><span class="input-group-addon"> - </span><input name="01ff55ee23f3ce1eb7d922f922eb09b1" type="text" value="19:00" class="flatpickr inputDate form-control"/><script type="text/javascript">$("input:not(.flatpickr-input)[name=01ff55ee23f3ce1eb7d922f922eb09b1]").flatpickr({onOpen: function(dateObj, dateStr, instance){ if(dateStr == ''){ instance.jumpToDate( new Date() ); } }, allowInput: true, dateformat: 'H:i', altFormat: 'H:i' , altInput: true, time_24hr: true, noCalendar: true, enableTime : true}); </script></span></div></div></div></div></div><div class="row form-group"><div class="col-sm-offset-2 col-sm-10"><button style="position: absolute; left: -9999px; width: 1px; height: 1px;" onclick='javascript:serverInvoke("https://2020.splashcon.org/userProgramSettingsModalConferenceEdition","userProgramSettingsModalConferenceEdition_apply18ec3dfeeecb5c44c1e40a40983898869", [{"name":"context", "value":"splash-2020"},],"form11390898770538530f0e2bbdb67872b491120c5c8a7", this.nextSibling, true,"program-settings-modal"); return false;'></button><a submitid="userProgramSettingsModalConferenceEdition_apply18ec3dfeeecb5c44c1e40a40983898869" href="javascript:void(0)" onclick="javascript:loadImageElem=this;$(this.previousSibling).click()" class="btn btn-primary btn btn-default">Save</a></div></div></form></div><div class="modal-footer"><a href="#" data-dismiss="modal" class="btn btn-default"><span class="glyphicon glyphicon-remove"></span> Close</a></div></div></div></div></div><div class="program-container"><div class="row" style="padding:4px 0px;"><label class="col-sm-2 control-label" style="text-align:right;">Session Program</label><div class="col-sm-10"><div class="hidable day-wrapper"><h4 class="day-header sticky-top"><div><div>Sun 15 Nov</div><p></p><div class="time-zone-info"><small class="text-muted">Displayed time zone: <strong>Central Time (US & Canada)</strong> <small class="control-time-zone"><a data-toggle="modal" href="#userProgramSettings">change</a></small></small></div></div></h4><div class="hidable band hour-17"><table data-facet-date="Sun 15 Nov 2020" data-facet-date-order="201115" data-facet-room="SPLASH-II" class="table table-condensed session-table"><colgroup width="10px"/><colgroup width="100px"/><colgroup width="10px"/><colgroup width="100%"/><tr class="session-details"><td class="track-color c12"></td><td><div class="slot-label">17:00 - 17:40</div></td><td colspan="2"><div class="session-info-in-table">5<span class="pull-right"><a href="https://2020.splashcon.org/track/splash-2020-rebase" target="_blank" class="text-muted navigate">REBASE</a></span> at <a href="https://2020.splashcon.org/room/splash-2020-venue-splash-ii" target="_blank" class="room-link navigate">SPLASH-II</a> <span title="Session gets mirrored at:" class="mirror-label"><span class="glyphicon glyphicon-repeat"></span> +12h</span><br/></div></td></tr><tr class="firefox-fix"><td></td><td></td><td></td><td></td></tr><tr data-slot-id="be1ae549-530d-4547-b581-525cf4ffa505" class="hidable"><td class="track-color c12"></td><td class=" text-right"><div class="text-muted"><div class="start-time">17:00</div><strong>40m</strong></div><div class="event-type">Talk</div><span data-facet-track="SPLASH REBASE"></span></td><td><span data-event-star="04f10f98-8485-40ec-8ac4-3c6c4925b7b5" title="Add event to your program"><span class="text-disabled glyphicon glyphicon-star-empty"></span></span></td><td><strong><a href="#" data-event-modal="04f10f98-8485-40ec-8ac4-3c6c4925b7b5">APIs are Illness and Cure: The Software Heterogeneity Problem in Web Programming<span class="pull-right"><span title="This talk is followed by an Ask Me Anything session with the speaker." data-facet-badge="AMA" class="output-badge" style="max-width:40px;"><span class="label-primary label">AMA</span></span></span></a></strong><div class="prog-track">REBASE</div><div class="performers"><a href="https://2020.splashcon.org/profile/jeanyang" class="navigate">Jean Yang</a><span class="prog-aff"> Akita Software</span></div><a href="https://2020.splashcon.org/details/splash-2020-rebase/4/APIs-are-Illness-and-Cure-The-Software-Heterogeneity-Problem-in-Web-Programming" target="_blank" class="publication-link navigate"><span class="glyphicon glyphicon-film"></span> Media Attached</a></td></tr></table></div></div><div class="hidable day-wrapper"><h4 class="day-header sticky-top"><div><div>Mon 16 Nov</div><p></p><div class="time-zone-info"><small class="text-muted">Displayed time zone: <strong>Central Time (US & Canada)</strong> <small class="control-time-zone"><a data-toggle="modal" href="#userProgramSettings">change</a></small></small></div></div></h4><div class="hidable band hour-5"><table data-facet-date="Mon 16 Nov 2020" data-facet-date-order="201116" data-facet-room="SPLASH-II" class="table table-condensed session-table session-mirror"><colgroup width="10px"/><colgroup width="100px"/><colgroup width="10px"/><colgroup width="100%"/><tr class="session-details"><td class="track-color c12"></td><td><div class="slot-label">05:00 - 05:40</div></td><td colspan="2"><div class="session-info-in-table"><span title="Mirror of a session" class="mirror-label"><span class="glyphicon glyphicon-repeat flip"></span></span> 5<span class="pull-right"><a href="https://2020.splashcon.org/track/splash-2020-rebase" target="_blank" class="text-muted navigate">REBASE</a></span> at <a href="https://2020.splashcon.org/room/splash-2020-venue-splash-ii" target="_blank" class="room-link navigate">SPLASH-II</a><br/></div></td></tr><tr class="firefox-fix"><td></td><td></td><td></td><td></td></tr><tr data-slot-id="97cb1ee1-7e4e-4fba-9bd6-306c8705ac98" class="hidable"><td class="track-color c12"></td><td class=" text-right"><div class="text-muted"><div class="start-time">05:00</div><strong>40m</strong></div><div class="event-type">Talk</div><span data-facet-track="SPLASH REBASE"></span></td><td><span data-event-star="04f10f98-8485-40ec-8ac4-3c6c4925b7b5" title="Add event to your program"><span class="text-disabled glyphicon glyphicon-star-empty"></span></span></td><td><strong><a href="#" data-event-modal="04f10f98-8485-40ec-8ac4-3c6c4925b7b5">APIs are Illness and Cure: The Software Heterogeneity Problem in Web Programming<span class="pull-right"><span title="This talk is followed by an Ask Me Anything session with the speaker." data-facet-badge="AMA" class="output-badge" style="max-width:40px;"><span class="label-primary label">AMA</span></span></span></a></strong><div class="prog-track">REBASE</div><div class="performers"><a href="https://2020.splashcon.org/profile/jeanyang" class="navigate">Jean Yang</a><span class="prog-aff"> Akita Software</span></div><a href="https://2020.splashcon.org/details/splash-2020-rebase/4/APIs-are-Illness-and-Cure-The-Software-Heterogeneity-Problem-in-Web-Programming" target="_blank" class="publication-link navigate"><span class="glyphicon glyphicon-film"></span> Media Attached</a></td></tr></table></div></div><script type="text/javascript">window.displayUserProgamSettingsOnce = true;</script></div></div></div></div><div class="col-sm-4 col-lg-3"><a href="https://2020.splashcon.org/profile/jeanyang" class="navigate"><div class="thumbnail"><img alt="Jean Yang" src="https://2020.splashcon.org/getProfileImage/jeanyang/be7879c9-e0d3-4a7c-af5c-7aec4693cc67/small.jpg?1711488025000" class="outputimage "/><div class="caption"><h4>Jean Yang<span class="pull-right"><small></small></span></h4><h5><span class="text-black">Akita Software</span></h5></div></div></a></div></div><div id="messages-placeholder" class="alert alert-warning" style="display:none;"><a data-dismiss="alert" class="close">x</a><em>Tue 3 Dec 23:45</em></div></div><div id="notifications-ph" class="webdsl-placeholder"></div><div id="event-modal-loader" class="webdsl-placeholder"><form name="form_131600131703c411e65b13378d08eb1f6672b5a0259" id="form_131600131703c411e65b13378d08eb1f6672b5a0259" action="https://2020.splashcon.org/eventDetailsModalByAjaxConferenceEdition" accept-charset="UTF-8" method="POST" class="hidden"><input type="hidden" name="form_131600131703c411e65b13378d08eb1f6672b5a0259" value="1" /><input type="hidden" name="context" value="splash-2020" /><input name="ae03f7f6f951d515a297b161e922205d" type="text" value="" class="inputString form-control event-id-input"/><button style="position: absolute; left: -9999px; width: 1px; height: 1px;" onclick='javascript:serverInvoke("https://2020.splashcon.org/eventDetailsModalByAjaxConferenceEdition","eventDetailsModalByAjaxConferenceEdition_ia0_3c411e65b13378d08eb1f6672b5a0259", [{"name":"context", "value":"splash-2020"},],"form_131600131703c411e65b13378d08eb1f6672b5a0259", this.nextSibling, false,"event-modal-loader"); return false;'></button><a submitid="eventDetailsModalByAjaxConferenceEdition_ia0_3c411e65b13378d08eb1f6672b5a0259" href="javascript:void(0)" onclick="javascript:loadImageElem=this;$(this.previousSibling).click()" id="load-modal-action"></a></form></div><div id="event-star-form" class="webdsl-placeholder"><form name="form_509860938088b48fd14544d4239b498a2cf339e02b" id="form_509860938088b48fd14544d4239b498a2cf339e02b" action="https://2020.splashcon.org/eventStarByAjaxConferenceEdition" accept-charset="UTF-8" method="POST" class="hidden"><input type="hidden" name="form_509860938088b48fd14544d4239b498a2cf339e02b" value="1" /><input type="hidden" name="context" value="splash-2020" /><input name="a0b55aa29cf9431a9461b359872014e3" type="text" value="" class="inputString form-control event-id-input"/><button style="position: absolute; left: -9999px; width: 1px; height: 1px;" onclick='javascript:serverInvoke("https://2020.splashcon.org/eventStarByAjaxConferenceEdition","eventStarByAjaxConferenceEdition_ia0_88b48fd14544d4239b498a2cf339e02b", [{"name":"context", "value":"splash-2020"},],"form_509860938088b48fd14544d4239b498a2cf339e02b", this.nextSibling, false,"event-star-form"); return false;'></button><a submitid="eventStarByAjaxConferenceEdition_ia0_88b48fd14544d4239b498a2cf339e02b" href="javascript:void(0)" onclick="javascript:loadImageElem=this;$(this.previousSibling).click()" id="star-event-action"></a></form></div><div id="event-modals" class="webdsl-placeholder"></div><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; addEventModalLoadOnClick(node); addStarredEventOnClick(node); }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script><footer class="footer"><div class="container"><div class="footer-box"><div class="row"><div class="col-sm-3"><h3><a href="https://2020.splashcon.org" class="navigate"><span class="glyphicon glyphicon-home"></span> SPLASH 2020</a></h3><div><a href="https://2020.splashcon.org/contact" class="navigate"><span class="glyphicon glyphicon-envelope"></span> contact form</a></div><hr/>using <a href="https://conf.researchr.org" class="navigate">conf.researchr.org</a> (<a href="http://yellowgrass.org/roadmap/conf.researchr.org" class="navigate">v1.67.1</a>)<br/><small><a href="https://2020.splashcon.org/support" target="_blank" class="navigate"><span class="glyphicon glyphicon-question-sign"></span> Support page</a></small><br/><small></small></div><div class="col-sm-5"><div class="row"><div class="col-sm-6"><h4>Tracks</h4><a href="https://2020.splashcon.org/track/splash-2020-oopsla" class="navigate">OOPSLA</a><br/><a href="https://2020.splashcon.org/track/splash-2020-Artifacts" class="navigate">OOPSLA Artifacts</a><br/><a href="https://2020.splashcon.org/track/splash-2020-Onward-Essays" class="navigate">Onward! Essays</a><br/><a href="https://2020.splashcon.org/track/splash-2020-Onward-papers" class="navigate">Onward! Papers</a><br/><a href="https://2020.splashcon.org/track/splash-2020-rebase" class="navigate">REBASE</a><br/><a href="https://2020.splashcon.org/track/splash-2020-Doctoral-Symposium" class="navigate">Doctoral Symposium</a><br/><a href="https://2020.splashcon.org/track/splash-2020-PLMW" class="navigate">PLMW</a><br/><a href="https://2020.splashcon.org/track/splash-2020-Posters" class="navigate">Posters</a><br/><a href="https://2020.splashcon.org/track/splash-2020-SPLASH-E" class="navigate">SPLASH-E</a><br/><a href="https://2020.splashcon.org/track/splash-2020-SRC" class="navigate">Student Research Competition</a><br/><a href="https://2020.splashcon.org/track/splash-2020-Student-Volunteers" class="navigate">Student Volunteers</a><br/><a href="https://2020.splashcon.org/track/splash-2020-Workshops" class="navigate">Workshops</a><br/><a href="https://2020.splashcon.org/track/splash-2020-splash-keynotes" class="navigate">Keynotes</a><br/><a href="https://2020.splashcon.org/track/splash-2020-meet-someone-new--msn-" class="navigate">Meet The Speakers (MTS)</a><br/><a href="https://2020.splashcon.org/track/splash-2020-ask-me-anything--ama-" class="navigate">Ask Me Anything (AMA)</a><br/><a href="https://2020.splashcon.org/track/splash-2020-cares" class="navigate">CARES</a><br/><a href="https://2020.splashcon.org/track/splash-2020-awards" class="navigate">Awards</a><br/><a href="https://2020.splashcon.org/track/splash-2020-opening" class="navigate">Opening</a><br/><a href="https://2020.splashcon.org/track/splash-2020-closing" class="navigate">Closing</a></div><div class="col-sm-6"><h4>Co-hosted Conferences</h4><a href="https://conf.researchr.org/home/dls-2020" class="navigate">DLS 2020</a><br/><a href="https://2020.ecoop.org" class="navigate">ECOOP 2020</a><br/><a href="https://conf.researchr.org/home/gpce-2020" class="navigate">GPCE 2020</a><br/><a href="https://conf.researchr.org/home/sas-2020" class="navigate">SAS 2020</a><br/><a href="https://conf.researchr.org/home/sle-2020" class="navigate">SLE 2020</a><br/><h4>Workshops</h4><a href="https://2020.splashcon.org/home/agere-2020" class="navigate">AGERE 2020</a><br/><a href="https://2020.ecoop.org/home/COP-2020" class="navigate">COP</a><br/><a href="https://2020.ecoop.org/track/FTfJP-2020-papers" class="navigate">FTfJP 2020</a><br/><a href="https://2020.splashcon.org/home/hatra-2020" class="navigate">HATRA 2020</a><br/><a href="https://2020.splashcon.org/home/hilt-2020" class="navigate">HILT 2020</a><br/><a href="https://2020.ecoop.org/home/ICOOOLPS-2020" class="navigate">ICOOOLPS 2020</a><br/><a href="https://2020.ecoop.org/home/iwaco-2020" class="navigate">IWACO 2020</a><br/><a href="https://2020.ecoop.org/home/JSTools-2020" class="navigate">JSTools 2020</a><br/><a href="https://2020.splashcon.org/home/live-2020" class="navigate">LIVE 2020</a><br/><a href="https://2020.splashcon.org/home/lpop-2020" class="navigate">LPOP 2020</a><br/><a href="https://2020.splashcon.org/home/nsad-2020" class="navigate">NSAD 2020</a><br/><a href="https://2020.splashcon.org/home/plateau-2020" class="navigate">PLATEAU 2020</a><br/><a href="https://2020.ecoop.org/home/pride-2020" class="navigate">PRIDE 2020</a><br/><a href="https://2020.splashcon.org/home/rebls-2020" class="navigate">REBLS 2020</a><br/><a href="https://2020.ecoop.org/home/soop-2020" class="navigate">SOOP'20</a><br/><a href="https://2020.ecoop.org/home/sysepl-2020" class="navigate">SySEPL 2020</a><br/><a href="https://2020.splashcon.org/home/tapas-2020" class="navigate">TAPAS 2020</a><br/><a href="https://2020.splashcon.org/home/vmil-2020" class="navigate">VMIL 2020</a><br/><a href="https://2020.ecoop.org/home/vortex-2020" class="navigate">VORTEX 2020</a><br/><h4>Co-hosted Symposia</h4><a href="https://2020.ecoop.org/home/scala-2020" class="navigate">Scala 2020</a></div></div></div><div class="col-sm-2"><h4>Attending</h4><a href="https://2020.splashcon.org/venue/splash-2020-venue" class="navigate">Venue: Online</a><br><a href="https://2020.splashcon.org/attending/Students" class="navigate">Students</a><br><a href="https://2020.splashcon.org/attending/Registration" class="navigate">Registration</a><br><a href="https://2020.splashcon.org/attending/awards" class="navigate">Awards</a><br><a href="https://2020.splashcon.org/attending/sponsoring" class="navigate">Sponsoring</a><br><a href="https://2020.splashcon.org/attending/Conduct" class="navigate">Code of conduct</a><br><a href="https://2020.splashcon.org/attending/Certificate+of+Attendance" class="navigate">Certificate of Attendance</a></div><div class="col-sm-2"><script> //move ecoop track items into main column var ecoopSubMenu = $('#tracks-in-navbar .dropdown-submenu:has(a:contains("ECOOP"))').remove(); var ecoopItems = ecoopSubMenu.find('ul li'); var trackMainMenu = $('#tracks-in-navbar .col-sm-5 ul'); var ecoopHeader = '<li class="block dropdown-header">ECOOP 2020</li>'; if(ecoopItems.length){ trackMainMenu.append(ecoopHeader).append(ecoopItems); } //remove postponed workshops from tracks/org menu var toHideRegex = RegExp('COP|FTfJP|ICOOOLPS|IWACO|JSTools|PRIDE|SOOP|SySEPL|VORTEX', 'i'); $('.navbar-nav ul.multi-column-dropdown>li>a').filter( function() { return toHideRegex.test( this.innerText ); } ).parent().remove(); </script></div></div></div></div></footer></div><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; var defaultplacement = $(document).scrollLeft() > 100 ? 'auto left' : 'auto top'; $(node).find('[title]').tooltip({placement: function(tt, elem){ var attval = elem.getAttribute('data-placement'); return attval ? attval : defaultplacement; }, container: false, sanitize: false}); $('.tooltip.fade.in, .ui-tooltip-content').remove(); }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script><script type="text/javascript">jQuery(document).ready(function($) { $(".clickable-row").click(function() { var href = $(this).attr("href"); if( window.location.href.indexOf( href ) < 0 ){ if ($(this).hasClass('new-window') ){ window.open( href ); } else { window.document.location = href; } } }); }); </script></body></html>