CINXE.COM

vis.gl - Medium

<!DOCTYPE html><html xmlns:cc="http://creativecommons.org/ns#"><head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# medium-com: http://ogp.me/ns/fb/medium-com#"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=contain"><title>vis.gl - Medium</title><link rel="canonical" href="https://medium.com/vis-gl"><link id="feedLink" rel="alternate" type="application/rss+xml" title="RSS" href="https://medium.com/feed/vis-gl"><meta name="robots" content="index,follow"><meta name="title" content="vis.gl - Medium"><meta name="referrer" content="unsafe-url"><meta name="description" content="Open-source, WebGL-powered visualization frameworks."><meta name="keywords" content="UBER, VISUALIZATION, OPEN SOURCE, JAVASCRIPT, WEBGL"><meta name="theme-color" content="#000000"><meta property="og:title" content="vis.gl – Medium"><meta property="twitter:title" content="vis.gl – Medium"><meta property="og:url" content="https://medium.com/vis-gl"><meta property="og:image" content="https://cdn-images-1.medium.com/max/1200/1*UygkwlcP8gH_KVlf63Fi8g.png"><meta property="fb:app_id" content="542599432471018"><meta property="og:description" content="Open-source, WebGL-powered visualization frameworks."><meta name="twitter:description" content="Open-source, WebGL-powered visualization frameworks."><meta name="twitter:image:src" content="https://cdn-images-1.medium.com/max/1200/1*UygkwlcP8gH_KVlf63Fi8g.png"><meta property="og:type" content="medium-com:collection"><meta name="twitter:card" content="summary_large_image"><meta property="medium-com:creator" content="https://medium.com/@vis.gl"><meta name="twitter:site" content="@Medium"><meta property="og:site_name" content="Medium"><meta name="twitter:app:name:iphone" content="Medium"><meta name="twitter:app:id:iphone" content="828256236"><meta name="twitter:app:url:iphone" content="medium://vis-gl"><meta property="al:ios:app_name" content="Medium"><meta property="al:ios:app_store_id" content="828256236"><meta property="al:android:package" content="com.medium.reader"><meta property="al:android:app_name" content="Medium"><meta property="al:ios:url" content="medium://vis-gl"><meta property="al:android:url" content="medium://vis-gl"><meta property="al:web:url" content="https://medium.com/vis-gl"><link rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml" /><link rel="alternate" href="android-app://com.medium.reader/https/medium.com/vis-gl" /><script type="application/ld+json">{"@context": "http://schema.org", "@graph": [{"@type": "WebSite", "url": "https:\/\/medium.com", "name": "Medium", "alternateName": "Medium is a community of readers and writers offering unique perspectives on ideas large and small."},{"@type": "Organization", "url": "https:\/\/medium.com\/vis-gl", "name": "vis.gl"}]}</script><link rel="stylesheet" href="https://cdn-static-1.medium.com/_/fp/css/main-branding-base.tWIMt8r3Nl52PPi9OfgcVw.12.css"><script>!function(n,e){var t,o,i,c=[],f={passive:!0,capture:!0},r=new Date,a="pointerup",u="pointercancel";function p(n,c){t||(t=c,o=n,i=new Date,w(e),s())}function s(){o>=0&&o<i-r&&(c.forEach(function(n){n(o,t)}),c=[])}function l(t){if(t.cancelable){var o=(t.timeStamp>1e12?new Date:performance.now())-t.timeStamp;"pointerdown"==t.type?function(t,o){function i(){p(t,o),r()}function c(){r()}function r(){e(a,i,f),e(u,c,f)}n(a,i,f),n(u,c,f)}(o,t):p(o,t)}}function w(n){["click","mousedown","keydown","touchstart","pointerdown"].forEach(function(e){n(e,l,f)})}w(n),self.perfMetrics=self.perfMetrics||{},self.perfMetrics.onFirstInputDelay=function(n){c.push(n),s()}}(addEventListener,removeEventListener);</script><script>document.domain = document.domain;</script><script>if (window.top !== window.self) window.location = 'about:blank';var OB_startTime = new Date().getTime(); var OB_loadErrors = []; function _onerror(e) { OB_loadErrors.push(e) }; if (document.addEventListener) document.addEventListener("error", _onerror, true); else if (document.attachEvent) document.attachEvent("onerror", _onerror); function _asyncScript(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("script"); s.type = "text/javascript"; s.async = true; s.src = u; f.parentNode.insertBefore(s, f);}function _asyncStyles(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("link"); s.rel = "stylesheet"; s.href = u; f.parentNode.insertBefore(s, f); return s}(new Image()).src = "/_/stat?event=pixel.load&origin=" + encodeURIComponent(location.origin);</script><script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga("create", "G-7JY7T788PK", "auto", {"allowLinker": true, "legacyCookieDomain": window.location.hostname});ga("send", "pageview");</script><script async src="https://www.google-analytics.com/analytics.js"></script><script>(function () {var height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; document.write("<style>section.section-image--fullBleed.is-backgrounded {padding-top: " + Math.round(1.1 * height) + "px;}section.section-image--fullScreen.is-backgrounded, section.section-image--coverFade.is-backgrounded {min-height: " + height + "px; padding-top: " + Math.round(0.5 * height) + "px;}.u-height100vh {height: " + height + "px !important;}.u-height110vh {height: " + Math.round(1.1 * height) + "px !important;}.u-minHeight100vh {min-height: " + height + "px !important;}.u-maxHeight100vh {max-height: " + height + "px !important;}section.section-image--coverFade {height: " + height + "px;}.section-aspectRatioViewportPlaceholder, .section-aspectRatioViewportCropPlaceholder {max-height: " + height + "px;}.section-aspectRatioViewportBottomSpacer, .section-aspectRatioViewportBottomPlaceholder {max-height: " + Math.round(0.5 * height) + "px;}.zoomable:before {top: " + (-1 * height) + "px; left: " + (-1 * width) + "px; padding: " + height + "px " + width + "px;}</style>");})()</script><!--[if lt IE 9]><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.12.js"></script><![endif]--><link rel="icon" href="https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19" class="js-favicon"><link rel="apple-touch-icon" sizes="152x152" href="https://cdn-images-1.medium.com/fit/c/304/304/1*UygkwlcP8gH_KVlf63Fi8g.png"><link rel="apple-touch-icon" sizes="120x120" href="https://cdn-images-1.medium.com/fit/c/240/240/1*UygkwlcP8gH_KVlf63Fi8g.png"><link rel="apple-touch-icon" sizes="76x76" href="https://cdn-images-1.medium.com/fit/c/152/152/1*UygkwlcP8gH_KVlf63Fi8g.png"><link rel="apple-touch-icon" sizes="60x60" href="https://cdn-images-1.medium.com/fit/c/120/120/1*UygkwlcP8gH_KVlf63Fi8g.png"><link rel="mask-icon" href="https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg" color="#171717"></head><body itemscope class=" browser-ie os-windows v-unbound v-glyph v-glyph--m2-unbound-source-serif-pro is-noJs"><script>document.body.className = document.body.className.replace(/(^|\s)is-noJs(\s|$)/, "$1is-js$2")</script><div class="site-main" id="container"><div class="butterBar butterBar--error"></div><div class="surface"><div id="prerendered" class="screenContent"><div class="metabar u-clearfix js-metabar"><div class="branch-journeys-top"></div><div class="js-metabarMiddle metabar-inner u-marginAuto u-maxWidth1032 u-flexCenter u-justifyContentSpaceBetween u-height65 u-xs-height56 u-paddingHorizontal20"><div class="metabar-block u-flex1 u-flexCenter"><div class="js-metabarLogoLeft"><a href="https://medium.com/" data-log-event="home" class="siteNav-logo u-fillBlack u-flex0 u-flexCenter u-paddingTop0"><span class="svgIcon svgIcon--wordmarkMedium svgIcon--120x26px u-flex"><svg class="svgIcon-use" width="120" height="26" ><path d="M29.57 1.404l.036-.008V1.12h-7.27l-6.75 15.979-6.75-15.98H1.003v.278l.035.008c1.327.302 2 .752 2 2.374v18.993c0 1.623-.676 2.073-2.003 2.374L1 25.153v.279h5.315v-.278l-.035-.008c-1.327-.302-2-.751-2-2.374V4.88l8.67 20.552h.492l8.924-21.125V23.24c-.114 1.282-.782 1.677-1.983 1.95l-.036.009v.275h9.259V25.2l-.036-.008c-1.203-.274-1.886-.67-2-1.95l-.006-19.464h.006c0-1.622.674-2.072 2-2.374zm4.23 12.582c.15-3.412 1.367-5.875 3.41-5.918.629.01 1.157.219 1.568.62.872.852 1.282 2.634 1.219 5.298h-6.198zm-.092.962h10.85v-.046c-.03-2.61-.78-4.64-2.228-6.033-1.25-1.204-3.103-1.867-5.048-1.867h-.043c-1.01 0-2.248.246-3.13.693a7.316 7.316 0 00-2.623 2.086c-1.185 1.479-1.903 3.477-2.078 5.724a13.717 13.717 0 00-.04.755c-.004.195-.005.39-.001.587.117 5.087 2.846 9.153 7.692 9.153 4.254 0 6.73-3.132 7.348-7.336l-.312-.11c-1.085 2.259-3.034 3.628-5.252 3.461-3.028-.228-5.347-3.32-5.137-7.066m23.122 6.893c-.356.85-1.099 1.319-2.094 1.319-.995 0-1.905-.689-2.552-1.939-.694-1.342-1.06-3.24-1.06-5.487 0-4.678 1.445-7.704 3.68-7.704.937 0 1.674.468 2.026 1.284v12.527zm7.198 3.335c-1.327-.316-2-.787-2-2.492V0l-8.062 2.392v.293l.05-.004c1.111-.09 1.866.064 2.304.472.343.32.51.809.51 1.498v3.11C56.033 7.25 55.088 7 53.94 7c-2.326 0-4.453.987-5.986 2.779-1.599 1.867-2.444 4.42-2.444 7.38 0 5.287 2.584 8.84 6.43 8.84 2.25 0 4.06-1.242 4.888-3.336v2.811h7.233v-.29l-.035-.008zM70.94 3.085c0-1.65-1.236-2.896-2.875-2.896-1.632 0-2.908 1.272-2.908 2.896 0 1.624 1.278 2.896 2.908 2.896 1.64 0 2.875-1.245 2.875-2.896zm1.903 22.092c-1.327-.316-2-.787-2-2.492h-.006V7.055l-7.234 2.092v.284l.043.004c1.566.14 1.994.683 1.994 2.525v13.515h7.24v-.29l-.037-.008zm18.536 0c-1.327-.316-2-.787-2-2.492V7.055L82.49 9.078v.285l.04.004c1.28.136 1.65.71 1.65 2.56v9.88c-.426.85-1.227 1.356-2.196 1.39-1.573 0-2.439-1.07-2.439-3.012V7.055l-7.234 2.092v.284l.044.004c1.565.14 1.994.683 1.994 2.525v8.362a9.443 9.443 0 00.15 1.741l.13.57C75.243 24.845 76.848 26 79.362 26c2.129 0 3.996-1.328 4.818-3.405v2.885h7.233v-.291l-.034-.012zm28.102.298v-.291l-.035-.009c-1.44-.334-2.001-.964-2.001-2.248V12.295C117.445 8.98 115.597 7 112.5 7c-2.257 0-4.16 1.314-4.893 3.36-.582-2.168-2.257-3.36-4.734-3.36-2.175 0-3.88 1.156-4.612 3.11V7.056l-7.233 2.006v.286l.043.004c1.547.138 1.994.697 1.994 2.492v13.631h6.75v-.29l-.037-.01c-1.148-.271-1.519-.767-1.519-2.04V10.95c.304-.715.917-1.562 2.127-1.562 1.504 0 2.266 1.05 2.266 3.116v12.972h6.751v-.29l-.035-.01c-1.149-.271-1.52-.767-1.52-2.04V12.294a7.107 7.107 0 00-.095-1.21c.322-.777.97-1.696 2.23-1.696 1.524 0 2.265 1.02 2.265 3.116v12.972h7.233z"/></svg></span><span class="u-textScreenReader">Homepage</span></a></div><div class="u-paddingLeft10 u-sm-show r-paddingRight10"><a href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com/vis-gl%3F~feature=LoMobileNavBar&~channel=ShowCollectionHome&~stage=m2">Open in app</a></div></div><div class="metabar-block u-flex0 u-flexCenter"><div class="u-flexCenter u-height65 u-xs-height56"><div class="buttonSet buttonSet--wide u-lineHeightInherit"><a class="button button--primary button--chromeless u-accentColor--buttonNormal is-inSiteNavBar u-xs-hide js-signInButton" href="https://medium.com/m/signin?redirect=https%3A%2F%2Fmedium.com%2Fvis-gl&amp;source=--------------------------nav_reg&amp;operation=login" data-action="sign-in-prompt" data-redirect="https://medium.com/vis-gl" data-action-source="--------------------------nav_reg">Sign in</a><a class="button button--primary button--withChrome u-accentColor--buttonNormal is-inSiteNavBar js-signUpButton" href="https://medium.com/m/signin?redirect=https%3A%2F%2Fmedium.com%2Fvis-gl&amp;source=--------------------------nav_reg&amp;operation=register" data-action="sign-up-prompt" data-redirect="https://medium.com/vis-gl" data-action-source="--------------------------nav_reg">Get started</a></div></div></div></div></div><div class="metabar metabar--spacer js-metabarSpacer u-height65 u-xs-height56"></div><div class="collectionHeader js-collectionHeaderContainer u-relative collectionHeader--layoutMedium collectionHeader--alignmentLeft collectionHeader--withLogo collectionHeader--withBackground collectionHeader--colorBehaviorSubtle collectionHeader--withoutNavigation collectionHeader--editorLayoutTitleAndLogo is-modeView"><div class="collectionHeader-aspectRatioTable"><div class="collectionHeader-aspectRatioContent u-backgroundSizeCover js-collectionHeaderBackground" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/2400/1*_-ywx9o8JPruGCxXdwXRqw.png&quot;); background-position: 50% 50% !important;"><div class="collectionHeader-overlayBackground u-height100vh"></div><header class="collectionHeader-heroAndInlineNav u-borderBox u-maxWidth1072 u-paddingLeft20 u-paddingRight20 u-marginAuto u-foreground js-collectionHeader"><div class="collectionHeader-hero js-collectionHeaderHero u-clearfix u-imageSpectrum"><div class="collectionHeader-heroInner"><div class="collectionHeader-logo js-collectionHeaderLogo" style="width: 92px; float: left; padding-right: 20px; margin-right: 0;"><a class="link u-baseColor--link" href="https://medium.com/vis-gl" title="Go to vis.gl" aria-label="Go to vis.gl"><div class="u-relative u-marginAuto"><div style="padding-bottom: 100%"></div><img class="collectionHeader-logoImage js-collectionHeaderLogoImage" src="https://cdn-images-1.medium.com/max/184/1*UygkwlcP8gH_KVlf63Fi8g@2x.png" data-image-id="1*UygkwlcP8gH_KVlf63Fi8g@2x.png" data-width="200" data-height="200" /></div></a></div><div class="collectionHeader-nameAndDescription"><a class="link link--noUnderline u-baseColor--link" href="https://medium.com/vis-gl" title="Go to vis.gl" aria-label="Go to vis.gl"><h1 class="collectionHeader-name js-collectionName u-foreground u-baseColor--textDark u-paddingBottom4 u-lineHeightTightest u-contentSansBold u-fontSize40 u-xs-fontSize32">vis.gl</h1></a><h2 class="collectionHeader-description js-collectionDescription u-foreground u-baseColor--textNormal u-contentSansRegular u-fontSize24 u-xs-fontSize18">Uber Visualization&#39;s open-source frameworks</h2></div></div></div></header></div><div class="collectionHeader-aspectRatioCell"><div class="collectionHeader-aspectRatioFullWidth"></div></div></div><div class="collectionHeader-blockNav"><div class="u-borderBox u-maxWidth1072 u-paddingLeft20 u-paddingRight20 u-marginAuto"><nav class="collectionHeader-nav u-clearfix js-collectionHeaderNav u-lineHeight40 u-overflowHiddenY"><div class="buttonSet u-flex1 u-noWrap u-overflowX u-paddingBottom100 u-xs-marginRight15"><label class="button button--small button--chromeless button--withIcon button--withSvgIcon inputGroup u-sm-hide metabar-predictiveSearch u-baseColor--buttonNormal u-baseColor--placeholderNormal" title="Search vis.gl"><span class="svgIcon svgIcon--search svgIcon--25px u-baseColor--iconLight"><svg class="svgIcon-use" width="25" height="25" ><path d="M20.067 18.933l-4.157-4.157a6 6 0 10-.884.884l4.157 4.157a.624.624 0 10.884-.884zM6.5 11c0-2.62 2.13-4.75 4.75-4.75S16 8.38 16 11s-2.13 4.75-4.75 4.75S6.5 13.62 6.5 11z"/></svg></span><input class="js-predictiveSearchInput textInput textInput--rounded textInput--darkText u-baseColor--textNormal textInput--transparent" type="search" placeholder="Search vis.gl" required="true" data-collection-id="7d5390e55872" /></label></div><div class="buttonSet u-textAlignRight u-marginLeft18 u-flex0 u-noWrap"><button class="button button--primary button--smallest u-noUserSelect button--withChrome u-accentColor--buttonNormal js-relationshipButton is-smallPill" data-action="sign-up-prompt" data-sign-in-action="toggle-follow-collection" data-requires-token="true" data-redirect="https://medium.com/_/subscribe/collection/vis-gl" data-action-source="pub_header----7d5390e55872----------------------follow_pub" data-collection-id="7d5390e55872"><span class="button-label js-buttonLabel">Follow</span></button></div></nav></div></div></div><div class="u-marginBottom40 js-collectionStream"><div class="streamItem streamItem--section js-streamItem"><section class="u-marginTop30 u-xs-margin0 u-marginBottom15 u-maxWidth1032 u-sm-paddingLeft20 u-sm-paddingRight20 u-borderBox u-marginAuto"><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight15 u-size8of12" data-source="collection_home---4------0-----------------------" data-post-id="b734719076a7" data-index="0"><div class="u-lineHeightBase postItem u-marginRight3"><a href="https://medium.com/vis-gl/deck-gl-v8-6-now-available-with-deeper-google-maps-support-b734719076a7?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://medium.com/vis-gl/deck-gl-v8-6-now-available-with-deeper-google-maps-support-b734719076a7?source=collection_home---4------0-----------------------" class="u-block u-xs-height170 u-height350 u-width100pct u-floatLeft u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/2000/1*z7vYDoQWEEJwF9g21xbvZg.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">deck.gl v8.6 now available with deeper Google Maps support</span></a></div></div><div class="col u-xs-marginBottom10 u-paddingLeft9 u-paddingRight12 u-paddingTop0 u-sm-paddingTop20 u-paddingBottom25 u-size4of12 u-xs-size12of12 u-marginBottom30"><a class="" href="https://medium.com/vis-gl/deck-gl-v8-6-now-available-with-deeper-google-maps-support-b734719076a7?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="b734719076a7"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp4 u-fontSize30 u-size12of12 u-xs-size12of12 u-xs-fontSize24">deck.gl v8.6 now available with deeper Google Maps support</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Today we are very pleased to announce the availability of deck.gl v8.6, which alongside a whole host of new features, adds full support for…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@alasarr" data-action="show-user-card" data-action-value="c301eb048e6a" data-action-type="hover" data-user-id="c301eb048e6a" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*AHoTMhw0rKPcEmFJQrTv8w.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Alberto Asuero"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@alasarr" data-action="show-user-card" data-action-value="c301eb048e6a" data-action-type="hover" data-user-id="c301eb048e6a" dir="auto">Alberto Asuero</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2021-10-12T15:47:40.690Z">Oct 12, 2021</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="4 min read"></span></div></div></div></div></div></div><div class="row u-marginTop15 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------1-----------------------" data-post-id="379f147c15bb" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://medium.com/vis-gl/deck-gl-8-2-moves-to-open-governance-379f147c15bb?source=collection_home---4------1-----------------------" data-action="open-post" data-action-value="https://medium.com/vis-gl/deck-gl-8-2-moves-to-open-governance-379f147c15bb?source=collection_home---4------1-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*kbcsaNTmOSy46jdZ&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">deck.gl 8.2 moves to Open Governance</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/vis-gl/deck-gl-8-2-moves-to-open-governance-379f147c15bb?source=collection_home---4------1-----------------------" data-action-source="collection_home---4------1-----------------------" data-post-id="379f147c15bb"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">deck.gl 8.2 moves to Open Governance</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">deck.gl, which has been developed under the stewardship of Uber’s Engineering organization, has now moved to an open governance model.</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@ibgreen" data-action="show-user-card" data-action-value="4e6dd432d4a2" data-action-type="hover" data-user-id="4e6dd432d4a2" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*QBSiVixaTDGu2plzwoxO9w.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Ib Green"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@ibgreen" data-action="show-user-card" data-action-value="4e6dd432d4a2" data-action-type="hover" data-user-id="4e6dd432d4a2" dir="auto">Ib Green</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2020-08-07T15:01:01.475Z">Aug 7, 2020</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="4 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------2-----------------------" data-post-id="ce891532f986" data-index="2"><div class="u-lineHeightBase postItem"><a href="https://medium.com/vis-gl/pydeck-unlocking-deck-gl-for-use-in-python-ce891532f986?source=collection_home---4------2-----------------------" data-action="open-post" data-action-value="https://medium.com/vis-gl/pydeck-unlocking-deck-gl-for-use-in-python-ce891532f986?source=collection_home---4------2-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*86RzvaLsplcxRoJG&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">pydeck: Unlocking deck.gl for use in Python</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/vis-gl/pydeck-unlocking-deck-gl-for-use-in-python-ce891532f986?source=collection_home---4------2-----------------------" data-action-source="collection_home---4------2-----------------------" data-post-id="ce891532f986"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">pydeck: Unlocking deck.gl for use in Python</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Uber’s open source deck.gl library powers both internal data visualization tools and brings to life award-winning visualizations from…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@duberstein" data-action="show-user-card" data-action-value="e9709787bb85" data-action-type="hover" data-user-id="e9709787bb85" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*4-n2NL5ybQw4HEu7" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Andrew Duberstein"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@duberstein" data-action="show-user-card" data-action-value="e9709787bb85" data-action-type="hover" data-user-id="e9709787bb85" dir="auto">Andrew Duberstein</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-10-15T21:29:09.120Z">Oct 15, 2019</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="3 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------3-----------------------" data-post-id="cf655839628f" data-index="3"><div class="u-lineHeightBase postItem"><a href="https://medium.com/vis-gl/exploring-geospatial-data-with-kepler-gl-cf655839628f?source=collection_home---4------3-----------------------" data-action="open-post" data-action-value="https://medium.com/vis-gl/exploring-geospatial-data-with-kepler-gl-cf655839628f?source=collection_home---4------3-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*f2CkYUqaUi2HsB77zGnI5Q.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Exploring Geospatial data with kepler.gl</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/vis-gl/exploring-geospatial-data-with-kepler-gl-cf655839628f?source=collection_home---4------3-----------------------" data-action-source="collection_home---4------3-----------------------" data-post-id="cf655839628f"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Exploring Geospatial data with kepler.gl</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Co-authors: Gabriel Durkin, Sina Kashuk</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@heshan0131" data-action="show-user-card" data-action-value="741caae216be" data-action-type="hover" data-user-id="741caae216be" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*8NfqTTgxtYSs8nsS." class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Shan He"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@heshan0131" data-action="show-user-card" data-action-value="741caae216be" data-action-type="hover" data-user-id="741caae216be" dir="auto">Shan He</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-08-26T16:37:44.383Z">Aug 26, 2019</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop15 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------4-----------------------" data-post-id="56096209dce2" data-index="4"><div class="u-lineHeightBase postItem"><a href="https://medium.com/vis-gl/vis-hackathon-2019-56096209dce2?source=collection_home---4------4-----------------------" data-action="open-post" data-action-value="https://medium.com/vis-gl/vis-hackathon-2019-56096209dce2?source=collection_home---4------4-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*8YNnAY3BsXCDiIbotY3o0Q.gif&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Vis Hackathon 2019</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/vis-gl/vis-hackathon-2019-56096209dce2?source=collection_home---4------4-----------------------" data-action-source="collection_home---4------4-----------------------" data-post-id="56096209dce2"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Vis Hackathon 2019</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">The visualization engineering team at Uber is now 40 people with very different specialties — mapping, web, data, low-level graphics, ML…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@jcukier" data-action="show-user-card" data-action-value="ac0ff4b10f2b" data-action-type="hover" data-user-id="ac0ff4b10f2b" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*1UCYLq1faUlCJcyMPGz0Gw.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Jérôme Cukier"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@jcukier" data-action="show-user-card" data-action-value="ac0ff4b10f2b" data-action-type="hover" data-user-id="ac0ff4b10f2b" dir="auto">Jérôme Cukier</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-07-23T16:37:45.669Z">Jul 23, 2019</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="7 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------5-----------------------" data-post-id="c3c0804e55b8" data-index="5"><div class="u-lineHeightBase postItem"><a href="https://medium.com/vis-gl/kepler-gl-export-map-c3c0804e55b8?source=collection_home---4------5-----------------------" data-action="open-post" data-action-value="https://medium.com/vis-gl/kepler-gl-export-map-c3c0804e55b8?source=collection_home---4------5-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*ye0GHFG4ackVFrm483gEUQ.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Kepler.gl: Export Map</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/vis-gl/kepler-gl-export-map-c3c0804e55b8?source=collection_home---4------5-----------------------" data-action-source="collection_home---4------5-----------------------" data-post-id="c3c0804e55b8"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Kepler.gl: Export Map</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Developed by Uber and contributed to the LF Urban Computing Foundation, Kepler.gl is an open source geospatial analysis tool for…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@gmacri" data-action="show-user-card" data-action-value="e52bdd907e00" data-action-type="hover" data-user-id="e52bdd907e00" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*vmvLebMFS3Ybm_1W." class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Giuseppe Macrì"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@gmacri" data-action="show-user-card" data-action-value="e52bdd907e00" data-action-type="hover" data-user-id="e52bdd907e00" dir="auto">Giuseppe Macrì</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-07-23T05:13:20.851Z">Jul 22, 2019</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="4 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------6-----------------------" data-post-id="f72d41659fbf" data-index="6"><div class="u-lineHeightBase postItem"><a href="https://medium.com/vis-gl/introducing-kepler-gl-for-jupyter-f72d41659fbf?source=collection_home---4------6-----------------------" data-action="open-post" data-action-value="https://medium.com/vis-gl/introducing-kepler-gl-for-jupyter-f72d41659fbf?source=collection_home---4------6-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*xqaNw3bbVtYk0TbIVG0rQg.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Introducing kepler.gl for Jupyter</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/vis-gl/introducing-kepler-gl-for-jupyter-f72d41659fbf?source=collection_home---4------6-----------------------" data-action-source="collection_home---4------6-----------------------" data-post-id="f72d41659fbf"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Introducing kepler.gl for Jupyter</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">We integrated kepler.gl as a Jupyter Widget. It loads kepler.gl inside a notebook, allowing users to quickly plot maps with python…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@heshan0131" data-action="show-user-card" data-action-value="741caae216be" data-action-type="hover" data-user-id="741caae216be" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*8NfqTTgxtYSs8nsS." class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Shan He"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@heshan0131" data-action="show-user-card" data-action-value="741caae216be" data-action-type="hover" data-user-id="741caae216be" dir="auto">Shan He</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-06-25T17:24:32.153Z">Jun 25, 2019</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="4 min read"></span></div></div></div></div></div></div></div></section></div></div><style class="js-collectionStyle"> .u-accentColor--borderLight {border-color: #1A8917 !important;} .u-accentColor--borderNormal {border-color: #1A8917 !important;} .u-accentColor--borderDark {border-color: #0F730C !important;} .u-accentColor--iconLight .svgIcon,.u-accentColor--iconLight.svgIcon {fill: #1A8917 !important;} .u-accentColor--iconNormal .svgIcon,.u-accentColor--iconNormal.svgIcon {fill: #1A8917 !important;} .u-accentColor--iconDark .svgIcon,.u-accentColor--iconDark.svgIcon {fill: #0F730C !important;} .u-accentColor--textNormal {color: #0F730C !important;} .u-accentColor--hoverTextNormal:hover {color: #0F730C !important;} .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #0F730C !important;} .u-accentColor--textDark {color: #0F730C !important;} .u-accentColor--backgroundLight {background-color: #1A8917 !important;} .u-accentColor--backgroundNormal {background-color: #1A8917 !important;} .u-accentColor--backgroundDark {background-color: #0F730C !important;} .u-accentColor--buttonDark {border-color: #0F730C !important; color: #0F730C !important;} .u-accentColor--buttonDark:hover {border-color: #0F730C !important;} .u-accentColor--buttonDark .icon:before,.u-accentColor--buttonDark .svgIcon{color: #0F730C !important; fill: #0F730C !important;} .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #1A8917 !important; color: #0F730C !important;} .u-accentColor--buttonNormal:hover {border-color: #0F730C !important;} .u-accentColor--buttonNormal .icon:before,.u-accentColor--buttonNormal .svgIcon{color: #1A8917 !important; fill: #1A8917 !important;} .u-accentColor--buttonNormal.button--filled .icon:before,.u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-accentColor--buttonDark.button--filled,.u-accentColor--buttonDark.button--withChrome.is-active,.u-accentColor--fillWhenActive.is-active {background-color: #0F730C !important; border-color: #0F730C !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: #1A8917 !important; border-color: #1A8917 !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .postArticle.is-withAccentColors .markup--user,.postArticle.is-withAccentColors .markup--query {color: #0F730C !important;} .u-accentColor--highlightFaint {background-color: rgba(232, 243, 232, 1) !important;} .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(163, 208, 162, 1) !important;} .postArticle.is-withAccentColors .markup--quote.is-other {background-color: rgba(232, 243, 232, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(232, 243, 232, 1), rgba(232, 243, 232, 1));} .postArticle.is-withAccentColors .markup--quote.is-me {background-color: rgba(209, 231, 209, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(209, 231, 209, 1), rgba(209, 231, 209, 1));} .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: rgba(163, 208, 162, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(163, 208, 162, 1), rgba(163, 208, 162, 1));} .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: rgba(163, 208, 162, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(163, 208, 162, 1), rgba(163, 208, 162, 1));} .postArticle.is-withAccentColors .markup--highlight {background-color: rgba(163, 208, 162, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(163, 208, 162, 1), rgba(163, 208, 162, 1));}</style><style class="js-collectionStyleConstant">.u-imageBgColor {background-color: rgba(0, 0, 0, 0.24705882352941178);} .u-imageSpectrum .u-baseColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-baseColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-baseColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--iconLight .svgIcon,.u-imageSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--iconNormal .svgIcon,.u-imageSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--iconDark .svgIcon,.u-imageSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textDark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textDarker {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-baseColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important; color: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-baseColor--buttonLight .icon:before,.u-imageSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonDark .icon:before,.u-imageSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonNormal .icon:before,.u-imageSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonDark.button--filled,.u-imageSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-baseColor--buttonNormal.button--filled,.u-imageSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-baseColor--link {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--darken:active {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--dark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--darker {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .ui-h1,.u-imageSpectrum .ui-h2,.u-imageSpectrum .ui-h3,.u-imageSpectrum .ui-h4,.u-imageSpectrum .ui-brand1,.u-imageSpectrum .ui-brand2,.u-imageSpectrum .ui-captionStrong {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .ui-body,.u-imageSpectrum .ui-caps {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .ui-summary,.u-imageSpectrum .ui-caption {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-accentColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-accentColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-accentColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--iconLight .svgIcon,.u-imageSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-accentColor--iconNormal .svgIcon,.u-imageSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--iconDark .svgIcon,.u-imageSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--textDark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-accentColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark .icon:before,.u-imageSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-accentColor--buttonDark.button--filled,.u-imageSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-imageSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-imageSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .postArticle.is-withAccentColors .markup--user,.u-imageSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--highlightFaint {background-color: rgba(255, 255, 255, 0.2) !important;} .u-imageSpectrum .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(255, 255, 255, 0.6) !important;} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: rgba(255, 255, 255, 0.2) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: rgba(255, 255, 255, 0.4) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.4));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));}.u-resetSpectrum .u-tintBgColor {background-color: rgba(255, 255, 255, 1) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 100%) !important;} .u-resetSpectrum .u-baseColor--borderLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--borderNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--borderDark {border-color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--iconLight .svgIcon,.u-resetSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--iconNormal .svgIcon,.u-resetSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--iconDark .svgIcon,.u-resetSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textNormal {color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textDark {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textDarker {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--backgroundLight {background-color: rgba(0, 0, 0, 0.09803921568627451) !important;} .u-resetSpectrum .u-baseColor--backgroundNormal {background-color: rgba(0, 0, 0, 0.2) !important;} .u-resetSpectrum .u-baseColor--backgroundDark {background-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight .icon:before,.u-resetSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonDark {border-color: rgba(0, 0, 0, 0.6) !important; color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--buttonDark .icon:before,.u-resetSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important; color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonNormal .icon:before,.u-resetSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(0, 0, 0, 0.4980392156862745) !important; fill: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonDark.button--filled,.u-resetSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2980392156862745) !important; border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-baseColor--buttonNormal.button--filled,.u-resetSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2) !important; border-color: rgba(0, 0, 0, 0.2) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-baseColor--link {color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--darken:active {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--dark {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--link.link--darker {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .ui-h1,.u-resetSpectrum .ui-h2,.u-resetSpectrum .ui-h3,.u-resetSpectrum .ui-h4,.u-resetSpectrum .ui-brand1,.u-resetSpectrum .ui-brand2,.u-resetSpectrum .ui-captionStrong {color: rgba(0, 0, 0, 0.8) !important; fill: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .ui-body,.u-resetSpectrum .ui-caps {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .ui-summary,.u-resetSpectrum .ui-caption {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-accentColor--borderLight {border-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--borderNormal {border-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--borderDark {border-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--iconLight .svgIcon,.u-resetSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--iconNormal .svgIcon,.u-resetSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--iconDark .svgIcon,.u-resetSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--textNormal {color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--textDark {color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundLight {background-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundNormal {background-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundDark {background-color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark {border-color: rgba(17, 128, 14, 1) !important; color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark .icon:before,.u-resetSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(15, 115, 12, 1) !important; fill: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(26, 137, 23, 1) !important; color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(17, 128, 14, 1) !important; fill: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark.button--filled,.u-resetSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-resetSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(15, 115, 12, 1) !important; border-color: rgba(15, 115, 12, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-resetSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: rgba(17, 128, 14, 1) !important; border-color: rgba(17, 128, 14, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .postArticle.is-withAccentColors .markup--user,.u-resetSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(17, 128, 14, 1) !important;}</style><div class="js-collectionFooter u-hide"><div class="container u-maxWidth1040"><div class="u-marginTop10 u-paddingTop10 u-paddingBottom30 u-borderTopLighter"><div class="linkSet u-clearfix"><div class="u-floatRight u-textColorNormal u-baseColor--textNormal u-xs-floatLeft"><a class="button button--chromeless u-baseColor--buttonNormal u-marginLeft15 u-lineHeight35 u-xs-block u-xs-marginLeft0" href="https://medium.com/vis-gl/about" title="About vis.gl" aria-label="About vis.gl">About vis.gl</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/vis-gl/latest" title="Latest Stories for vis.gl" aria-label="Latest Stories for vis.gl">Latest Stories</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/vis-gl/archive" title="Archive for vis.gl" aria-label="Archive for vis.gl">Archive</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/about">About Medium</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f">Terms</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9">Privacy</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/business">Teams</a></div></div></div></div></div></div></div></div><div class="loadingBar"></div><script>// <![CDATA[ window["obvInit"] = function (opt_embedded) {window["obvInit"]["embedded"] = opt_embedded; window["obvInit"]["ready"] = true;} // ]]></script><script>// <![CDATA[ var GLOBALS = {"audioUrl":"https://d1fcbxp97j4nb2.cloudfront.net","baseUrl":"https://medium.com","buildLabel":"20250408-1802-root","currentUser":{"userId":"lo_41db986f2a7c","isVerified":false,"subscriberEmail":"","hasPastMemberships":false,"isEnrolledInHightower":false,"isEligibleForHightower":true,"hightowerLastLockedAt":0,"isWriterProgramEnrolled":true,"isWriterProgramInvited":false,"isWriterProgramOptedOut":false,"writerProgramVersion":0,"writerProgramEnrolledAt":0,"friendLinkOnboarding":0,"hasAdditionalUnlocks":false,"hasApiAccess":false,"writerProgramDistributionSettingOptedIn":false,"isSuspended":false,"collectionOnboardingSeen":0,"atsQualifiedAt":0},"currentUserHasUnverifiedEmail":false,"isAuthenticated":false,"isCurrentUserVerified":false,"miroUrl":"https://cdn-images-1.medium.com","moduleUrls":{"base":"https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.Ozb8sfu1IE2zO83L0UUUxg.12.js","common-async":"https://cdn-static-1.medium.com/_/fp/gen-js/main-common-async.bundle.l49OpqrwkRyiGOCpAIcKuQ.12.js","hightower":"https://cdn-static-1.medium.com/_/fp/gen-js/main-hightower.bundle.Sbq5rN7mnRFFhd9663VgQg.12.js","home-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-home-screens.bundle.P5DOvs33eZq2vtnRFa9tMw.12.js","misc-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-misc-screens.bundle.xex472sRCFYoIullxjy5kw.12.js","notes":"https://cdn-static-1.medium.com/_/fp/gen-js/main-notes.bundle.uUasyPCj--9tvOJrZ2wVdA.12.js","payments":"https://cdn-static-1.medium.com/_/fp/gen-js/main-payments.bundle.QfTt0I9toSma5xqkGX8qjg.12.js","posters":"https://cdn-static-1.medium.com/_/fp/gen-js/main-posters.bundle.fU0CARH_Ay6RO1WXoJA9Sw.12.js","power-readers":"https://cdn-static-1.medium.com/_/fp/gen-js/main-power-readers.bundle.awg6phvqmvH3Xt4l3v8d8A.12.js","pubs":"https://cdn-static-1.medium.com/_/fp/gen-js/main-pubs.bundle.3o-nIeAdAXtv2qH_8KYeqA.12.js","stats":"https://cdn-static-1.medium.com/_/fp/gen-js/main-stats.bundle.kIgMxb5kGqZrzIpjXmhPMw.12.js"},"previewConfig":{"weightThreshold":1,"weightImageParagraph":0.51,"weightIframeParagraph":0.8,"weightTextParagraph":0.08,"weightEmptyParagraph":0,"weightP":0.003,"weightH":0.005,"weightBq":0.003,"minPTextLength":60,"truncateBoundaryChars":20,"detectTitle":true,"detectTitleLevThreshold":0.15},"productName":"Medium","supportsEdit":false,"termsUrl":"//policy.medium.com/medium-terms-of-service-9db0094a1e0f","textshotHost":"textshot.textshot-production.svc.cluster.local","transactionId":"1744159380845:4aaebce17c39","useragent":{"browser":"ie","family":"ie","os":"windows","version":7,"supportsDesktopEdit":false,"supportsInteract":false,"supportsView":true,"isMobile":false,"isTablet":false,"isNative":false,"supportsFileAPI":false,"isTier1":false,"clientVersion":"","clientChannel":"","supportsRealScrollEvents":false,"supportsVhUnits":false,"ruinsViewportSections":false,"supportsHtml5Video":false,"supportsMagicUnderlines":false,"isWebView":false,"isFacebookWebView":false,"supportsProgressiveMedia":false,"supportsPromotedPosts":true,"isBot":false,"isNativeIphone":false,"supportsCssVariables":false,"supportsVideoSections":true,"emojiSupportLevel":1,"isSearchBot":false,"isSyndicationBot":false,"isNativeAndroid":false,"isNativeIos":false,"isSeoAuditBot":false,"isInternalApp":false,"supportsApplePay":false,"supportsScrollableMetabar":false},"variants":{"allow_access":true,"allow_signup":true,"allow_test_auth":"disallow","android_dense_post_preview":"control","android_enable_editor_new_publishing_flow":true,"android_enable_friend_links_creation":true,"android_enable_friend_links_postpage_banners":true,"android_enable_image_sharer":true,"android_enable_lists_v2":true,"android_enable_syntax_highlight":true,"android_enable_topic_portals":true,"android_rating_prompt_stories_read_threshold":2,"android_two_hour_refresh":true,"available_annual_plan":"2c754bcc2995","available_annual_premium_plan":"4a442ace1476","available_monthly_plan":"60e220181034","available_monthly_premium_plan":"12a660186432","browsable_stream_config_bucket":"curated-topics","can_receive_tips_v0":true,"can_send_tips_v0":true,"coronavirus_topic_recirc":true,"disable_partner_program_enrollment":true,"disable_rex_pub_featuring_recirc":true,"enable_abandoned_cart_promotion_email":true,"enable_abandoned_paywall_promotion_email":true,"enable_android_dynamic_aspirational_paywall":true,"enable_android_dynamic_programming_paywall":true,"enable_android_miro_v2":true,"enable_android_offline_reading":true,"enable_android_verified_author":true,"enable_app_flirty_thirty":true,"enable_apple_sign_in":true,"enable_apple_webhook":true,"enable_aurora_pub_follower_page":true,"enable_author_cards":true,"enable_author_cards_byline":true,"enable_auto_follow_on_subscribe":true,"enable_automod":true,"enable_bg_post_post":true,"enable_boost_experiment":"control","enable_braintree_apple_pay":true,"enable_braintree_client":true,"enable_braintree_google_pay":true,"enable_braintree_integration":true,"enable_braintree_paypal":true,"enable_braintree_trial_membership":true,"enable_braintree_webhook":true,"enable_branch_io":true,"enable_cache_less_following_feed":true,"enable_cancellation_discount_v1_1":true,"enable_configure_pronouns":true,"enable_conversion_model_v2":"group_2","enable_conversion_ranker_v2":"control","enable_creator_welcome_email":true,"enable_deprecate_legacy_providers_v3":true,"enable_deviant_get_variant_flag_from_medium2":true,"enable_diversification_rex":true,"enable_engagement_service_publish_response":true,"enable_entities_to_follow_v2":true,"enable_eventstats_event_processing":true,"enable_footer_app_buttons":true,"enable_google_one_tap":true,"enable_google_webhook":true,"enable_group_gifting":true,"enable_homepage_featured_feed":true,"enable_hybrid_ranking_model":"experiment","enable_iceland_forced_android":true,"enable_inline_comments":true,"enable_intrinsic_automatic_actions":true,"enable_ios_autorefresh":true,"enable_ios_dynamic_paywall_aspiriational":true,"enable_ios_dynamic_paywall_programming":true,"enable_ios_easy_resubscribe":true,"enable_ios_offline_reading":true,"enable_legacy_feed_in_iceland":true,"enable_lite_archive_page":true,"enable_lite_continue_this_thread":true,"enable_lite_gql_client_events":true,"enable_lite_homepage":true,"enable_lite_response_markup":true,"enable_lite_server_upstream_deadlines":true,"enable_lo_homepage":"control","enable_maim_the_meter":true,"enable_marketing_emails":true,"enable_mastodon_avatar_upload":true,"enable_mastodon_for_members":true,"enable_mastodon_for_members_username_selection":true,"enable_medium2_kbfd":true,"enable_medium_com_canonical_urls":true,"enable_members_only_audio":true,"enable_ml_rank_rex_anno":true,"enable_moc_load_processor_all_recs_surfaces":true,"enable_moc_load_processor_c":true,"enable_moc_load_processor_first_story":true,"enable_new_manage_membership_flow":true,"enable_new_stripe_customers":true,"enable_newsletter_lo_flow_custom_domains":true,"enable_pill_based_home_feed":true,"enable_post_bottom_responses":true,"enable_post_bottom_responses_input":true,"enable_post_bottom_responses_native":true,"enable_post_publish_permission_check":true,"enable_pp_country_expansion":true,"enable_pp_delinquency_and_forfeiture":true,"enable_pp_v4":true,"enable_pre_pp_v4":true,"enable_premium_tier":true,"enable_premium_tier_badge":true,"enable_pub_featuring":true,"enable_pub_featuring_notifications":true,"enable_pub_featuring_post_page_label":true,"enable_pub_featuring_stats":true,"enable_ranker_v10":"control","enable_recaptcha_enterprise":true,"enable_recirc_model":true,"enable_recommended_publishers_query":true,"enable_rex_aggregator_v2":true,"enable_rex_new_push_notification_endpoint":true,"enable_rex_reading_history":true,"enable_rito_upstream_deadlines":true,"enable_seamless_social_sharing":true,"enable_see_pronouns":true,"enable_sharer_create_post_share_key":true,"enable_sharer_validate_post_share_key":true,"enable_simplified_digest_v2_b":true,"enable_speechify_ios":true,"enable_speechify_widget":true,"enable_sprig":true,"enable_starspace":true,"enable_susi_redesign_android":true,"enable_susi_redesign_ios":true,"enable_switch_plan_premium_tier":true,"enable_tag_recs":true,"enable_tick_landing_page":true,"enable_tipping_v0_android":true,"enable_tipping_v0_ios":true,"enable_tribute_landing_page":true,"enable_trust_service_recaptcha":true,"enable_update_explore_wtf":true,"enable_update_topic_portals_wtf":true,"enable_updated_pub_recs_ui":true,"enable_user_profile_nofollow_attribute":true,"enable_verifications_service":true,"enable_winback_promotion_email":true,"get_highlights_from_engagement":true,"glyph_font_set":"m2-unbound-source-serif-pro","goliath_externalsearch_enable_comment_deindexation":true,"ios_display_paywall_after_onboarding":true,"ios_enable_friend_links_creation":true,"ios_enable_friend_links_postpage_banners":true,"ios_enable_home_post_menu":true,"ios_enable_lock_responses":true,"ios_enable_verified_book_author":true,"ios_iceland_nux":true,"ios_in_app_free_trial":true,"ios_remove_twitter_onboarding_step":true,"ios_social_share_sheet":true,"limit_post_referrers":true,"limit_user_follows":true,"log_adblock_test_event":true,"mobile_custom_app_icon":true,"num_post_bottom_responses_to_show":3,"onboarding_tags_from_top_views":true,"reader_fair_distribution_non_qp":true,"redefined_top_posts":true,"reengagement_notification_duration":3,"rex_filter_presentation_count_increase":"experiment_a","rex_generator_max_candidates":1000,"signin_services":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple","signup_services":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple","skip_fs_cache_user_vals":true},"xsrfToken":"","iosAppId":"828256236","supportEmail":"yourfriends@medium.com","fp":{"/icons/monogram-mask.svg":"https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg","/icons/favicon-medium-editor.ico":"https://cdn-static-1.medium.com/_/fp/icons/favicon-medium-editor.PiakrZWB7Yb80quUVQWM6g.12.ico"},"authBaseUrl":"https://medium.com","imageUploadSizeMb":25,"isAuthDomainRequest":true,"algoliaApiEndpoint":"https://MQ57UUUQZ2-dsn.algolia.net","algoliaAppId":"MQ57UUUQZ2","algoliaSearchOnlyApiKey":"394474ced050e3911ae2249ecc774921","iosAppStoreUrl":"https://itunes.apple.com/app/medium-everyones-stories/id828256236?pt=698524&mt=8","iosAppLinkBaseUrl":"medium:","algoliaIndexPrefix":"medium_","androidPlayStoreUrl":"https://play.google.com/store/apps/details?id=com.medium.reader","googleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","androidPackage":"com.medium.reader","androidPlayStoreMarketScheme":"market://details?id=com.medium.reader","googleAuthUri":"https://accounts.google.com/o/oauth2/auth","androidScheme":"medium","layoutData":{"useDynamicScripts":false,"googleAnalyticsTrackingCode":"G-7JY7T788PK","jsShivUrl":"https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.12.js","useDynamicCss":false,"faviconUrl":"https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19","faviconImageId":"5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19","fontSets":[{"id":8,"url":"https://glyph.medium.com/css/e/sr/latin/e/ssr/latin/e/ssb/latin/m2-unbound-source-serif-pro.css"},{"id":11,"url":"https://glyph.medium.com/css/m2-unbound-source-serif-pro.css"},{"id":9,"url":"https://glyph.medium.com/css/mkt.css"}],"glyphUrl":"https://glyph.medium.com"},"authBaseUrlRev":"moc.muidem//:sptth","stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","archiveUploadSizeMb":100,"previewConfig2":{"weightThreshold":1,"weightImageParagraph":0.05,"raiseImage":true,"enforceHeaderHierarchy":true,"isImageInsetRight":true},"isAmp":false,"iosScheme":"medium","facebook":{"key":"542599432471018","namespace":"medium-com","scope":{"default":["public_profile","email"],"connect":["public_profile","email"],"login":["public_profile","email"],"share":["public_profile","email"]}},"memberContentTopicId":"13d7efd82fb2","audioContentTopicId":"3792abbd134","isDoNotAuth":false,"buggle":{"videoUrl":"https://cdn-videos-1.medium.com","audioUrl":"https://cdn-audio-1.medium.com"},"referrerType":5,"partnerProgramEmail":"partnerprogram@medium.com","recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","countryCode":"SG","bypassMeter":false,"branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","paypal":{"clientMode":"production","oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com/redeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"}},"collectionConfig":{"mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"]},"bypassMeterWithShareKey":false,"recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","cdcMessaging":[{"text":"For more information on the novel coronavirus and Covid-19, visit ","href":"","type":"text","start":0,"end":0},{"text":"cdc.gov","href":"https://www.cdc.gov/coronavirus/2019-nCoV","type":"link","start":66,"end":73},{"text":".","href":"","type":"text","start":0,"end":0}],"braintree":{"merchantId":"m56f8fqpf7ngnrd4"},"diagnostics":{},"domain":"medium.com"} // ]]></script><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.Ozb8sfu1IE2zO83L0UUUxg.12.js" async></script><script>// <![CDATA[ window["obvInit"]({"references":{"Collection":{"7d5390e55872":{"id":"7d5390e55872","name":"vis.gl","slug":"vis-gl","tags":["UBER","VISUALIZATION","OPEN SOURCE","JAVASCRIPT","WEBGL"],"creatorId":"3719ba14f6bf","description":"Open-source, WebGL-powered visualization frameworks","shortDescription":"Open-source, WebGL-powered visualization frameworks","image":{"imageId":"1*UygkwlcP8gH_KVlf63Fi8g.png","filter":"","backgroundSize":"","originalWidth":200,"originalHeight":200,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":1952,"activeAt":1634053660781},"virtuals":{"permissions":{"canPublish":false,"canPublishAll":false,"canRepublish":false,"canRemove":false,"canManageAll":false,"canSubmit":false,"canEditPosts":false,"canAddWriters":false,"canViewStats":false,"canSendNewsletter":false,"canViewLockedPosts":false,"canViewCloaked":false,"canEditOwnPosts":false,"canBeAssignedAuthor":false,"canEnrollInHightower":false,"canLockPostsForMediumMembers":false,"canLockOwnPostsForMediumMembers":false,"canViewNewsletterV2Stats":false,"canCreateNewsletterV3":false},"isSubscribed":false,"isEnrolledInHightower":false,"isEligibleForHightower":false,"isSubscribedToCollectionEmails":false,"isMuted":false,"canToggleEmail":false,"isWriter":false},"logo":{"imageId":"1*UygkwlcP8gH_KVlf63Fi8g.png","filter":"","backgroundSize":"","originalWidth":200,"originalHeight":200,"strategy":"resample","height":0,"width":0},"sections":[{"type":2,"collectionHeaderMetadata":{"title":"vis.gl","description":"Uber Visualization's open-source frameworks","backgroundImage":{"id":"1*_-ywx9o8JPruGCxXdwXRqw.png","originalWidth":2632,"originalHeight":896},"logoImage":{"id":"1*UygkwlcP8gH_KVlf63Fi8g@2x.png","originalWidth":200,"originalHeight":200,"alt":"vis.gl"},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":7,"postIds":[]}}],"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF1A8917","point":0},{"color":"#FF11800E","point":0.1},{"color":"#FF0F730C","point":0.2},{"color":"#FF095407","point":1}],"backgroundColor":"#FFFFFFFF"},"highlightSpectrum":{"colorPoints":[{"color":"#FFFFFFFF","point":0},{"color":"#FFE8F3E8","point":0.1},{"color":"#FFE8F3E8","point":0.2},{"color":"#FFD1E7D1","point":0.6},{"color":"#FFA3D0A2","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FF095407","point":0},{"color":"#FF0F730C","point":0.1},{"color":"#FF11800E","point":0.2},{"color":"#FF1A8917","point":1}],"backgroundColor":"#FF000000"}},"navItems":[],"colorBehavior":1,"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"title":"vis.gl","description":"Uber Visualization's open-source frameworks","backgroundImage":{"id":"1*_-ywx9o8JPruGCxXdwXRqw.png","originalWidth":2632,"originalHeight":896},"logoImage":{"id":"1*UygkwlcP8gH_KVlf63Fi8g@2x.png","originalWidth":200,"originalHeight":200,"alt":"vis.gl"},"alignment":2,"layout":5},"subscriberCount":1952,"tagline":"Open-source, WebGL-powered visualization frameworks","isOptedIntoAurora":false,"isCurationAllowedByDefault":false,"polarisCoverImage":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"ptsQualifiedAt":1616092793377,"type":"Collection"}},"User":{"c301eb048e6a":{"userId":"c301eb048e6a","name":"Alberto Asuero","username":"alasarr","createdAt":1539896829718,"imageId":"1*AHoTMhw0rKPcEmFJQrTv8w.jpeg","backgroundImageId":"","bio":"CTO at https://carto.com. Former CTO and partner of Geographica (acquired by CARTO ). Father of 2. Kite surfer","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[8,12,3,2,18],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"es-es","type":"User"},"4e6dd432d4a2":{"userId":"4e6dd432d4a2","name":"Ib Green","username":"ibgreen","createdAt":1574261760883,"imageId":"1*QBSiVixaTDGu2plzwoxO9w.png","backgroundImageId":"","bio":"Ib Green is CTO at Unfolded (https://unfolded.ai) and the lead architect of deck.gl, and has worked on deck.gl and GPU frameworks since the inception in 2015.","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedIosApp":1612118447242,"isMembershipTrialEligible":true,"optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[2],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"e9709787bb85":{"userId":"e9709787bb85","name":"Andrew Duberstein","username":"duberstein","createdAt":1569458964295,"imageId":"0*4-n2NL5ybQw4HEu7","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"741caae216be":{"userId":"741caae216be","name":"Shan He","username":"heshan0131","createdAt":1519847201917,"imageId":"0*8NfqTTgxtYSs8nsS.","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":1590087410000,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[12,2,53],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"ac0ff4b10f2b":{"userId":"ac0ff4b10f2b","name":"Jérôme Cukier","username":"jcukier","createdAt":1379725012344,"imageId":"1*1UCYLq1faUlCJcyMPGz0Gw.jpeg","backgroundImageId":"","bio":"data visualization person at @uber. More about us at http://vis.gl","twitterScreenName":"jcukier","allowNotes":1,"mediumMemberAt":1561383848953,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"Jérôme Cukier","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[12,2,33],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"e52bdd907e00":{"userId":"e52bdd907e00","name":"Giuseppe Macrì","username":"gmacri","createdAt":1527419523979,"imageId":"0*vmvLebMFS3Ybm_1W.","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"Giuseppe Macrì","optInToIceland":true,"hasCompletedProfile":false,"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"}},"Post":{"b734719076a7":{"id":"b734719076a7","versionId":"b19f31fc19cb","creatorId":"c301eb048e6a","homeCollectionId":"7d5390e55872","title":"deck.gl v8.6 now available with deeper Google Maps support","detectedLanguage":"en","latestVersion":"b19f31fc19cb","latestPublishedVersion":"b19f31fc19cb","hasUnpublishedEdits":false,"latestRev":475,"createdAt":1634022031514,"updatedAt":1641341760923,"acceptedAt":0,"firstPublishedAt":1634053660690,"latestPublishedAt":1634058484428,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Today we are very pleased to announce the availability of deck.gl v8.6, which alongside a whole host of new features, adds full support for…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*z7vYDoQWEEJwF9g21xbvZg.png","filter":"","backgroundSize":"","originalWidth":1200,"originalHeight":636,"strategy":"resample","height":0,"width":0},"wordCount":749,"imageCount":4,"readingTime":3.5264150943396224,"subtitle":"Today we are very pleased to announce the availability of deck.gl v8.6, which alongside a whole host of new features, adds full support for…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":14,"isBookmarked":false,"tags":[{"slug":"data-visualization","name":"Data Visualization","postCount":71074,"metadata":{"postCount":71074,"coverImage":{"id":"1*tQ1GYl7rb1y4g9S1OQv5wA.png","originalWidth":1810,"originalHeight":1162,"isFeatured":true}},"type":"Tag"},{"slug":"location-intelligence","name":"Location Intelligence","postCount":1022,"metadata":{"postCount":1022,"coverImage":{"id":"1*sC4ogYPIt95a_h0iCxEcxg.jpeg","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"google-maps","name":"Google Maps","postCount":4077,"metadata":{"postCount":4077,"coverImage":{"id":"0*VPRFUcyQKTs_q4r9.jpg","originalWidth":800,"originalHeight":566,"isFeatured":true}},"type":"Tag"},{"slug":"geospatial","name":"Geospatial","postCount":3330,"metadata":{"postCount":3330,"coverImage":{"id":"1*ju-RPE4c5KbRE8VOk09LOw.jpeg","originalWidth":2048,"originalHeight":2048,"isFeatured":true,"alt":"Antique map of Georgia with a line drawing of a courthouse in the center of the state surrounded by concentric rings representing a proximity map."}},"type":"Tag"},{"slug":"webgl","name":"Webgl","postCount":1389,"metadata":{"postCount":1389,"coverImage":{"id":"1*dg8XoPjLULvmtDfTopwbWg.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://mapsplatform.google.com/","alts":[],"httpStatus":200},{"url":"https://unpkg.com/deck.gl@8.6.0/dist.min.js","alts":[],"httpStatus":200},{"url":"https://carto.com/","alts":[],"httpStatus":200},{"url":"https://medium.com/vis-gl/using-deck-gl-with-google-maps-9c868d18e3cd","alts":[{"type":2,"url":"medium://p/9c868d18e3cd"},{"type":3,"url":"medium://p/9c868d18e3cd"}],"httpStatus":200},{"url":"http://jsfiddle.net/user/felixp/fiddles/","alts":[],"httpStatus":200},{"url":"https://jsfiddle.net/carto/3xhrt6nf/","alts":[],"httpStatus":200},{"url":"https://developers.google.com/maps/documentation/javascript/webgl/webgl-overlay-view","alts":[],"httpStatus":200},{"url":"https://github.com/visgl/deck.gl/blob/master/docs/api-reference/google-maps/google-maps-overlay.md","alts":[],"httpStatus":200},{"url":"https://deck.gl/","alts":[],"httpStatus":200},{"url":"https://cloud.google.com/blog/products/maps-platform/richer-data-visualization-google-maps-platform-using-deckgl","alts":[],"httpStatus":200},{"url":"https://deck.gl/docs/whats-new","alts":[],"httpStatus":200},{"url":"https://deck.gl/docs/whats-new#deckgl-v86","alts":[],"httpStatus":200},{"url":"https://cloud.google.com/blog/products/maps-platform/using-new-webgl-powered-maps-features","alts":[],"httpStatus":200},{"url":"https://medium.com/vis-gl/deck-gl-8-2-moves-to-open-governance-379f147c15bb","alts":[{"type":3,"url":"medium://p/379f147c15bb"},{"type":2,"url":"medium://p/379f147c15bb"}],"httpStatus":200}],"version":"0.3","generatedAt":1634058486108},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":26,"sectionCount":1,"readingList":0,"topics":[{"topicId":"63c6f1f93ee","slug":"javascript","createdAt":1493945704961,"deletedAt":0,"image":{"id":"1*5UyyDJ1ESD11yQNd1UVAaQ@2x.jpeg","originalWidth":5472,"originalHeight":3648},"name":"Javascript","description":"An ode to code.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Javascript News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"deck-gl-v8-6-now-available-with-deeper-google-maps-support","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"deck-gl-v8-6-now-available-with-deeper-google-maps-support-b734719076a7","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*z7vYDoQWEEJwF9g21xbvZg.png","originalWidth":1200,"originalHeight":636,"isFeatured":true}},{"name":"7519","type":3,"text":"deck.gl v8.6 now available with deeper Google Maps support","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Today we are very pleased to announce the availability of deck.gl v8.6, which alongside a whole host of new features, adds full support for…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7d5390e55872","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"7519","type":3,"text":"deck.gl v8.6 now available with deeper Google Maps support","markups":[]},{"name":"2481","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*z7vYDoQWEEJwF9g21xbvZg.png","originalWidth":1200,"originalHeight":636,"isFeatured":true}},{"name":"4259","type":1,"text":"Today we are very pleased to announce the availability of deck.gl v8.6, which alongside a whole host of new features, adds full support for the WebGL Overlay View feature of the Google Maps JavaScript API.","markups":[{"type":3,"start":58,"end":65,"href":"https://deck.gl/","title":"","rel":"","anchorType":0},{"type":3,"start":104,"end":116,"href":"https://deck.gl/docs/whats-new","title":"","rel":"","anchorType":0}]},{"name":"35f1","type":1,"text":"Google Maps Platform revolutionized the web mapping space when it was launched back in 2005…","markups":[{"type":3,"start":0,"end":20,"href":"https://mapsplatform.google.com/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"e701","startIndex":0}]},"isFullContent":false,"subtitle":"Today we are very pleased to announce the availability of deck.gl v8.6, which alongside a whole host of new features, adds full support for…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"379f147c15bb":{"id":"379f147c15bb","versionId":"190b8fa46cf","creatorId":"4e6dd432d4a2","homeCollectionId":"7d5390e55872","title":"deck.gl 8.2 moves to Open Governance","detectedLanguage":"en","latestVersion":"190b8fa46cf","latestPublishedVersion":"190b8fa46cf","hasUnpublishedEdits":false,"latestRev":291,"createdAt":1596754070981,"updatedAt":1639569293161,"acceptedAt":0,"firstPublishedAt":1596812461475,"latestPublishedAt":1596821805734,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"deck.gl, which has been developed under the stewardship of Uber’s Engineering organization, has now moved to an open governance model.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*kbcsaNTmOSy46jdZ","filter":"","backgroundSize":"","originalWidth":1000,"originalHeight":600,"strategy":"resample","height":0,"width":0},"wordCount":650,"imageCount":5,"readingTime":3.2861635220125787,"subtitle":"deck.gl, which has been developed under the stewardship of Uber’s Engineering organization, has now moved to an open governance model.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":41,"isBookmarked":false,"tags":[{"slug":"visualization","name":"Visualization","postCount":14759,"metadata":{"postCount":14759,"coverImage":{"id":"1*1LnPiI5eoOag88WaIwY5xg.png","originalWidth":1028,"originalHeight":572,"isFeatured":true}},"type":"Tag"},{"slug":"open-source","name":"Open Source","postCount":54290,"metadata":{"postCount":54290,"coverImage":{"id":"1*g5xBVoUa3YRK7d18GnbLxg.png","originalWidth":1280,"originalHeight":720,"isFeatured":true}},"type":"Tag"},{"slug":"webgl","name":"Webgl","postCount":1389,"metadata":{"postCount":1389,"coverImage":{"id":"1*dg8XoPjLULvmtDfTopwbWg.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true}},"type":"Tag"},{"slug":"javascript","name":"JavaScript","postCount":294941,"metadata":{"postCount":294941,"coverImage":{"id":"1*QisgQNb1GYtqet_rg5XbSw.png","originalWidth":1536,"originalHeight":512,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://deck.gl","alts":[],"httpStatus":200},{"url":"https://deck.gl/issues","alts":[],"httpStatus":404},{"url":"https://medium.com/vis-gl","alts":[{"type":2,"url":"medium://vis-gl"},{"type":3,"url":"medium://vis-gl"}],"httpStatus":200},{"url":"https://pydeck.gl","alts":[],"httpStatus":200},{"url":"https://join.slack.com/t/deckgl/shared_invite/zt-7oeoqie8-NQqzSp5SLTFMDeNSPxi7eg","alts":[],"httpStatus":200},{"url":"https://deck.gl/docs/whats-new","alts":[],"httpStatus":200},{"url":"https://github.com/visgl/tsc","alts":[],"httpStatus":200},{"url":"https://github.com/UnfoldedInc/deck.gl-native","alts":[],"httpStatus":200},{"url":"https://lists.uc.foundation/g/visgl","alts":[],"httpStatus":200},{"url":"http://docs.google.com/presentation/d/1MZbZrzcCB3THwM0KeSDs7VK5eczCp4IkO7U84mHhebY/edit","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1596821806494},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":239,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"deck-gl-8-2-moves-to-open-governance","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"deck-gl-8-2-moves-to-open-governance-379f147c15bb","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*kbcsaNTmOSy46jdZ","originalWidth":1000,"originalHeight":600,"isFeatured":true}},{"name":"a551","type":3,"text":"deck.gl 8.2 moves to Open Governance","markups":[],"alignment":1},{"name":"8274","type":1,"text":"deck.gl, which has been developed under the stewardship of Uber’s Engineering organization over…","markups":[{"type":3,"start":0,"end":7,"href":"https://deck.gl","title":"","rel":"","anchorType":0}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"deck.gl, which has been developed under the stewardship of Uber’s Engineering organization, has now moved to an open governance model."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7d5390e55872","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1596762620402,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"a551","type":3,"text":"deck.gl 8.2 moves to Open Governance","markups":[]},{"name":"8274","type":1,"text":"deck.gl, which has been developed under the stewardship of Uber’s Engineering organization over the last 5 years, has now taken a big step and moved to an open governance model. In addition, deck.gl 8.2, the first community planned version of deck.gl, has now been released.","markups":[{"type":3,"start":0,"end":7,"href":"https://deck.gl","title":"","rel":"","anchorType":0}]},{"name":"9b82","type":1,"text":"This blog post shares some…","markups":[]}],"sections":[{"name":"f6f8","startIndex":0}]},"isFullContent":false,"subtitle":"deck.gl, which has been developed under the stewardship of Uber’s Engineering organization, has now moved to an open governance model."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"ce891532f986":{"id":"ce891532f986","versionId":"768180470b5d","creatorId":"e9709787bb85","homeCollectionId":"7d5390e55872","title":"pydeck: Unlocking deck.gl for use in Python","detectedLanguage":"en","latestVersion":"768180470b5d","latestPublishedVersion":"768180470b5d","hasUnpublishedEdits":false,"latestRev":473,"createdAt":1569964718818,"updatedAt":1639296583253,"acceptedAt":0,"firstPublishedAt":1571174949120,"latestPublishedAt":1571174949120,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Uber’s open source deck.gl library powers both internal data visualization tools and brings to life award-winning visualizations from…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*86RzvaLsplcxRoJG","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":848,"strategy":"resample","height":0,"width":0},"wordCount":403,"imageCount":3,"readingTime":2.0707547169811322,"subtitle":"Uber’s open source deck.gl library powers both internal data visualization tools and brings to life award-winning visualizations from…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":78,"isBookmarked":false,"tags":[{"slug":"data-science","name":"Data Science","postCount":378730,"metadata":{"postCount":378730,"coverImage":{"id":"0*-u7jDlq7ehO-Sh6l","originalWidth":1292,"originalHeight":861,"isFeatured":true}},"type":"Tag"},{"slug":"python","name":"Python","postCount":276848,"metadata":{"postCount":276848,"coverImage":{"id":"1*jNWQdkJwTMSN4P9_OvqBsQ.png","originalWidth":1778,"originalHeight":1022,"isFeatured":true}},"type":"Tag"},{"slug":"data-visualization","name":"Data Visualization","postCount":71074,"metadata":{"postCount":71074,"coverImage":{"id":"1*tQ1GYl7rb1y4g9S1OQv5wA.png","originalWidth":1810,"originalHeight":1162,"isFeatured":true}},"type":"Tag"},{"slug":"gis","name":"GIS","postCount":7043,"metadata":{"postCount":7043,"coverImage":{"id":"0*QfhGp6suXwR_DZ9H","originalWidth":750,"originalHeight":368,"isFeatured":true}},"type":"Tag"},{"slug":"maps","name":"Maps","postCount":12449,"metadata":{"postCount":12449,"coverImage":{"id":"1*DppSSTvdtoaXZT8m5vRSVw.png","originalWidth":1920,"originalHeight":1080}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":3,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life","alts":[],"httpStatus":200},{"url":"https://pypi.org/project/pydeck/","alts":[],"httpStatus":200},{"url":"https://deckgl.readthedocs.io/en/latest/?","alts":[],"httpStatus":200},{"url":"https://gist.github.com/ajduberstein/cebd1c71c9fcd73ddea99ff6d643b307","alts":[],"httpStatus":200},{"url":"https://github.com/uber/deck.gl/issues/new?assignees=&labels=feature&template=feature-template.md&title=","alts":[],"httpStatus":200},{"url":"https://github.com/uber/deck.gl/issues/new?assignees=&labels=bug&template=bug-report.md&title=","alts":[],"httpStatus":200},{"url":"https://deck.gl/","alts":[],"httpStatus":200},{"url":"https://mybinder.org/v2/gh/uber/deck.gl/binder?filepath=examples","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1571174950618},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":189,"sectionCount":1,"readingList":0,"topics":[]},"coverless":true,"slug":"pydeck-unlocking-deck-gl-for-use-in-python","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"pydeck-unlocking-deck-gl-for-use-in-python-ce891532f986","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*86RzvaLsplcxRoJG","originalWidth":1600,"originalHeight":848,"isFeatured":true}},{"name":"c214","type":3,"text":"pydeck: Unlocking deck.gl for use in Python","markups":[],"alignment":1},{"name":"58bc","type":1,"text":"Uber’s open source deck.gl library powers both internal data visualization tools and…","markups":[{"type":3,"start":19,"end":26,"href":"https://deck.gl/","title":"","rel":"","anchorType":0}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Uber’s open source deck.gl library powers both internal data visualization tools and brings to life award-winning visualizations from…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7d5390e55872","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1570731650642,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"c214","type":3,"text":"pydeck: Unlocking deck.gl for use in Python","markups":[]},{"name":"58bc","type":1,"text":"Uber’s open source deck.gl library powers both internal data visualization tools and brings to life award-winning visualizations from across the community.","markups":[{"type":3,"start":19,"end":26,"href":"https://deck.gl/","title":"","rel":"","anchorType":0}]},{"name":"0016","type":1,"text":"Today, we’re excited to announce that we’ll be bringing deck.gl’s declarative syntax, the ease of use, and ability to render massive data to Python with the beta release of…","markups":[{"type":3,"start":173,"end":179,"href":"https://pypi.org/project/pydeck/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"64d9","startIndex":0}]},"isFullContent":false,"subtitle":"Uber’s open source deck.gl library powers both internal data visualization tools and brings to life award-winning visualizations from…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"cf655839628f":{"id":"cf655839628f","versionId":"5a0189dc40fe","creatorId":"741caae216be","homeCollectionId":"7d5390e55872","title":"Exploring Geospatial data with kepler.gl","detectedLanguage":"en","latestVersion":"5a0189dc40fe","latestPublishedVersion":"5a0189dc40fe","hasUnpublishedEdits":false,"latestRev":422,"createdAt":1566416085971,"updatedAt":1639225379990,"acceptedAt":0,"firstPublishedAt":1566837464383,"latestPublishedAt":1566858972136,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Co-authors: Gabriel Durkin, Sina Kashuk","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*f2CkYUqaUi2HsB77zGnI5Q.png","filter":"","backgroundSize":"","originalWidth":3360,"originalHeight":2100,"strategy":"resample","height":0,"width":0},"wordCount":1200,"imageCount":8,"readingTime":5.6616352201257865,"subtitle":"Co-authors: Gabriel Durkin, Sina Kashuk","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":186,"isBookmarked":false,"tags":[{"slug":"uber","name":"Uber","postCount":18035,"metadata":{"postCount":18035,"coverImage":{"id":"0*33GsWcdC2G7tLbq5","originalWidth":6000,"originalHeight":3376,"isFeatured":true,"unsplashPhotoId":"kARZuSYMfrA"}},"type":"Tag"},{"slug":"keplergl","name":"Keplergl","postCount":59,"metadata":{"postCount":59,"coverImage":{"id":"1*925qsq1DK5cfs-XxSaC-SA.gif","originalWidth":800,"originalHeight":600,"isFeatured":true}},"type":"Tag"},{"slug":"data-science","name":"Data Science","postCount":378730,"metadata":{"postCount":378730,"coverImage":{"id":"0*-u7jDlq7ehO-Sh6l","originalWidth":1292,"originalHeight":861,"isFeatured":true}},"type":"Tag"},{"slug":"data-visualization","name":"Data Visualization","postCount":71074,"metadata":{"postCount":71074,"coverImage":{"id":"1*tQ1GYl7rb1y4g9S1OQv5wA.png","originalWidth":1810,"originalHeight":1162,"isFeatured":true}},"type":"Tag"},{"slug":"geospatial","name":"Geospatial","postCount":3330,"metadata":{"postCount":3330,"coverImage":{"id":"1*ju-RPE4c5KbRE8VOk09LOw.jpeg","originalWidth":2048,"originalHeight":2048,"isFeatured":true,"alt":"Antique map of Georgia with a line drawing of a courthouse in the center of the state surrounded by concentric rings representing a proximity map."}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://eng.uber.com/h3/","alts":[],"httpStatus":200},{"url":"https://medium.com/@sina.rk","alts":[{"type":2,"url":"medium://@sina.rk"},{"type":3,"url":"medium://@sina.rk"}],"httpStatus":200},{"url":"https://medium.com/vis-gl/introducing-kepler-gl-for-jupyter-f72d41659fbf#targetText=Introducing%20kepler.gl%20for%20Jupyter&targetText=kepler.gl%20is%20an%20advanced,tool%20for%20geospatial%20data%20analysis.","alts":[{"type":3,"url":"medium://p/f72d41659fbf"},{"type":2,"url":"medium://p/f72d41659fbf"}],"httpStatus":200},{"url":"https://medium.com/@gabriel_52469","alts":[{"type":2,"url":"medium://@gabriel_52469"},{"type":3,"url":"medium://@gabriel_52469"}],"httpStatus":200},{"url":"https://medium.com/vis-gl/introducing-kepler-gl-for-jupyter-f72d41659fbf","alts":[{"type":3,"url":"medium://p/f72d41659fbf"},{"type":2,"url":"medium://p/f72d41659fbf"}],"httpStatus":200}],"version":"0.3","generatedAt":1566858973779},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":667,"sectionCount":1,"readingList":0,"topics":[{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"},{"topicId":"ee3bd8cbfa78","slug":"transportation","createdAt":1531873382831,"deletedAt":0,"image":{"id":"1*6YfqgfKeOrVSJf-LN2Kgcg@2x.jpeg","originalWidth":5472,"originalHeight":3648},"name":"Transportation","description":"A to B: the journey.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Transportation News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"exploring-geospatial-data-with-kepler-gl","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"exploring-geospatial-data-with-kepler-gl-cf655839628f","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*f2CkYUqaUi2HsB77zGnI5Q.png","originalWidth":3360,"originalHeight":2100,"isFeatured":true}},{"name":"d480","type":3,"text":"Exploring Geospatial Data with kepler.gl","markups":[],"alignment":1},{"name":"679b","type":1,"text":"Co-authors: Gabriel Durkin, Sina Kashuk","markups":[{"type":3,"start":12,"end":26,"href":"https://medium.com/@gabriel_52469","title":"","rel":"","anchorType":0},{"type":3,"start":28,"end":39,"href":"https://medium.com/@sina.rk","title":"","rel":"","anchorType":0}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Co-authors: Gabriel Durkin, Sina Kashuk"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7d5390e55872","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1566837463048,"primaryTopicId":"ae5d4995e225","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"d480","type":3,"text":"Exploring Geospatial Data with kepler.gl","markups":[]},{"name":"679b","type":1,"text":"Co-authors: Gabriel Durkin, Sina Kashuk","markups":[{"type":3,"start":12,"end":26,"href":"https://medium.com/@gabriel_52469","title":"","rel":"","anchorType":0},{"type":3,"start":28,"end":39,"href":"https://medium.com/@sina.rk","title":"","rel":"","anchorType":0}]},{"name":"6725","type":1,"text":"kepler.gl is an advanced geospatial visualization tool open sourced by Uber’s visualization team in 2018 and contributed to the Urban Computing Foundation in early 2019.","markups":[]},{"name":"47ab","type":4,"text":"Figure 1. Using kepler.gl to visualize San Francisco building footprint","markups":[],"layout":1,"metadata":{"id":"1*f2CkYUqaUi2HsB77zGnI5Q.png","originalWidth":3360,"originalHeight":2100,"isFeatured":true}},{"name":"26df","type":1,"text":"At Uber, kepler.gl is the de facto tool for geospatial data analysis. In a previous article, we introduced kepler.gl for…","markups":[{"type":3,"start":75,"end":91,"href":"https://medium.com/vis-gl/introducing-kepler-gl-for-jupyter-f72d41659fbf","title":"","rel":"","anchorType":0},{"type":3,"start":401,"end":450,"href":"https://eng.uber.com/h3/","title":"","rel":"noopener","anchorType":0}]}],"sections":[{"name":"efb0","startIndex":0}]},"isFullContent":false,"subtitle":"Co-authors: Gabriel Durkin, Sina Kashuk"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"56096209dce2":{"id":"56096209dce2","versionId":"5ce4b75aa2d6","creatorId":"ac0ff4b10f2b","homeCollectionId":"7d5390e55872","title":"Vis Hackathon 2019","detectedLanguage":"en","latestVersion":"5ce4b75aa2d6","latestPublishedVersion":"5ce4b75aa2d6","hasUnpublishedEdits":false,"latestRev":758,"createdAt":1561575274928,"updatedAt":1639181824253,"acceptedAt":0,"firstPublishedAt":1563899865669,"latestPublishedAt":1563899865669,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"The visualization engineering team at Uber is now 40 people with very different specialties — mapping, web, data, low-level graphics, ML…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*8YNnAY3BsXCDiIbotY3o0Q.gif","filter":"","backgroundSize":"","originalWidth":800,"originalHeight":539,"strategy":"resample","height":0,"width":0},"wordCount":1300,"imageCount":13,"readingTime":6.305660377358491,"subtitle":"The visualization engineering team at Uber is now 40 people with very different specialties — mapping, web, data, low-level graphics, ML…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":63,"isBookmarked":false,"tags":[{"slug":"visualization","name":"Visualization","postCount":14759,"metadata":{"postCount":14759,"coverImage":{"id":"1*1LnPiI5eoOag88WaIwY5xg.png","originalWidth":1028,"originalHeight":572,"isFeatured":true}},"type":"Tag"},{"slug":"webgl","name":"Webgl","postCount":1389,"metadata":{"postCount":1389,"coverImage":{"id":"1*dg8XoPjLULvmtDfTopwbWg.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true}},"type":"Tag"},{"slug":"data-visualization","name":"Data Visualization","postCount":71074,"metadata":{"postCount":71074,"coverImage":{"id":"1*tQ1GYl7rb1y4g9S1OQv5wA.png","originalWidth":1810,"originalHeight":1162,"isFeatured":true}},"type":"Tag"},{"slug":"maps","name":"Maps","postCount":12449,"metadata":{"postCount":12449,"coverImage":{"id":"1*DppSSTvdtoaXZT8m5vRSVw.png","originalWidth":1920,"originalHeight":1080}},"type":"Tag"},{"slug":"front-end-development","name":"Front End Development","postCount":53479,"metadata":{"postCount":53479,"coverImage":{"id":"1*T6h3WOYzY13gLfjwbfL6Xg.png","originalWidth":2824,"originalHeight":1700,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://uber.github.io/h3/#/","alts":[],"httpStatus":200},{"url":"https://luma.gl","alts":[],"httpStatus":200},{"url":"https://luma.gl/#/","alts":[],"httpStatus":200},{"url":"https://deck.gl/#/","alts":[],"httpStatus":200},{"url":"https://deck.gl","alts":[],"httpStatus":200},{"url":"https://deck.gl/#/showcases/overview","alts":[],"httpStatus":200},{"url":"https://loaders.gl/","alts":[],"httpStatus":200},{"url":"https://arrow.apache.org/","alts":[],"httpStatus":200},{"url":"http://jump.com","alts":[],"httpStatus":200},{"url":"https://kepler.gl","alts":[],"httpStatus":200},{"url":"https://www.tensorflow.org/","alts":[],"httpStatus":200},{"url":"https://movement.uber.com/","alts":[],"httpStatus":200},{"url":"https://www.uber.com/newsroom/movement-street-speeds/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1563899866554},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":283,"sectionCount":1,"readingList":0,"topics":[{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"vis-hackathon-2019","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"vis-hackathon-2019-56096209dce2","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*8YNnAY3BsXCDiIbotY3o0Q.gif","originalWidth":800,"originalHeight":539,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"Vis Hackathon 2019","alignment":1},{"name":"previewSubtitle","type":13,"text":"The visualization engineering team at Uber is now 40 people with very different…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"The visualization engineering team at Uber is now 40 people with very different specialties — mapping, web, data, low-level graphics, ML…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7d5390e55872","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1563899863139,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"e072","type":3,"text":"Vis Hackathon 2019","markups":[]},{"name":"5da8","type":1,"text":"The visualization engineering team at Uber is made up of dozens of technologists with very different specialties — mapping, web, data, low-level graphics, ML, you name it. Many of us fell in love with visualization by experimenting on our own and through the joy of making stuff. And with the…","markups":[]}],"sections":[{"name":"368f","startIndex":0}]},"isFullContent":false,"subtitle":"The visualization engineering team at Uber is now 40 people with very different specialties — mapping, web, data, low-level graphics, ML…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"c3c0804e55b8":{"id":"c3c0804e55b8","versionId":"6a24f61405f8","creatorId":"e52bdd907e00","homeCollectionId":"7d5390e55872","title":"Kepler.gl: Export Map","detectedLanguage":"en","latestVersion":"6a24f61405f8","latestPublishedVersion":"6a24f61405f8","hasUnpublishedEdits":false,"latestRev":751,"createdAt":1557108323940,"updatedAt":1639181603341,"acceptedAt":0,"firstPublishedAt":1563858800851,"latestPublishedAt":1563858800851,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Developed by Uber and contributed to the LF Urban Computing Foundation, Kepler.gl is an open source geospatial analysis tool for…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*ye0GHFG4ackVFrm483gEUQ.png","filter":"","backgroundSize":"","originalWidth":1494,"originalHeight":1248,"strategy":"resample","height":0,"width":0},"wordCount":598,"imageCount":8,"readingTime":3.389937106918239,"subtitle":"Developed by Uber and contributed to the LF Urban Computing Foundation, Kepler.gl is an open source geospatial analysis tool for…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":20,"isBookmarked":false,"tags":[{"slug":"javascript","name":"JavaScript","postCount":294941,"metadata":{"postCount":294941,"coverImage":{"id":"1*QisgQNb1GYtqet_rg5XbSw.png","originalWidth":1536,"originalHeight":512,"isFeatured":true}},"type":"Tag"},{"slug":"keplergl","name":"Keplergl","postCount":59,"metadata":{"postCount":59,"coverImage":{"id":"1*925qsq1DK5cfs-XxSaC-SA.gif","originalWidth":800,"originalHeight":600,"isFeatured":true}},"type":"Tag"},{"slug":"maps","name":"Maps","postCount":12449,"metadata":{"postCount":12449,"coverImage":{"id":"1*DppSSTvdtoaXZT8m5vRSVw.png","originalWidth":1920,"originalHeight":1080}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://docs.mapbox.com/help/how-mapbox-works/access-tokens/","alts":[],"httpStatus":200},{"url":"https://kepler.gl/demo/earthquakes","alts":[],"httpStatus":200},{"url":"https://kepler.gl/","alts":[],"httpStatus":200},{"url":"https://medium.com/vis-gl/animating-40-years-of-california-earthquakes-e4ffcdd4a289","alts":[{"type":3,"url":"medium://p/e4ffcdd4a289"},{"type":2,"url":"medium://p/e4ffcdd4a289"}],"httpStatus":200},{"url":"https://medium.com/vis-gl/kepler-gl-dropbox-map-save-share-b4a41a75715b","alts":[{"type":3,"url":"medium://p/b4a41a75715b"},{"type":2,"url":"medium://p/b4a41a75715b"}],"httpStatus":200},{"url":"https://github.com/keplergl/kepler.gl/blob/master/docs/user-guides/k-save-and-export.md#export-map","alts":[],"httpStatus":200},{"url":"https://github.com/keplergl/kepler.gl/blob/master/docs/user-guides/k-save-and-export.md#how-to-update-an-exported-map-token","alts":[],"httpStatus":200},{"url":"https://github.com/keplergl/kepler.gl/blob/master/docs/user-guides/a-introduction.md","alts":[],"httpStatus":200},{"url":"https://github.com/keplergl/kepler.gl/blob/master/docs/user-guides/k-save-and-export.md","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1563858801602},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":140,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"kepler-gl-export-map","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"kepler-gl-export-map-c3c0804e55b8","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*ye0GHFG4ackVFrm483gEUQ.png","originalWidth":1494,"originalHeight":1248,"isFeatured":true}},{"name":"91ac","type":3,"text":"Kepler.gl: Export Map","markups":[],"alignment":1},{"name":"0973","type":1,"text":"Developed by Uber and contributed to the LF Urban Computing Foundation, Kepler.gl is an open source geospatial analysis…","markups":[{"type":3,"start":72,"end":81,"href":"https://kepler.gl/","title":"","rel":"","anchorType":0}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Developed by Uber and contributed to the LF Urban Computing Foundation, Kepler.gl is an open source geospatial analysis tool for…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7d5390e55872","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1563858798716,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"91ac","type":3,"text":"Kepler.gl: Export Map","markups":[]},{"name":"0973","type":1,"text":"Developed by Uber and contributed to the LF Urban Computing Foundation, Kepler.gl is an open source geospatial analysis tool for large-scale data sets.","markups":[{"type":3,"start":72,"end":81,"href":"https://kepler.gl/","title":"","rel":"","anchorType":0}]},{"name":"3c18","type":1,"text":"I previously posted two articles where I described some of the application features. Both articles are the following:","markups":[]},{"name":"c1e2","type":9,"text":"Animating 40 years of California earthquakes","markups":[{"type":3,"start":0,"end":44,"href":"https://medium.com/vis-gl/animating-40-years-of-california-earthquakes-e4ffcdd4a289","title":"","rel":"","anchorType":0}]},{"name":"df43","type":9,"text":"Kepler.gl + Dropbox…","markups":[{"type":3,"start":0,"end":46,"href":"https://medium.com/vis-gl/kepler-gl-dropbox-map-save-share-b4a41a75715b","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"be34","startIndex":0}]},"isFullContent":false,"subtitle":"Developed by Uber and contributed to the LF Urban Computing Foundation, Kepler.gl is an open source geospatial analysis tool for…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"f72d41659fbf":{"id":"f72d41659fbf","versionId":"841eb4c33c9f","creatorId":"741caae216be","homeCollectionId":"7d5390e55872","title":"Introducing kepler.gl for Jupyter","detectedLanguage":"en","latestVersion":"841eb4c33c9f","latestPublishedVersion":"841eb4c33c9f","hasUnpublishedEdits":false,"latestRev":480,"createdAt":1561092920918,"updatedAt":1639147409670,"acceptedAt":0,"firstPublishedAt":1561483472153,"latestPublishedAt":1561483472153,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"We integrated kepler.gl as a Jupyter Widget. It loads kepler.gl inside a notebook, allowing users to quickly plot maps with python…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*xqaNw3bbVtYk0TbIVG0rQg.png","filter":"","backgroundSize":"","originalWidth":1593,"originalHeight":923,"strategy":"resample","height":0,"width":0},"wordCount":583,"imageCount":6,"readingTime":3.1500000000000004,"subtitle":"We integrated kepler.gl as a Jupyter Widget. It loads kepler.gl inside a notebook, allowing users to quickly plot maps with python…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":366,"isBookmarked":false,"tags":[{"slug":"data-science","name":"Data Science","postCount":378730,"metadata":{"postCount":378730,"coverImage":{"id":"0*-u7jDlq7ehO-Sh6l","originalWidth":1292,"originalHeight":861,"isFeatured":true}},"type":"Tag"},{"slug":"keplergl","name":"Keplergl","postCount":59,"metadata":{"postCount":59,"coverImage":{"id":"1*925qsq1DK5cfs-XxSaC-SA.gif","originalWidth":800,"originalHeight":600,"isFeatured":true}},"type":"Tag"},{"slug":"jupyter-notebook","name":"Jupyter Notebook","postCount":5374,"metadata":{"postCount":5374,"coverImage":{"id":"1*UOyAROWZycERpoFBaWcqgw.png","originalWidth":1536,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"geospatial","name":"Geospatial","postCount":3330,"metadata":{"postCount":3330,"coverImage":{"id":"1*ju-RPE4c5KbRE8VOk09LOw.jpeg","originalWidth":2048,"originalHeight":2048,"isFeatured":true,"alt":"Antique map of Georgia with a line drawing of a courthouse in the center of the state surrounded by concentric rings representing a proximity map."}},"type":"Tag"},{"slug":"open-source","name":"Open Source","postCount":54290,"metadata":{"postCount":54290,"coverImage":{"id":"1*g5xBVoUa3YRK7d18GnbLxg.png","originalWidth":1280,"originalHeight":720,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":6,"links":{"entries":[{"url":"http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html","alts":[],"httpStatus":200},{"url":"http://geopandas.org/reference/geopandas.GeoDataFrame.html","alts":[],"httpStatus":200},{"url":"https://pypi.org/project/keplergl/","alts":[],"httpStatus":200},{"url":"https://github.com/keplergl/kepler.gl/issues/new?assignees=heshan0131&labels=jupyter&template=feature-request--jupyter-widget.md&title=","alts":[],"httpStatus":200},{"url":"https://github.com/keplergl/kepler.gl/issues/new?assignees=heshan0131&labels=jupyter&template=bug-report--jupyter-widget.md&title=%5BBug%5D%5BJupyter+Widget%5D","alts":[],"httpStatus":200},{"url":"https://github.com/keplergl/kepler.gl/issues/new/choose","alts":[],"httpStatus":200},{"url":"https://github.com/keplergl/kepler.gl/blob/master/docs/keplergl-jupyter/user-guide.md#6-match-config-with-data","alts":[],"httpStatus":200},{"url":"https://github.com/keplergl/kepler.gl/blob/master/docs/keplergl-jupyter/user-guide.md","alts":[],"httpStatus":200},{"url":"https://twitter.com/heshan_cheri","alts":[{"type":3,"url":"twitter://user?screen_name=heshan_cheri"},{"type":2,"url":"twitter://user?screen_name=heshan_cheri"}],"httpStatus":200},{"url":"https://github.com/keplergl/kepler.gl/blob/master/docs/keplergl-jupyter/user-guide.md#3-data-format","alts":[],"httpStatus":200},{"url":"https://github.com/keplergl/kepler.gl/blob/master/docs/keplergl-jupyter/user-guide.md#demo-notebooks","alts":[],"httpStatus":200},{"url":"https://github.com/keplergl/kepler.gl","alts":[],"httpStatus":200},{"url":"http://kepler.gl","alts":[],"httpStatus":200},{"url":"https://twitter.com/search?q=%23keplergl&src=typd","alts":[],"httpStatus":200},{"url":"https://www.linuxfoundation.org/projects/urban-computing/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1561483474361},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":1275,"sectionCount":1,"readingList":0,"topics":[{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"},{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"introducing-kepler-gl-for-jupyter","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"introducing-kepler-gl-for-jupyter-f72d41659fbf","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*xqaNw3bbVtYk0TbIVG0rQg.png","originalWidth":1593,"originalHeight":923,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"Introducing kepler.gl for Jupyter","alignment":1},{"name":"previewSubtitle","type":13,"text":"We integrated kepler.gl as a Jupyter Widget. It loads kepler.gl…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"We integrated kepler.gl as a Jupyter Widget. It loads kepler.gl inside a notebook, allowing users to quickly plot maps with python…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7d5390e55872","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1561483470307,"primaryTopicId":"ae5d4995e225","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"415b","type":3,"text":"Introducing kepler.gl for Jupyter","markups":[]},{"name":"9afa","type":4,"text":"","markups":[],"layout":3,"metadata":{"id":"1*xqaNw3bbVtYk0TbIVG0rQg.png","originalWidth":1593,"originalHeight":923,"isFeatured":true}},{"name":"a263","type":1,"text":"kepler.gl is an advanced geospatial visualization tool open sourced by Uber’s Visualization team in 2018 and contributed to the Urban Computing Foundation earlier this year. At Uber, kepler.gl is the defacto tool for geospatial data analysis.","markups":[{"type":3,"start":0,"end":9,"href":"http://kepler.gl","title":"","rel":"","anchorType":0},{"type":3,"start":128,"end":154,"href":"https://www.linuxfoundation.org/projects/urban-computing/","title":"","rel":"","anchorType":0}]},{"name":"676c","type":1,"text":"In order to help data scientists work more effectively, we integrated kepler.gl into many…","markups":[]}],"sections":[{"name":"a4e3","startIndex":0}]},"isFullContent":false,"subtitle":"We integrated kepler.gl as a Jupyter Widget. It loads kepler.gl inside a notebook, allowing users to quickly plot maps with python…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"}}},"paging":{"path":"/_/api/collections/7d5390e55872/stream","next":{"to":"1561483472153","ignoredIds":[],"page":2}},"collection":{"id":"7d5390e55872","name":"vis.gl","slug":"vis-gl","tags":["UBER","VISUALIZATION","OPEN SOURCE","JAVASCRIPT","WEBGL"],"creatorId":"3719ba14f6bf","description":"Open-source, WebGL-powered visualization frameworks","shortDescription":"Open-source, WebGL-powered visualization frameworks","image":{"imageId":"1*UygkwlcP8gH_KVlf63Fi8g.png","filter":"","backgroundSize":"","originalWidth":200,"originalHeight":200,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":1952,"activeAt":1634053660781},"virtuals":{"permissions":{"canPublish":false,"canPublishAll":false,"canRepublish":false,"canRemove":false,"canManageAll":false,"canSubmit":false,"canEditPosts":false,"canAddWriters":false,"canViewStats":false,"canSendNewsletter":false,"canViewLockedPosts":false,"canViewCloaked":false,"canEditOwnPosts":false,"canBeAssignedAuthor":false,"canEnrollInHightower":false,"canLockPostsForMediumMembers":false,"canLockOwnPostsForMediumMembers":false,"canViewNewsletterV2Stats":false,"canCreateNewsletterV3":false},"isSubscribed":false,"isEnrolledInHightower":false,"isEligibleForHightower":false,"isSubscribedToCollectionEmails":false,"isMuted":false,"canToggleEmail":false,"isWriter":false},"logo":{"imageId":"1*UygkwlcP8gH_KVlf63Fi8g.png","filter":"","backgroundSize":"","originalWidth":200,"originalHeight":200,"strategy":"resample","height":0,"width":0},"sections":[{"type":2,"collectionHeaderMetadata":{"title":"vis.gl","description":"Uber Visualization's open-source frameworks","backgroundImage":{"id":"1*_-ywx9o8JPruGCxXdwXRqw.png","originalWidth":2632,"originalHeight":896},"logoImage":{"id":"1*UygkwlcP8gH_KVlf63Fi8g@2x.png","originalWidth":200,"originalHeight":200,"alt":"vis.gl"},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":7,"postIds":["b734719076a7","379f147c15bb","ce891532f986","cf655839628f","56096209dce2","c3c0804e55b8","f72d41659fbf"]}}],"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF1A8917","point":0},{"color":"#FF11800E","point":0.1},{"color":"#FF0F730C","point":0.2},{"color":"#FF095407","point":1}],"backgroundColor":"#FFFFFFFF"},"highlightSpectrum":{"colorPoints":[{"color":"#FFFFFFFF","point":0},{"color":"#FFE8F3E8","point":0.1},{"color":"#FFE8F3E8","point":0.2},{"color":"#FFD1E7D1","point":0.6},{"color":"#FFA3D0A2","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FF095407","point":0},{"color":"#FF0F730C","point":0.1},{"color":"#FF11800E","point":0.2},{"color":"#FF1A8917","point":1}],"backgroundColor":"#FF000000"}},"navItems":[],"colorBehavior":1,"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"title":"vis.gl","description":"Uber Visualization's open-source frameworks","backgroundImage":{"id":"1*_-ywx9o8JPruGCxXdwXRqw.png","originalWidth":2632,"originalHeight":896},"logoImage":{"id":"1*UygkwlcP8gH_KVlf63Fi8g@2x.png","originalWidth":200,"originalHeight":200,"alt":"vis.gl"},"alignment":2,"layout":5},"subscriberCount":1952,"tagline":"Open-source, WebGL-powered visualization frameworks","isOptedIntoAurora":false,"isCurationAllowedByDefault":false,"polarisCoverImage":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"ptsQualifiedAt":1616092793377,"type":"Collection"},"header":{"title":"vis.gl","description":"Uber Visualization's open-source frameworks","backgroundImage":{"id":"1*_-ywx9o8JPruGCxXdwXRqw.png","originalWidth":2632,"originalHeight":896},"logoImage":{"id":"1*UygkwlcP8gH_KVlf63Fi8g@2x.png","originalWidth":200,"originalHeight":200,"alt":"vis.gl"},"alignment":2,"layout":5},"streamItems":[{"createdAt":1744159203267,"randomId":"d59109cc1baf","section":{"items":[{"post":{"postId":"b734719076a7"},"itemType":"post"},{"post":{"postId":"379f147c15bb"},"itemType":"post"},{"post":{"postId":"ce891532f986"},"itemType":"post"},{"post":{"postId":"cf655839628f"},"itemType":"post"},{"post":{"postId":"56096209dce2"},"itemType":"post"},{"post":{"postId":"c3c0804e55b8"},"itemType":"post"},{"post":{"postId":"f72d41659fbf"},"itemType":"post"}],"layout":4},"itemType":"section","type":"StreamItem"}]}) // ]]></script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'92d5f7c13ad54e66',t:'MTc0NDE1OTM4MS4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10