CINXE.COM
Infrastructure – Pinterest Engineering 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>Infrastructure – Pinterest Engineering Blog – Medium</title><link rel="canonical" href="https://medium.com/pinterest-engineering/infra/home"><meta name="robots" content="index,follow"><meta name="title" content="Infrastructure – Pinterest Engineering Blog – Medium"><meta name="referrer" content="unsafe-url"><meta name="description" content="Infrastructure at Pinterest. Inventive engineers building the first visual discovery engine, 300 billion ideas and counting."><meta name="theme-color" content="#000000"><meta property="og:title" content="Infrastructure – Pinterest Engineering Blog – Medium"><meta property="twitter:title" content="Infrastructure – Pinterest Engineering Blog – Medium"><meta property="og:url" content="https://medium.com/pinterest-engineering/infra/home"><meta property="og:image" content="https://cdn-images-1.medium.com/max/1200/1*XiUFDZgSFl6n-MM2yXFifQ.png"><meta property="fb:app_id" content="542599432471018"><meta property="og:description" content="Infrastructure at Pinterest. Inventive engineers building the first visual discovery engine, 300 billion ideas and counting."><meta name="twitter:description" content="Infrastructure at Pinterest. Inventive engineers building the first visual discovery engine, 300 billion ideas and counting."><meta name="twitter:image:src" content="https://cdn-images-1.medium.com/max/1200/1*XiUFDZgSFl6n-MM2yXFifQ.png"><meta property="og:type" content="medium-com:collection"><meta name="twitter:card" content="summary_large_image"><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://pinterest-engineering/infra/home"><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://pinterest-engineering/infra/home"><meta property="al:android:url" content="medium://pinterest-engineering/infra/home"><meta property="al:web:url" content="https://medium.com/pinterest-engineering/infra/home"><link rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml" /><link rel="alternate" href="android-app://com.medium.reader/https/medium.com/pinterest-engineering/infra/home" /><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*XiUFDZgSFl6n-MM2yXFifQ.png"><link rel="apple-touch-icon" sizes="120x120" href="https://cdn-images-1.medium.com/fit/c/240/240/1*XiUFDZgSFl6n-MM2yXFifQ.png"><link rel="apple-touch-icon" sizes="76x76" href="https://cdn-images-1.medium.com/fit/c/152/152/1*XiUFDZgSFl6n-MM2yXFifQ.png"><link rel="apple-touch-icon" sizes="60x60" href="https://cdn-images-1.medium.com/fit/c/120/120/1*XiUFDZgSFl6n-MM2yXFifQ.png"><link rel="mask-icon" href="https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg" color="#171717"></head><body itemscope class=" browser-ie os-windows v-unbound v-glyph v-glyph--m2-unbound-source-serif-pro is-noJs"><script>document.body.className = document.body.className.replace(/(^|\s)is-noJs(\s|$)/, "$1is-js$2")</script><div class="site-main" id="container"><div class="butterBar butterBar--error"></div><div class="surface"><div id="prerendered" class="screenContent"><div class="metabar u-clearfix u-boxShadow4px12pxBlackLightest 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/pinterest-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%2Fpinterest-engineering%2Finfra%2Fhome&source=--------------------------nav_reg&operation=login" data-action="sign-in-prompt" data-redirect="https://medium.com/pinterest-engineering/infra/home" 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%2Fpinterest-engineering%2Finfra%2Fhome&source=--------------------------nav_reg&operation=register" data-action="sign-up-prompt" data-redirect="https://medium.com/pinterest-engineering/infra/home" data-action-source="--------------------------nav_reg">Get started</a></div></div></div></div><div class="u-borderTopLighter " ><div class="metabar-inner u-marginAuto u-maxWidth1032 u-paddingHorizontal20 js-metabarBottom"><nav role="navigation" class="metabar-block metabar-block--below u-flexCenter u-overflowHidden u-height54"><div class="u-flexCenter u-overflowHidden"><div class="u-marginRight40"><a href="https://medium.com/pinterest-engineering?source=logo-lo_b2b083dcb8ef---4c5a5f6279b6" class="u-flexCenter js-collectionLogoOrName"><span class="u-noWrapWithEllipsis u-maxWidth1032 u-uiTextBold u-fontSize20 u-textColorDarker">Pinterest Engineering Blog</span></a></div><div class="u-overflowHidden u-xs-hide"><ul class="u-textAlignLeft u-noWrap u-overflowX u-height80 u-marginTop40 js-collectionNavItems"><li class="metabar-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0 u-xs-paddingTop10"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/pinterest-engineering/medium-com-pinterest-engineering-espanol/home">en Español</a></li><li class="metabar-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0 u-xs-paddingTop10"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/pinterest-engineering/eng-culture/home">Eng Culture</a></li><li class="metabar-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0 u-xs-paddingTop10"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/pinterest-engineering/pinner-experience/home">Pinner UX</a></li><li class="metabar-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0 u-xs-paddingTop10"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/pinterest-engineering/creator-experience/home">Creator UX</a></li><li class="metabar-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0 u-xs-paddingTop10"><a class="link link--darker link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/pinterest-engineering/infra/home">Infras</a></li><li class="metabar-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0 u-xs-paddingTop10"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/pinterest-engineering/monetization/home">Monetization</a></li><li class="metabar-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0 u-xs-paddingTop10"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/pinterest-engineering/trust-and-safety/home">Trust & Safety</a></li><span class="u-borderLeft1 u-baseColor--borderLight"></span><li class="metabar-navItem js-collectionNavItem is-external u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0 u-xs-paddingTop10"><a class="link link--darkenOnHover u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://www.pinterestcareers.com?utm_source=medium&utm_medium=navigation-link&utm_campaign=medium-traffic" rel="nofollow noopener" target="_blank">Pinterest Careers</a></li></ul></div></div></nav></div></div></div><div class="metabar metabar--spacer js-metabarSpacer u-height119 u-xs-height110"></div><h1 class="u-maxWidth1000 u-marginAuto u-paddingTop10 u-paddingLeft20 u-paddingRight20 u-alignMiddle u-height110 u-fontSize50 u-textColorDark u-contentSansRegular u-noWrapWithEllipsis u-xs-fontSize40 u-xs-height100 u-xs-textAlignCenter">Infrastructure</h1><div class="u-widthFull u-borderBottomLighter"></div><div class="u-marginBottom40 js-categoryStream"><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-paddingRight12 u-size6of12" data-source="collection_category---4------0-----------------------" data-post-id="08130f25b874" data-index="0"><div class="u-lineHeightBase postItem"><a href="https://medium.com/pinterest-engineering/improving-efficiency-of-goku-time-series-database-at-pinterest-part-2-08130f25b874?source=collection_category---4------0-----------------------" data-action="open-post" data-action-value="https://medium.com/pinterest-engineering/improving-efficiency-of-goku-time-series-database-at-pinterest-part-2-08130f25b874?source=collection_category---4------0-----------------------" class="u-block u-xs-height170 u-width600 u-height272 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/1200/1*Hujnqp_ULTXGaPrm1-P7hg.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Improving Efficiency Of Goku Time Series Database at Pinterest (Part 2)</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/pinterest-engineering/improving-efficiency-of-goku-time-series-database-at-pinterest-part-2-08130f25b874?source=collection_category---4------0-----------------------" data-action-source="collection_category---4------0-----------------------" data-post-id="08130f25b874"><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">Improving Efficiency Of Goku Time Series Database at Pinterest (Part 2)</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">Monil Mukesh Sanghavi | Software Engineer, Real Time Analytics Team; Xiao Li | Software Engineer, Real Time Analytics Team; Ming-May Hu |…</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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*iAV-apeVpCJ1h6Znt1AzCg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Pinterest Engineering"></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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto">Pinterest Engineering</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-03-12T23:14:51.264Z">Mar 12, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="11 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size6of12" data-source="collection_category---4------1-----------------------" data-post-id="4d68679161ef" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://medium.com/pinterest-engineering/unlocking-ai-assisted-development-safely-from-idea-to-ga-4d68679161ef?source=collection_category---4------1-----------------------" data-action="open-post" data-action-value="https://medium.com/pinterest-engineering/unlocking-ai-assisted-development-safely-from-idea-to-ga-4d68679161ef?source=collection_category---4------1-----------------------" class="u-block u-xs-height170 u-width600 u-height272 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/1200/0*PtTuxE-yJmIo2cdK"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Unlocking AI Assisted Development Safely: From Idea to GA</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/pinterest-engineering/unlocking-ai-assisted-development-safely-from-idea-to-ga-4d68679161ef?source=collection_category---4------1-----------------------" data-action-source="collection_category---4------1-----------------------" data-post-id="4d68679161ef"><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">Unlocking AI Assisted Development Safely: From Idea to GA</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">Sam Wang | Sr. Technical Program Manager; Joe Gordon | Sr. Staff Software Engineer</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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*iAV-apeVpCJ1h6Znt1AzCg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Pinterest Engineering"></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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto">Pinterest Engineering</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-02-22T21:46:36.556Z">Feb 22, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 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"><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_category---4------0-----------------------" data-post-id="839f3cf996bc" data-index="0"><div class="u-lineHeightBase postItem"><a href="https://medium.com/pinterest-engineering/migrating-policy-delivery-engines-with-almost-nobody-knowing-839f3cf996bc?source=collection_category---4------0-----------------------" data-action="open-post" data-action-value="https://medium.com/pinterest-engineering/migrating-policy-delivery-engines-with-almost-nobody-knowing-839f3cf996bc?source=collection_category---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/0*KK9jDNzG4Pky7nn9"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Migrating Policy Delivery Engines with (almost) Nobody Knowing</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/pinterest-engineering/migrating-policy-delivery-engines-with-almost-nobody-knowing-839f3cf996bc?source=collection_category---4------0-----------------------" data-action-source="collection_category---4------0-----------------------" data-post-id="839f3cf996bc"><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">Migrating Policy Delivery Engines with (almost) Nobody Knowing</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">Jeremy Krach | Staff Security Engineer, Platform Security</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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*iAV-apeVpCJ1h6Znt1AzCg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Pinterest Engineering"></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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto">Pinterest Engineering</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-01-26T19:30:35.946Z">Jan 26, 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_category---4------1-----------------------" data-post-id="f5277ee4e3d2" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://medium.com/pinterest-engineering/building-pinterests-new-wide-column-database-using-rocksdb-f5277ee4e3d2?source=collection_category---4------1-----------------------" data-action="open-post" data-action-value="https://medium.com/pinterest-engineering/building-pinterests-new-wide-column-database-using-rocksdb-f5277ee4e3d2?source=collection_category---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*b3gyyHWpBT2OCucC"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Building Pinterest’s new wide column database using RocksDB</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/pinterest-engineering/building-pinterests-new-wide-column-database-using-rocksdb-f5277ee4e3d2?source=collection_category---4------1-----------------------" data-action-source="collection_category---4------1-----------------------" data-post-id="f5277ee4e3d2"><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">Building Pinterest’s new wide column database using RocksDB</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">Rajath Prasad, Senior Engineering Manager</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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*iAV-apeVpCJ1h6Znt1AzCg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Pinterest Engineering"></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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto">Pinterest Engineering</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-01-04T20:19:31.600Z">Jan 4, 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_category---4------2-----------------------" data-post-id="7659b94796f4" data-index="2"><div class="u-lineHeightBase postItem"><a href="https://medium.com/pinterest-engineering/improving-efficiency-of-goku-time-series-database-at-pinterest-part-1-7659b94796f4?source=collection_category---4------2-----------------------" data-action="open-post" data-action-value="https://medium.com/pinterest-engineering/improving-efficiency-of-goku-time-series-database-at-pinterest-part-1-7659b94796f4?source=collection_category---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/0*y4nQMWfqrsoKVsIS"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Improving Efficiency Of Goku Time Series Database at Pinterest (Part — 1)</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/pinterest-engineering/improving-efficiency-of-goku-time-series-database-at-pinterest-part-1-7659b94796f4?source=collection_category---4------2-----------------------" data-action-source="collection_category---4------2-----------------------" data-post-id="7659b94796f4"><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">Improving Efficiency Of Goku Time Series Database at Pinterest (Part — 1)</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">Monil Mukesh Sanghavi, Kapil Bajaj, Ming-May Hu, Xiao Li and Zhenxiao Luo</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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*iAV-apeVpCJ1h6Znt1AzCg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Pinterest Engineering"></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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto">Pinterest Engineering</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-11-22T19:20:24.961Z">Nov 22, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="14 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"><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size6of12" data-source="collection_category---4------0-----------------------" data-post-id="8ad408df2d6f" data-index="0"><div class="u-lineHeightBase postItem"><a href="https://medium.com/pinterest-engineering/pincompute-a-kubernetes-backed-general-purpose-compute-platform-for-pinterest-8ad408df2d6f?source=collection_category---4------0-----------------------" data-action="open-post" data-action-value="https://medium.com/pinterest-engineering/pincompute-a-kubernetes-backed-general-purpose-compute-platform-for-pinterest-8ad408df2d6f?source=collection_category---4------0-----------------------" class="u-block u-xs-height170 u-width600 u-height272 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/1200/0*RVStgBIqAdtTVOth"); background-position: 50% 50% !important;"><span class="u-textScreenReader">PinCompute: A Kubernetes Backed General Purpose Compute Platform for Pinterest</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/pinterest-engineering/pincompute-a-kubernetes-backed-general-purpose-compute-platform-for-pinterest-8ad408df2d6f?source=collection_category---4------0-----------------------" data-action-source="collection_category---4------0-----------------------" data-post-id="8ad408df2d6f"><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">PinCompute: A Kubernetes Backed General Purpose Compute Platform for Pinterest</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">Harry Zhang, Jiajun Wang, Yi Li, Shunyao Li, Ming Zong, Haniel Martino, Cathy Lu, Quentin Miao, Hao Jiang, James Wen, David Westbrook |…</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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*iAV-apeVpCJ1h6Znt1AzCg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Pinterest Engineering"></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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto">Pinterest Engineering</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-10-31T21:33:54.165Z">Oct 31, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="18 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size6of12" data-source="collection_category---4------1-----------------------" data-post-id="64ae2e721daa" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://medium.com/pinterest-engineering/running-unified-pubsub-client-in-production-at-pinterest-64ae2e721daa?source=collection_category---4------1-----------------------" data-action="open-post" data-action-value="https://medium.com/pinterest-engineering/running-unified-pubsub-client-in-production-at-pinterest-64ae2e721daa?source=collection_category---4------1-----------------------" class="u-block u-xs-height170 u-width600 u-height272 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/1200/0*xauDb88X2Gd0CPu6"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Running Unified PubSub Client in Production at Pinterest</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/pinterest-engineering/running-unified-pubsub-client-in-production-at-pinterest-64ae2e721daa?source=collection_category---4------1-----------------------" data-action-source="collection_category---4------1-----------------------" data-post-id="64ae2e721daa"><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">Running Unified PubSub Client in Production at Pinterest</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">Jeff Xiang | Software Engineer, Logging Platform</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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*iAV-apeVpCJ1h6Znt1AzCg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Pinterest Engineering"></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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto">Pinterest Engineering</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-11-07T20:54:10.435Z">Nov 7, 2023</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"><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size6of12" data-source="collection_category---4------0-----------------------" data-post-id="f638c722d9f2" data-index="0"><div class="u-lineHeightBase postItem"><a href="https://medium.com/pinterest-engineering/lessons-from-debugging-a-tricky-direct-memory-leak-f638c722d9f2?source=collection_category---4------0-----------------------" data-action="open-post" data-action-value="https://medium.com/pinterest-engineering/lessons-from-debugging-a-tricky-direct-memory-leak-f638c722d9f2?source=collection_category---4------0-----------------------" class="u-block u-xs-height170 u-width600 u-height272 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/1200/0*Zr1A8sa3nu_-Ff-L"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Lessons from debugging a tricky direct memory leak</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/pinterest-engineering/lessons-from-debugging-a-tricky-direct-memory-leak-f638c722d9f2?source=collection_category---4------0-----------------------" data-action-source="collection_category---4------0-----------------------" data-post-id="f638c722d9f2"><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">Lessons from debugging a tricky direct memory leak</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">Sanchay Javeria | Software Engineer, Ads Data Infrastructure</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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*iAV-apeVpCJ1h6Znt1AzCg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Pinterest Engineering"></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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto">Pinterest Engineering</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-09-29T15:08:09.534Z">Sep 29, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="8 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size6of12" data-source="collection_category---4------1-----------------------" data-post-id="629affbf34ff" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://medium.com/pinterest-engineering/last-mile-data-processing-with-ray-629affbf34ff?source=collection_category---4------1-----------------------" data-action="open-post" data-action-value="https://medium.com/pinterest-engineering/last-mile-data-processing-with-ray-629affbf34ff?source=collection_category---4------1-----------------------" class="u-block u-xs-height170 u-width600 u-height272 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/1200/1*A0WPSyaHovk3DFYUzFV3bA.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Last Mile Data Processing with Ray</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/pinterest-engineering/last-mile-data-processing-with-ray-629affbf34ff?source=collection_category---4------1-----------------------" data-action-source="collection_category---4------1-----------------------" data-post-id="629affbf34ff"><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">Last Mile Data Processing with Ray</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">Raymond Lee | Software Engineer II; Qingxian Lai | Sr. Software Engineer; Karthik Anantha Padmanabhan | Manager II, Engineering; Se Won…</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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*iAV-apeVpCJ1h6Znt1AzCg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Pinterest Engineering"></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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto">Pinterest Engineering</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-09-12T18:07:36.423Z">Sep 12, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="8 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"><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size6of12" data-source="collection_category---4------0-----------------------" data-post-id="e2b30b2f6768" data-index="0"><div class="u-lineHeightBase postItem"><a href="https://medium.com/pinterest-engineering/mlenv-standardizing-ml-at-pinterest-under-one-ml-engine-to-accelerate-innovation-e2b30b2f6768?source=collection_category---4------0-----------------------" data-action="open-post" data-action-value="https://medium.com/pinterest-engineering/mlenv-standardizing-ml-at-pinterest-under-one-ml-engine-to-accelerate-innovation-e2b30b2f6768?source=collection_category---4------0-----------------------" class="u-block u-xs-height170 u-width600 u-height272 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/1200/0*p6ptymzvBy3Wjqx9"); background-position: 50% 50% !important;"><span class="u-textScreenReader">MLEnv: Standardizing ML at Pinterest Under One ML Engine to Accelerate Innovation</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/pinterest-engineering/mlenv-standardizing-ml-at-pinterest-under-one-ml-engine-to-accelerate-innovation-e2b30b2f6768?source=collection_category---4------0-----------------------" data-action-source="collection_category---4------0-----------------------" data-post-id="e2b30b2f6768"><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">MLEnv: Standardizing ML at Pinterest Under One ML Engine to Accelerate Innovation</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">Pong Eksombatchai | Principal Engineer; Karthik Anantha Padmanabhan | Manager II, Engineering</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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*iAV-apeVpCJ1h6Znt1AzCg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Pinterest Engineering"></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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto">Pinterest Engineering</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-09-05T16:53:18.974Z">Sep 5, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="11 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size6of12" data-source="collection_category---4------1-----------------------" data-post-id="bbc3406a1695" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://medium.com/pinterest-engineering/securely-scaling-big-data-access-controls-at-pinterest-bbc3406a1695?source=collection_category---4------1-----------------------" data-action="open-post" data-action-value="https://medium.com/pinterest-engineering/securely-scaling-big-data-access-controls-at-pinterest-bbc3406a1695?source=collection_category---4------1-----------------------" class="u-block u-xs-height170 u-width600 u-height272 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/1200/0*y6fZ5nEbsbdjsCLP"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Securely Scaling Big Data Access Controls At Pinterest</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/pinterest-engineering/securely-scaling-big-data-access-controls-at-pinterest-bbc3406a1695?source=collection_category---4------1-----------------------" data-action-source="collection_category---4------1-----------------------" data-post-id="bbc3406a1695"><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">Securely Scaling Big Data Access Controls At Pinterest</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">Soam Acharya | Data Engineering Oversight; Keith Regier | Data Privacy Engineering Manager</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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*iAV-apeVpCJ1h6Znt1AzCg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Pinterest Engineering"></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/@Pinterest_Engineering" data-action="show-user-card" data-action-value="ef81ef829bcb" data-action-type="hover" data-user-id="ef81ef829bcb" dir="auto">Pinterest Engineering</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-07-25T17:19:13.555Z">Jul 25, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="14 min read"></span></div></div></div></div></div></div></div></section></div></div><style class="js-collectionStyle"> .u-accentColor--borderLight {border-color: #E93335 !important;} .u-accentColor--borderNormal {border-color: #E93335 !important;} .u-accentColor--borderDark {border-color: #C53331 !important;} .u-accentColor--iconLight .svgIcon,.u-accentColor--iconLight.svgIcon {fill: #E93335 !important;} .u-accentColor--iconNormal .svgIcon,.u-accentColor--iconNormal.svgIcon {fill: #E93335 !important;} .u-accentColor--iconDark .svgIcon,.u-accentColor--iconDark.svgIcon {fill: #C53331 !important;} .u-accentColor--textNormal {color: #C53331 !important;} .u-accentColor--hoverTextNormal:hover {color: #C53331 !important;} .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #B3322E !important;} .u-accentColor--textDark {color: #B3322E !important;} .u-accentColor--backgroundLight {background-color: #E93335 !important;} .u-accentColor--backgroundNormal {background-color: #E93335 !important;} .u-accentColor--backgroundDark {background-color: #C53331 !important;} .u-accentColor--buttonDark {border-color: #C53331 !important; color: #B3322E !important;} .u-accentColor--buttonDark:hover {border-color: #B3322E !important;} .u-accentColor--buttonDark .icon:before,.u-accentColor--buttonDark .svgIcon{color: #C53331 !important; fill: #C53331 !important;} .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #E93335 !important; color: #C53331 !important;} .u-accentColor--buttonNormal:hover {border-color: #C53331 !important;} .u-accentColor--buttonNormal .icon:before,.u-accentColor--buttonNormal .svgIcon{color: #E93335 !important; fill: #E93335 !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: #C53331 !important; border-color: #C53331 !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: #E93335 !important; border-color: #E93335 !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: #C53331 !important;}.u-tintBgColor {background-color: rgba(189, 8, 28, 1) !important;}.u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(189, 8, 28, 1) 0%, rgba(189, 8, 28, 0) 100%) !important;}.u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(189, 8, 28, 0) 0%, rgba(189, 8, 28, 1) 100%) !important;} .u-tintSpectrum .u-baseColor--borderLight {border-color: #FF8B7F !important;} .u-tintSpectrum .u-baseColor--borderNormal {border-color: #FFB3A8 !important;} .u-tintSpectrum .u-baseColor--borderDark {border-color: #FFDAD2 !important;} .u-tintSpectrum .u-baseColor--iconLight .svgIcon,.u-tintSpectrum .u-baseColor--iconLight.svgIcon {fill: #FF8B7F !important;} .u-tintSpectrum .u-baseColor--iconNormal .svgIcon,.u-tintSpectrum .u-baseColor--iconNormal.svgIcon {fill: #FFB3A8 !important;} .u-tintSpectrum .u-baseColor--iconDark .svgIcon,.u-tintSpectrum .u-baseColor--iconDark.svgIcon {fill: #FFDAD2 !important;} .u-tintSpectrum .u-baseColor--textNormal {color: #FFB3A8 !important;} .u-tintSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: #FFEEE7 !important;} .u-tintSpectrum .u-baseColor--textDark {color: #FFEEE7 !important;} .u-tintSpectrum .u-baseColor--textDarker {color: #FFEEE7 !important;} .u-tintSpectrum .u-baseColor--backgroundLight {background-color: #FF8B7F !important;} .u-tintSpectrum .u-baseColor--backgroundNormal {background-color: #FFB3A8 !important;} .u-tintSpectrum .u-baseColor--backgroundDark {background-color: #FFDAD2 !important;} .u-tintSpectrum .u-baseColor--buttonLight {border-color: #FF8B7F !important; color: #FF8B7F !important;} .u-tintSpectrum .u-baseColor--buttonLight:hover {border-color: #FF8B7F !important;} .u-tintSpectrum .u-baseColor--buttonLight .icon:before,.u-tintSpectrum .u-baseColor--buttonLight .svgIcon {color: #FF8B7F !important; fill: #FF8B7F !important;} .u-tintSpectrum .u-baseColor--buttonDark {border-color: #FFDAD2 !important; color: #FFEEE7 !important;} .u-tintSpectrum .u-baseColor--buttonDark:hover {border-color: #FFEEE7 !important;} .u-tintSpectrum .u-baseColor--buttonDark .icon:before,.u-tintSpectrum .u-baseColor--buttonDark .svgIcon {color: #FFDAD2 !important; fill: #FFDAD2 !important;} .u-tintSpectrum .u-baseColor--buttonNormal {border-color: #FFB3A8 !important; color: #FFB3A8 !important;} .u-tintSpectrum .u-baseColor--buttonNormal:hover {border-color: #FFDAD2 !important;} .u-tintSpectrum .u-baseColor--buttonNormal .icon:before,.u-tintSpectrum .u-baseColor--buttonNormal .svgIcon {color: #FFB3A8 !important; fill: #FFB3A8 !important;} .u-tintSpectrum .u-baseColor--buttonDark.button--filled,.u-tintSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: #FFDAD2 !important; border-color: #FFDAD2 !important; color: rgba(189, 8, 28, 1) !important; fill: rgba(189, 8, 28, 1) !important;} .u-tintSpectrum .u-baseColor--buttonNormal.button--filled,.u-tintSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: #FFB3A8 !important; border-color: #FFB3A8 !important; color: rgba(189, 8, 28, 1) !important; fill: rgba(189, 8, 28, 1) !important;} .u-tintSpectrum .u-baseColor--link {color: #FFB3A8 !important;} .u-tintSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: #FFEEE7 !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: #FFEEE7 !important;} .u-tintSpectrum .u-baseColor--link.link--dark {color: #FFEEE7 !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: #FFEEE7 !important;} .u-tintSpectrum .u-baseColor--link.link--darker {color: #FFEEE7 !important;} .u-tintSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: #FF8B7F;} .u-tintSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: #FF8B7F;} .u-tintSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: #FF8B7F;} .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: #FFEEE7 !important; fill: #FFEEE7 !important;} .u-tintSpectrum .ui-body,.u-tintSpectrum .ui-caps {color: #FFEEE7 !important; fill: #FFEEE7 !important;} .u-tintSpectrum .ui-summary,.u-tintSpectrum .ui-caption {color: #FF8B7F !important; fill: #FF8B7F !important;} .u-tintSpectrum .u-accentColor--borderLight {border-color: #FF8B7F !important;} .u-tintSpectrum .u-accentColor--borderNormal {border-color: #FFB3A8 !important;} .u-tintSpectrum .u-accentColor--borderDark {border-color: #FFDAD2 !important;} .u-tintSpectrum .u-accentColor--iconLight .svgIcon,.u-tintSpectrum .u-accentColor--iconLight.svgIcon {fill: #FF8B7F !important;} .u-tintSpectrum .u-accentColor--iconNormal .svgIcon,.u-tintSpectrum .u-accentColor--iconNormal.svgIcon {fill: #FFB3A8 !important;} .u-tintSpectrum .u-accentColor--iconDark .svgIcon,.u-tintSpectrum .u-accentColor--iconDark.svgIcon {fill: #FFDAD2 !important;} .u-tintSpectrum .u-accentColor--textNormal {color: #FFB3A8 !important;} .u-tintSpectrum .u-accentColor--hoverTextNormal:hover {color: #FFB3A8 !important;} .u-tintSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #FFEEE7 !important;} .u-tintSpectrum .u-accentColor--textDark {color: #FFEEE7 !important;} .u-tintSpectrum .u-accentColor--backgroundLight {background-color: #FF8B7F !important;} .u-tintSpectrum .u-accentColor--backgroundNormal {background-color: #FFB3A8 !important;} .u-tintSpectrum .u-accentColor--backgroundDark {background-color: #FFDAD2 !important;} .u-tintSpectrum .u-accentColor--buttonDark {border-color: #FFDAD2 !important; color: #FFEEE7 !important;} .u-tintSpectrum .u-accentColor--buttonDark:hover {border-color: #FFEEE7 !important;} .u-tintSpectrum .u-accentColor--buttonDark .icon:before,.u-tintSpectrum .u-accentColor--buttonDark .svgIcon{color: #FFDAD2 !important; fill: #FFDAD2 !important;} .u-tintSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #FFB3A8 !important; color: #FFB3A8 !important;} .u-tintSpectrum .u-accentColor--buttonNormal:hover {border-color: #FFDAD2 !important;} .u-tintSpectrum .u-accentColor--buttonNormal .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal .svgIcon{color: #FFB3A8 !important; fill: #FFB3A8 !important;} .u-tintSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(189, 8, 28, 1) !important; fill: rgba(189, 8, 28, 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: #FFDAD2 !important; border-color: #FFDAD2 !important; color: rgba(189, 8, 28, 1) !important; fill: rgba(189, 8, 28, 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: #FFB3A8 !important; border-color: #FFB3A8 !important; color: rgba(189, 8, 28, 1) !important; fill: rgba(189, 8, 28, 1) !important;} .u-tintSpectrum .postArticle.is-withAccentColors .markup--user,.u-tintSpectrum .postArticle.is-withAccentColors .markup--query {color: #FFB3A8 !important;} .u-accentColor--highlightFaint {background-color: rgba(255, 216, 207, 1) !important;} .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(255, 161, 147, 1) !important;} .postArticle.is-withAccentColors .markup--quote.is-other {background-color: rgba(255, 216, 207, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 216, 207, 1), rgba(255, 216, 207, 1));} .postArticle.is-withAccentColors .markup--quote.is-me {background-color: rgba(255, 187, 173, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 187, 173, 1), rgba(255, 187, 173, 1));} .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: rgba(255, 161, 147, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 161, 147, 1), rgba(255, 161, 147, 1));} .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: rgba(255, 161, 147, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 161, 147, 1), rgba(255, 161, 147, 1));} .postArticle.is-withAccentColors .markup--highlight {background-color: rgba(255, 161, 147, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 161, 147, 1), rgba(255, 161, 147, 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="container u-maxWidth1072 u-hide"><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/pinterest-engineering/about" title="About Pinterest Engineering Blog" aria-label="About Pinterest Engineering Blog">About Pinterest Engineering 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/pinterest-engineering/latest" title="Latest Stories for Pinterest Engineering Blog" aria-label="Latest Stories for Pinterest Engineering 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/pinterest-engineering/archive" title="Archive for Pinterest Engineering Blog" aria-label="Archive for Pinterest Engineering 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 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":"20250224-1955-root","currentUser":{"userId":"lo_b2b083dcb8ef","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":"1740487636637:80d7312eefee","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_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>// <","detectedLanguage":"en","latestVersion":"6613dc8f3059","latestPublishedVersion":"6613dc8f3059","hasUnpublishedEdits":false,"latestRev":360,"createdAt":1710273547149,"updatedAt":1732965925860,"acceptedAt":0,"firstPublishedAt":1710285291264,"latestPublishedAt":1710285291264,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Monil Mukesh Sanghavi | Software Engineer, Real Time Analytics Team; Xiao Li | Software Engineer, Real Time Analytics Team; Ming-May Hu |…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*Hujnqp_ULTXGaPrm1-P7hg.jpeg","filter":"","backgroundSize":"","originalWidth":5760,"originalHeight":3840,"strategy":"resample","height":0,"width":0},"wordCount":2445,"imageCount":18,"readingTime":10.876415094339624,"subtitle":"Monil Mukesh Sanghavi | Software Engineer, Real Time Analytics Team; Xiao Li | Software Engineer, Real Time Analytics Team; Ming-May Hu |…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":32,"isBookmarked":false,"tags":[{"slug":"pinterest","name":"Pinterest","postCount":10439,"metadata":{"postCount":10439,"coverImage":{"id":"1*jJltYM0mDcurFU-2CaEXcw@2x.jpeg","originalWidth":2160,"originalHeight":1440,"backgroundSize":"","filter":"","isFeatured":false,"externalSrc":"","focusPercentX":-1,"focusPercentY":-1,"alt":"","repairedAt":0,"unsplashPhotoId":""}},"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":"time-series-database","name":"Time Series Database","postCount":309,"metadata":{"postCount":309,"coverImage":{"id":"1*bQJJ56rOjkNPLXeJ5dtWBw.jpeg","originalWidth":1600,"originalHeight":380,"isFeatured":true}},"type":"Tag"},{"slug":"observability","name":"Observability","postCount":4999,"metadata":{"postCount":4999,"coverImage":{"id":"0*1ouFTXxxR8QgtFqq.png","originalWidth":600,"originalHeight":400,"isFeatured":true}},"type":"Tag"},{"slug":"database","name":"Database","postCount":55276,"metadata":{"postCount":55276,"coverImage":{"id":"1*8K2t2lE71MR-avy8apK5_g@2x.png","originalWidth":1312,"originalHeight":880,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://thrift.apache.org/","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/goku-building-a-scalable-and-high-performant-time-series-database-system-a8ff5758a181","alts":[{"type":3,"url":"medium://p/a8ff5758a181"},{"type":2,"url":"medium://p/a8ff5758a181"}],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/improving-efficiency-of-goku-time-series-database-at-pinterest-part-1-7659b94796f4","alts":[{"type":3,"url":"medium://p/7659b94796f4"},{"type":2,"url":"medium://p/7659b94796f4"}],"httpStatus":200},{"url":"http://opentsdb.net/docs/build/html/user_guide/query/index.html","alts":[],"httpStatus":200},{"url":"http://opentsdb.net/docs/build/html/user_guide/writing/index.html#data-specification","alts":[],"httpStatus":200},{"url":"http://opentsdb.net/docs/build/html/user_guide/writing/index.html#time-series-cardinality","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering","alts":[{"type":2,"url":"medium://pinterest-engineering"},{"type":3,"url":"medium://pinterest-engineering"}],"httpStatus":200},{"url":"https://www.pinterestcareers.com/?utm_source=Medium&utm_campaign=engineering-Q12024&utm_medium=blogarticle&utm_content=Mukesh","alts":[],"httpStatus":200},{"url":"https://www.pinterestlabs.com/?utm_source=Medium&utm_campaign=engineering-Q12024&utm_medium=blogarticle&utm_content=Mukesh","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/gokul-extending-time-series-data-storage-to-serve-beyond-one-day-52264307364d","alts":[{"type":2,"url":"medium://p/52264307364d"},{"type":3,"url":"medium://p/52264307364d"}],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/cost-reduction-in-goku-9bf09696e99e","alts":[{"type":3,"url":"medium://p/9bf09696e99e"},{"type":2,"url":"medium://p/9bf09696e99e"}],"httpStatus":200}],"version":"0.3","generatedAt":1710285292078},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":116,"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":"improving-efficiency-of-goku-time-series-database-at-pinterest-part-2","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"improving-efficiency-of-goku-time-series-database-at-pinterest-part-2-08130f25b874","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*Hujnqp_ULTXGaPrm1-P7hg.jpeg","originalWidth":5760,"originalHeight":3840,"isFeatured":true,"alt":"man’s hands holding a stopwatch"}},{"name":"4615","type":3,"text":"Improving Efficiency Of Goku Time Series Database at Pinterest (Part 2)","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Monil Mukesh Sanghavi | Software Engineer, Real Time Analytics Team; Xiao Li | Software Engineer, Real Time Analytics Team; Ming-May Hu |…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"4c5a5f6279b6","isNewsletter":false,"newsletterId":"b6e45e5dcccf","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":"4615","type":3,"text":"Improving Efficiency Of Goku Time Series Database at Pinterest (Part 2)","markups":[]},{"name":"67e3","type":1,"text":"Monil Mukesh Sanghavi | Software Engineer, Real Time Analytics Team; Xiao Li | Software Engineer, Real Time Analytics Team; Ming-May Hu | Software Engineer, Real Time Analytics Team; Zhenxiao Luo | Software Engineer, Real Time Analytics Team; Kapil Bajaj | Manager, Real Time Analytics Team","markups":[]},{"name":"337d","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*Hujnqp_ULTXGaPrm1-P7hg.jpeg","originalWidth":5760,"originalHeight":3840,"isFeatured":true,"alt":"man’s hands holding a stopwatch"}},{"name":"e7fa","type":1,"text":"At Pinterest, one of the…","markups":[]}],"sections":[{"name":"e0a1","startIndex":0}]},"isFullContent":false,"subtitle":"Monil Mukesh Sanghavi | Software Engineer, Real Time Analytics Team; Xiao Li | Software Engineer, Real Time Analytics Team; Ming-May Hu |…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"4d68679161ef":{"id":"4d68679161ef","versionId":"aa71d0f3ef73","creatorId":"ef81ef829bcb","homeCollectionId":"4c5a5f6279b6","title":"Unlocking AI Assisted Development Safely: From Idea to GA","detectedLanguage":"en","latestVersion":"aa71d0f3ef73","latestPublishedVersion":"aa71d0f3ef73","hasUnpublishedEdits":false,"latestRev":89,"createdAt":1708630848216,"updatedAt":1708699723155,"acceptedAt":0,"firstPublishedAt":1708638396556,"latestPublishedAt":1708639366269,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Sam Wang | Sr. Technical Program Manager; Joe Gordon | Sr. Staff Software Engineer","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*PtTuxE-yJmIo2cdK","filter":"","backgroundSize":"","originalWidth":1454,"originalHeight":1600,"strategy":"resample","height":0,"width":0},"wordCount":1236,"imageCount":2,"readingTime":5.04748427672956,"subtitle":"Sam Wang | Sr. Technical Program Manager; Joe Gordon | Sr. Staff Software Engineer","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":38,"isBookmarked":false,"tags":[{"slug":"pinterest","name":"Pinterest","postCount":10439,"metadata":{"postCount":10439,"coverImage":{"id":"1*jJltYM0mDcurFU-2CaEXcw@2x.jpeg","originalWidth":2160,"originalHeight":1440,"backgroundSize":"","filter":"","isFeatured":false,"externalSrc":"","focusPercentX":-1,"focusPercentY":-1,"alt":"","repairedAt":0,"unsplashPhotoId":""}},"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"},{"slug":"productivity","name":"Productivity","postCount":415804,"metadata":{"postCount":415804,"coverImage":{"id":"1*23EURixTdGzquD9--plvmw.jpeg"}},"type":"Tag"},{"slug":"developer-experience","name":"Developer Experience","postCount":1176,"metadata":{"postCount":1176,"coverImage":{"id":"1*GekDR2W4K4VeP5FfmLz7lw.jpeg","originalWidth":1792,"originalHeight":1024,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://www.wsj.com/articles/apple-restricts-use-of-chatgpt-joining-other-companies-wary-of-leaks-d44d7d34","alts":[],"httpStatus":401},{"url":"https://en.wikipedia.org/wiki/Technology_adoption_life_cycle","alts":[],"httpStatus":200},{"url":"https://www.pinterestcareers.com/en/pinterest-labs/?utm_source=Medium&utm_campaign=engineering-Q12024&utm_medium=blogarticle&utm_content=Wang","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering","alts":[{"type":2,"url":"medium://pinterest-engineering"},{"type":3,"url":"medium://pinterest-engineering"}],"httpStatus":200},{"url":"https://www.pinterestcareers.com/?utm_source=Medium&utm_campaign=engineering-Q12024&utm_medium=blogarticle&utm_content=Wang","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1708639366677},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":96,"sectionCount":1,"readingList":0,"topics":[{"topicId":"1af65db9c2f8","slug":"artificial-intelligence","createdAt":1487916832419,"deletedAt":0,"image":{"id":"1*A28aHchbaA8zNVXraBq0Ug@2x.jpeg","originalWidth":4866,"originalHeight":3244},"name":"Artificial Intelligence","description":"Born to be bot.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"AI News and Artificial Intelligence 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":"unlocking-ai-assisted-development-safely-from-idea-to-ga","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"unlocking-ai-assisted-development-safely-from-idea-to-ga-4d68679161ef","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*PtTuxE-yJmIo2cdK","originalWidth":1454,"originalHeight":1600,"isFeatured":true}},{"name":"a25b","type":3,"text":"Unlocking AI Assisted Development Safely: From Idea to GA","markups":[{"type":1,"start":0,"end":57}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Sam Wang | Sr. Technical Program Manager; Joe Gordon | Sr. Staff Software Engineer"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"4c5a5f6279b6","isNewsletter":false,"newsletterId":"00f5aabc756f","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":"a25b","type":3,"text":"Unlocking AI Assisted Development Safely: From Idea to GA","markups":[{"type":1,"start":0,"end":57}]},{"name":"f13a","type":1,"text":"Sam Wang | Sr. Technical Program Manager; Joe Gordon | Sr. Staff Software Engineer","markups":[]},{"name":"1c9b","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*PtTuxE-yJmIo2cdK","originalWidth":1454,"originalHeight":1600,"isFeatured":true}},{"name":"38ca","type":1,"text":"At Pinterest we are continuously looking for ways to improve our developer experience, and we have recently shipped AI-assisted development for everyone while balancing safety, security, and cost. In this blog post, we share our journey…","markups":[]}],"sections":[{"name":"bcfb","startIndex":0}]},"isFullContent":false,"subtitle":"Sam Wang | Sr. Technical Program Manager; Joe Gordon | Sr. Staff Software Engineer"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"839f3cf996bc":{"id":"839f3cf996bc","versionId":"0252bb8b5578","creatorId":"ef81ef829bcb","homeCollectionId":"4c5a5f6279b6","title":"Migrating Policy Delivery Engines with (almost) Nobody Knowing","detectedLanguage":"en","latestVersion":"0252bb8b5578","latestPublishedVersion":"0252bb8b5578","hasUnpublishedEdits":false,"latestRev":198,"createdAt":1706295233223,"updatedAt":1706367193851,"acceptedAt":0,"firstPublishedAt":1706297435946,"latestPublishedAt":1706297435946,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Jeremy Krach | Staff Security Engineer, Platform Security","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*KK9jDNzG4Pky7nn9","filter":"","backgroundSize":"","originalWidth":960,"originalHeight":540,"strategy":"resample","height":0,"width":0},"wordCount":2081,"imageCount":5,"readingTime":8.68616352201258,"subtitle":"Jeremy Krach | Staff Security Engineer, Platform Security","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":22,"isBookmarked":false,"tags":[{"slug":"pinterest","name":"Pinterest","postCount":10439,"metadata":{"postCount":10439,"coverImage":{"id":"1*jJltYM0mDcurFU-2CaEXcw@2x.jpeg","originalWidth":2160,"originalHeight":1440,"backgroundSize":"","filter":"","isFeatured":false,"externalSrc":"","focusPercentX":-1,"focusPercentY":-1,"alt":"","repairedAt":0,"unsplashPhotoId":""}},"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":1,"links":{"entries":[{"url":"https://www.opal.ac/","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/containerization-at-pinterest-92295347f2f3","alts":[{"type":3,"url":"medium://p/92295347f2f3"},{"type":2,"url":"medium://p/92295347f2f3"}],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Pareto_principle","alts":[],"httpStatus":200},{"url":"https://www.pinterestcareers.com/en/pinterest-labs/?utm_source=Medium&utm_campaign=engineering-Q12024_krach&utm_medium=blogarticle","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering","alts":[{"type":2,"url":"medium://pinterest-engineering"},{"type":3,"url":"medium://pinterest-engineering"}],"httpStatus":200},{"url":"https://www.pinterestcareers.com/?utm_source=Medium&utm_campaign=engineering-Q12024_krach&utm_medium=blogarticle","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1706297436461},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":89,"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":"migrating-policy-delivery-engines-with-almost-nobody-knowing","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"migrating-policy-delivery-engines-with-almost-nobody-knowing-839f3cf996bc","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*KK9jDNzG4Pky7nn9","originalWidth":960,"originalHeight":540,"isFeatured":true}},{"name":"bae7","type":3,"text":"Migrating Policy Delivery Engines with (almost) Nobody Knowing","markups":[{"type":1,"start":0,"end":62}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Jeremy Krach | Staff Security Engineer, Platform Security"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"4c5a5f6279b6","isNewsletter":false,"newsletterId":"9aaf2958532a","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":"bae7","type":3,"text":"Migrating Policy Delivery Engines with (almost) Nobody Knowing","markups":[{"type":1,"start":0,"end":62}]},{"name":"c630","type":1,"text":"Jeremy Krach | Staff Security Engineer, Platform Security","markups":[]},{"name":"c095","type":3,"text":"Background","markups":[]},{"name":"6c43","type":1,"text":"Several years ago, Pinterest had a short incident due to oversights in the policy delivery engine. This engine is the technology that ensures a policy document written by a developer and checked into source control is fully delivered to the production system…","markups":[{"type":3,"start":294,"end":298,"href":"https://www.opal.ac/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"2c55","startIndex":0}]},"isFullContent":false,"subtitle":"Jeremy Krach | Staff Security Engineer, Platform Security"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"f5277ee4e3d2":{"id":"f5277ee4e3d2","versionId":"26b3477ef2f4","creatorId":"ef81ef829bcb","homeCollectionId":"4c5a5f6279b6","title":"Building Pinterest’s new wide column database using RocksDB","detectedLanguage":"en","latestVersion":"26b3477ef2f4","latestPublishedVersion":"26b3477ef2f4","hasUnpublishedEdits":false,"latestRev":349,"createdAt":1703008820558,"updatedAt":1704472630164,"acceptedAt":0,"firstPublishedAt":1704399571600,"latestPublishedAt":1704399571600,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Rajath Prasad, Senior Engineering Manager","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*b3gyyHWpBT2OCucC","filter":"","backgroundSize":"","originalWidth":834,"originalHeight":534,"strategy":"resample","height":0,"width":0},"wordCount":2368,"imageCount":5,"readingTime":9.769182389937107,"subtitle":"Rajath Prasad, Senior Engineering Manager","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":150,"isBookmarked":false,"tags":[{"slug":"pinterest","name":"Pinterest","postCount":10439,"metadata":{"postCount":10439,"coverImage":{"id":"1*jJltYM0mDcurFU-2CaEXcw@2x.jpeg","originalWidth":2160,"originalHeight":1440,"backgroundSize":"","filter":"","isFeatured":false,"externalSrc":"","focusPercentX":-1,"focusPercentY":-1,"alt":"","repairedAt":0,"unsplashPhotoId":""}},"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"},{"slug":"storage","name":"Storage","postCount":8658,"metadata":{"postCount":8658,"coverImage":{"id":"1*9hT6dU_9KQBtNvzv6M1CDw.jpeg","originalWidth":1792,"originalHeight":1024}},"type":"Tag"},{"slug":"database","name":"Database","postCount":55276,"metadata":{"postCount":55276,"coverImage":{"id":"1*8K2t2lE71MR-avy8apK5_g@2x.png","originalWidth":1312,"originalHeight":880,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":6,"links":{"entries":[{"url":"https://rocksdb.org/blog/2015/11/10/use-checkpoints-for-efficient-snapshots.html","alts":[],"httpStatus":200},{"url":"https://medium.com/@Pinterest_Engineering/3-innovations-while-unifying-pinterests-key-value-storage-8cdcdf8cf6aa","alts":[{"type":3,"url":"medium://p/8cdcdf8cf6aa"},{"type":2,"url":"medium://p/8cdcdf8cf6aa"}],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/large-scale-user-sequences-at-pinterest-78a5075a3fe9","alts":[{"type":3,"url":"medium://p/78a5075a3fe9"},{"type":2,"url":"medium://p/78a5075a3fe9"}],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering","alts":[{"type":2,"url":"medium://pinterest-engineering"},{"type":3,"url":"medium://pinterest-engineering"}],"httpStatus":200},{"url":"https://www.pinterestcareers.com/en/pinterest-labs/?utm_source=Medium&utm_campaign=engineering-Q12024Prasad&utm_medium=blogarticle","alts":[],"httpStatus":200},{"url":"https://www.pinterestcareers.com/en/?utm_source=Medium&utm_campaign=engineering-Q12024Prasad&utm_medium=blogarticle","alts":[],"httpStatus":200},{"url":"https://github.com/facebook/rocksdb/wiki/Manual-Compaction","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/open-sourcing-rocksplicator-a-real-time-rocksdb-data-replicator-558cd3847a9d","alts":[{"type":3,"url":"medium://p/558cd3847a9d"},{"type":2,"url":"medium://p/558cd3847a9d"}],"httpStatus":200}],"version":"0.3","generatedAt":1704399572257},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":600,"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":"building-pinterests-new-wide-column-database-using-rocksdb","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"building-pinterests-new-wide-column-database-using-rocksdb-f5277ee4e3d2","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*b3gyyHWpBT2OCucC","originalWidth":834,"originalHeight":534,"isFeatured":true}},{"name":"e3e9","type":3,"text":"Building Pinterest’s new wide column database using RocksDB","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Rajath Prasad, Senior Engineering Manager"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"4c5a5f6279b6","isNewsletter":false,"newsletterId":"8e261de105f3","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":"e3e9","type":3,"text":"Building Pinterest’s new wide column database using RocksDB","markups":[]},{"name":"0440","type":1,"text":"Rajath Prasad, Senior Engineering Manager","markups":[{"type":2,"start":0,"end":41}]},{"name":"a19e","type":1,"text":"Pinterest serves more than 480M monthly users and has grown to be a global destination for visual inspiration. As Pinterest has grown, so have our storage requirements. In 2020, anticipating the growing needs of the business and to simplify our storage offerings, we decided to…","markups":[{"type":3,"start":278,"end":321,"href":"https://medium.com/@Pinterest_Engineering/3-innovations-while-unifying-pinterests-key-value-storage-8cdcdf8cf6aa","title":"","rel":"","anchorType":0},{"type":1,"start":471,"end":490}]}],"sections":[{"name":"5261","startIndex":0}]},"isFullContent":false,"subtitle":"Rajath Prasad, Senior Engineering Manager"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"7659b94796f4":{"id":"7659b94796f4","versionId":"f2ff4076b6d0","creatorId":"ef81ef829bcb","homeCollectionId":"4c5a5f6279b6","title":"Improving Efficiency Of Goku Time Series Database at Pinterest (Part — 1)","detectedLanguage":"en","latestVersion":"f2ff4076b6d0","latestPublishedVersion":"f2ff4076b6d0","hasUnpublishedEdits":false,"latestRev":707,"createdAt":1700677618785,"updatedAt":1710677631951,"acceptedAt":0,"firstPublishedAt":1700680824961,"latestPublishedAt":1700680824961,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Monil Mukesh Sanghavi, Kapil Bajaj, Ming-May Hu, Xiao Li and Zhenxiao Luo","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*y4nQMWfqrsoKVsIS","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":1025,"strategy":"resample","height":0,"width":0},"wordCount":3103,"imageCount":18,"readingTime":13.359433962264152,"subtitle":"Monil Mukesh Sanghavi, Kapil Bajaj, Ming-May Hu, Xiao Li and Zhenxiao Luo","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":44,"isBookmarked":false,"tags":[{"slug":"pinterest","name":"Pinterest","postCount":10439,"metadata":{"postCount":10439,"coverImage":{"id":"1*jJltYM0mDcurFU-2CaEXcw@2x.jpeg","originalWidth":2160,"originalHeight":1440,"backgroundSize":"","filter":"","isFeatured":false,"externalSrc":"","focusPercentX":-1,"focusPercentY":-1,"alt":"","repairedAt":0,"unsplashPhotoId":""}},"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"},{"slug":"time-series-database","name":"Time Series Database","postCount":309,"metadata":{"postCount":309,"coverImage":{"id":"1*bQJJ56rOjkNPLXeJ5dtWBw.jpeg","originalWidth":1600,"originalHeight":380,"isFeatured":true}},"type":"Tag"},{"slug":"tsdb","name":"Tsdb","postCount":60,"metadata":{"postCount":60,"coverImage":{"id":"0*osN7NtOCCABL832K.png","originalWidth":1200,"originalHeight":628,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://rocksdb.org/blog/2017/02/17/bulkoad-ingest-sst-file.html","alts":[],"httpStatus":200},{"url":"https://rocksdb.org/blog/2018/11/21/delete-range.html","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/gokul-extending-time-series-data-storage-to-serve-beyond-one-day-52264307364d","alts":[{"type":2,"url":"medium://p/52264307364d"},{"type":3,"url":"medium://p/52264307364d"}],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/goku-building-a-scalable-and-high-performant-time-series-database-system-a8ff5758a181","alts":[{"type":3,"url":"medium://p/a8ff5758a181"},{"type":2,"url":"medium://p/a8ff5758a181"}],"httpStatus":200},{"url":"https://www.pinterestcareers.com/en/?utm_source=Medium&utm_campaign=engineering-Q42023_Sanghavi&utm_medium=blogarticle","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering","alts":[{"type":3,"url":"medium://pinterest-engineering"},{"type":2,"url":"medium://pinterest-engineering"}],"httpStatus":200},{"url":"https://www.pinterestcareers.com/en/pinterest-labs/?utm_source=Medium&utm_campaign=engineering-Q42023_Sanghavi&utm_medium=blogarticle","alts":[],"httpStatus":200},{"url":"https://github.com/facebook/rocksdb/wiki/Creating-and-Ingesting-SST-files","alts":[],"httpStatus":200},{"url":"https://github.com/facebook/rocksdb/wiki/RocksDB-Overview#3-high-level-architecture","alts":[],"httpStatus":200},{"url":"https://github.com/facebook/rocksdb/wiki/Compaction","alts":[],"httpStatus":200},{"url":"https://github.com/facebook/rocksdb/wiki/Rocksdb-BlockBasedTable-Format","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/cost-reduction-in-goku-9bf09696e99e","alts":[{"type":3,"url":"medium://p/9bf09696e99e"},{"type":2,"url":"medium://p/9bf09696e99e"}],"httpStatus":200}],"version":"0.3","generatedAt":1700680825772},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":248,"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":"improving-efficiency-of-goku-time-series-database-at-pinterest-part-1","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"improving-efficiency-of-goku-time-series-database-at-pinterest-part-1-7659b94796f4","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*y4nQMWfqrsoKVsIS","originalWidth":1600,"originalHeight":1025,"isFeatured":true}},{"name":"3d2e","type":3,"text":"Improving Efficiency Of Goku Time Series Database at Pinterest (Part — 1)","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Monil Mukesh Sanghavi, Kapil Bajaj, Ming-May Hu, Xiao Li and Zhenxiao Luo"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"4c5a5f6279b6","isNewsletter":false,"newsletterId":"4c9dab9fdd6a","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":"3d2e","type":3,"text":"Improving Efficiency Of Goku Time Series Database at Pinterest (Part — 1)","markups":[]},{"name":"d58d","type":1,"text":"Monil Mukesh Sanghavi, Kapil Bajaj, Ming-May Hu, Xiao Li and Zhenxiao Luo","markups":[]},{"name":"0994","type":3,"text":"Introduction","markups":[]},{"name":"aa99","type":1,"text":"At Pinterest, one of the pillars of the observability stack provides internal engineering teams (our users) the opportunity to monitor their services using metrics data and set up alerting on it. Goku is our in-house time series database…","markups":[]}],"sections":[{"name":"4894","startIndex":0}]},"isFullContent":false,"subtitle":"Monil Mukesh Sanghavi, Kapil Bajaj, Ming-May Hu, Xiao Li and Zhenxiao Luo"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"8ad408df2d6f":{"id":"8ad408df2d6f","versionId":"2ca91486d0af","creatorId":"ef81ef829bcb","homeCollectionId":"4c5a5f6279b6","title":"PinCompute: A Kubernetes Backed General Purpose Compute Platform for Pinterest","detectedLanguage":"en","latestVersion":"2ca91486d0af","latestPublishedVersion":"2ca91486d0af","hasUnpublishedEdits":false,"latestRev":305,"createdAt":1698786431904,"updatedAt":1734770425545,"acceptedAt":0,"firstPublishedAt":1698788034165,"latestPublishedAt":1698865137002,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Harry Zhang, Jiajun Wang, Yi Li, Shunyao Li, Ming Zong, Haniel Martino, Cathy Lu, Quentin Miao, Hao Jiang, James Wen, David Westbrook |…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*RVStgBIqAdtTVOth","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":900,"strategy":"resample","height":0,"width":0},"wordCount":4192,"imageCount":14,"readingTime":17.2688679245283,"subtitle":"Harry Zhang, Jiajun Wang, Yi Li, Shunyao Li, Ming Zong, Haniel Martino, Cathy Lu, Quentin Miao, Hao Jiang, James Wen, David Westbrook |…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":68,"isBookmarked":false,"tags":[{"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"},{"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":"pinterest","name":"Pinterest","postCount":10439,"metadata":{"postCount":10439,"coverImage":{"id":"1*jJltYM0mDcurFU-2CaEXcw@2x.jpeg","originalWidth":2160,"originalHeight":1440,"backgroundSize":"","filter":"","isFeatured":false,"externalSrc":"","focusPercentX":-1,"focusPercentY":-1,"alt":"","repairedAt":0,"unsplashPhotoId":""}},"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"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://aws.amazon.com/what-is/cloud-native/","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/building-a-kubernetes-platform-at-pinterest-fb3d9571c948","alts":[{"type":3,"url":"medium://p/fb3d9571c948"},{"type":2,"url":"medium://p/fb3d9571c948"}],"httpStatus":200},{"url":"https://www.kubeflow.org/","alts":[],"httpStatus":200},{"url":"https://www.pinterestcareers.com/en/?utm_source=Medium&utm_campaign=engineering-Q42023_zhang&utm_medium=blogarticle","alts":[],"httpStatus":200},{"url":"https://www.pinterestcareers.com/en/pinterest-labs/?utm_source=Medium&utm_campaign=engineering-Q42023_zhang&utm_medium=blogarticle","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering","alts":[{"type":2,"url":"medium://pinterest-engineering"},{"type":3,"url":"medium://pinterest-engineering"}],"httpStatus":200},{"url":"https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/","alts":[],"httpStatus":200},{"url":"https://kubernetes.io/docs/concepts/workloads/controllers/job/","alts":[],"httpStatus":200},{"url":"https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/","alts":[],"httpStatus":200},{"url":"https://www.kubeflow.org/docs/components/training/","alts":[],"httpStatus":200},{"url":"https://unsplash.com/photos/ZfVyuV8l7WU","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1698865137514},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":238,"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":"pincompute-a-kubernetes-backed-general-purpose-compute-platform-for-pinterest","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"pincompute-a-kubernetes-backed-general-purpose-compute-platform-for-pinterest-8ad408df2d6f","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*RVStgBIqAdtTVOth","originalWidth":1600,"originalHeight":900,"isFeatured":true}},{"name":"08ff","type":3,"text":"PinCompute: A Kubernetes Backed General Purpose Compute Platform for Pinterest","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Harry Zhang, Jiajun Wang, Yi Li, Shunyao Li, Ming Zong, Haniel Martino, Cathy Lu, Quentin Miao, Hao Jiang, James Wen, David Westbrook |…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"4c5a5f6279b6","isNewsletter":false,"newsletterId":"d7b17e2910c4","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":"08ff","type":3,"text":"PinCompute: A Kubernetes Backed General Purpose Compute Platform for Pinterest","markups":[]},{"name":"eb4e","type":1,"text":"Harry Zhang, Jiajun Wang, Yi Li, Shunyao Li, Ming Zong, Haniel Martino, Cathy Lu, Quentin Miao, Hao Jiang, James Wen, David Westbrook | Cloud Runtime Team","markups":[]},{"name":"c60e","type":4,"text":"Image Source: https://unsplash.com/photos/ZfVyuV8l7WU","markups":[{"type":3,"start":14,"end":53,"href":"https://unsplash.com/photos/ZfVyuV8l7WU","title":"","rel":"noopener","anchorType":0},{"type":2,"start":0,"end":53}],"layout":1,"metadata":{"id":"0*RVStgBIqAdtTVOth","originalWidth":1600,"originalHeight":900,"isFeatured":true}},{"name":"6a7c","type":3,"text":"Overview","markups":[]},{"name":"05a0","type":1,"text":"Modern compute platforms are foundational to accelerating innovation and running applications more efficiently. At Pinterest, we are evolving our compute platform to provide an…","markups":[]}],"sections":[{"name":"508a","startIndex":0}]},"isFullContent":false,"subtitle":"Harry Zhang, Jiajun Wang, Yi Li, Shunyao Li, Ming Zong, Haniel Martino, Cathy Lu, Quentin Miao, Hao Jiang, James Wen, David Westbrook |…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"64ae2e721daa":{"id":"64ae2e721daa","versionId":"9db6531c8e63","creatorId":"ef81ef829bcb","homeCollectionId":"4c5a5f6279b6","title":"Running Unified PubSub Client in Production at Pinterest","detectedLanguage":"en","latestVersion":"9db6531c8e63","latestPublishedVersion":"9db6531c8e63","hasUnpublishedEdits":false,"latestRev":567,"createdAt":1699386683751,"updatedAt":1699481682544,"acceptedAt":0,"firstPublishedAt":1699390450435,"latestPublishedAt":1699390777295,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Jeff Xiang | Software Engineer, Logging Platform","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*xauDb88X2Gd0CPu6","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":1066,"strategy":"resample","height":0,"width":0},"wordCount":2066,"imageCount":2,"readingTime":8.179559748427673,"subtitle":"Jeff Xiang | Software Engineer, Logging Platform","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":41,"isBookmarked":false,"tags":[{"slug":"pinterest","name":"Pinterest","postCount":10439,"metadata":{"postCount":10439,"coverImage":{"id":"1*jJltYM0mDcurFU-2CaEXcw@2x.jpeg","originalWidth":2160,"originalHeight":1440,"backgroundSize":"","filter":"","isFeatured":false,"externalSrc":"","focusPercentX":-1,"focusPercentY":-1,"alt":"","repairedAt":0,"unsplashPhotoId":""}},"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"},{"slug":"data-infrastructure","name":"Data Infrastructure","postCount":419,"metadata":{"postCount":419,"coverImage":{"id":"1*Bt81Y-CkxowyZ_M5661gtg.png","originalWidth":1708,"originalHeight":1060,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://www.pinterestcareers.com/en/?utm_source=Medium&utm_campaign=engineering-Q42023_Xiang&utm_medium=blogarticle","alts":[],"httpStatus":200},{"url":"https://www.pinterestcareers.com/en/pinterest-labs/?utm_source=Medium&utm_campaign=engineering-Q42023_Xiang&utm_medium=blogarticle","alts":[],"httpStatus":200},{"url":"https://github.com/pinterest/psc/tree/main/psc-flink","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering","alts":[{"type":2,"url":"medium://pinterest-engineering"},{"type":3,"url":"medium://pinterest-engineering"}],"httpStatus":200},{"url":"https://github.com/pinterest/psc/blob/main/docs/nativekafkatopscmigration.md","alts":[],"httpStatus":200},{"url":"https://github.com/pinterest/psc","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/unified-pubsub-client-at-pinterest-397ccfaf508e","alts":[{"type":3,"url":"medium://p/397ccfaf508e"},{"type":2,"url":"medium://p/397ccfaf508e"}],"httpStatus":200}],"version":"0.3","generatedAt":1699390778528},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":131,"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":"running-unified-pubsub-client-in-production-at-pinterest","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"running-unified-pubsub-client-in-production-at-pinterest-64ae2e721daa","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*xauDb88X2Gd0CPu6","originalWidth":1600,"originalHeight":1066,"isFeatured":true}},{"name":"b16d","type":3,"text":"Running Unified PubSub Client in Production at Pinterest","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Jeff Xiang | Software Engineer, Logging Platform"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"4c5a5f6279b6","isNewsletter":false,"newsletterId":"e7376866770e","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":"b16d","type":3,"text":"Running Unified PubSub Client in Production at Pinterest","markups":[]},{"name":"f974","type":1,"text":"Jeff Xiang | Software Engineer, Logging Platform","markups":[]},{"name":"a201","type":1,"text":"Vahid Hashemian | Software Engineer, Logging Platform","markups":[]},{"name":"e3d1","type":1,"text":"Jesus Zuniga | Software Engineer, Logging Platform","markups":[]},{"name":"57b4","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*xauDb88X2Gd0CPu6","originalWidth":1600,"originalHeight":1066,"isFeatured":true}},{"name":"6946","type":1,"text":"At Pinterest, data is ingested and transported at petabyte scale every day, bringing inspiration for our users to create a life they love. A central component of data ingestion…","markups":[{"type":3,"start":842,"end":851,"href":"https://medium.com/pinterest-engineering/unified-pubsub-client-at-pinterest-397ccfaf508e","title":"","rel":"","anchorType":0},{"type":3,"start":948,"end":967,"href":"https://github.com/pinterest/psc","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"d70c","startIndex":0}]},"isFullContent":false,"subtitle":"Jeff Xiang | Software Engineer, Logging Platform"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"f638c722d9f2":{"id":"f638c722d9f2","versionId":"da491840ba7f","creatorId":"ef81ef829bcb","homeCollectionId":"4c5a5f6279b6","title":"Lessons from debugging a tricky direct memory leak","detectedLanguage":"en","latestVersion":"da491840ba7f","latestPublishedVersion":"da491840ba7f","hasUnpublishedEdits":false,"latestRev":271,"createdAt":1695846540037,"updatedAt":1724193118348,"acceptedAt":0,"firstPublishedAt":1696000089534,"latestPublishedAt":1696000089534,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Sanchay Javeria | Software Engineer, Ads Data Infrastructure","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*Zr1A8sa3nu_-Ff-L","filter":"","backgroundSize":"","originalWidth":1382,"originalHeight":836,"strategy":"resample","height":0,"width":0},"wordCount":1686,"imageCount":11,"readingTime":7.662264150943396,"subtitle":"Sanchay Javeria | Software Engineer, Ads Data Infrastructure","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":91,"isBookmarked":false,"tags":[{"slug":"pinterest","name":"Pinterest","postCount":10439,"metadata":{"postCount":10439,"coverImage":{"id":"1*jJltYM0mDcurFU-2CaEXcw@2x.jpeg","originalWidth":2160,"originalHeight":1440,"backgroundSize":"","filter":"","isFeatured":false,"externalSrc":"","focusPercentX":-1,"focusPercentY":-1,"alt":"","repairedAt":0,"unsplashPhotoId":""}},"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://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html","alts":[],"httpStatus":200},{"url":"https://thrift.apache.org/","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering","alts":[{"type":2,"url":"medium://pinterest-engineering"},{"type":3,"url":"medium://pinterest-engineering"}],"httpStatus":200},{"url":"https://www.pinterestcareers.com/?utm_source=Medium&utm_campaign=engineering-Q32023_javeria&utm_medium=blogarticle","alts":[],"httpStatus":200},{"url":"https://chronicle.software/map/","alts":[],"httpStatus":200},{"url":"https://nightlies.apache.org/flink/flink-docs-release-1.17/docs/deployment/memory/mem_setup_tm/#detailed-memory-model","alts":[],"httpStatus":200},{"url":"https://nightlies.apache.org/flink/flink-docs-master/docs/ops/monitoring/back_pressure/#back-pressure:~:text=this%20means%20that%20it%20is%20producing%20data%20faster%20than%20the%20downstream%20operators%20can%20consume.%20Records%20in%20your%20job%20flow%20downstream%20(e.g.%20from%20sources%20to%20sinks)%20and%20back%20pressure%20is%20propagated%20in%20the%20opposite%20direction%2C%20up%20the%20stream.","alts":[],"httpStatus":200},{"url":"https://nightlies.apache.org/flink/flink-docs-master/docs/ops/state/checkpoints/#:~:text=Checkpoints%20make%20state%20in%20Flink,configure%20checkpoints%20for%20your%20program.","alts":[],"httpStatus":200},{"url":"https://nightlies.apache.org/flink/flink-docs-release-1.17/docs/internals/task_lifecycle/#:~:text=A%20task%20in%20Flink%20is,executed%20by%20a%20separate%20task.","alts":[],"httpStatus":200},{"url":"https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/internals/task_lifecycle/","alts":[],"httpStatus":200},{"url":"https://nightlies.apache.org/flink/flink-docs-master/docs/dev/datastream/operators/overview/#:~:text=Operators%20transform%20one%20or%20more%20DataStreams%20into%20a%20new%20DataStream.%20Programs%20can%20combine%20multiple%20transformations%20into%20sophisticated%20dataflow%20topologies.","alts":[],"httpStatus":200},{"url":"https://www.pinterestlabs.com/?utm_source=Medium&utm_campaign=engineering-Q32023_javeria&utm_medium=blogarticle","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1696000090149},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":577,"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":"lessons-from-debugging-a-tricky-direct-memory-leak","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"lessons-from-debugging-a-tricky-direct-memory-leak-f638c722d9f2","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*Zr1A8sa3nu_-Ff-L","originalWidth":1382,"originalHeight":836,"isFeatured":true,"alt":"out-of-memory stack trace"}},{"name":"5010","type":3,"text":"Lessons from debugging a tricky direct memory leak","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Sanchay Javeria | Software Engineer, Ads Data Infrastructure"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"4c5a5f6279b6","isNewsletter":false,"newsletterId":"f88751fe167d","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":"5010","type":3,"text":"Lessons from debugging a tricky direct memory leak","markups":[]},{"name":"1c9e","type":1,"text":"Sanchay Javeria | Software Engineer, Ads Data Infrastructure","markups":[]},{"name":"dddd","type":1,"text":"To support metrics reporting for ads from external advertisers and real-time ad budget calculations at Pinterest, we run streaming pipelines using Apache Flink. These jobs have guaranteed an overall 99th percentile availability to our users; however, every once in a while some…","markups":[{"type":3,"start":278,"end":283,"href":"https://nightlies.apache.org/flink/flink-docs-release-1.17/docs/internals/task_lifecycle/#:~:text=A%20task%20in%20Flink%20is,executed%20by%20a%20separate%20task.","title":"","rel":"","anchorType":0},{"type":3,"start":349,"end":358,"href":"https://nightlies.apache.org/flink/flink-docs-master/docs/dev/datastream/operators/overview/#:~:text=Operators%20transform%20one%20or%20more%20DataStreams%20into%20a%20new%20DataStream.%20Programs%20can%20combine%20multiple%20transformations%20into%20sophisticated%20dataflow%20topologies.","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"d866","startIndex":0}]},"isFullContent":false,"subtitle":"Sanchay Javeria | Software Engineer, Ads Data Infrastructure"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"629affbf34ff":{"id":"629affbf34ff","versionId":"aa1b99612083","creatorId":"ef81ef829bcb","homeCollectionId":"4c5a5f6279b6","title":"Last Mile Data Processing with Ray","detectedLanguage":"en","latestVersion":"aa1b99612083","latestPublishedVersion":"aa1b99612083","hasUnpublishedEdits":false,"latestRev":254,"createdAt":1694459974762,"updatedAt":1694608133013,"acceptedAt":0,"firstPublishedAt":1694542056423,"latestPublishedAt":1694542056423,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Raymond Lee | Software Engineer II; Qingxian Lai | Sr. Software Engineer; Karthik Anantha Padmanabhan | Manager II, Engineering; Se Won…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*A0WPSyaHovk3DFYUzFV3bA.jpeg","filter":"","backgroundSize":"","originalWidth":6240,"originalHeight":4160,"strategy":"resample","height":0,"width":0},"wordCount":1699,"imageCount":10,"readingTime":7.661320754716981,"subtitle":"Raymond Lee | Software Engineer II; Qingxian Lai | Sr. Software Engineer; Karthik Anantha Padmanabhan | Manager II, Engineering; Se Won…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":76,"isBookmarked":false,"tags":[{"slug":"pinterest","name":"Pinterest","postCount":10439,"metadata":{"postCount":10439,"coverImage":{"id":"1*jJltYM0mDcurFU-2CaEXcw@2x.jpeg","originalWidth":2160,"originalHeight":1440,"backgroundSize":"","filter":"","isFeatured":false,"externalSrc":"","focusPercentX":-1,"focusPercentY":-1,"alt":"","repairedAt":0,"unsplashPhotoId":""}},"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"},{"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":0,"links":{"entries":[{"url":"https://raysummit.anyscale.com/","alts":[],"httpStatus":200},{"url":"https://www.ray.io/","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/how-pinterest-leverages-realtime-user-actions-in-recommendation-to-boost-homefeed-engagement-volume-165ae2e8cde8","alts":[{"type":3,"url":"medium://p/165ae2e8cde8"},{"type":2,"url":"medium://p/165ae2e8cde8"}],"httpStatus":200},{"url":"https://www.anyscale.com/blog/offline-batch-inference-comparing-ray-apache-spark-and-sagemaker","alts":[],"httpStatus":200},{"url":"https://www.anyscale.com/blog/streaming-distributed-execution-across-cpus-and-gpus","alts":[],"httpStatus":200},{"url":"https://docs.ray.io/en/latest/data/data.html","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering","alts":[{"type":2,"url":"medium://pinterest-engineering"},{"type":3,"url":"medium://pinterest-engineering"}],"httpStatus":200},{"url":"https://www.pinterestcareers.com/en/pinterest-labs/?utm_source=Medium&utm_campaign=engineering-Q32023_lee&utm_medium=blogarticle","alts":[],"httpStatus":200},{"url":"https://www.pinterestcareers.com/?utm_source=Medium&utm_campaign=engineering-Q32023_lee&utm_medium=blogarticle","alts":[],"httpStatus":200},{"url":"https://medium.com/@Pinterest_Engineering/e2b30b2f6768","alts":[{"type":3,"url":"medium://p/e2b30b2f6768"},{"type":2,"url":"medium://p/e2b30b2f6768"}],"httpStatus":200},{"url":"https://youtu.be/RY02VBJBIm0?si=BiEYD5TuFpue0dfj&t=5107","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?si=BiEYD5TuFpue0dfj&t=5107&v=RY02VBJBIm0&feature=youtu.be&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?si=BiEYD5TuFpue0dfj&t=5107&v=RY02VBJBIm0&feature=youtu.be&feature=applinks"}],"httpStatus":200}],"version":"0.3","generatedAt":1694542057223},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":535,"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":"last-mile-data-processing-with-ray","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"last-mile-data-processing-with-ray-629affbf34ff","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*A0WPSyaHovk3DFYUzFV3bA.jpeg","originalWidth":6240,"originalHeight":4160,"isFeatured":true,"alt":"A close up of a window with “DATA *” and a building in the background"}},{"name":"8aee","type":3,"text":"Last Mile Data Processing with Ray","markups":[{"type":1,"start":0,"end":34}],"alignment":1},{"name":"0781","type":1,"text":"Raymond Lee | Software Engineer II; Qingxian Lai | Sr. Software Engineer; Karthik Anantha…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Raymond Lee | Software Engineer II; Qingxian Lai | Sr. Software Engineer; Karthik Anantha Padmanabhan | Manager II, Engineering; Se Won…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"4c5a5f6279b6","isNewsletter":false,"newsletterId":"8fdb816c1994","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":"8aee","type":3,"text":"Last Mile Data Processing with Ray","markups":[{"type":1,"start":0,"end":34}]},{"name":"0781","type":1,"text":"Raymond Lee | Software Engineer II; Qingxian Lai | Sr. Software Engineer; Karthik Anantha Padmanabhan | Manager II, Engineering; Se Won Jang | Manager II, Engineering","markups":[]},{"name":"2e3f","type":4,"text":"Photo by Claudio Schwarz on Unsplash","markups":[],"layout":1,"metadata":{"id":"1*A0WPSyaHovk3DFYUzFV3bA.jpeg","originalWidth":6240,"originalHeight":4160,"isFeatured":true,"alt":"A close up of a window with “DATA *” and a building in the background"}},{"name":"3ce7","type":1,"text":"Our mission at Pinterest is to bring everyone the inspiration to create the life they love. Machine Learning plays a crucial role in this…","markups":[]}],"sections":[{"name":"d2bd","startIndex":0}]},"isFullContent":false,"subtitle":"Raymond Lee | Software Engineer II; Qingxian Lai | Sr. Software Engineer; Karthik Anantha Padmanabhan | Manager II, Engineering; Se Won…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"e2b30b2f6768":{"id":"e2b30b2f6768","versionId":"4f10fd42c25a","creatorId":"ef81ef829bcb","homeCollectionId":"4c5a5f6279b6","title":"MLEnv: Standardizing ML at Pinterest Under One ML Engine to Accelerate Innovation","detectedLanguage":"en","latestVersion":"4f10fd42c25a","latestPublishedVersion":"4f10fd42c25a","hasUnpublishedEdits":false,"latestRev":241,"createdAt":1693240377137,"updatedAt":1694030643634,"acceptedAt":0,"firstPublishedAt":1693932798974,"latestPublishedAt":1693932798974,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Pong Eksombatchai | Principal Engineer; Karthik Anantha Padmanabhan | Manager II, Engineering","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*p6ptymzvBy3Wjqx9","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":1200,"strategy":"resample","height":0,"width":0},"wordCount":2377,"imageCount":11,"readingTime":10.269811320754718,"subtitle":"Pong Eksombatchai | Principal Engineer; Karthik Anantha Padmanabhan | Manager II, Engineering","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":70,"isBookmarked":false,"tags":[{"slug":"pinterest","name":"Pinterest","postCount":10439,"metadata":{"postCount":10439,"coverImage":{"id":"1*jJltYM0mDcurFU-2CaEXcw@2x.jpeg","originalWidth":2160,"originalHeight":1440,"backgroundSize":"","filter":"","isFeatured":false,"externalSrc":"","focusPercentX":-1,"focusPercentY":-1,"alt":"","repairedAt":0,"unsplashPhotoId":""}},"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"},{"slug":"machine-learning","name":"Machine Learning","postCount":373235,"metadata":{"postCount":373235,"coverImage":{"id":"1*ExTGSceclMqcKCXDecixwQ.jpeg","originalWidth":1200,"originalHeight":600}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":3,"links":{"entries":[{"url":"https://unsplash.com/photos/w7ZyuGYNpRQ","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/how-pinterest-leverages-realtime-user-actions-in-recommendation-to-boost-homefeed-engagement-volume-165ae2e8cde8","alts":[{"type":3,"url":"medium://p/165ae2e8cde8"},{"type":2,"url":"medium://p/165ae2e8cde8"}],"httpStatus":200},{"url":"https://medium.com/@Pinterest_Engineering/gpu-accelerated-ml-inference-at-pinterest-ad1b6a03a16d","alts":[{"type":3,"url":"medium://p/ad1b6a03a16d"},{"type":2,"url":"medium://p/ad1b6a03a16d"}],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering","alts":[{"type":2,"url":"medium://pinterest-engineering"},{"type":3,"url":"medium://pinterest-engineering"}],"httpStatus":200},{"url":"https://www.pinterestlabs.com/?utm_source=medium&utm_medium=blog-article-link&utm_campaign=eksombatchai-aug-2023","alts":[],"httpStatus":200},{"url":"https://www.pinterestcareers.com/?utm_source=medium&utm_medium=blog-article-link&utm_campaign=eksombatchai-aug-2023","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1693932800973},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":240,"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":"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":"mlenv-standardizing-ml-at-pinterest-under-one-ml-engine-to-accelerate-innovation","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"mlenv-standardizing-ml-at-pinterest-under-one-ml-engine-to-accelerate-innovation-e2b30b2f6768","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*p6ptymzvBy3Wjqx9","originalWidth":1600,"originalHeight":1200,"isFeatured":true,"alt":"Reading glasses sitting on top of a laptop’s spacebar with code on the screen behind it"}},{"name":"331b","type":3,"text":"MLEnv: Standardizing ML at Pinterest Under One ML Engine to Accelerate Innovation","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Pong Eksombatchai | Principal Engineer; Karthik Anantha Padmanabhan | Manager II, Engineering"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"4c5a5f6279b6","isNewsletter":false,"newsletterId":"1e668cf5f1a8","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":"331b","type":3,"text":"MLEnv: Standardizing ML at Pinterest Under One ML Engine to Accelerate Innovation","markups":[]},{"name":"b7ba","type":1,"text":"Pong Eksombatchai | Principal Engineer; Karthik Anantha Padmanabhan | Manager II, Engineering","markups":[]},{"name":"f37a","type":4,"text":"Image from https://unsplash.com/photos/w7ZyuGYNpRQ","markups":[{"type":3,"start":11,"end":50,"href":"https://unsplash.com/photos/w7ZyuGYNpRQ","title":"","rel":"","anchorType":0},{"type":2,"start":0,"end":50}],"layout":1,"metadata":{"id":"0*p6ptymzvBy3Wjqx9","originalWidth":1600,"originalHeight":1200,"isFeatured":true,"alt":"Reading glasses sitting on top of a laptop’s spacebar with code on the screen behind it"}},{"name":"6244","type":1,"text":"Pinterest’s mission is to bring everyone the inspiration to create a life they love. We rely on an extensive suite of AI powered products to connect over 460M users to hundreds of billions of Pins, resulting in hundreds…","markups":[]}],"sections":[{"name":"2856","startIndex":0}]},"isFullContent":false,"subtitle":"Pong Eksombatchai | Principal Engineer; Karthik Anantha Padmanabhan | Manager II, Engineering"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"bbc3406a1695":{"id":"bbc3406a1695","versionId":"1d03f439cc4d","creatorId":"ef81ef829bcb","homeCollectionId":"4c5a5f6279b6","title":"Securely Scaling Big Data Access Controls At Pinterest","detectedLanguage":"en","latestVersion":"1d03f439cc4d","latestPublishedVersion":"1d03f439cc4d","hasUnpublishedEdits":false,"latestRev":539,"createdAt":1690231817044,"updatedAt":1690323031160,"acceptedAt":0,"firstPublishedAt":1690305553555,"latestPublishedAt":1690305553555,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Soam Acharya | Data Engineering Oversight; Keith Regier | Data Privacy Engineering Manager","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*y6fZ5nEbsbdjsCLP","filter":"","backgroundSize":"","originalWidth":960,"originalHeight":720,"strategy":"resample","height":0,"width":0},"wordCount":3436,"imageCount":3,"readingTime":13.516037735849057,"subtitle":"Soam Acharya | Data Engineering Oversight; Keith Regier | Data Privacy Engineering Manager","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":40,"isBookmarked":false,"tags":[{"slug":"pinterest","name":"Pinterest","postCount":10439,"metadata":{"postCount":10439,"coverImage":{"id":"1*jJltYM0mDcurFU-2CaEXcw@2x.jpeg","originalWidth":2160,"originalHeight":1440,"backgroundSize":"","filter":"","isFeatured":false,"externalSrc":"","focusPercentX":-1,"focusPercentY":-1,"alt":"","repairedAt":0,"unsplashPhotoId":""}},"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":1,"links":{"entries":[{"url":"https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html#Changing_Authentication_Providers","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Kerberos_(protocol)","alts":[],"httpStatus":200},{"url":"https://aws.amazon.com/ec2/?ec2-whats-new.sort-by=item.additionalFields.postDateTime&ec2-whats-new.sort-order=desc","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/open-sourcing-querybook-pinterests-collaborative-big-data-hub-ba2605558883","alts":[{"type":3,"url":"medium://p/ba2605558883"},{"type":2,"url":"medium://p/ba2605558883"}],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/spinner-pinterests-workflow-platform-c5bbe190ba5","alts":[{"type":3,"url":"medium://p/c5bbe190ba5"},{"type":2,"url":"medium://p/c5bbe190ba5"}],"httpStatus":200},{"url":"https://www.pinterestlabs.com/","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering/large-scale-hadoop-upgrade-at-pinterest-a23a112deb73","alts":[{"type":2,"url":"medium://p/a23a112deb73"},{"type":3,"url":"medium://p/a23a112deb73"}],"httpStatus":200},{"url":"https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html","alts":[],"httpStatus":200},{"url":"https://knox.apache.org/","alts":[],"httpStatus":200},{"url":"https://blog.cloudera.com/hadoop-delegation-tokens-explained/","alts":[],"httpStatus":200},{"url":"https://www.pinterestcareers.com/","alts":[],"httpStatus":200},{"url":"https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/delegation_tokens.html","alts":[],"httpStatus":200},{"url":"https://hadoop.apache.org/docs/r2.10.0/hadoop-project-dist/hadoop-common/SecureMode.html","alts":[],"httpStatus":200},{"url":"https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html","alts":[],"httpStatus":200},{"url":"https://hadoop.apache.org/docs/r2.10.0/hadoop-aws/tools/hadoop-aws/index.html#S3A","alts":[],"httpStatus":200},{"url":"https://medium.com/pinterest-engineering","alts":[{"type":2,"url":"medium://pinterest-engineering"},{"type":3,"url":"medium://pinterest-engineering"}],"httpStatus":200}],"version":"0.3","generatedAt":1690305554070},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":294,"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":"securely-scaling-big-data-access-controls-at-pinterest","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"securely-scaling-big-data-access-controls-at-pinterest-bbc3406a1695","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*y6fZ5nEbsbdjsCLP","originalWidth":960,"originalHeight":720,"isFeatured":true}},{"name":"ef6a","type":3,"text":"Securely Scaling Big Data Access Controls At Pinterest","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Soam Acharya | Data Engineering Oversight; Keith Regier | Data Privacy Engineering Manager"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"4c5a5f6279b6","isNewsletter":false,"newsletterId":"21e520764150","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":"ef6a","type":3,"text":"Securely Scaling Big Data Access Controls At Pinterest","markups":[]},{"name":"311a","type":1,"text":"Soam Acharya | Data Engineering Oversight; Keith Regier | Data Privacy Engineering Manager","markups":[]},{"name":"1d22","type":3,"text":"Background","markups":[]},{"name":"c714","type":1,"text":"Businesses collect many different types of data. Each dataset needs to be securely stored with minimal access granted to ensure they are used appropriately and can easily be located and disposed of when necessary. As businesses grow…","markups":[{"type":3,"start":753,"end":760,"href":"https://medium.com/pinterest-engineering/large-scale-hadoop-upgrade-at-pinterest-a23a112deb73","title":"","rel":"","anchorType":0},{"type":1,"start":514,"end":543}]}],"sections":[{"name":"3772","startIndex":0}]},"isFullContent":false,"subtitle":"Soam Acharya | Data Engineering Oversight; Keith Regier | Data Privacy Engineering Manager"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"}}},"paging":{"path":"/_/api/collections/4c5a5f6279b6/topics/a29dfb3782e2","next":{"to":"1740487636707","ignoredIds":[],"page":6}},"collection":{"id":"4c5a5f6279b6","name":"Pinterest Engineering Blog","slug":"pinterest-engineering","tags":["ENGINEERING","PINTEREST","VISUAL SEARCH","MACHINE LEARNING","COMPUTER VISION"],"creatorId":"a1d1eea6bc86","description":"Inventive engineers building the first visual discovery engine, 300 billion ideas and counting.","shortDescription":"Inventive engineers building the first visual discovery…","image":{"imageId":"1*XiUFDZgSFl6n-MM2yXFifQ.png","filter":"","backgroundSize":"","originalWidth":668,"originalHeight":563,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":15507,"activeAt":1740002249323},"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":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"twitterUsername":"PinterestEng","facebookPageName":"pinterestengineering","collectionMastheadId":"560b48272565","sections":[{"type":2,"collectionHeaderMetadata":{"title":"Pinterest Engineering","description":"Inventive engineers building the first visual discovery engine, 300 billion ideas and counting.","backgroundImage":{"id":"1*kDAiebKM-qkprLo3uk5eHg.jpeg","originalWidth":5928,"originalHeight":3952,"focusPercentX":52.142857142857146,"focusPercentY":98.93048128342247},"logoImage":{"id":"1*dXsrUlUXbwyfZ9tiV9viUQ@2x.png","originalWidth":200,"originalHeight":200,"alt":"Pinterest Engineering Blog"},"alignment":2,"layout":6}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":4,"postIds":[]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":2,"postIds":["0248efe4fd52","3253d2432a0c"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":1,"postIds":["9e0b9d35a11f"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":2,"postIds":["8a99e6c8e6b7","86dcc6d5fce9"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":2,"postIds":["30bad30dabff","a4dd9089a176"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":2,"postIds":["fca14b0d1141","08130f25b874"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":2,"postIds":["a43d38840fb9","9d4503fc20d6"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":2,"postIds":["f638c722d9f2","67d90603426e"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":2,"postIds":["629affbf34ff","e2b30b2f6768"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":1,"postIds":["c1010e69f31a"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":2,"postIds":["bbc3406a1695","95f8cc0c5885"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":2,"postIds":["50d3d50384ed","1030edfe445f"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["cb60b547f2e0","5c338a15d2a0","210c122f6afa"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["3a7c0c335016","78a5075a3fe9","608fb5581094"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["8643fe0cc0f9","a74938cb089b","58ad008a1ce9"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["437731fabde","8b7faf9009cf","91fc310c2e33"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["165ae2e8cde8","4be40f1dfc8e","70b4d20e5ea0"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["a0857bf8cf98","43f0fb474b84","8b7b1f562afc"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["92484b5fe39b","351adf9ac1c4","f881aff6580f"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["94a967bdcd27","8d6c026dd4b9","a23a112deb73"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["e0a0609c8e9","116bce917ea2","f49b654bff37"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["997d9243f56a","c5bbe190ba5","7a4a95fa674b"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":2,"postIds":["797fffff45c0","556be1611be"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["9bf09696e99e","4bd9b9ee1308","9e5c3414c8ad"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":1,"postIds":["be94f15a4527"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":2,"postIds":["4402695dd4e7","654f2bb887fc"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["61512ad98a95","ea3889420490","50a07143f444"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["9043776b7b76","e63d5280a1a9","579406ffa374"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":2,"postIds":["b3143ac70b55","b31da4b60fa0"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":2,"postIds":["d6d5bfa6bf16","1c01d8c11a05"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":2,"postIds":["8987fc5ba1c0","7b5eeb411888"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["c9d4e89f2ed6","ccb255fbde20","2a3eaf60ac1b"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["16bc3a4a38b4","8efda19088b0","ed76307e10a0"]}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":12,"postIds":["e769135734d","10ffb7846958","4b05a409cb5d","c69e78ff2698","17fc35eca1e5","1806b73b40ef","f543b14bb25","68d7f8425882","a23f821168da","723ce072b7d2"]}},{"type":1,"postListMetadata":{"source":2,"layout":6,"number":3,"postIds":[],"sectionHeader":"Trending"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":15,"postIds":[]}}],"tintColor":"#FFBD081C","lightText":false,"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FFE93335","point":0},{"color":"#FFD73433","point":0.1},{"color":"#FFC53331","point":0.2},{"color":"#FFB3322E","point":0.3},{"color":"#FFA12F2B","point":0.4},{"color":"#FF8F2C28","point":0.5},{"color":"#FF7C2924","point":0.6},{"color":"#FF692420","point":0.7},{"color":"#FF561E1A","point":0.8},{"color":"#FF421714","point":0.9},{"color":"#FF2D0F0C","point":1}],"backgroundColor":"#FFFFFFFF"},"tintBackgroundSpectrum":{"colorPoints":[{"color":"#FFBD081C","point":0},{"color":"#FFD12F30","point":0.1},{"color":"#FFE34943","point":0.2},{"color":"#FFF26057","point":0.3},{"color":"#FFFF766B","point":0.4},{"color":"#FFFF8B7F","point":0.5},{"color":"#FFFF9F94","point":0.6},{"color":"#FFFFB3A8","point":0.7},{"color":"#FFFFC7BD","point":0.8},{"color":"#FFFFDAD2","point":0.9},{"color":"#FFFFEEE7","point":1}],"backgroundColor":"#FFBD081C"},"highlightSpectrum":{"colorPoints":[{"color":"#FFFFDED6","point":0},{"color":"#FFFFD8CF","point":0.1},{"color":"#FFFFD2C8","point":0.2},{"color":"#FFFFCDC1","point":0.3},{"color":"#FFFFC7BB","point":0.4},{"color":"#FFFFC1B4","point":0.5},{"color":"#FFFFBBAD","point":0.6},{"color":"#FFFFB4A7","point":0.7},{"color":"#FFFFAEA0","point":0.8},{"color":"#FFFFA89A","point":0.9},{"color":"#FFFFA193","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FFFF4C48","point":0},{"color":"#FFFF5D56","point":0.1},{"color":"#FFFF6D63","point":0.2},{"color":"#FFFF7C71","point":0.3},{"color":"#FFFF8B7F","point":0.4},{"color":"#FFFF998D","point":0.5},{"color":"#FFFFA79C","point":0.6},{"color":"#FFFFB5AA","point":0.7},{"color":"#FFFFC3B9","point":0.8},{"color":"#FFFFD0C8","point":0.9},{"color":"#FFFFDDD6","point":1}],"backgroundColor":"#FF000000"}},"navItems":[{"type":4,"title":"en Español","url":"https://medium.com/pinterest-engineering/medium-com-pinterest-engineering-espanol/home","topicId":"51c7bf95dfcd","source":"topicId"},{"type":4,"title":"Eng Culture","url":"https://medium.com/pinterest-engineering/eng-culture/home","topicId":"74e33ff4ec2a","source":"topicId"},{"type":4,"title":"Pinner UX","url":"https://medium.com/pinterest-engineering/pinner-experience/home","topicId":"3f90c39488c9","source":"topicId"},{"type":4,"title":"Creator UX","url":"https://medium.com/pinterest-engineering/creator-experience/home","topicId":"c1b04eabcc02","source":"topicId"},{"type":4,"title":"Infras","url":"https://medium.com/pinterest-engineering/infra/home","topicId":"a29dfb3782e2","source":"topicId"},{"type":4,"title":"Monetization","url":"https://medium.com/pinterest-engineering/monetization/home","topicId":"c5792f90322f","source":"topicId"},{"type":4,"title":"Trust & Safety","url":"https://medium.com/pinterest-engineering/trust-and-safety/home","topicId":"1ca95a5189fb","source":"topicId"},{"type":3,"title":"Pinterest Careers","url":"https://www.pinterestcareers.com?utm_source=medium&utm_medium=navigation-link&utm_campaign=medium-traffic"}],"colorBehavior":1,"collectionFeatures":[25],"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"title":"Pinterest Engineering","description":"Inventive engineers building the first visual discovery engine, 300 billion ideas and counting.","backgroundImage":{"id":"1*kDAiebKM-qkprLo3uk5eHg.jpeg","originalWidth":5928,"originalHeight":3952,"focusPercentX":52.142857142857146,"focusPercentY":98.93048128342247},"logoImage":{"id":"1*dXsrUlUXbwyfZ9tiV9viUQ@2x.png","originalWidth":200,"originalHeight":200,"alt":"Pinterest Engineering Blog"},"alignment":2,"layout":6},"subscriberCount":15507,"tagline":"Inventive engineers building the first visual discovery engine, 300 billion ideas and counting.","instagramUsername":"lifeatpinterest","isOptedIntoAurora":false,"isCurationAllowedByDefault":false,"polarisCoverImage":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"ptsQualifiedAt":1616092781685,"type":"Collection"},"topic":{"topicId":"a29dfb3782e2","collectionId":"4c5a5f6279b6","createdAt":0,"slug":"infra","header":{},"sections":[{"source":3,"layout":4,"number":2,"title":"","items":[{"postId":"08130f25b874","itemType":"postId"},{"postId":"4d68679161ef","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":3,"title":"","items":[{"postId":"839f3cf996bc","itemType":"postId"},{"postId":"f5277ee4e3d2","itemType":"postId"},{"postId":"7659b94796f4","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":2,"title":"","items":[{"postId":"8ad408df2d6f","itemType":"postId"},{"postId":"64ae2e721daa","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":2,"title":"","items":[{"postId":"f638c722d9f2","itemType":"postId"},{"postId":"629affbf34ff","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":2,"title":"","items":[{"postId":"e2b30b2f6768","itemType":"postId"},{"postId":"bbc3406a1695","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":2,"title":"","items":[{"postId":"95f8cc0c5885","itemType":"postId"},{"postId":"50d3d50384ed","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":2,"title":"","items":[{"postId":"5c338a15d2a0","itemType":"postId"},{"postId":"78a5075a3fe9","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":2,"title":"","items":[{"postId":"608fb5581094","itemType":"postId"},{"postId":"58ad008a1ce9","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":2,"title":"","items":[{"postId":"43f0fb474b84","itemType":"postId"},{"postId":"8b7b1f562afc","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":2,"title":"","items":[{"postId":"92484b5fe39b","itemType":"postId"},{"postId":"351adf9ac1c4","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":2,"title":"","items":[{"postId":"a23a112deb73","itemType":"postId"},{"postId":"e0a0609c8e9","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":2,"title":"","items":[{"postId":"116bce917ea2","itemType":"postId"},{"postId":"f49b654bff37","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":3,"title":"","items":[{"postId":"997d9243f56a","itemType":"postId"},{"postId":"c5bbe190ba5","itemType":"postId"},{"postId":"556be1611be","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":1,"title":"","items":[{"postId":"9bf09696e99e","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":2,"title":"","items":[{"postId":"4402695dd4e7","itemType":"postId"},{"postId":"b31da4b60fa0","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":3,"title":"","items":[{"postId":"9043776b7b76","itemType":"postId"},{"postId":"e63d5280a1a9","itemType":"postId"},{"postId":"579406ffa374","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":3,"title":"","items":[{"postId":"d6d5bfa6bf16","itemType":"postId"},{"postId":"1c01d8c11a05","itemType":"postId"},{"postId":"7b5eeb411888","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":3,"title":"","items":[{"postId":"8efda19088b0","itemType":"postId"},{"postId":"ed76307e10a0","itemType":"postId"},{"postId":"e769135734d","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":3,"title":"","items":[{"postId":"b98453265370","itemType":"postId"},{"postId":"8718d058079a","itemType":"postId"},{"postId":"fcfa972bf39c","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":13,"title":"","items":[{"postId":"19244fe13737","itemType":"postId"},{"postId":"610fecf35566","itemType":"postId"},{"postId":"4e936643fde0","itemType":"postId"},{"postId":"ff9c6f735be","itemType":"postId"},{"postId":"6fa9333b4961","itemType":"postId"},{"postId":"2e8bd1cfc329","itemType":"postId"},{"postId":"a8ff5758a181","itemType":"postId"},{"postId":"88a60d9c9a","itemType":"postId"},{"postId":"e899008ce22b","itemType":"postId"},{"postId":"25ec8460e924","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":21,"title":"","items":[{"postId":"86159da4b954","itemType":"postId"},{"postId":"debc9236a744","itemType":"postId"},{"postId":"c1a605130e9","itemType":"postId"},{"postId":"b11052e95c8b","itemType":"postId"},{"postId":"ea11c8f8c2b7","itemType":"postId"},{"postId":"e3b3e66cb4f","itemType":"postId"},{"postId":"b0fe0d91105d","itemType":"postId"},{"postId":"be763781f67","itemType":"postId"},{"postId":"9f58d206c996","itemType":"postId"},{"postId":"6aae58919949","itemType":"postId"},{"postId":"92295347f2f3","itemType":"postId"},{"postId":"caf55ce310d1","itemType":"postId"},{"postId":"cf189f6ca40f","itemType":"postId"},{"postId":"ea6c4e619935","itemType":"postId"},{"postId":"238aa3dc92d1","itemType":"postId"},{"postId":"e6e34c157783","itemType":"postId"},{"postId":"3b9e6dc2744b","itemType":"postId"},{"postId":"b921c2ee8754","itemType":"postId"},{"postId":"b04e1a7d639a","itemType":"postId"},{"postId":"b5a7ec3de29d","itemType":"postId"},{"postId":"8dad74bf92f1","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":21,"title":"","items":[{"postId":"2c3eb0101205","itemType":"postId"},{"postId":"2338dd1d213","itemType":"postId"},{"postId":"558cd3847a9d","itemType":"postId"},{"postId":"7f8b09666589","itemType":"postId"},{"postId":"479f4f7306aa","itemType":"postId"},{"postId":"df1d2beb4d64","itemType":"postId"},{"postId":"b45a6b82983c","itemType":"postId"},{"postId":"9c5249e9332a","itemType":"postId"},{"postId":"424cf43fa7c3","itemType":"postId"},{"postId":"ab4934ace9f4","itemType":"postId"},{"postId":"452047853967","itemType":"postId"},{"postId":"a157f0a527b9","itemType":"postId"},{"postId":"f2711de1331e","itemType":"postId"},{"postId":"8febe81f2c1c","itemType":"postId"},{"postId":"7bf3af3a53ff","itemType":"postId"},{"postId":"198372cb6dd6","itemType":"postId"},{"postId":"3d6992cb2584","itemType":"postId"},{"postId":"a818413deca4","itemType":"postId"},{"postId":"f759f4a77e2c","itemType":"postId"},{"postId":"7a9f90cffc9","itemType":"postId"},{"postId":"890a872585b5","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":21,"title":"","items":[{"postId":"a441efdeeb90","itemType":"postId"},{"postId":"96ae43ced0ce","itemType":"postId"},{"postId":"3f341e96ca6f","itemType":"postId"},{"postId":"d9c4328549c6","itemType":"postId"},{"postId":"1bcad821496a","itemType":"postId"},{"postId":"1e5caa774a63","itemType":"postId"},{"postId":"b7cc0f66fb1e","itemType":"postId"},{"postId":"3e1613c2ce14","itemType":"postId"},{"postId":"b7158e1c9bbc","itemType":"postId"},{"postId":"8612521c1108","itemType":"postId"},{"postId":"78f4e7dc4727","itemType":"postId"},{"postId":"1ef11fdb1099","itemType":"postId"},{"postId":"5ba35b5d3947","itemType":"postId"},{"postId":"a1384a852daa","itemType":"postId"},{"postId":"6a343766bb6","itemType":"postId"},{"postId":"e14c651780ca","itemType":"postId"},{"postId":"976b0eebcc6","itemType":"postId"},{"postId":"74c193e0a351","itemType":"postId"},{"postId":"11d77a87e3d6","itemType":"postId"},{"postId":"d6e7d8fef479","itemType":"postId"},{"postId":"f7b508cdacab","itemType":"postId"}],"tagSlug":""},{"source":3,"layout":4,"number":21,"title":"","items":[{"postId":"24a14005bb01","itemType":"postId"},{"postId":"9c5bf9723173","itemType":"postId"},{"postId":"a77bf746c16d","itemType":"postId"},{"postId":"e803e82ed2e4","itemType":"postId"},{"postId":"3c4836e2b112","itemType":"postId"}],"tagSlug":""}],"title":"Infrastructure","description":"Infrastructure at Pinterest","type":"CollectionTopic"},"header":{"title":"Infrastructure","description":"Infrastructure at Pinterest","alignment":1},"streamItems":[{"createdAt":1740487636724,"randomId":"d46abbfc7a47","section":{"items":[{"post":{"postId":"08130f25b874"},"itemType":"post"},{"post":{"postId":"4d68679161ef"},"itemType":"post"}],"layout":4},"itemType":"section","type":"StreamItem"},{"createdAt":1740487636724,"randomId":"19304ba3bf21","section":{"items":[{"post":{"postId":"839f3cf996bc"},"itemType":"post"},{"post":{"postId":"f5277ee4e3d2"},"itemType":"post"},{"post":{"postId":"7659b94796f4"},"itemType":"post"}],"layout":4},"itemType":"section","type":"StreamItem"},{"createdAt":1740487636724,"randomId":"2a7479bbda8c","section":{"items":[{"post":{"postId":"8ad408df2d6f"},"itemType":"post"},{"post":{"postId":"64ae2e721daa"},"itemType":"post"}],"layout":4},"itemType":"section","type":"StreamItem"},{"createdAt":1740487636724,"randomId":"29576986022f","section":{"items":[{"post":{"postId":"f638c722d9f2"},"itemType":"post"},{"post":{"postId":"629affbf34ff"},"itemType":"post"}],"layout":4},"itemType":"section","type":"StreamItem"},{"createdAt":1740487636724,"randomId":"51b15ab978fb","section":{"items":[{"post":{"postId":"e2b30b2f6768"},"itemType":"post"},{"post":{"postId":"bbc3406a1695"},"itemType":"post"}],"layout":4},"itemType":"section","type":"StreamItem"}]}) // ]]></script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9177cd8feb789f7f',t:'MTc0MDQ4NzYzNy4wMDAwMDA='};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>