CINXE.COM
The Airbnb Tech Blog - 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>The Airbnb Tech Blog - Medium</title><link rel="canonical" href="https://medium.com/airbnb-engineering"><link id="feedLink" rel="alternate" type="application/rss+xml" title="RSS" href="https://medium.com/feed/airbnb-engineering"><meta name="robots" content="index,follow"><meta name="title" content="The Airbnb Tech Blog - Medium"><meta name="referrer" content="unsafe-url"><meta name="description" content="Creative engineers and data scientists building a world where you can belong anywhere. http://airbnb.io."><meta name="keywords" content="DATA SCIENCE, WEB DEVELOPMENT, OPEN SOURCE, FRONT END DEVELOPMENT, ARTIFICIAL INTELLIGENCE"><meta name="theme-color" content="#000000"><meta property="og:title" content="The Airbnb Tech Blog – Medium"><meta property="twitter:title" content="The Airbnb Tech Blog – Medium"><meta property="og:url" content="https://medium.com/airbnb-engineering"><meta property="og:image" content="https://cdn-images-1.medium.com/max/1200/1*MlNQKg-sieBGW5prWoe9HQ.jpeg"><meta property="fb:app_id" content="542599432471018"><meta property="og:description" content="Creative engineers and data scientists building a world where you can belong anywhere. http://airbnb.io."><meta name="twitter:description" content="Creative engineers and data scientists building a world where you can belong anywhere. http://airbnb.io."><meta name="twitter:image:src" content="https://cdn-images-1.medium.com/max/1200/1*MlNQKg-sieBGW5prWoe9HQ.jpeg"><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/@airbnbeng"><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://airbnb-engineering"><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://airbnb-engineering"><meta property="al:android:url" content="medium://airbnb-engineering"><meta property="al:web:url" content="https://medium.com/airbnb-engineering"><link rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml" /><link rel="alternate" href="android-app://com.medium.reader/https/medium.com/airbnb-engineering" /><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\/airbnb-engineering", "name": "The Airbnb Tech Blog"}]}</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*MlNQKg-sieBGW5prWoe9HQ.jpeg"><link rel="apple-touch-icon" sizes="120x120" href="https://cdn-images-1.medium.com/fit/c/240/240/1*MlNQKg-sieBGW5prWoe9HQ.jpeg"><link rel="apple-touch-icon" sizes="76x76" href="https://cdn-images-1.medium.com/fit/c/152/152/1*MlNQKg-sieBGW5prWoe9HQ.jpeg"><link rel="apple-touch-icon" sizes="60x60" href="https://cdn-images-1.medium.com/fit/c/120/120/1*MlNQKg-sieBGW5prWoe9HQ.jpeg"><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/airbnb-engineering%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%2Fairbnb-engineering%3Fsource%3Duser_profile_page---------0-------------e6c8d959ca1b---------------&source=--------------------------nav_reg&operation=login" data-action="sign-in-prompt" data-redirect="https://medium.com/airbnb-engineering?source=user_profile_page---------0-------------e6c8d959ca1b---------------" 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%2Fairbnb-engineering%3Fsource%3Duser_profile_page---------0-------------e6c8d959ca1b---------------&source=--------------------------nav_reg&operation=register" data-action="sign-up-prompt" data-redirect="https://medium.com/airbnb-engineering?source=user_profile_page---------0-------------e6c8d959ca1b---------------" 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--withNavigation collectionHeader--editorLayoutTitleAndLogo is-modeView"><div class="collectionHeader-aspectRatioTable"><div class="collectionHeader-aspectRatioContent u-backgroundSizeCover js-collectionHeaderBackground" style="background-image: url("https://cdn-images-1.medium.com/max/2400/1*eM5hEN1XX7U9XDPgjcFC8g.png"); 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: 89px; float: left; padding-right: 20px; margin-right: 0;"><a class="link u-baseColor--link" href="https://medium.com/airbnb-engineering" title="Go to The Airbnb Tech Blog" aria-label="Go to The Airbnb Tech Blog"><div class="u-relative u-marginAuto"><div style="padding-bottom: 103.18021201413427%"></div><img class="collectionHeader-logoImage js-collectionHeaderLogoImage" src="https://cdn-images-1.medium.com/max/178/1*5wg57UPTn3EZIWQSgf9mMA@2x.png" data-image-id="1*5wg57UPTn3EZIWQSgf9mMA@2x.png" data-width="566" data-height="584" /></div></a></div><div class="collectionHeader-nameAndDescription"><a class="link link--noUnderline u-baseColor--link" href="https://medium.com/airbnb-engineering" title="Go to The Airbnb Tech Blog" aria-label="Go to The Airbnb Tech Blog"><h1 class="collectionHeader-name js-collectionName u-foreground u-baseColor--textDark u-paddingBottom4 u-lineHeightTightest u-contentSansBold u-fontSize40 u-xs-fontSize32">The Airbnb Tech Blog</h1></a><h2 class="collectionHeader-description js-collectionDescription u-foreground u-baseColor--textNormal u-contentSansRegular u-fontSize24 u-xs-fontSize18">A deeper look into how our Engineers and Data Scientists build a world of belonging</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"><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/airbnb-engineering/data/home">Data</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/airbnb-engineering/ai/home">AI & ML</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/airbnb-engineering/tagged/mobile">Mobile</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/airbnb-engineering/web/home">Web</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/airbnb-engineering/airbnb-engineering-infrastructure/home">Infrastructure</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/airbnb-engineering/open-source/home">Open Source</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/airbnb-engineering/medium-com-airbnb-engineering-people/home">People</a></li><span class="u-borderLeft1 u-paddingLeft22 u-xs-paddingLeft12 u-baseColor--borderLight"></span><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0 is-external"><a class="link link--darkenOnHover u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://careers.airbnb.com/" rel="nofollow noopener" target="_blank">Careers</a></li></div><div class="buttonSet u-textAlignRight u-marginLeft18 u-flex0 u-noWrap"><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"><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" required="true" data-collection-id="53c7c27702d5" /></label><a class="button button--chromeless is-touchIconBlackPulse u-baseColor--buttonNormal button--withIcon button--withSvgIcon button--chromeless u-verticalAlignMiddle" href="https://twitter.com/AirbnbEng" title="Visit “The Airbnb Tech Blog” on X" aria-label="Visit “The Airbnb Tech Blog” on X" rel="me" target="_blank"><span class="button-defaultState"><span class="svgIcon svgIcon--twitter svgIcon--25px"><svg class="svgIcon-use" width="25" height="25" fill="none" ><path d="M14.215 11.3l5.764-6.7h-1.366l-5.005 5.818L9.611 4.6H5l6.045 8.798L5 20.424h1.366l5.286-6.144 4.221 6.144h4.61L14.216 11.3zm-1.871 2.175l-.612-.876-4.874-6.97h2.098l3.933 5.625.613.876 5.112 7.312h-2.098l-4.172-5.966z" fill="#242424"/></svg></span></span></a><a class="button button--chromeless is-touchIconBlackPulse u-baseColor--buttonNormal button--withIcon button--withSvgIcon button--chromeless u-verticalAlignMiddle" href="//facebook.com/AirbnbTech" title="Visit “The Airbnb Tech Blog” on Facebook" aria-label="Visit “The Airbnb Tech Blog” on Facebook" rel="me" target="_blank"><span class="button-defaultState"><span class="svgIcon svgIcon--facebookFilled svgIcon--25px"><svg class="svgIcon-use" width="25" height="25" ><path d="M21 12.646C21 7.65 16.97 3.6 12 3.6s-9 4.05-9 9.046a9.026 9.026 0 007.59 8.924v-6.376H8.395V12.64h2.193v-1.88c0-2.186 1.328-3.375 3.267-3.375.93 0 1.728.07 1.96.1V9.77H14.47c-1.055 0-1.26.503-1.26 1.242v1.63h2.517l-.33 2.554H13.21V21.6c4.398-.597 7.79-4.373 7.79-8.954"/></svg></span></span></a><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/airbnb-engineering" data-action-source="pub_header----53c7c27702d5----------------------follow_pub" data-collection-id="53c7c27702d5"><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="13b03f2c2cca" data-index="0"><div class="u-lineHeightBase postItem u-marginRight3"><a href="https://medium.com/airbnb-engineering/improving-search-ranking-for-maps-13b03f2c2cca?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://medium.com/airbnb-engineering/improving-search-ranking-for-maps-13b03f2c2cca?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("https://cdn-images-1.medium.com/max/2000/0*DO7m1JZFPSvVRlBG"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Improving Search Ranking for Maps</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/airbnb-engineering/improving-search-ranking-for-maps-13b03f2c2cca?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="13b03f2c2cca"><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">Improving Search Ranking for Maps</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">How Airbnb is adapting ranking for our map interface.</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/@malay-haldar" data-action="show-user-card" data-action-value="3e388881a6bd" data-action-type="hover" data-user-id="3e388881a6bd" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*ZjSdfj1GMj5YQjyhbnin-A.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Malay Haldar"></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/@malay-haldar" data-action="show-user-card" data-action-value="3e388881a6bd" data-action-type="hover" data-user-id="3e388881a6bd" dir="auto">Malay Haldar</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-12-18T18:02:37.371Z">Dec 18, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 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="d5c2fa81a119" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://medium.com/airbnb-engineering/airbnb-at-kdd-2024-d5c2fa81a119?source=collection_home---4------1-----------------------" data-action="open-post" data-action-value="https://medium.com/airbnb-engineering/airbnb-at-kdd-2024-d5c2fa81a119?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("https://cdn-images-1.medium.com/max/800/0*JnSzLDm3Uh2hY6c2"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Airbnb at KDD 2024</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/airbnb-engineering/airbnb-at-kdd-2024-d5c2fa81a119?source=collection_home---4------1-----------------------" data-action-source="collection_home---4------1-----------------------" data-post-id="d5c2fa81a119"><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">Airbnb at KDD 2024</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">Airbnb had a large presence at the 2024 KDD conference hosted in Barcelona, Spain. Our Data Scientist and Engineers presented on topics…</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/@huiji.gao" data-action="show-user-card" data-action-value="a369b17211d6" data-action-type="hover" data-user-id="a369b17211d6" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*QJBw9p2GFxG32ybruPxGMQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Huiji Gao"></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/@huiji.gao" data-action="show-user-card" data-action-value="a369b17211d6" data-action-type="hover" data-user-id="a369b17211d6" dir="auto">Huiji Gao</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-12-17T18:02:43.590Z">Dec 17, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="13 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="8f06543b38d5" data-index="2"><div class="u-lineHeightBase postItem"><a href="https://medium.com/airbnb-engineering/my-journey-to-airbnb-vijaya-kaza-8f06543b38d5?source=collection_home---4------2-----------------------" data-action="open-post" data-action-value="https://medium.com/airbnb-engineering/my-journey-to-airbnb-vijaya-kaza-8f06543b38d5?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("https://cdn-images-1.medium.com/max/800/1*FfdFpfjGZODh7ltZ2W2Mrg.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">My Journey To Airbnb | Vijaya Kaza</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/airbnb-engineering/my-journey-to-airbnb-vijaya-kaza-8f06543b38d5?source=collection_home---4------2-----------------------" data-action-source="collection_home---4------2-----------------------" data-post-id="8f06543b38d5"><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">My Journey To Airbnb | Vijaya Kaza</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">Vijaya Kaza is the Chief Security Officer and Head of Engineering for Trust and Safety at Airbnb. She leads teams responsible 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/@lauren.mackevich" data-action="show-user-card" data-action-value="ae9de0d76057" data-action-type="hover" data-user-id="ae9de0d76057" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*-imhApAGWwgM89i1.jpg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Lauren Mackevich"></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/@lauren.mackevich" data-action="show-user-card" data-action-value="ae9de0d76057" data-action-type="hover" data-user-id="ae9de0d76057" dir="auto">Lauren Mackevich</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-12-05T18:36:44.453Z">Dec 5, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 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="c88aa2bb9399" data-index="3"><div class="u-lineHeightBase postItem"><a href="https://medium.com/airbnb-engineering/from-data-to-insights-segmenting-airbnbs-supply-c88aa2bb9399?source=collection_home---4------3-----------------------" data-action="open-post" data-action-value="https://medium.com/airbnb-engineering/from-data-to-insights-segmenting-airbnbs-supply-c88aa2bb9399?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("https://cdn-images-1.medium.com/max/800/1*Lqx5Zg187zZY1UewaG7Q7Q.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">From Data to Insights: Segmenting Airbnb’s Supply</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/airbnb-engineering/from-data-to-insights-segmenting-airbnbs-supply-c88aa2bb9399?source=collection_home---4------3-----------------------" data-action-source="collection_home---4------3-----------------------" data-post-id="c88aa2bb9399"><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">From Data to Insights: Segmenting Airbnb’s Supply</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">How Airbnb uses data-driven segmentation to understand supply availability patterns.</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/@alexsalama" data-action="show-user-card" data-action-value="7cade6b6b883" data-action-type="hover" data-user-id="7cade6b6b883" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*5OPMExJpPpXSFqX-" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Alexandre Salama"></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/@alexsalama" data-action="show-user-card" data-action-value="7cade6b6b883" data-action-type="hover" data-user-id="7cade6b6b883" dir="auto">Alexandre Salama</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-25T18:02:21.764Z">Nov 25, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="9 min read"></span></div></div></div></div></div></div></div></section></div><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"><header class="heading heading--borderedBottom u-fontSize18 u-contentSansThin" ><div class="u-clearfix"><div class="heading-content u-floatLeft"><span class="heading-title heading-title--dark heading-title--lineHeightTight u-fontSize18 u-contentSansThin">Open Source</span></div></div></header><div class="row u-marginTop30 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------0-----------------------" data-post-id="84425d66ee11" data-index="0"><div class="u-lineHeightBase postItem"><a href="https://medium.com/airbnb-engineering/apache-flink-on-kubernetes-84425d66ee11?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://medium.com/airbnb-engineering/apache-flink-on-kubernetes-84425d66ee11?source=collection_home---4------0-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*doLL9u-uICR6OPtdXYE4sQ.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Apache Flink® on Kubernetes</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/airbnb-engineering/apache-flink-on-kubernetes-84425d66ee11?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="84425d66ee11"><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">Apache Flink® on Kubernetes</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">Airbnb’s Use of A New Flink platform evolved from Apache Hadoop® Yarn</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/@zhangran608" data-action="show-user-card" data-action-value="e6c8d959ca1b" data-action-type="hover" data-user-id="e6c8d959ca1b" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*gL_TwwVXW9ojAt-6TtpsQw.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Ran Zhang"></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/@zhangran608" data-action="show-user-card" data-action-value="e6c8d959ca1b" data-action-type="hover" data-user-id="e6c8d959ca1b" dir="auto">Ran Zhang</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-07-31T17:04:52.286Z">Jul 31, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="10 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------1-----------------------" data-post-id="d9c4dba859e8" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://medium.com/airbnb-engineering/chronon-airbnbs-ml-feature-platform-is-now-open-source-d9c4dba859e8?source=collection_home---4------1-----------------------" data-action="open-post" data-action-value="https://medium.com/airbnb-engineering/chronon-airbnbs-ml-feature-platform-is-now-open-source-d9c4dba859e8?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("https://cdn-images-1.medium.com/max/800/1*KNHSmM_Zx6RuR8XDNSuEwA.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Chronon, Airbnb’s ML Feature Platform, Is Now Open Source</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/airbnb-engineering/chronon-airbnbs-ml-feature-platform-is-now-open-source-d9c4dba859e8?source=collection_home---4------1-----------------------" data-action-source="collection_home---4------1-----------------------" data-post-id="d9c4dba859e8"><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">Chronon, Airbnb’s ML Feature Platform, Is Now Open Source</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">A feature platform that offers observability and management tools, allows ML practitioners to use a variety of data sources, while handling…</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/@vzanoyan" data-action="show-user-card" data-action-value="d0afc8bb6b1e" data-action-type="hover" data-user-id="d0afc8bb6b1e" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*lDfh0gx9YIYdQH3HfEekNw.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Varant Zanoyan"></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/@vzanoyan" data-action="show-user-card" data-action-value="d0afc8bb6b1e" data-action-type="hover" data-user-id="d0afc8bb6b1e" dir="auto">Varant Zanoyan</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-04-08T17:18:18.882Z">Apr 8, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="9 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="dc169230bd12" data-index="2"><div class="u-lineHeightBase postItem"><a href="https://medium.com/airbnb-engineering/airbnbs-trip-to-linaria-dc169230bd12?source=collection_home---4------2-----------------------" data-action="open-post" data-action-value="https://medium.com/airbnb-engineering/airbnbs-trip-to-linaria-dc169230bd12?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("https://cdn-images-1.medium.com/max/800/1*-qT4pQIPIsxHBZj22sQtag.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Airbnb’s Trip to Linaria</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/airbnb-engineering/airbnbs-trip-to-linaria-dc169230bd12?source=collection_home---4------2-----------------------" data-action-source="collection_home---4------2-----------------------" data-post-id="dc169230bd12"><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">Airbnb’s Trip to Linaria</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">Learn how Linaria, Airbnb’s newest choice for web styling, improved both developer experience and web performance</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/@lencioni" data-action="show-user-card" data-action-value="e52389684329" data-action-type="hover" data-user-id="e52389684329" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*nyq2SumpMu-eBQiy95M8ww.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Joe Lencioni"></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/@lencioni" data-action="show-user-card" data-action-value="e52389684329" data-action-type="hover" data-user-id="e52389684329" dir="auto">Joe Lencioni</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2022-06-16T17:41:48.753Z">Jun 16, 2022</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="11 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop30 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------3-----------------------" data-post-id="d79ae3afa132" data-index="3"><div class="u-lineHeightBase postItem"><a href="https://medium.com/airbnb-engineering/dynamic-kubernetes-cluster-scaling-at-airbnb-d79ae3afa132?source=collection_home---4------3-----------------------" data-action="open-post" data-action-value="https://medium.com/airbnb-engineering/dynamic-kubernetes-cluster-scaling-at-airbnb-d79ae3afa132?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("https://cdn-images-1.medium.com/max/800/1*Elojmgc7Y06tItOaLdB0Cw.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Dynamic Kubernetes Cluster Scaling at Airbnb</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/airbnb-engineering/dynamic-kubernetes-cluster-scaling-at-airbnb-d79ae3afa132?source=collection_home---4------3-----------------------" data-action-source="collection_home---4------3-----------------------" data-post-id="d79ae3afa132"><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">Dynamic Kubernetes Cluster Scaling at Airbnb</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">Authors: Evan Sheng, David Morrison</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/@drmorr-airbnb" data-action="show-user-card" data-action-value="d50bc920fc8f" data-action-type="hover" data-user-id="d50bc920fc8f" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*e-69iB7-RczIzZUB" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of David Morrison"></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/@drmorr-airbnb" data-action="show-user-card" data-action-value="d50bc920fc8f" data-action-type="hover" data-user-id="d50bc920fc8f" dir="auto">David Morrison</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2022-05-23T17:35:24.292Z">May 23, 2022</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="10 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------4-----------------------" data-post-id="b351ab739d3f" data-index="4"><div class="u-lineHeightBase postItem"><a href="https://medium.com/airbnb-engineering/the-past-present-and-future-of-react-dates-b351ab739d3f?source=collection_home---4------4-----------------------" data-action="open-post" data-action-value="https://medium.com/airbnb-engineering/the-past-present-and-future-of-react-dates-b351ab739d3f?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("https://cdn-images-1.medium.com/max/800/1*VymqCVttV2_VOqmmApgakw.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">The Past, Present, and Future of react-dates</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/airbnb-engineering/the-past-present-and-future-of-react-dates-b351ab739d3f?source=collection_home---4------4-----------------------" data-action-source="collection_home---4------4-----------------------" data-post-id="b351ab739d3f"><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">The Past, Present, and Future of react-dates</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">In 2016, Airbnb released react-dates, a React date picker component library. The project has amassed more than 11,000 stars. GitHub also…</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/@backwardok" data-action="show-user-card" data-action-value="23561a2a5df3" data-action-type="hover" data-user-id="23561a2a5df3" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*GggrPYwUfczC4UTKuAuopg.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Diane Ko (she/her)"></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/@backwardok" data-action="show-user-card" data-action-value="23561a2a5df3" data-action-type="hover" data-user-id="23561a2a5df3" dir="auto">Diane Ko (she/her)</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2022-01-21T17:45:50.218Z">Jan 21, 2022</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="1 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="f6580010ae0c" data-index="5"><div class="u-lineHeightBase postItem"><a href="https://medium.com/airbnb-engineering/meet-ottr-a-serverless-public-key-infrastructure-framework-f6580010ae0c?source=collection_home---4------5-----------------------" data-action="open-post" data-action-value="https://medium.com/airbnb-engineering/meet-ottr-a-serverless-public-key-infrastructure-framework-f6580010ae0c?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("https://cdn-images-1.medium.com/max/800/1*6C4m508jFNo-FtFNIK1acw.png"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Meet Ottr: A Serverless Public Key Infrastructure Framework</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/airbnb-engineering/meet-ottr-a-serverless-public-key-infrastructure-framework-f6580010ae0c?source=collection_home---4------5-----------------------" data-action-source="collection_home---4------5-----------------------" data-post-id="f6580010ae0c"><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">Meet Ottr: A Serverless Public Key Infrastructure Framework</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">Ottr is a serverless Public Key Infrastructure framework that handles end-to-end certificate rotations without the use of an agent. The…</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/@yangkenneth" data-action="show-user-card" data-action-value="1528225a7d7a" data-action-type="hover" data-user-id="1528225a7d7a" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*EUeMh5oZABG-bJ5tYB0lTQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Kenneth Yang"></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/@yangkenneth" data-action="show-user-card" data-action-value="1528225a7d7a" data-action-type="hover" data-user-id="1528225a7d7a" dir="auto">Kenneth Yang</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2021-10-26T18:09:18.922Z">Oct 26, 2021</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="12 min read"></span></div></div></div></div></div></div></div></section></div></div><style class="js-collectionStyle"> .u-accentColor--borderLight {border-color: #30969A !important;} .u-accentColor--borderNormal {border-color: #30969A !important;} .u-accentColor--borderDark {border-color: #338083 !important;} .u-accentColor--iconLight .svgIcon,.u-accentColor--iconLight.svgIcon {fill: #30969A !important;} .u-accentColor--iconNormal .svgIcon,.u-accentColor--iconNormal.svgIcon {fill: #30969A !important;} .u-accentColor--iconDark .svgIcon,.u-accentColor--iconDark.svgIcon {fill: #338083 !important;} .u-accentColor--textNormal {color: #338083 !important;} .u-accentColor--hoverTextNormal:hover {color: #338083 !important;} .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #337477 !important;} .u-accentColor--textDark {color: #337477 !important;} .u-accentColor--backgroundLight {background-color: #30969A !important;} .u-accentColor--backgroundNormal {background-color: #30969A !important;} .u-accentColor--backgroundDark {background-color: #338083 !important;} .u-accentColor--buttonDark {border-color: #338083 !important; color: #337477 !important;} .u-accentColor--buttonDark:hover {border-color: #337477 !important;} .u-accentColor--buttonDark .icon:before,.u-accentColor--buttonDark .svgIcon{color: #338083 !important; fill: #338083 !important;} .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #30969A !important; color: #338083 !important;} .u-accentColor--buttonNormal:hover {border-color: #338083 !important;} .u-accentColor--buttonNormal .icon:before,.u-accentColor--buttonNormal .svgIcon{color: #30969A !important; fill: #30969A !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: #338083 !important; border-color: #338083 !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: #30969A !important; border-color: #30969A !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: #338083 !important;}.u-tintBgColor {background-color: rgba(0, 126, 130, 1) !important;}.u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(0, 126, 130, 1) 0%, rgba(0, 126, 130, 0) 100%) !important;}.u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(0, 126, 130, 0) 0%, rgba(0, 126, 130, 1) 100%) !important;} .u-tintSpectrum .u-baseColor--borderLight {border-color: #95C5C7 !important;} .u-tintSpectrum .u-baseColor--borderNormal {border-color: #BDDFE0 !important;} .u-tintSpectrum .u-baseColor--borderDark {border-color: #E2F7F7 !important;} .u-tintSpectrum .u-baseColor--iconLight .svgIcon,.u-tintSpectrum .u-baseColor--iconLight.svgIcon {fill: #95C5C7 !important;} .u-tintSpectrum .u-baseColor--iconNormal .svgIcon,.u-tintSpectrum .u-baseColor--iconNormal.svgIcon {fill: #BDDFE0 !important;} .u-tintSpectrum .u-baseColor--iconDark .svgIcon,.u-tintSpectrum .u-baseColor--iconDark.svgIcon {fill: #E2F7F7 !important;} .u-tintSpectrum .u-baseColor--textNormal {color: #BDDFE0 !important;} .u-tintSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: #F4FFFF !important;} .u-tintSpectrum .u-baseColor--textDark {color: #F4FFFF !important;} .u-tintSpectrum .u-baseColor--textDarker {color: #F4FFFF !important;} .u-tintSpectrum .u-baseColor--backgroundLight {background-color: #95C5C7 !important;} .u-tintSpectrum .u-baseColor--backgroundNormal {background-color: #BDDFE0 !important;} .u-tintSpectrum .u-baseColor--backgroundDark {background-color: #E2F7F7 !important;} .u-tintSpectrum .u-baseColor--buttonLight {border-color: #95C5C7 !important; color: #95C5C7 !important;} .u-tintSpectrum .u-baseColor--buttonLight:hover {border-color: #95C5C7 !important;} .u-tintSpectrum .u-baseColor--buttonLight .icon:before,.u-tintSpectrum .u-baseColor--buttonLight .svgIcon {color: #95C5C7 !important; fill: #95C5C7 !important;} .u-tintSpectrum .u-baseColor--buttonDark {border-color: #E2F7F7 !important; color: #F4FFFF !important;} .u-tintSpectrum .u-baseColor--buttonDark:hover {border-color: #F4FFFF !important;} .u-tintSpectrum .u-baseColor--buttonDark .icon:before,.u-tintSpectrum .u-baseColor--buttonDark .svgIcon {color: #E2F7F7 !important; fill: #E2F7F7 !important;} .u-tintSpectrum .u-baseColor--buttonNormal {border-color: #BDDFE0 !important; color: #BDDFE0 !important;} .u-tintSpectrum .u-baseColor--buttonNormal:hover {border-color: #E2F7F7 !important;} .u-tintSpectrum .u-baseColor--buttonNormal .icon:before,.u-tintSpectrum .u-baseColor--buttonNormal .svgIcon {color: #BDDFE0 !important; fill: #BDDFE0 !important;} .u-tintSpectrum .u-baseColor--buttonDark.button--filled,.u-tintSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: #E2F7F7 !important; border-color: #E2F7F7 !important; color: rgba(0, 126, 130, 1) !important; fill: rgba(0, 126, 130, 1) !important;} .u-tintSpectrum .u-baseColor--buttonNormal.button--filled,.u-tintSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: #BDDFE0 !important; border-color: #BDDFE0 !important; color: rgba(0, 126, 130, 1) !important; fill: rgba(0, 126, 130, 1) !important;} .u-tintSpectrum .u-baseColor--link {color: #BDDFE0 !important;} .u-tintSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: #F4FFFF !important;} .u-tintSpectrum .u-baseColor--link.link--darken:hover,.u-tintSpectrum .u-baseColor--link.link--darken:focus,.u-tintSpectrum .u-baseColor--link.link--darken:active {color: #F4FFFF !important;} .u-tintSpectrum .u-baseColor--link.link--dark {color: #F4FFFF !important;} .u-tintSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-tintSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-tintSpectrum .u-baseColor--link.link--dark.link--darken:active {color: #F4FFFF !important;} .u-tintSpectrum .u-baseColor--link.link--darker {color: #F4FFFF !important;} .u-tintSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: #95C5C7;} .u-tintSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: #95C5C7;} .u-tintSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: #95C5C7;} .u-tintSpectrum .ui-h1,.u-tintSpectrum .ui-h2,.u-tintSpectrum .ui-h3,.u-tintSpectrum .ui-h4,.u-tintSpectrum .ui-brand1,.u-tintSpectrum .ui-brand2,.u-tintSpectrum .ui-captionStrong {color: #F4FFFF !important; fill: #F4FFFF !important;} .u-tintSpectrum .ui-body,.u-tintSpectrum .ui-caps {color: #F4FFFF !important; fill: #F4FFFF !important;} .u-tintSpectrum .ui-summary,.u-tintSpectrum .ui-caption {color: #95C5C7 !important; fill: #95C5C7 !important;} .u-tintSpectrum .u-accentColor--borderLight {border-color: #95C5C7 !important;} .u-tintSpectrum .u-accentColor--borderNormal {border-color: #BDDFE0 !important;} .u-tintSpectrum .u-accentColor--borderDark {border-color: #E2F7F7 !important;} .u-tintSpectrum .u-accentColor--iconLight .svgIcon,.u-tintSpectrum .u-accentColor--iconLight.svgIcon {fill: #95C5C7 !important;} .u-tintSpectrum .u-accentColor--iconNormal .svgIcon,.u-tintSpectrum .u-accentColor--iconNormal.svgIcon {fill: #BDDFE0 !important;} .u-tintSpectrum .u-accentColor--iconDark .svgIcon,.u-tintSpectrum .u-accentColor--iconDark.svgIcon {fill: #E2F7F7 !important;} .u-tintSpectrum .u-accentColor--textNormal {color: #BDDFE0 !important;} .u-tintSpectrum .u-accentColor--hoverTextNormal:hover {color: #BDDFE0 !important;} .u-tintSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #F4FFFF !important;} .u-tintSpectrum .u-accentColor--textDark {color: #F4FFFF !important;} .u-tintSpectrum .u-accentColor--backgroundLight {background-color: #95C5C7 !important;} .u-tintSpectrum .u-accentColor--backgroundNormal {background-color: #BDDFE0 !important;} .u-tintSpectrum .u-accentColor--backgroundDark {background-color: #E2F7F7 !important;} .u-tintSpectrum .u-accentColor--buttonDark {border-color: #E2F7F7 !important; color: #F4FFFF !important;} .u-tintSpectrum .u-accentColor--buttonDark:hover {border-color: #F4FFFF !important;} .u-tintSpectrum .u-accentColor--buttonDark .icon:before,.u-tintSpectrum .u-accentColor--buttonDark .svgIcon{color: #E2F7F7 !important; fill: #E2F7F7 !important;} .u-tintSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #BDDFE0 !important; color: #BDDFE0 !important;} .u-tintSpectrum .u-accentColor--buttonNormal:hover {border-color: #E2F7F7 !important;} .u-tintSpectrum .u-accentColor--buttonNormal .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal .svgIcon{color: #BDDFE0 !important; fill: #BDDFE0 !important;} .u-tintSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(0, 126, 130, 1) !important; fill: rgba(0, 126, 130, 1) !important;} .u-tintSpectrum .u-accentColor--buttonDark.button--filled,.u-tintSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-tintSpectrum .u-accentColor--fillWhenActive.is-active {background-color: #E2F7F7 !important; border-color: #E2F7F7 !important; color: rgba(0, 126, 130, 1) !important; fill: rgba(0, 126, 130, 1) !important;} .u-tintSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-tintSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: #BDDFE0 !important; border-color: #BDDFE0 !important; color: rgba(0, 126, 130, 1) !important; fill: rgba(0, 126, 130, 1) !important;} .u-tintSpectrum .postArticle.is-withAccentColors .markup--user,.u-tintSpectrum .postArticle.is-withAccentColors .markup--query {color: #BDDFE0 !important;} .u-accentColor--highlightFaint {background-color: rgba(223, 246, 247, 1) !important;} .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(170, 239, 241, 1) !important;} .postArticle.is-withAccentColors .markup--quote.is-other {background-color: rgba(223, 246, 247, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(223, 246, 247, 1), rgba(223, 246, 247, 1));} .postArticle.is-withAccentColors .markup--quote.is-me {background-color: rgba(195, 242, 244, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(195, 242, 244, 1), rgba(195, 242, 244, 1));} .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: rgba(170, 239, 241, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(170, 239, 241, 1), rgba(170, 239, 241, 1));} .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: rgba(170, 239, 241, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(170, 239, 241, 1), rgba(170, 239, 241, 1));} .postArticle.is-withAccentColors .markup--highlight {background-color: rgba(170, 239, 241, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(170, 239, 241, 1), rgba(170, 239, 241, 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/airbnb-engineering/about" title="About The Airbnb Tech Blog" aria-label="About The Airbnb Tech Blog">About The Airbnb Tech Blog</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/airbnb-engineering/latest" title="Latest Stories for The Airbnb Tech Blog" aria-label="Latest Stories for The Airbnb Tech Blog">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/airbnb-engineering/archive" title="Archive for The Airbnb Tech Blog" aria-label="Archive for The Airbnb Tech Blog">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":"20250225-1553-root","currentUser":{"userId":"lo_e3fc9cafb3a0","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.HNmQDLsNs0ksIHs30XbCOQ.12.js","common-async":"https://cdn-static-1.medium.com/_/fp/gen-js/main-common-async.bundle.hik58FldJQxSw22GVSWNSQ.12.js","hightower":"https://cdn-static-1.medium.com/_/fp/gen-js/main-hightower.bundle.vdVcfwPR2OYNgQu2mBA03Q.12.js","home-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-home-screens.bundle.nKLOt9PoPIFr33oKLSB3rw.12.js","misc-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-misc-screens.bundle.wb9fS_QTEZpdpsRAmp8Bwg.12.js","notes":"https://cdn-static-1.medium.com/_/fp/gen-js/main-notes.bundle.2Zs0zdgXNvVBLohrVj7hjw.12.js","payments":"https://cdn-static-1.medium.com/_/fp/gen-js/main-payments.bundle.qC3mu0MVgq25oTbUhule_g.12.js","posters":"https://cdn-static-1.medium.com/_/fp/gen-js/main-posters.bundle.cmNk58aep6xMjjBgaoE0YQ.12.js","power-readers":"https://cdn-static-1.medium.com/_/fp/gen-js/main-power-readers.bundle.qQMd1vEweBHPFDE9wcJAHA.12.js","pubs":"https://cdn-static-1.medium.com/_/fp/gen-js/main-pubs.bundle._QgkeHOIFklhIX6u0hsqYA.12.js","stats":"https://cdn-static-1.medium.com/_/fp/gen-js/main-stats.bundle.tIYaapQW2ilDMbs3tQFf4w.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":"1740504093148:ad088f517e42","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_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_email_experiment":"experiment","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_boost_nia_v01":true,"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_cancellation_discount_v1_email":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_hybrid_ranking_model":"experiment","enable_iceland_forced_android":true,"enable_import":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_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_mobile_plans_branding":"control","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_plans_page_branding_v2":"group_1","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_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_publication_hierarchy_v2_web_multivariate":"control","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_sms_verification_for_publish":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_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,"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_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.HNmQDLsNs0ksIHs30XbCOQ.12.js" async></script><script>// <. Making web since the 90s. he/him dad in Minnesota.","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"optInToIceland":true,"subdomainCreatedAt":1609864556831,"hasCompletedProfile":false,"userDismissableFlags":[29,12,8,21,3,2,18,1],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"d50bc920fc8f":{"userId":"d50bc920fc8f","name":"David Morrison","username":"drmorr-airbnb","createdAt":1653318281270,"imageId":"0*e-69iB7-RczIzZUB","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[2,33],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"23561a2a5df3":{"userId":"23561a2a5df3","name":"Diane Ko (she/her)","username":"backwardok","createdAt":1457107623404,"imageId":"1*GggrPYwUfczC4UTKuAuopg.png","backgroundImageId":"","bio":"Frontend engineer. Accessibility advocate. Rabbit owner. Bay Area native. @backwardok@mastodon.online on Mastodon","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[29,12,2,18,1],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"1528225a7d7a":{"userId":"1528225a7d7a","name":"Kenneth Yang","username":"yangkenneth","createdAt":1634146620869,"imageId":"1*EUeMh5oZABG-bJ5tYB0lTQ.jpeg","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedIosApp":1635211011626,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[8,7,21,12,2,18],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"}},"Post":{"13b03f2c2cca":{"id":"13b03f2c2cca","versionId":"dd4fe36bbde4","creatorId":"3e388881a6bd","homeCollectionId":"53c7c27702d5","title":"Improving Search Ranking for Maps","detectedLanguage":"en","latestVersion":"dd4fe36bbde4","latestPublishedVersion":"dd4fe36bbde4","hasUnpublishedEdits":false,"latestRev":222,"createdAt":1734376142298,"updatedAt":1734549574964,"acceptedAt":0,"firstPublishedAt":1734544957371,"latestPublishedAt":1734544957371,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"How Airbnb is adapting ranking for our map interface.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*DO7m1JZFPSvVRlBG","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":1200,"strategy":"resample","height":0,"width":0},"wordCount":1061,"imageCount":11,"readingTime":5.30377358490566,"subtitle":"How Airbnb is adapting ranking for our map interface.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":34,"isBookmarked":false,"tags":[{"slug":"machine-learning","name":"Machine Learning","postCount":373235,"metadata":{"postCount":373235,"coverImage":{"id":"0*Gdplbun-MWG-zRfR.gif","originalWidth":800,"originalHeight":424,"isFeatured":true}},"type":"Tag"},{"slug":"artificial-intelligence","name":"Artificial Intelligence","postCount":502584,"metadata":{"postCount":502584,"coverImage":{"id":"1*gAn_BSffVBcwCIR6bDgK1g.jpeg"}},"type":"Tag"},{"slug":"engineering","name":"Engineering","postCount":59017,"metadata":{"postCount":59017,"coverImage":{"id":"1*2hE-C_hBjlXF-HA1sULvww.jpeg","originalWidth":1600,"originalHeight":1000,"isFeatured":true}},"type":"Tag"},{"slug":"data-science","name":"Data Science","postCount":375286,"metadata":{"postCount":375286,"coverImage":{"id":"0*caDeWhhh2VlLxMAU.jpeg","originalWidth":1200,"originalHeight":600,"isFeatured":true}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":2343119,"metadata":{"postCount":2343119,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":3,"links":{"entries":[{"url":"https://careers.airbnb.com/","alts":[],"httpStatus":200},{"url":"https://arxiv.org/pdf/2407.00091","alts":[],"httpStatus":200},{"url":"https://www.airbnb.com/help/article/39","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/hongwei-zhang-86b15624/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/sherrytchen/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/kedar-bellare-3048128a/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/malayhaldar/","alts":[],"httpStatus":999}],"version":"0.3","generatedAt":1734544958640},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":123,"sectionCount":1,"readingList":0,"topics":[]},"coverless":true,"slug":"improving-search-ranking-for-maps","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"improving-search-ranking-for-maps-13b03f2c2cca","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*DO7m1JZFPSvVRlBG","originalWidth":1600,"originalHeight":1200,"isFeatured":true}},{"name":"2762","type":3,"text":"Improving Search Ranking for Maps","markups":[],"alignment":1},{"name":"b93d","type":1,"text":"How Airbnb is adapting ranking for our map interface.","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"How Airbnb is adapting ranking for our map interface."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"53c7c27702d5","isNewsletter":false,"newsletterId":"493bba790fa2","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":6,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"2762","type":3,"text":"Improving Search Ranking for Maps","markups":[]},{"name":"b93d","type":1,"text":"How Airbnb is adapting ranking for our map interface.","markups":[]},{"name":"b6ac","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*DO7m1JZFPSvVRlBG","originalWidth":1600,"originalHeight":1200,"isFeatured":true}},{"name":"2f0e","type":1,"text":"Malay Haldar, Hongwei Zhang, Kedar Bellare Sherry Chen","markups":[{"type":3,"start":0,"end":12,"href":"https://www.linkedin.com/in/malayhaldar/","title":"","rel":"","anchorType":0},{"type":3,"start":14,"end":27,"href":"https://www.linkedin.com/in/hongwei-zhang-86b15624/","title":"","rel":"","anchorType":0},{"type":3,"start":29,"end":42,"href":"https://www.linkedin.com/in/kedar-bellare-3048128a/","title":"","rel":"","anchorType":0},{"type":3,"start":43,"end":54,"href":"https://www.linkedin.com/in/sherrytchen/","title":"","rel":"","anchorType":0}]},{"name":"d1b7","type":1,"text":"Search is the core mechanism that connects guests with Hosts at Airbnb. Results from a guest’s search for listings are displayed through two interfaces: (1) as a list of rectangular cards that contain…","markups":[{"type":2,"start":275,"end":287},{"type":2,"start":352,"end":363}]}],"sections":[{"name":"4be7","startIndex":0}]},"isFullContent":false,"subtitle":"How Airbnb is adapting ranking for our map interface."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"d5c2fa81a119":{"id":"d5c2fa81a119","versionId":"1cc96b98dc2a","creatorId":"a369b17211d6","homeCollectionId":"53c7c27702d5","title":"Airbnb at KDD 2024","detectedLanguage":"en","latestVersion":"1cc96b98dc2a","latestPublishedVersion":"1cc96b98dc2a","hasUnpublishedEdits":false,"latestRev":523,"createdAt":1734397236840,"updatedAt":1734550295869,"acceptedAt":0,"firstPublishedAt":1734458563590,"latestPublishedAt":1734550295869,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Airbnb had a large presence at the 2024 KDD conference hosted in Barcelona, Spain. Our Data Scientist and Engineers presented on topics…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*JnSzLDm3Uh2hY6c2","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":1066,"strategy":"resample","height":0,"width":0},"wordCount":3226,"imageCount":3,"readingTime":12.723584905660378,"subtitle":"Airbnb had a large presence at the 2024 KDD conference hosted in Barcelona, Spain. Our Data Scientist and Engineers presented on topics…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":17,"isBookmarked":false,"tags":[{"slug":"machine-learning","name":"Machine Learning","postCount":373235,"metadata":{"postCount":373235,"coverImage":{"id":"0*Gdplbun-MWG-zRfR.gif","originalWidth":800,"originalHeight":424,"isFeatured":true}},"type":"Tag"},{"slug":"artificial-intelligence","name":"Artificial Intelligence","postCount":502584,"metadata":{"postCount":502584,"coverImage":{"id":"1*gAn_BSffVBcwCIR6bDgK1g.jpeg"}},"type":"Tag"},{"slug":"data-science","name":"Data Science","postCount":375286,"metadata":{"postCount":375286,"coverImage":{"id":"0*caDeWhhh2VlLxMAU.jpeg","originalWidth":1200,"originalHeight":600,"isFeatured":true}},"type":"Tag"},{"slug":"engineering","name":"Engineering","postCount":59017,"metadata":{"postCount":59017,"coverImage":{"id":"1*2hE-C_hBjlXF-HA1sULvww.jpeg","originalWidth":1600,"originalHeight":1000,"isFeatured":true}},"type":"Tag"},{"slug":"deep-learning","name":"Deep Learning","postCount":110170,"metadata":{"postCount":110170,"coverImage":{"id":"1*ysbtpQUBvKM2NkX1X3CS1Q.jpeg","originalWidth":736,"originalHeight":736}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://careers.airbnb.com/","alts":[],"httpStatus":200},{"url":"mailto:huiji.gao@airbnb.com","alts":[],"httpStatus":0},{"url":"mailto:carolina.barcenas@airbnb.com","alts":[],"httpStatus":0},{"url":"mailto:peter.coles@airbnb.com","alts":[],"httpStatus":0},{"url":"mailto:sanjeev.katariya@airbnb.com","alts":[],"httpStatus":0},{"url":"https://airbnb.tech/wp-content/uploads/sites/19/2024/12/Can-Language-Models-Accelerate-Prototyping-for-Non-Language-Data-Classification-Summarization-of-Activity-Logs-as-Text.pdf","alts":[],"httpStatus":200},{"url":"https://airbnb.tech/wp-content/uploads/sites/19/2024/12/Learning-and-Applying-Airbnb-Listing-Embeddings-.pdf","alts":[],"httpStatus":200},{"url":"https://airbnb.tech/wp-content/uploads/sites/19/2024/12/Predicting-Potential-Customer-Support-Needs-and-OptimizingSearch-Ranking.pdf","alts":[],"httpStatus":200},{"url":"https://airbnb.tech/wp-content/uploads/sites/19/2024/12/Understanding-User-Booking-Intent-at-Airbnb.pdf","alts":[],"httpStatus":200},{"url":"https://airbnb.tech/wp-content/uploads/sites/19/2024/12/Understanding-Guest-Preferences-and-Optimizing-.pdf","alts":[],"httpStatus":200},{"url":"https://airbnb.tech/wp-content/uploads/sites/19/2024/12/Understanding-Product-Quality-with-Unstructured-Data.pdf","alts":[],"httpStatus":200},{"url":"https://arxiv.org/abs/2407.07181","alts":[],"httpStatus":200},{"url":"https://arxiv.org/abs/2407.00091","alts":[],"httpStatus":200},{"url":"https://sites.google.com/view/tsmo2024/home?authuser=0","alts":[],"httpStatus":200},{"url":"https://sites.google.com/view/kdd-workshop-2023","alts":[],"httpStatus":200},{"url":"https://kdd.org/","alts":[],"httpStatus":200},{"url":"https://kdd2024.kdd.org/applied-data-science-track-papers","alts":[],"httpStatus":200},{"url":"https://dl.acm.org/doi/10.1145/3637528.3671597","alts":[],"httpStatus":200},{"url":"https://dl.acm.org/doi/10.1145/3637528.3671648","alts":[],"httpStatus":200},{"url":"https://dl.acm.org/doi/10.1145/3637528.3671556","alts":[],"httpStatus":200},{"url":"https://dl.acm.org/doi/pdf/10.1145/3637528.3671556","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1734550297720},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":22,"sectionCount":1,"readingList":0,"topics":[]},"coverless":true,"slug":"airbnb-at-kdd-2024","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"airbnb-at-kdd-2024-d5c2fa81a119","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*JnSzLDm3Uh2hY6c2","originalWidth":1600,"originalHeight":1066,"isFeatured":true}},{"name":"ad43","type":3,"text":"Airbnb at KDD 2024","markups":[],"alignment":1},{"name":"e81e","type":1,"text":"Airbnb had a large presence at the 2024 KDD conference hosted in Barcelona, Spain. Our Data Scientist and Engineers presented…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Airbnb had a large presence at the 2024 KDD conference hosted in Barcelona, Spain. Our Data Scientist and Engineers presented on topics…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"53c7c27702d5","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":"ad43","type":3,"text":"Airbnb at KDD 2024","markups":[]},{"name":"e81e","type":1,"text":"Airbnb had a large presence at the 2024 KDD conference hosted in Barcelona, Spain. Our Data Scientist and Engineers presented on topics like Deep Learning & Search Ranking, Online Experimentation & Measurement, Product Quality & Customer Journey, and Two-sided Marketplaces. This blog post summarizes our contributions to KDD for 2024…","markups":[]}],"sections":[{"name":"c389","startIndex":0}]},"isFullContent":false,"subtitle":"Airbnb had a large presence at the 2024 KDD conference hosted in Barcelona, Spain. Our Data Scientist and Engineers presented on topics…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"8f06543b38d5":{"id":"8f06543b38d5","versionId":"747cde401291","creatorId":"ae9de0d76057","homeCollectionId":"53c7c27702d5","title":"My Journey To Airbnb | Vijaya Kaza","detectedLanguage":"en","latestVersion":"747cde401291","latestPublishedVersion":"747cde401291","hasUnpublishedEdits":false,"latestRev":85,"createdAt":1733423429308,"updatedAt":1733428849668,"acceptedAt":0,"firstPublishedAt":1733423804453,"latestPublishedAt":1733428849668,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Vijaya Kaza is the Chief Security Officer and Head of Engineering for Trust and Safety at Airbnb. She leads teams responsible for…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*FfdFpfjGZODh7ltZ2W2Mrg.jpeg","filter":"","backgroundSize":"","originalWidth":4752,"originalHeight":3168,"strategy":"resample","height":0,"width":0},"wordCount":1134,"imageCount":2,"readingTime":4.662578616352202,"subtitle":"Vijaya Kaza is the Chief Security Officer and Head of Engineering for Trust and Safety at Airbnb. She leads teams responsible for…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":7,"isBookmarked":false,"tags":[{"slug":"engineering","name":"Engineering","postCount":59017,"metadata":{"postCount":59017,"coverImage":{"id":"1*2hE-C_hBjlXF-HA1sULvww.jpeg","originalWidth":1600,"originalHeight":1000,"isFeatured":true}},"type":"Tag"},{"slug":"cybersecurity","name":"Cybersecurity","postCount":221305,"metadata":{"postCount":221305,"coverImage":{"id":"1*hZbW9frO9bppsBMH-t59gw.png","originalWidth":972,"originalHeight":656,"isFeatured":true}},"type":"Tag"},{"slug":"people","name":"People","postCount":43434,"metadata":{"postCount":43434,"coverImage":{"id":"0*d5V9nnO-G6ygysV-.jpg","originalWidth":736,"originalHeight":736,"isFeatured":true}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":2343119,"metadata":{"postCount":2343119,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"},{"slug":"leadership","name":"Leadership","postCount":306067,"metadata":{"postCount":306067,"coverImage":{"id":"1*x3eOBvKInrpkalYofhODIQ.jpeg"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://careers.airbnb.com/","alts":[],"httpStatus":200},{"url":"https://medium.com/airbnb-engineering/commitment-to-craft-e36d5a8efe2a","alts":[{"type":3,"url":"medium://p/e36d5a8efe2a"},{"type":2,"url":"medium://p/e36d5a8efe2a"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/vkaza/","alts":[],"httpStatus":999}],"version":"0.3","generatedAt":1733428850745},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":30,"sectionCount":1,"readingList":0,"topics":[{"topicId":"d4e7f4144ac5","slug":"cybersecurity","createdAt":1493946839810,"deletedAt":0,"image":{"id":"1*JpJUz3WBPiQG5vkJ9WY8rw@2x.jpeg","originalWidth":6000,"originalHeight":4000},"name":"Cybersecurity","description":"Towards a more perfect password.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Cybersecurity News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"my-journey-to-airbnb-vijaya-kaza","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"my-journey-to-airbnb-vijaya-kaza-8f06543b38d5","previewContent":{"bodyModel":{"paragraphs":[{"name":"a513","type":3,"text":"My Journey To Airbnb | Vijaya Kaza","markups":[{"type":1,"start":0,"end":34}],"alignment":1},{"name":"13f1","type":4,"text":"","markups":[],"layout":9,"metadata":{"id":"1*FfdFpfjGZODh7ltZ2W2Mrg.jpeg","originalWidth":4752,"originalHeight":3168}},{"name":"61bb","type":1,"text":"Vijaya Kaza is the Chief Security Officer and Head of Engineering for Trust and Safety at Airbnb…","markups":[{"type":3,"start":0,"end":11,"href":"https://www.linkedin.com/in/vkaza/","title":"","rel":"","anchorType":0},{"type":2,"start":0,"end":96}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Vijaya Kaza is the Chief Security Officer and Head of Engineering for Trust and Safety at Airbnb. She leads teams responsible for…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"53c7c27702d5","isNewsletter":false,"newsletterId":"8ceac1b11ff9","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":6,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"a513","type":3,"text":"My Journey To Airbnb | Vijaya Kaza","markups":[{"type":1,"start":0,"end":34}]},{"name":"13f1","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*FfdFpfjGZODh7ltZ2W2Mrg.jpeg","originalWidth":4752,"originalHeight":3168}},{"name":"61bb","type":1,"text":"Vijaya Kaza is the Chief Security Officer and Head of Engineering for Trust and Safety at Airbnb. She leads teams responsible for developing the technology (Platforms, tools and AI models), to safeguard the Airbnb community, as well as for securing Airbnb’s infrastructure and information assets. She is also the executive…","markups":[{"type":3,"start":0,"end":11,"href":"https://www.linkedin.com/in/vkaza/","title":"","rel":"","anchorType":0},{"type":2,"start":0,"end":369}]}],"sections":[{"name":"57e3","startIndex":0}]},"isFullContent":false,"subtitle":"Vijaya Kaza is the Chief Security Officer and Head of Engineering for Trust and Safety at Airbnb. She leads teams responsible for…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"c88aa2bb9399":{"id":"c88aa2bb9399","versionId":"7b269fd0b297","creatorId":"7cade6b6b883","homeCollectionId":"53c7c27702d5","title":"From Data to Insights: Segmenting Airbnb’s Supply","detectedLanguage":"en","latestVersion":"7b269fd0b297","latestPublishedVersion":"7b269fd0b297","hasUnpublishedEdits":false,"latestRev":126,"createdAt":1732358085526,"updatedAt":1733527712372,"acceptedAt":0,"firstPublishedAt":1732557741764,"latestPublishedAt":1732557741764,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"How Airbnb uses data-driven segmentation to understand supply availability patterns.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*Lqx5Zg187zZY1UewaG7Q7Q.jpeg","filter":"","backgroundSize":"","originalWidth":4200,"originalHeight":2800,"strategy":"resample","height":0,"width":0},"wordCount":1961,"imageCount":14,"readingTime":8.85,"subtitle":"How Airbnb uses data-driven segmentation to understand supply availability patterns.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":74,"isBookmarked":false,"tags":[{"slug":"data-science","name":"Data Science","postCount":375286,"metadata":{"postCount":375286,"coverImage":{"id":"0*caDeWhhh2VlLxMAU.jpeg","originalWidth":1200,"originalHeight":600,"isFeatured":true}},"type":"Tag"},{"slug":"machine-learning","name":"Machine Learning","postCount":373235,"metadata":{"postCount":373235,"coverImage":{"id":"0*Gdplbun-MWG-zRfR.gif","originalWidth":800,"originalHeight":424,"isFeatured":true}},"type":"Tag"},{"slug":"analytics","name":"Analytics","postCount":52985,"metadata":{"postCount":52985,"coverImage":{"id":"1*wtgkVzHWgVMVTKulNDVLyg.jpeg","originalWidth":809,"originalHeight":724,"isFeatured":true}},"type":"Tag"},{"slug":"artificial-intelligence","name":"Artificial Intelligence","postCount":502584,"metadata":{"postCount":502584,"coverImage":{"id":"1*gAn_BSffVBcwCIR6bDgK1g.jpeg"}},"type":"Tag"},{"slug":"data-analysis","name":"Data Analysis","postCount":66364,"metadata":{"postCount":66364,"coverImage":{"id":"0*wmrqUS4tqXwp7f-R","originalWidth":1560,"originalHeight":909,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":9,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/Elbow_method_(clustering)","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Decision_tree_learning","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/K-means_clustering","alts":[],"httpStatus":200},{"url":"https://careers.airbnb.com/","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/RFM_(market_research)","alts":[],"httpStatus":200},{"url":"https://www.airbnb.com/help/article/523","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/alexandre-salama","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/timabraham","alts":[],"httpStatus":999}],"version":"0.3","generatedAt":1732557743217},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":266,"sectionCount":2,"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":"from-data-to-insights-segmenting-airbnbs-supply","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"from-data-to-insights-segmenting-airbnbs-supply-c88aa2bb9399","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*Lqx5Zg187zZY1UewaG7Q7Q.jpeg","originalWidth":4200,"originalHeight":2800,"isFeatured":true}},{"name":"080c","type":3,"text":"From Data to Insights: Segmenting Airbnb’s Supply","markups":[],"alignment":1},{"name":"dc21","type":13,"text":"How Airbnb uses data-driven segmentation to…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"How Airbnb uses data-driven segmentation to understand supply availability patterns."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"53c7c27702d5","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":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"080c","type":3,"text":"From Data to Insights: Segmenting Airbnb’s Supply","markups":[]},{"name":"dc21","type":13,"text":"How Airbnb uses data-driven segmentation to understand supply availability patterns.","markups":[]},{"name":"628a","type":1,"text":"By: Alexandre Salama, Tim Abraham","markups":[{"type":3,"start":4,"end":20,"href":"https://www.linkedin.com/in/alexandre-salama","title":"","rel":"noopener","anchorType":0},{"type":3,"start":22,"end":33,"href":"https://www.linkedin.com/in/timabraham","title":"","rel":"noopener","anchorType":0},{"type":1,"start":0,"end":3}]},{"name":"472d","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*Lqx5Zg187zZY1UewaG7Q7Q.jpeg","originalWidth":4200,"originalHeight":2800,"isFeatured":true}},{"name":"fb4a","type":3,"text":"Introduction","markups":[]},{"name":"ad10","type":1,"text":"At Airbnb, our supply comes from hosts who decide to list their spaces on our platform. Unlike traditional hotels, these spaces are not all interchangeable units in a building that are available to book year-round. Our hosts are people, with different earnings objectives and schedule…","markups":[]}],"sections":[{"name":"2b38","startIndex":0}]},"isFullContent":false,"subtitle":"How Airbnb uses data-driven segmentation to understand supply availability patterns."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"84425d66ee11":{"id":"84425d66ee11","versionId":"ec6aeb4db960","creatorId":"e6c8d959ca1b","homeCollectionId":"53c7c27702d5","title":"Apache Flink® on Kubernetes","detectedLanguage":"en","latestVersion":"ec6aeb4db960","latestPublishedVersion":"ec6aeb4db960","hasUnpublishedEdits":false,"latestRev":254,"createdAt":1722379168169,"updatedAt":1732024326089,"acceptedAt":0,"firstPublishedAt":1722445492286,"latestPublishedAt":1722445492286,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Airbnb’s Use of A New Flink platform evolved from Apache Hadoop® Yarn","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*doLL9u-uICR6OPtdXYE4sQ.jpeg","filter":"","backgroundSize":"","originalWidth":6163,"originalHeight":4109,"strategy":"resample","height":0,"width":0},"wordCount":2161,"imageCount":9,"readingTime":9.354716981132075,"subtitle":"Airbnb’s Use of A New Flink platform evolved from Apache Hadoop® Yarn","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":25,"isBookmarked":false,"tags":[{"slug":"engineering","name":"Engineering","postCount":59017,"metadata":{"postCount":59017,"coverImage":{"id":"1*2hE-C_hBjlXF-HA1sULvww.jpeg","originalWidth":1600,"originalHeight":1000,"isFeatured":true}},"type":"Tag"},{"slug":"open-source","name":"Open Source","postCount":53331,"metadata":{"postCount":53331,"coverImage":{"id":"1*MU8r1brqC9EA5_cGSjmcsg.jpeg","originalWidth":682,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"kubernetes","name":"Kubernetes","postCount":63543,"metadata":{"postCount":63543,"coverImage":{"id":"1*CJhmJf5bLB4E1FxtM2qgkg.png","originalWidth":800,"originalHeight":800,"isFeatured":true}},"type":"Tag"},{"slug":"apache","name":"Apache","postCount":5406,"metadata":{"postCount":5406,"coverImage":{"id":"0*9SALZ72npDyjvz8I","originalWidth":5184,"originalHeight":3456,"isFeatured":true,"unsplashPhotoId":"QC1oHW5JVu4"}},"type":"Tag"},{"slug":"infrastructure","name":"Infrastructure","postCount":15341,"metadata":{"postCount":15341,"coverImage":{"id":"0*UL3sTV2r4p46S2zQ","originalWidth":1493,"originalHeight":1600,"isFeatured":true,"alt":"Logo for FacetController"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":3,"links":{"entries":[{"url":"https://airflow.apache.org/","alts":[],"httpStatus":200},{"url":"https://careers.airbnb.com/","alts":[],"httpStatus":200},{"url":"https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/YARN.html","alts":[],"httpStatus":200},{"url":"https://kubernetes.io/","alts":[],"httpStatus":200},{"url":"https://nightlies.apache.org/flink/flink-docs-stable/","alts":[],"httpStatus":200},{"url":"https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main/","alts":[],"httpStatus":200},{"url":"https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/resource-providers/standalone/kubernetes/","alts":[],"httpStatus":200},{"url":"https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/elastic_scaling/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1722445492881},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":88,"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":"apache-flink-on-kubernetes","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"apache-flink-on-kubernetes-84425d66ee11","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*doLL9u-uICR6OPtdXYE4sQ.jpeg","originalWidth":6163,"originalHeight":4109,"isFeatured":true}},{"name":"c654","type":3,"text":"Apache Flink® on Kubernetes","markups":[{"type":1,"start":0,"end":27}],"alignment":1},{"name":"e165","type":1,"text":"Airbnb’s Use of A New Flink platform evolved from Apache Hadoop® Yarn","markups":[{"type":1,"start":0,"end":69}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Airbnb’s Use of A New Flink platform evolved from Apache Hadoop® Yarn"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"53c7c27702d5","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":6,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"c654","type":3,"text":"Apache Flink® on Kubernetes","markups":[{"type":1,"start":0,"end":27}]},{"name":"e165","type":1,"text":"Airbnb’s Use of A New Flink platform evolved from Apache Hadoop® Yarn","markups":[{"type":1,"start":0,"end":69}]},{"name":"7b34","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*doLL9u-uICR6OPtdXYE4sQ.jpeg","originalWidth":6163,"originalHeight":4109,"isFeatured":true}},{"name":"aa15","type":3,"text":"Introduction","markups":[]},{"name":"23ea","type":1,"text":"At Airbnb, Apache Flink was introduced in 2018 as a supplementary solution for stream processing. It ran alongside Apache Spark™ Streaming for several years before transitioning to become the primary stream processing platform. In this blog post, we…","markups":[{"type":3,"start":11,"end":23,"href":"https://nightlies.apache.org/flink/flink-docs-stable/","title":"","rel":"","anchorType":0},{"type":3,"start":334,"end":345,"href":"https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/YARN.html","title":"","rel":"","anchorType":0},{"type":3,"start":372,"end":382,"href":"https://kubernetes.io/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"36a8","startIndex":0}]},"isFullContent":false,"subtitle":"Airbnb’s Use of A New Flink platform evolved from Apache Hadoop® Yarn"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"d9c4dba859e8":{"id":"d9c4dba859e8","versionId":"69006fa60672","creatorId":"d0afc8bb6b1e","homeCollectionId":"53c7c27702d5","title":"Chronon, Airbnb’s ML Feature Platform, Is Now Open Source","detectedLanguage":"en","latestVersion":"69006fa60672","latestPublishedVersion":"69006fa60672","hasUnpublishedEdits":false,"latestRev":492,"createdAt":1712438945305,"updatedAt":1732839655763,"acceptedAt":0,"firstPublishedAt":1712596698882,"latestPublishedAt":1712611608105,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"A feature platform that offers observability and management tools, allows ML practitioners to use a variety of data sources, while handling…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*KNHSmM_Zx6RuR8XDNSuEwA.jpeg","filter":"","backgroundSize":"","originalWidth":7952,"originalHeight":5304,"strategy":"resample","height":0,"width":0},"wordCount":2178,"imageCount":2,"readingTime":8.602201257861635,"subtitle":"A feature platform that offers observability and management tools, allows ML practitioners to use a variety of data sources, while handling…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":171,"isBookmarked":false,"tags":[{"slug":"machine-learning","name":"Machine Learning","postCount":373235,"metadata":{"postCount":373235,"coverImage":{"id":"0*Gdplbun-MWG-zRfR.gif","originalWidth":800,"originalHeight":424,"isFeatured":true}},"type":"Tag"},{"slug":"data","name":"Data","postCount":136385,"metadata":{"postCount":136385,"coverImage":{"id":"1*CX-BDIgw8kk42l5m4pU11g.png","originalWidth":1024,"originalHeight":1024}},"type":"Tag"},{"slug":"open-source","name":"Open Source","postCount":53331,"metadata":{"postCount":53331,"coverImage":{"id":"1*MU8r1brqC9EA5_cGSjmcsg.jpeg","originalWidth":682,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"ai","name":"AI","postCount":486719,"metadata":{"postCount":486719,"coverImage":{"id":"1*TuWunDWrWKv5fByZnpuV-Q.jpeg","originalWidth":1920,"originalHeight":1080,"isFeatured":true}},"type":"Tag"},{"slug":"data-engineering","name":"Data Engineering","postCount":42890,"metadata":{"postCount":42890,"coverImage":{"id":"0*caDeWhhh2VlLxMAU.jpeg","originalWidth":1200,"originalHeight":600,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":7,"links":{"entries":[{"url":"mailto:sophie.wang@airbnb.com","alts":[],"httpStatus":0},{"url":"mailto:yuli.han@airbnb.com","alts":[],"httpStatus":0},{"url":"mailto:haichun.chen@airbnb.com","alts":[],"httpStatus":0},{"url":"mailto:vamsee.y@airbnb.com","alts":[],"httpStatus":0},{"url":"mailto:hao.cen@airbnb.com","alts":[],"httpStatus":0},{"url":"mailto:cristian.figueroa@airbnb.com","alts":[],"httpStatus":0},{"url":"mailto:haozhen.ding@airbnb.com","alts":[],"httpStatus":0},{"url":"mailto:donghan.zhang@airbnb.com","alts":[],"httpStatus":0},{"url":"mailto:pengyu.hou@airbnb.com","alts":[],"httpStatus":0},{"url":"mailto:yi.li@airbnb.com","alts":[],"httpStatus":0},{"url":"mailto:jack.song@airbnb.com","alts":[],"httpStatus":0},{"url":"mailto:henry.saputra@airbnb.com","alts":[],"httpStatus":0},{"url":"mailto:evgeny.shapiro@airbnb.com","alts":[],"httpStatus":0},{"url":"https://careers.airbnb.com/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/nikhilsimha/","alts":[],"httpStatus":999},{"url":"https://medium.com/airbnb-engineering/chronon-a-declarative-feature-engineering-framework-b7b8ce796e04","alts":[{"type":3,"url":"medium://p/b7b8ce796e04"},{"type":2,"url":"medium://p/b7b8ce796e04"}],"httpStatus":200},{"url":"https://chronon.ai/getting_started/Tutorial.html","alts":[],"httpStatus":200},{"url":"https://www.chronon.ai/getting_started/Tutorial.html","alts":[],"httpStatus":200},{"url":"https://www.chronon.ai","alts":[],"httpStatus":200},{"url":"https://discord.gg/GbmGATNqqP","alts":[],"httpStatus":200},{"url":"https://www.chronon.ai/index.html","alts":[],"httpStatus":200},{"url":"https://github.com/airbnb/chronon","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/vzanoyan/","alts":[],"httpStatus":999},{"url":"http://atul.kale@airbnb.com","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1712611608817},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":530,"sectionCount":1,"readingList":0,"topics":[{"topicId":"1eca0103fff3","slug":"machine-learning","createdAt":1534449726145,"deletedAt":0,"image":{"id":"1*gFJS3amhZEg_z39D5EErVg@2x.png","originalWidth":2800,"originalHeight":1750},"name":"Machine Learning","description":"Teaching the learners.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Machine Learning News and Articles — Medium","type":"Topic"},{"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":"chronon-airbnbs-ml-feature-platform-is-now-open-source","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"chronon-airbnbs-ml-feature-platform-is-now-open-source-d9c4dba859e8","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*KNHSmM_Zx6RuR8XDNSuEwA.jpeg","originalWidth":7952,"originalHeight":5304,"isFeatured":true}},{"name":"dbec","type":3,"text":"Chronon, Airbnb’s ML Feature Platform, Is Now Open Source","markups":[{"type":1,"start":0,"end":57}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"A feature platform that offers observability and management tools, allows ML practitioners to use a variety of data sources, while handling…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"53c7c27702d5","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":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"dbec","type":3,"text":"Chronon, Airbnb’s ML Feature Platform, Is Now Open Source","markups":[{"type":1,"start":0,"end":57}]},{"name":"4656","type":1,"text":"A feature platform that offers observability and management tools, allows ML practitioners to use a variety of data sources, while handling the complexity of data engineering, and provides low latency streaming.","markups":[]},{"name":"f0a2","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*KNHSmM_Zx6RuR8XDNSuEwA.jpeg","originalWidth":7952,"originalHeight":5304,"isFeatured":true}},{"name":"38c5","type":1,"text":"By: Varant Zanoyan, Nikhil Simha Raprolu","markups":[{"type":3,"start":4,"end":18,"href":"https://www.linkedin.com/in/vzanoyan/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":20,"end":40,"href":"https://www.linkedin.com/in/nikhilsimha/","title":"","rel":"noopener","anchorType":0}]}],"sections":[{"name":"50bd","startIndex":0}]},"isFullContent":false,"subtitle":"A feature platform that offers observability and management tools, allows ML practitioners to use a variety of data sources, while handling…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"dc169230bd12":{"id":"dc169230bd12","versionId":"5a62db7e743d","creatorId":"e52389684329","homeCollectionId":"53c7c27702d5","title":"Airbnb’s Trip to Linaria","detectedLanguage":"en","latestVersion":"5a62db7e743d","latestPublishedVersion":"5a62db7e743d","hasUnpublishedEdits":false,"latestRev":385,"createdAt":1655231569120,"updatedAt":1655401470541,"acceptedAt":0,"firstPublishedAt":1655401308753,"latestPublishedAt":1655401308753,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Learn how Linaria, Airbnb’s newest choice for web styling, improved both developer experience and web performance","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*-qT4pQIPIsxHBZj22sQtag.jpeg","filter":"","backgroundSize":"","originalWidth":4000,"originalHeight":2670,"strategy":"resample","height":0,"width":0},"wordCount":2584,"imageCount":3,"readingTime":10.300943396226415,"subtitle":"Learn how Linaria, Airbnb’s newest choice for web styling, improved both developer experience and web performance","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":74,"isBookmarked":false,"tags":[{"slug":"css","name":"CSS","postCount":44378,"metadata":{"postCount":44378,"coverImage":{"id":"1*W_V5POVf2I3FkalbBhWzOw.png","originalWidth":912,"originalHeight":547,"isFeatured":true,"alt":"CSS only Click-handlers You Might not be Using, but you should"}},"type":"Tag"},{"slug":"web-performance","name":"Web Performance","postCount":2065,"metadata":{"postCount":2065,"coverImage":{"id":"0*k9myT_-TYIPTxlPv","originalWidth":6000,"originalHeight":4000,"isFeatured":true,"unsplashPhotoId":"gTs2w7bu3Qo"}},"type":"Tag"},{"slug":"css-in-js","name":"Css In Js","postCount":441,"metadata":{"postCount":441,"coverImage":{"id":"1*HPimhd4L3AW2FQRNdsTqlA.png","originalWidth":1094,"originalHeight":416,"isFeatured":true}},"type":"Tag"},{"slug":"atomic-css","name":"Atomic Css","postCount":29,"metadata":{"postCount":29,"coverImage":{"id":"0*DpLHN5gI6x2orOMa","originalWidth":4554,"originalHeight":3036,"isFeatured":true,"unsplashPhotoId":"R0xwsuG8EsI"}},"type":"Tag"},{"slug":"open-source","name":"Open Source","postCount":53331,"metadata":{"postCount":53331,"coverImage":{"id":"1*MU8r1brqC9EA5_cGSjmcsg.jpeg","originalWidth":682,"originalHeight":1024,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":6,"links":{"entries":[{"url":"https://browserify.org/","alts":[],"httpStatus":200},{"url":"https://emotion.sh/docs/introduction","alts":[],"httpStatus":200},{"url":"https://getbootstrap.com/","alts":[],"httpStatus":200},{"url":"https://www.khanacademy.org/","alts":[],"httpStatus":200},{"url":"https://reactjs.org/docs/profiler.html","alts":[],"httpStatus":200},{"url":"https://reactjs.org/docs/higher-order-components.html","alts":[],"httpStatus":200},{"url":"https://www.speedcurve.com/","alts":[],"httpStatus":200},{"url":"https://xkcd.com/927/","alts":[],"httpStatus":200},{"url":"https://rubyonrails.org/","alts":[],"httpStatus":200},{"url":"https://www.callstack.com/","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Decision_fatigue","alts":[],"httpStatus":200},{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#tagged_templates","alts":[],"httpStatus":200},{"url":"https://sass-lang.com/","alts":[],"httpStatus":200},{"url":"https://web.dev/tbt/","alts":[],"httpStatus":200},{"url":"https://web.dev/performance-scoring/","alts":[],"httpStatus":200},{"url":"https://web.dev/fcp/","alts":[],"httpStatus":200},{"url":"https://www.youtube.com/watch?v=fHQ1WSx41CA","alts":[{"type":3,"url":"vnd.youtube://www.youtube.com/watch?v=fHQ1WSx41CA&feature=applinks"},{"type":2,"url":"vnd.youtube://www.youtube.com/watch?v=fHQ1WSx41CA&feature=applinks"}],"httpStatus":200},{"url":"https://github.com/css-modules/css-modules","alts":[],"httpStatus":200},{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity","alts":[],"httpStatus":200},{"url":"http://getbem.com/","alts":[],"httpStatus":200},{"url":"https://github.com/airbnb/react-with-styles","alts":[],"httpStatus":200},{"url":"https://github.com/prettier/prettier/blob/d13feed42b6478710bebbcd3225ab6f203a914c1/src/language-js/embed.js#L90-L121","alts":[],"httpStatus":200},{"url":"https://github.com/khan/aphrodite","alts":[],"httpStatus":200},{"url":"https://github.com/rails/sprockets","alts":[],"httpStatus":200},{"url":"https://github.com/seek-oss/treat","alts":[],"httpStatus":200},{"url":"https://github.com/callstack/linaria#contributors","alts":[],"httpStatus":200},{"url":"https://github.com/callstack/linaria","alts":[],"httpStatus":200},{"url":"https://snyk.io/advisor/npm-package/linaria","alts":[],"httpStatus":200},{"url":"https://css-tricks.com/how-do-you-remove-unused-css-from-a-site/","alts":[],"httpStatus":200},{"url":"https://css-tricks.com/lets-define-exactly-atomic-css/","alts":[],"httpStatus":200},{"url":"https://styled-components.com/","alts":[],"httpStatus":200},{"url":"https://medium.com/airbnb-engineering/turbocharged-javascript-refactoring-with-codemods-b0cae8b326b9","alts":[{"type":3,"url":"medium://p/b0cae8b326b9"},{"type":2,"url":"medium://p/b0cae8b326b9"}],"httpStatus":200},{"url":"https://happo.io/","alts":[],"httpStatus":200},{"url":"https://medium.com/airbnb-engineering/creating-airbnbs-page-performance-score-5f664be0936","alts":[{"type":3,"url":"medium://p/5f664be0936"},{"type":2,"url":"medium://p/5f664be0936"}],"httpStatus":200},{"url":"https://grnh.se/bbe55fe81us","alts":[],"httpStatus":200},{"url":"https://github.com/callstack/linaria/pull/867","alts":[],"httpStatus":200},{"url":"https://grnh.se/b5afa9151us","alts":[],"httpStatus":200},{"url":"https://medium.com/airbnb-engineering/ts-migrate-a-tool-for-migrating-to-typescript-at-scale-cd23bfeb5cc","alts":[{"type":3,"url":"medium://p/cd23bfeb5cc"},{"type":2,"url":"medium://p/cd23bfeb5cc"}],"httpStatus":200},{"url":"https://grnh.se/21e5c2011us","alts":[],"httpStatus":200},{"url":"https://npmjs.com/@linaria/atomic","alts":[],"httpStatus":200},{"url":"https://www.npmjs.com/package/@linaria/core","alts":[],"httpStatus":200},{"url":"https://grnh.se/ebfa55151us","alts":[],"httpStatus":200},{"url":"https://grnh.se/ee114dfc1us","alts":[],"httpStatus":200},{"url":"https://grnh.se/92c32fed1us","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1655401312180},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":512,"sectionCount":2,"readingList":0,"topics":[{"topicId":"55f1c20aba7a","slug":"software-engineering","createdAt":1491949272237,"deletedAt":0,"image":{"id":"1*U8FboK4lz1wqwQC6IcqxKw@2x.jpeg","originalWidth":5507,"originalHeight":3098},"name":"Software Engineering","description":"Back-end to front-end.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Software Engineering News and Articles — Medium","type":"Topic"},{"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"},{"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":"airbnbs-trip-to-linaria","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"airbnbs-trip-to-linaria-dc169230bd12","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*-qT4pQIPIsxHBZj22sQtag.jpeg","originalWidth":4000,"originalHeight":2670,"isFeatured":true}},{"name":"14e6","type":3,"text":"Airbnb’s Trip to Linaria","markups":[{"type":1,"start":0,"end":24}],"alignment":1},{"name":"0d0b","type":13,"text":"Learn how Linaria, Airbnb’s newest choice for web styling, improved both…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Learn how Linaria, Airbnb’s newest choice for web styling, improved both developer experience and web performance"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"53c7c27702d5","isNewsletter":false,"newsletterId":"3269511a9b03","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":0,"primaryTopicId":"55f1c20aba7a","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"Airbnb's Trip to Linaria","previewContent2":{"bodyModel":{"paragraphs":[{"name":"14e6","type":3,"text":"Airbnb’s Trip to Linaria","markups":[{"type":1,"start":0,"end":24}]},{"name":"0d0b","type":13,"text":"Learn how Linaria, Airbnb’s newest choice for web styling, improved both developer experience and web performance","markups":[]},{"name":"1b49","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*-qT4pQIPIsxHBZj22sQtag.jpeg","originalWidth":4000,"originalHeight":2670,"isFeatured":true}},{"name":"655f","type":1,"text":"CSS is a critical component of every web application, and many solutions have evolved for how styles are written by developers and delivered to visitors. In this post we’ll take you through Airbnb’s journey from Sass to CSS-in-JS and show you why we landed on Linaria, a zero-runtime CSS-in-JS library…","markups":[{"type":3,"start":260,"end":301,"href":"https://github.com/callstack/linaria","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"a66f","startIndex":0}]},"isFullContent":false,"subtitle":"Learn how Linaria, Airbnb’s newest choice for web styling, improved both developer experience and web performance"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"d79ae3afa132":{"id":"d79ae3afa132","versionId":"fad2a24ea4e5","creatorId":"d50bc920fc8f","homeCollectionId":"53c7c27702d5","title":"Dynamic Kubernetes Cluster Scaling at Airbnb","detectedLanguage":"en","latestVersion":"fad2a24ea4e5","latestPublishedVersion":"fad2a24ea4e5","hasUnpublishedEdits":false,"latestRev":246,"createdAt":1653318703971,"updatedAt":1653327325350,"acceptedAt":0,"firstPublishedAt":1653327324292,"latestPublishedAt":1653327324292,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Authors: Evan Sheng, David Morrison","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*Elojmgc7Y06tItOaLdB0Cw.jpeg","filter":"","backgroundSize":"","originalWidth":1200,"originalHeight":800,"strategy":"resample","height":0,"width":0},"wordCount":2137,"imageCount":6,"readingTime":9.014150943396226,"subtitle":"Authors: Evan Sheng, David Morrison","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":162,"isBookmarked":false,"tags":[{"slug":"kubernetes","name":"Kubernetes","postCount":63543,"metadata":{"postCount":63543,"coverImage":{"id":"1*CJhmJf5bLB4E1FxtM2qgkg.png","originalWidth":800,"originalHeight":800,"isFeatured":true}},"type":"Tag"},{"slug":"cluster-autoscaler","name":"Cluster Autoscaler","postCount":77,"metadata":{"postCount":77,"coverImage":{"id":"1*zP0YDzkVjGvSirfnMucoFw.png","originalWidth":1481,"originalHeight":679,"isFeatured":true}},"type":"Tag"},{"slug":"open-source","name":"Open Source","postCount":53331,"metadata":{"postCount":53331,"coverImage":{"id":"1*MU8r1brqC9EA5_cGSjmcsg.jpeg","originalWidth":682,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"engineering","name":"Engineering","postCount":59017,"metadata":{"postCount":59017,"coverImage":{"id":"1*2hE-C_hBjlXF-HA1sULvww.jpeg","originalWidth":1600,"originalHeight":1000,"isFeatured":true}},"type":"Tag"},{"slug":"infrastructure","name":"Infrastructure","postCount":15341,"metadata":{"postCount":15341,"coverImage":{"id":"0*UL3sTV2r4p46S2zQ","originalWidth":1493,"originalHeight":1600,"isFeatured":true,"alt":"Logo for FacetController"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://www.linkedin.com/in/evansheng112/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/david-morrison-9419b110/","alts":[],"httpStatus":999},{"url":"https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler/expander/grpcplugin","alts":[],"httpStatus":200},{"url":"http://cloudscaling.com/blog/cloud-computing/the-history-of-pets-vs-cattle/","alts":[],"httpStatus":200},{"url":"https://github.com/kubernetes/community/tree/master/sig-autoscaling","alts":[],"httpStatus":200},{"url":"https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler/expander/priority","alts":[],"httpStatus":200},{"url":"https://careers.airbnb.com/positions/3903900/","alts":[],"httpStatus":200},{"url":"https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#what-are-expanders","alts":[],"httpStatus":200},{"url":"https://github.com/kubernetes/autoscaler/blob/68c984472acce69cba89d96d724d25b3c78fc4a0/cluster-autoscaler/proposals/plugable-provider-grpc.md","alts":[],"httpStatus":200},{"url":"https://www.youtube.com/watch?v=GCCSY7ERXj4&ab_channel=CNCF%5BCloudNativeComputingFoundation%5D","alts":[],"httpStatus":429},{"url":"https://github.com/kubernetes/autoscaler","alts":[],"httpStatus":200},{"url":"https://developers.google.com/protocol-buffers/docs/overview","alts":[],"httpStatus":200},{"url":"https://medium.com/airbnb-engineering/a-krispr-approach-to-kubernetes-infrastructure-a0741cff4e0c","alts":[{"type":3,"url":"medium://p/a0741cff4e0c"},{"type":2,"url":"medium://p/a0741cff4e0c"}],"httpStatus":200},{"url":"https://github.com/kubernetes/autoscaler/pull/4489","alts":[],"httpStatus":200},{"url":"https://github.com/kubernetes/autoscaler/pull/4233","alts":[],"httpStatus":200},{"url":"https://github.com/kubernetes/autoscaler/pull/4073","alts":[],"httpStatus":200},{"url":"https://github.com/kubernetes/autoscaler/pull/4452","alts":[],"httpStatus":200},{"url":"https://careers.airbnb.com/positions/3696687/","alts":[],"httpStatus":200},{"url":"https://careers.airbnb.com/positions/3949745/","alts":[],"httpStatus":200},{"url":"https://careers.airbnb.com/positions/4168852/","alts":[],"httpStatus":200},{"url":"https://careers.airbnb.com/positions/2623004/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1653327327544},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":547,"sectionCount":1,"readingList":0,"topics":[{"topicId":"55f1c20aba7a","slug":"software-engineering","createdAt":1491949272237,"deletedAt":0,"image":{"id":"1*U8FboK4lz1wqwQC6IcqxKw@2x.jpeg","originalWidth":5507,"originalHeight":3098},"name":"Software Engineering","description":"Back-end to front-end.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Software Engineering 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":"dynamic-kubernetes-cluster-scaling-at-airbnb","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"dynamic-kubernetes-cluster-scaling-at-airbnb-d79ae3afa132","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*Elojmgc7Y06tItOaLdB0Cw.jpeg","originalWidth":1200,"originalHeight":800,"isFeatured":true}},{"name":"1372","type":3,"text":"Dynamic Kubernetes Cluster Scaling at Airbnb","markups":[],"alignment":1},{"name":"c0a3","type":1,"text":"Authors: Evan Sheng, David Morrison","markups":[{"type":3,"start":9,"end":19,"href":"https://www.linkedin.com/in/evansheng112/","title":"","rel":"","anchorType":0},{"type":3,"start":21,"end":35,"href":"https://www.linkedin.com/in/david-morrison-9419b110/","title":"","rel":"","anchorType":0}],"alignment":1},{"name":"b575","type":3,"text":"Introduction","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Authors: Evan Sheng, David Morrison"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"53c7c27702d5","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":0,"primaryTopicId":"55f1c20aba7a","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"1372","type":3,"text":"Dynamic Kubernetes Cluster Scaling at Airbnb","markups":[]},{"name":"c0a3","type":1,"text":"Authors: Evan Sheng, David Morrison","markups":[{"type":3,"start":9,"end":19,"href":"https://www.linkedin.com/in/evansheng112/","title":"","rel":"","anchorType":0},{"type":3,"start":21,"end":35,"href":"https://www.linkedin.com/in/david-morrison-9419b110/","title":"","rel":"","anchorType":0}]},{"name":"c88e","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*Elojmgc7Y06tItOaLdB0Cw.jpeg","originalWidth":1200,"originalHeight":800,"isFeatured":true}},{"name":"b575","type":3,"text":"Introduction","markups":[]},{"name":"7b38","type":1,"text":"An important part of running Airbnb’s infrastructure is ensuring our cloud spending automatically scales with demand, both up and down. Our traffic fluctuates heavily every day, and our cloud footprint should scale dynamically to support this.","markups":[{"type":1,"start":126,"end":130}]},{"name":"1e28","type":1,"text":"To support this scaling, Airbnb utilizes Kubernetes, an open…","markups":[{"type":3,"start":234,"end":238,"href":"https://medium.com/airbnb-engineering/a-krispr-approach-to-kubernetes-infrastructure-a0741cff4e0c","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"598e","startIndex":0}]},"isFullContent":false,"subtitle":"Authors: Evan Sheng, David Morrison"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"b351ab739d3f":{"id":"b351ab739d3f","versionId":"38d261fcf77","creatorId":"23561a2a5df3","homeCollectionId":"53c7c27702d5","title":"The Past, Present, and Future of react-dates","detectedLanguage":"en","latestVersion":"38d261fcf77","latestPublishedVersion":"38d261fcf77","hasUnpublishedEdits":false,"latestRev":32,"createdAt":1641599344238,"updatedAt":1643064260433,"acceptedAt":0,"firstPublishedAt":1642787150218,"latestPublishedAt":1643064258497,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"In 2016, Airbnb released react-dates, a React date picker component library. The project has amassed more than 11,000 stars. GitHub also…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*VymqCVttV2_VOqmmApgakw.jpeg","filter":"","backgroundSize":"","originalWidth":1440,"originalHeight":960,"strategy":"resample","height":0,"width":0},"wordCount":164,"imageCount":1,"readingTime":0.8188679245283019,"subtitle":"In 2016, Airbnb released react-dates, a React date picker component library. The project has amassed more than 11,000 stars. GitHub also…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":18,"isBookmarked":false,"tags":[{"slug":"frontend","name":"Frontend","postCount":18672,"metadata":{"postCount":18672,"coverImage":{"id":"1*E3RSKgMOpm2rXXxfl0VGag.jpeg","originalWidth":1920,"originalHeight":1080,"isFeatured":true}},"type":"Tag"},{"slug":"open-source","name":"Open Source","postCount":53331,"metadata":{"postCount":53331,"coverImage":{"id":"1*MU8r1brqC9EA5_cGSjmcsg.jpeg","originalWidth":682,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"front-end-development","name":"Front End Development","postCount":52446,"metadata":{"postCount":52446,"coverImage":{"id":"0*JH-QnYlTysURUTBP","originalWidth":1125,"originalHeight":750,"isFeatured":true}},"type":"Tag"},{"slug":"javascript","name":"JavaScript","postCount":294387,"metadata":{"postCount":294387,"coverImage":{"id":"1*W_V5POVf2I3FkalbBhWzOw.png","originalWidth":912,"originalHeight":547,"isFeatured":true,"alt":"CSS only Click-handlers You Might not be Using, but you should"}},"type":"Tag"},{"slug":"react","name":"React","postCount":114137,"metadata":{"postCount":114137,"coverImage":{"id":"1*XQEXgEQvpnDtoD15gQ8OjA.jpeg","originalWidth":736,"originalHeight":736}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":4,"links":{"entries":[{"url":"https://www.linkedin.com/in/kodiane/","alts":[],"httpStatus":999},{"url":"https://github.com/react-dates","alts":[],"httpStatus":200},{"url":"https://github.com/airbnb/react-dates/stargazers","alts":[],"httpStatus":200},{"url":"https://github.com/airbnb/react-dates/labels/pull%20request%20wanted","alts":[],"httpStatus":200},{"url":"https://github.com/airbnb/react-dates/issues","alts":[],"httpStatus":200},{"url":"https://github.com/airbnb/react-dates/pulls","alts":[],"httpStatus":200},{"url":"https://github.com/airbnb/react-dates/network/dependents","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1643064259447},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":46,"sectionCount":1,"readingList":0,"topics":[{"topicId":"55f1c20aba7a","slug":"software-engineering","createdAt":1491949272237,"deletedAt":0,"image":{"id":"1*U8FboK4lz1wqwQC6IcqxKw@2x.jpeg","originalWidth":5507,"originalHeight":3098},"name":"Software Engineering","description":"Back-end to front-end.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Software Engineering News and Articles — Medium","type":"Topic"},{"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":"the-past-present-and-future-of-react-dates","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"the-past-present-and-future-of-react-dates-b351ab739d3f","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*VymqCVttV2_VOqmmApgakw.jpeg","originalWidth":1440,"originalHeight":960,"isFeatured":true,"alt":"Silhouettes of two people in front of the inside of a large, clear clock overlooking a city."}},{"name":"previewTitle","type":3,"text":"The Past, Present, and Future of react-dates","alignment":1},{"name":"previewSubtitle","type":13,"text":"In 2016, Airbnb released react-dates, a React date picker…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"In 2016, Airbnb released react-dates, a React date picker component library. The project has amassed more than 11,000 stars. GitHub also…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"53c7c27702d5","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":0,"primaryTopicId":"55f1c20aba7a","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"a4f1","type":3,"text":"The Past, Present, and Future of react-dates","markups":[]},{"name":"e9d3","type":1,"text":"Diane Ko","markups":[{"type":3,"start":0,"end":8,"href":"https://www.linkedin.com/in/kodiane/","title":"","rel":"","anchorType":0}]},{"name":"0a28","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*VymqCVttV2_VOqmmApgakw.jpeg","originalWidth":1440,"originalHeight":960,"isFeatured":true,"alt":"Silhouettes of two people in front of the inside of a large, clear clock overlooking a city."}},{"name":"2da4","type":1,"text":"In 2016, Airbnb released react-dates, a React date picker component library. The project has amassed more than 11,000 stars. GitHub also tells us that react-dates is used by over 30,000 repos.","markups":[{"type":3,"start":81,"end":123,"href":"https://github.com/airbnb/react-dates/stargazers","title":"","rel":"","anchorType":0},{"type":3,"start":151,"end":191,"href":"https://github.com/airbnb/react-dates/network/dependents","title":"","rel":"","anchorType":0}]},{"name":"ae28","type":1,"text":"In more recent years, Airbnb’s requirements for a date picker have changed in a way that has…","markups":[{"type":3,"start":386,"end":417,"href":"https://github.com/react-dates","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"bf4e","startIndex":0}]},"isFullContent":false,"subtitle":"In 2016, Airbnb released react-dates, a React date picker component library. The project has amassed more than 11,000 stars. GitHub also…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"f6580010ae0c":{"id":"f6580010ae0c","versionId":"268d216778e4","creatorId":"1528225a7d7a","homeCollectionId":"53c7c27702d5","title":"Meet Ottr: A Serverless Public Key Infrastructure Framework","detectedLanguage":"en","latestVersion":"268d216778e4","latestPublishedVersion":"268d216778e4","hasUnpublishedEdits":false,"latestRev":830,"createdAt":1635199796960,"updatedAt":1641321047418,"acceptedAt":0,"firstPublishedAt":1635271758922,"latestPublishedAt":1635274723010,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Ottr is a serverless Public Key Infrastructure framework that handles end-to-end certificate rotations without the use of an agent. The…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*6C4m508jFNo-FtFNIK1acw.png","filter":"","backgroundSize":"","originalWidth":900,"originalHeight":388,"strategy":"resample","height":0,"width":0},"wordCount":2836,"imageCount":7,"readingTime":11.751886792452831,"subtitle":"Ottr is a serverless Public Key Infrastructure framework that handles end-to-end certificate rotations without the use of an agent. The…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":78,"isBookmarked":false,"tags":[{"slug":"security","name":"Security","postCount":127695,"metadata":{"postCount":127695,"coverImage":{"id":"0*U6oLc2YYG7HOWIow","originalWidth":3300,"originalHeight":2166}},"type":"Tag"},{"slug":"public-key-infrastructure","name":"Public Key Infrastructure","postCount":139,"metadata":{"postCount":139,"coverImage":{"id":"1*2O9L_vdDBjaIYSUNJvBsqA.png","originalWidth":1345,"originalHeight":1159}},"type":"Tag"},{"slug":"aws","name":"AWS","postCount":124287,"metadata":{"postCount":124287,"coverImage":{"id":"0*pOBPbYRlJsT6_XwR","originalWidth":5616,"originalHeight":3744,"isFeatured":true,"unsplashPhotoId":"lCPhGxs7pww"}},"type":"Tag"},{"slug":"open-source","name":"Open Source","postCount":53331,"metadata":{"postCount":53331,"coverImage":{"id":"1*MU8r1brqC9EA5_cGSjmcsg.jpeg","originalWidth":682,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"airbnb","name":"Airbnb","postCount":12955,"metadata":{"postCount":12955,"coverImage":{"id":"1*pX9yc6ozH6WzdADbNV72nQ.jpeg","originalWidth":2000,"originalHeight":1334,"isFeatured":true,"alt":"Beautiful guest room ready for guests"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://cloudflare-dns.com","alts":[],"httpStatus":200},{"url":"https://letsencrypt.org/","alts":[],"httpStatus":200},{"url":"https://www.abetterinternet.org/","alts":[],"httpStatus":200},{"url":"https://letsencrypt.org/how-it-works/","alts":[],"httpStatus":200},{"url":"https://letsencrypt.org/certificates/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/kenneyan/","alts":[],"httpStatus":999},{"url":"https://acme-v02.api.letsencrypt.org","alts":[],"httpStatus":200},{"url":"https://acme-staging-v02.api.letsencrypt.org","alts":[],"httpStatus":200},{"url":"https://github.com/airbnb/ottr","alts":[],"httpStatus":200},{"url":"https://github.com/airbnb/ottr/tree/master/docs/CONTRIBUTE.md","alts":[],"httpStatus":200},{"url":"https://www.airbnb.com/careers/departments/engineering","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1635274723992},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":368,"sectionCount":1,"readingList":0,"topics":[{"topicId":"55f1c20aba7a","slug":"software-engineering","createdAt":1491949272237,"deletedAt":0,"image":{"id":"1*U8FboK4lz1wqwQC6IcqxKw@2x.jpeg","originalWidth":5507,"originalHeight":3098},"name":"Software Engineering","description":"Back-end to front-end.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Software Engineering News and Articles — Medium","type":"Topic"},{"topicId":"d4e7f4144ac5","slug":"cybersecurity","createdAt":1493946839810,"deletedAt":0,"image":{"id":"1*JpJUz3WBPiQG5vkJ9WY8rw@2x.jpeg","originalWidth":6000,"originalHeight":4000},"name":"Cybersecurity","description":"Towards a more perfect password.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Cybersecurity 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":"meet-ottr-a-serverless-public-key-infrastructure-framework","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"meet-ottr-a-serverless-public-key-infrastructure-framework-f6580010ae0c","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*6C4m508jFNo-FtFNIK1acw.png","originalWidth":900,"originalHeight":388,"isFeatured":true}},{"name":"f8ee","type":3,"text":"Meet Ottr: A Serverless Public Key Infrastructure Framework","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Ottr is a serverless Public Key Infrastructure framework that handles end-to-end certificate rotations without the use of an agent. The…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"53c7c27702d5","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":0,"primaryTopicId":"55f1c20aba7a","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"f8ee","type":3,"text":"Meet Ottr: A Serverless Public Key Infrastructure Framework","markups":[]},{"name":"057d","type":1,"text":"Ottr is a serverless Public Key Infrastructure framework that handles end-to-end certificate rotations without the use of an agent. The purpose of the blog is to provide an overview on Ottr with sample reference architecture, logical and network flows, and highlight the benefits of the solution. For installation instructions, skip…","markups":[{"type":2,"start":0,"end":375}]}],"sections":[{"name":"e284","startIndex":0}]},"isFullContent":false,"subtitle":"Ottr is a serverless Public Key Infrastructure framework that handles end-to-end certificate rotations without the use of an agent. The…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"}}},"paging":{"path":"/_/api/collections/53c7c27702d5/stream","next":{"to":"1732557741764","ignoredIds":["84425d66ee11","d9c4dba859e8","dc169230bd12","d79ae3afa132","b351ab739d3f","f6580010ae0c"],"page":3}},"collection":{"id":"53c7c27702d5","name":"The Airbnb Tech Blog","slug":"airbnb-engineering","tags":["DATA SCIENCE","WEB DEVELOPMENT","OPEN SOURCE","FRONT END DEVELOPMENT","ARTIFICIAL INTELLIGENCE"],"creatorId":"ebe93072cafd","description":"Creative engineers and data scientists building a world where you can belong anywhere. http://airbnb.io","shortDescription":"Creative engineers and data scientists building a world…","image":{"imageId":"1*MlNQKg-sieBGW5prWoe9HQ.jpeg","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":150180,"activeAt":1734544957937},"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*JZl-TXoSiG0VmYn3qWLdTA.png","filter":"","backgroundSize":"","originalWidth":280,"originalHeight":280,"strategy":"resample","height":0,"width":0},"twitterUsername":"AirbnbEng","facebookPageName":"AirbnbTech","collectionMastheadId":"7e48cc52dce0","sections":[{"type":2,"collectionHeaderMetadata":{"title":"The Airbnb Tech Blog","description":"A deeper look into how our Engineers and Data Scientists build a world of belonging","backgroundImage":{"id":"1*eM5hEN1XX7U9XDPgjcFC8g.png","originalWidth":1520,"originalHeight":492},"logoImage":{"id":"1*5wg57UPTn3EZIWQSgf9mMA@2x.png","originalWidth":566,"originalHeight":584,"alt":"The Airbnb Tech Blog"},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":4,"postIds":["13b03f2c2cca","d5c2fa81a119","8f06543b38d5","c88aa2bb9399"]}},{"type":1,"postListMetadata":{"source":4,"layout":4,"number":6,"postIds":["84425d66ee11","d9c4dba859e8","dc169230bd12","d79ae3afa132","b351ab739d3f","f6580010ae0c"],"tagSlug":"Open Source","tagName":"Open Source","sectionHeader":"Open Source"}},{"type":1,"postListMetadata":{"source":4,"layout":4,"number":3,"postIds":[],"tagSlug":"People","tagName":"People","sectionHeader":"People"}},{"type":1,"postListMetadata":{"source":4,"layout":4,"number":3,"postIds":[],"tagSlug":"AI","tagName":"AI","sectionHeader":"Artificial Intelligence and Machine Learning"}},{"type":1,"postListMetadata":{"source":4,"layout":4,"number":3,"postIds":[],"tagSlug":"Data","tagName":"Data","sectionHeader":"Data"}},{"type":1,"postListMetadata":{"source":4,"layout":4,"number":3,"postIds":[],"tagSlug":"Frontend","tagName":"Frontend","sectionHeader":"Web"}},{"type":1,"postListMetadata":{"source":4,"layout":4,"number":3,"postIds":[],"tagSlug":"Mobile","tagName":"Mobile","sectionHeader":"Mobile"}},{"type":1,"postListMetadata":{"source":4,"layout":4,"number":3,"postIds":[],"tagSlug":"Infrastructure","tagName":"Infrastructure","sectionHeader":"Infrastructure"}},{"type":1,"postListMetadata":{"source":4,"layout":4,"number":3,"postIds":[],"tagSlug":"Fintech","tagName":"Fintech","sectionHeader":"Fintech"}}],"tintColor":"#FF007E82","lightText":false,"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF30969A","point":0},{"color":"#FF338B8E","point":0.1},{"color":"#FF338083","point":0.2},{"color":"#FF337477","point":0.3},{"color":"#FF31696B","point":0.4},{"color":"#FF2F5D5F","point":0.5},{"color":"#FF2B5153","point":0.6},{"color":"#FF264546","point":0.7},{"color":"#FF203839","point":0.8},{"color":"#FF192B2C","point":0.9},{"color":"#FF101D1D","point":1}],"backgroundColor":"#FFFFFFFF"},"tintBackgroundSpectrum":{"colorPoints":[{"color":"#FF007E82","point":0},{"color":"#FF368D91","point":0.1},{"color":"#FF529C9F","point":0.2},{"color":"#FF6AAAAD","point":0.3},{"color":"#FF80B8BA","point":0.4},{"color":"#FF95C5C7","point":0.5},{"color":"#FFA9D2D4","point":0.6},{"color":"#FFBDDFE0","point":0.7},{"color":"#FFCFEBEC","point":0.8},{"color":"#FFE2F7F7","point":0.9},{"color":"#FFF4FFFF","point":1}],"backgroundColor":"#FF007E82"},"highlightSpectrum":{"colorPoints":[{"color":"#FFE4F7F8","point":0},{"color":"#FFDFF6F7","point":0.1},{"color":"#FFDAF6F6","point":0.2},{"color":"#FFD5F5F6","point":0.3},{"color":"#FFCFF4F5","point":0.4},{"color":"#FFC9F3F4","point":0.5},{"color":"#FFC3F2F4","point":0.6},{"color":"#FFBDF1F3","point":0.7},{"color":"#FFB7F0F3","point":0.8},{"color":"#FFB1F0F2","point":0.9},{"color":"#FFAAEFF1","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FF4EAEB2","point":0},{"color":"#FF62B6B9","point":0.1},{"color":"#FF73BDC0","point":0.2},{"color":"#FF84C4C7","point":0.3},{"color":"#FF93CBCD","point":0.4},{"color":"#FFA1D2D3","point":0.5},{"color":"#FFAFD8DA","point":0.6},{"color":"#FFBDDFE0","point":0.7},{"color":"#FFCAE5E6","point":0.8},{"color":"#FFD7ECEC","point":0.9},{"color":"#FFE3F2F2","point":1}],"backgroundColor":"#FF000000"}},"navItems":[{"type":4,"title":"Data","url":"https://medium.com/airbnb-engineering/data/home","topicId":"23a094f20d66","source":"topicId"},{"type":4,"title":"AI & ML","url":"https://medium.com/airbnb-engineering/ai/home","topicId":"fa81dc8a53b3","source":"topicId"},{"type":1,"title":"Mobile","tagSlug":"mobile","url":"https://medium.com/airbnb-engineering/tagged/mobile","source":"tagSlug"},{"type":4,"title":"Web","url":"https://medium.com/airbnb-engineering/web/home","topicId":"1a5b002f7f36","source":"topicId"},{"type":4,"title":"Infrastructure","url":"https://medium.com/airbnb-engineering/airbnb-engineering-infrastructure/home","topicId":"439dc2e252ab","source":"topicId"},{"type":4,"title":"Open Source","url":"https://medium.com/airbnb-engineering/open-source/home","topicId":"3cb92d13faa8","source":"topicId"},{"type":4,"title":"People","url":"https://medium.com/airbnb-engineering/medium-com-airbnb-engineering-people/home","topicId":"b380931c02f5","source":"topicId"},{"type":3,"title":"Careers","url":"https://careers.airbnb.com/"}],"colorBehavior":1,"collectionFeatures":[25],"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"title":"The Airbnb Tech Blog","description":"A deeper look into how our Engineers and Data Scientists build a world of belonging","backgroundImage":{"id":"1*eM5hEN1XX7U9XDPgjcFC8g.png","originalWidth":1520,"originalHeight":492},"logoImage":{"id":"1*5wg57UPTn3EZIWQSgf9mMA@2x.png","originalWidth":566,"originalHeight":584,"alt":"The Airbnb Tech Blog"},"alignment":2,"layout":5},"subscriberCount":150180,"tagline":"Creative engineers and data scientists building a world…","isOptedIntoAurora":false,"isCurationAllowedByDefault":false,"polarisCoverImage":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"ptsQualifiedAt":1616092925180,"type":"Collection"},"header":{"title":"The Airbnb Tech Blog","description":"A deeper look into how our Engineers and Data Scientists build a world of belonging","backgroundImage":{"id":"1*eM5hEN1XX7U9XDPgjcFC8g.png","originalWidth":1520,"originalHeight":492},"logoImage":{"id":"1*5wg57UPTn3EZIWQSgf9mMA@2x.png","originalWidth":566,"originalHeight":584,"alt":"The Airbnb Tech Blog"},"alignment":2,"layout":5},"streamItems":[{"createdAt":1740503759767,"randomId":"dbbac1ac8182","section":{"items":[{"post":{"postId":"13b03f2c2cca"},"itemType":"post"},{"post":{"postId":"d5c2fa81a119"},"itemType":"post"},{"post":{"postId":"8f06543b38d5"},"itemType":"post"},{"post":{"postId":"c88aa2bb9399"},"itemType":"post"}],"layout":4},"itemType":"section","type":"StreamItem"},{"createdAt":1740503759767,"randomId":"640708fdb0cd","section":{"items":[{"post":{"postId":"84425d66ee11"},"itemType":"post"},{"post":{"postId":"d9c4dba859e8"},"itemType":"post"},{"post":{"postId":"dc169230bd12"},"itemType":"post"},{"post":{"postId":"d79ae3afa132"},"itemType":"post"},{"post":{"postId":"b351ab739d3f"},"itemType":"post"},{"post":{"postId":"f6580010ae0c"},"itemType":"post"}],"layout":4,"heading":{"fallbackTitle":"Open Source","headingBasic":{"title":"Open Source"},"headingType":"headingBasic"}},"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:'91795f552a45fcec',t:'MTc0MDUwNDA5My4wMDAwMDA='};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>