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&amp;source=--------------------------nav_reg&amp;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&amp;source=--------------------------nav_reg&amp;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 &amp; 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&amp;utm_medium=navigation-link&amp;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(&quot;https://cdn-images-1.medium.com/max/1200/1*Hujnqp_ULTXGaPrm1-P7hg.jpeg&quot;); 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(&quot;https://cdn-images-1.medium.com/max/1200/0*PtTuxE-yJmIo2cdK&quot;); 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(&quot;https://cdn-images-1.medium.com/max/800/0*KK9jDNzG4Pky7nn9&quot;); 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(&quot;https://cdn-images-1.medium.com/max/800/0*b3gyyHWpBT2OCucC&quot;); 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(&quot;https://cdn-images-1.medium.com/max/800/0*y4nQMWfqrsoKVsIS&quot;); 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(&quot;https://cdn-images-1.medium.com/max/1200/0*RVStgBIqAdtTVOth&quot;); 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(&quot;https://cdn-images-1.medium.com/max/1200/0*xauDb88X2Gd0CPu6&quot;); 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(&quot;https://cdn-images-1.medium.com/max/1200/0*Zr1A8sa3nu_-Ff-L&quot;); 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(&quot;https://cdn-images-1.medium.com/max/1200/1*A0WPSyaHovk3DFYUzFV3bA.jpeg&quot;); 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(&quot;https://cdn-images-1.medium.com/max/1200/0*p6ptymzvBy3Wjqx9&quot;); 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(&quot;https://cdn-images-1.medium.com/max/1200/0*y6fZ5nEbsbdjsCLP&quot;); 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>// <![CDATA[ window["obvInit"]({"references":{"Collection":{"4c5a5f6279b6":{"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"}},"User":{"ef81ef829bcb":{"userId":"ef81ef829bcb","name":"Pinterest Engineering","username":"Pinterest_Engineering","createdAt":1476394376184,"imageId":"1*iAV-apeVpCJ1h6Znt1AzCg.jpeg","backgroundImageId":"","bio":"https://medium.com/pinterest-engineering | Inventive engineers building the first visual discovery engine https://careers.pinterest.com/","twitterScreenName":"PinterestEng","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[29,12,5,3,19,2,18,1],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"}},"Post":{"08130f25b874":{"id":"08130f25b874","versionId":"6613dc8f3059","creatorId":"ef81ef829bcb","homeCollectionId":"4c5a5f6279b6","title":"Improving Efficiency Of Goku Time Series Database at Pinterest (Part 2)","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>

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