<!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>Jet Tech – Medium</title><link rel="canonical" href="https://medium.com/jettech"><link id="feedLink" rel="alternate" type="application/rss+xml" title="RSS" href="https://medium.com/feed/jettech"><meta name="robots" content="index,follow"><meta name="title" content="Jet Tech – Medium"><meta name="referrer" content="unsafe-url"><meta name="description" content="Sharing our engineering org’s learnings &amp; stories as we build the world’s best experience to shop curated brands and city essentials in one place."><meta name="keywords" content="EVENT SOURCING, FUNCTIONAL PROGRAMMING, MICROSERVICES, ENGINEERING, FSHARP"><meta name="theme-color" content="#000000"><meta property="og:title" content="Jet Tech – Medium"><meta property="twitter:title" content="Jet Tech – Medium"><meta property="og:url" content="https://medium.com/jettech"><meta property="og:image" content="https://cdn-images-1.medium.com/max/1200/1*EM9URFCvZ1CvdNz3I2RcLQ.jpeg"><meta property="fb:app_id" content="542599432471018"><meta property="og:description" content="Sharing our engineering org’s learnings &amp; stories as we build the world’s best experience to shop curated brands and city essentials in one place."><meta name="twitter:description" content="Sharing our engineering org’s learnings &amp; stories as we build the world’s best experience to shop curated brands and city essentials in one place."><meta name="twitter:image:src" content="https://cdn-images-1.medium.com/max/1200/1*EM9URFCvZ1CvdNz3I2RcLQ.jpeg"><meta property="og:type" content="medium-com:collection"><meta name="twitter:card" content="summary_large_image"><meta property="medium-com:creator" content="https://medium.com/@jettech"><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://jettech"><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://jettech"><meta property="al:android:url" content="medium://jettech"><meta property="al:web:url" content="https://medium.com/jettech"><link rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml" /><link rel="alternate" href="android-app://com.medium.reader/https/medium.com/jettech" /><script type="application/ld+json">{"@context": "http://schema.org", "@graph": [{"@type": "WebSite", "url": "https:\/\/medium.com", "name": "Medium", "alternateName": "Medium is a community of readers and writers offering unique perspectives on ideas large and small."},{"@type": "Organization", "url": "https:\/\/medium.com\/jettech", "name": "Jet Tech"}]}</script><meta name="parsely-link" content="https://medium.com/jettech"><link rel="stylesheet" href="https://cdn-static-1.medium.com/_/fp/css/main-branding-base.I2aY-Q97ViNesx3za5Dlkw.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", "UA-24232453-2", "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.js"></script><![endif]--><link rel="icon" href="https://cdn-static-1.medium.com/_/fp/icons/favicon-rebrand-medium.3Y6xpZ-0FSdWDnPM3hSBIA.ico" class="js-favicon"><link rel="apple-touch-icon" sizes="152x152" href="https://cdn-images-1.medium.com/fit/c/304/304/1*EM9URFCvZ1CvdNz3I2RcLQ.jpeg"><link rel="apple-touch-icon" sizes="120x120" href="https://cdn-images-1.medium.com/fit/c/240/240/1*EM9URFCvZ1CvdNz3I2RcLQ.jpeg"><link rel="apple-touch-icon" sizes="76x76" href="https://cdn-images-1.medium.com/fit/c/152/152/1*EM9URFCvZ1CvdNz3I2RcLQ.jpeg"><link rel="apple-touch-icon" sizes="60x60" href="https://cdn-images-1.medium.com/fit/c/120/120/1*EM9URFCvZ1CvdNz3I2RcLQ.jpeg"><link rel="mask-icon" href="https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.svg" color="#171717"></head><body itemscope class="  v-glyph v-glyph--m2 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-textColorTransparentWhiteDarker u-tintBgColor u-tintSpectrum 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-fillTransparentBlackDarker u-flex0 u-flexCenter u-paddingTop0"><span class="svgIcon svgIcon--logoMonogram svgIcon--45px"><svg class="svgIcon-use" width="45" height="45" ><path d="M5 40V5h35v35H5zm8.56-12.627c0 .555-.027.687-.318 1.03l-2.457 2.985v.396h6.974v-.396l-2.456-2.985c-.291-.343-.344-.502-.344-1.03V18.42l6.127 13.364h.714l5.256-13.364v10.644c0 .29 0 .342-.185.528l-1.848 1.796v.396h9.19v-.396l-1.822-1.796c-.184-.186-.21-.238-.21-.528V15.937c0-.291.026-.344.21-.528l1.823-1.797v-.396h-6.471l-4.622 11.542-5.203-11.542h-6.79v.396l2.14 2.64c.239.292.291.37.291.768v10.353z"/></svg></span><span class="u-textScreenReader">Homepage</span></a></div><div class="u-paddingLeft10 r-paddingRight10"><a href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com/jettech%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--light button--chromeless u-accentColor--buttonNormal is-inSiteNavBar u-xs-hide js-signInButton"   href="https://medium.com/m/signin?redirect=https%3A%2F%2Fmedium.com%2Fjettech&amp;source=--------------------------nav_reg&amp;operation=login" data-action="sign-in-prompt" data-redirect="https://medium.com/jettech" data-action-source="--------------------------nav_reg">Sign in</a><a class="button button--primary button--light button--withChrome u-accentColor--buttonNormal is-inSiteNavBar js-signUpButton"   href="https://medium.com/m/signin?redirect=https%3A%2F%2Fmedium.com%2Fjettech&amp;source=--------------------------nav_reg&amp;operation=register" data-action="sign-up-prompt" data-redirect="https://medium.com/jettech" data-action-source="--------------------------nav_reg">Get started</a></div></div></div></div></div><div class="metabar metabar--spacer js-metabarSpacer u-tintBgColor u-height65 u-xs-height56"></div><div class="collectionHeader js-collectionHeaderContainer u-relative collectionHeader--layoutMedium collectionHeader--alignmentLeft collectionHeader--withLogo collectionHeader--withoutBackground collectionHeader--colorBehaviorBold collectionHeader--withNavigation collectionHeader--editorLayoutLogo is-modeView u-tintBgColor"><div class="collectionHeader-aspectRatioTable"><div class="collectionHeader-aspectRatioContent u-backgroundSizeCover js-collectionHeaderBackground"><div class="collectionHeader-overlayBackground u-height100vh"></div><header class="collectionHeader-heroAndInlineNav u-borderBox u-maxWidth1072 u-paddingLeft20 u-paddingRight20 u-marginAuto u-foreground js-collectionHeader"><div class="collectionHeader-hero js-collectionHeaderHero u-clearfix u-tintSpectrum"><div class="collectionHeader-heroInner"><div class="collectionHeader-logo js-collectionHeaderLogo" style="max-width: 460px;"><a class="link u-baseColor--link"   href="https://medium.com/jettech" title="Go to Jet Tech" aria-label="Go to Jet Tech"><div class="u-relative u-marginAuto"><div style="padding-bottom: 20%"></div><img class="collectionHeader-logoImage js-collectionHeaderLogoImage" src="https://cdn-images-1.medium.com/max/920/1*2VGuR4soAG-oJKp6LI51Dw@2x.png"  data-image-id="1*2VGuR4soAG-oJKp6LI51Dw@2x.png" data-width="1500" data-height="300" /></div></a></div><div class="collectionHeader-nameAndDescription u-hide"><a class="link u-baseColor--link"   href="https://medium.com/jettech" title="Go to Jet Tech" aria-label="Go to Jet Tech"><h1 class="collectionHeader-name js-collectionName">Jet Tech</h1></a><h2 class="collectionHeader-description js-collectionDescription">Sharing our engineering org’s learnings &amp; stories as we build the world’s best experience to shop curated brands and city essentials in one place.</h2></div></div></div></header></div><div class="collectionHeader-aspectRatioCell"><div class="collectionHeader-aspectRatioFullWidth"></div></div></div><div class="collectionHeader-blockNav"><div class="u-borderBox u-maxWidth1072 u-paddingLeft20 u-paddingRight20 u-marginAuto"><nav class="collectionHeader-nav u-clearfix js-collectionHeaderNav u-lineHeight40 u-overflowHiddenY u-tintSpectrum"><div class="buttonSet u-flex1 u-noWrap u-overflowX u-paddingBottom100 u-xs-marginRight15"><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink"   href="https://medium.com/jettech/about">About</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink"   href="https://medium.com/jettech/tagged/fsharp">FSharp</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink"   href="https://medium.com/jettech/tagged/security">Security</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink"   href="https://medium.com/jettech/jet-tech-blog-disclaimer-ba975b6b1f08">Disclaimer</a></li><span class="u-borderLeft1 u-paddingLeft22 u-xs-paddingLeft12 u-baseColor--borderLight"></span><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0 is-external"><a class="link link--darkenOnHover u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink"   href="https://www.meetup.com/JetTech/" rel="nofollow noopener" target="_blank">Meetups (in greater NYC area) </a></li></div><div class="buttonSet u-textAlignRight u-marginLeft18 u-flex0 u-noWrap"><label class="button button--small button--chromeless button--withIcon button--withSvgIcon inputGroup u-sm-hide metabar-predictiveSearch u-baseColor--buttonNormal u-baseColor--placeholderNormal" title="Search Jet Tech"><span class="svgIcon svgIcon--search svgIcon--25px u-baseColor--iconLight"><svg class="svgIcon-use" width="25" height="25" ><path d="M20.067 18.933l-4.157-4.157a6 6 0 1 0-.884.884l4.157 4.157a.624.624 0 1 0 .884-.884zM6.5 11c0-2.62 2.13-4.75 4.75-4.75S16 8.38 16 11s-2.13 4.75-4.75 4.75S6.5 13.62 6.5 11z"/></svg></span><input class="js-predictiveSearchInput textInput textInput--rounded textInput--darkText u-baseColor--textNormal textInput--transparent" type="search" placeholder="Search Jet Tech" required="true" data-collection-id="ae6c8c33b4b1" /></label><a class="button button--light button--chromeless is-touchIconBlackPulse u-baseColor--buttonLight button--withIcon button--withSvgIcon button--chromeless u-verticalAlignMiddle"   href="https://twitter.com/JetTechnology" title="Visit “Jet Tech” on Twitter" aria-label="Visit “Jet Tech” on Twitter" rel="me" target="_blank"><span class="button-defaultState"><span class="svgIcon svgIcon--twitterFilled svgIcon--25px"><svg class="svgIcon-use" width="25" height="25" ><path d="M22.31 4.305a8.48 8.48 0 0 1-2.684 1.073A4.245 4.245 0 0 0 16.486 4a4.293 4.293 0 0 0-4.293 4.29c0 .34.037.669.077.997a12.199 12.199 0 0 1-8.814-4.521 4.805 4.805 0 0 0-.613 2.141c.033 1.514.79 2.83 1.916 3.594a4.13 4.13 0 0 1-1.913-.542.185.185 0 0 0 0 .074c-.005 2.055 1.476 3.79 3.446 4.21-.37.073-.746.122-1.15.147-.266-.025-.535-.05-.767-.074.517 1.686 2.101 2.917 3.988 2.99a9.028 9.028 0 0 1-5.366 1.834L2 19.08A12.258 12.258 0 0 0 8.59 21c7.886 0 12.203-6.547 12.185-12.184a4.103 4.103 0 0 0 0-.616 8.057 8.057 0 0 0 2.147-2.227 7.612 7.612 0 0 1-2.451.69 4.092 4.092 0 0 0 1.838-2.376"/></svg></span></span></a><button class="button button--primary button--smallest u-noUserSelect button--withChrome u-accentColor--buttonNormal js-relationshipButton is-smallPill"  data-action="sign-up-prompt" data-sign-in-action="toggle-follow-collection" data-requires-token="true" data-redirect="https://medium.com/_/subscribe/collection/jettech" data-action-source="pub_header----ae6c8c33b4b1----------------------follow_pub" data-collection-id="ae6c8c33b4b1"><span class="button-label  js-buttonLabel">Follow</span></button></div></nav></div></div></div><div class="u-marginBottom40 js-collectionStream"><div class="streamItem streamItem--section js-streamItem"><section class="u-marginTop30 u-xs-margin0 u-marginBottom15 u-maxWidth1032 u-sm-paddingLeft20 u-sm-paddingRight20 u-borderBox u-marginAuto"><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight15 u-size8of12" data-source="collection_home---4------0-----------------------" data-post-id="f61f4b8b8ba5" data-index="0"><div class="u-lineHeightBase postItem u-marginRight3"><a href="https://medium.com/jettech/developers-need-to-stop-fearing-the-infosec-mafia-f61f4b8b8ba5?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/developers-need-to-stop-fearing-the-infosec-mafia-f61f4b8b8ba5?source=collection_home---4------0-----------------------" class="u-block u-xs-height170 u-height350 u-width100pct u-floatLeft  u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/2000/1*Y7mIT6pr8_JSgQCz8orlZA.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Developers need to stop fearing the InfoSec Mafia</span></a></div></div><div class="col u-xs-marginBottom10 u-paddingLeft9 u-paddingRight12 u-paddingTop0 u-sm-paddingTop20 u-paddingBottom25 u-size4of12 u-xs-size12of12 u-marginBottom30"><a class=""   href="https://medium.com/jettech/developers-need-to-stop-fearing-the-infosec-mafia-f61f4b8b8ba5?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="f61f4b8b8ba5"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp4 u-fontSize30 u-size12of12 u-xs-size12of12 u-xs-fontSize24">Developers need to stop fearing the InfoSec Mafia</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">Sometimes it feels like your organization’s Security seems to push its way into everything: Do you want to implement a new feature, change…</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/@erichgoldman" data-action="show-user-card" data-action-value="75eaa8d210d7" data-action-type="hover" data-user-id="75eaa8d210d7" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*tXNpl8NEbx0niT6RakJvnw.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Eric Goldman"></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/@erichgoldman" data-action="show-user-card" data-action-value="75eaa8d210d7" data-action-type="hover" data-user-id="75eaa8d210d7" dir="auto">Eric Goldman</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-05-08T21:55:19.027Z">May 8, 2019</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="8 min read"></span></div></div></div></div></div></div><div class="row u-marginTop15 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------1-----------------------" data-post-id="69d8b9009f02" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/teaching-real-world-decision-making-and-business-trade-offs-girls-who-code-jet-com-spring-2019-69d8b9009f02?source=collection_home---4------1-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/teaching-real-world-decision-making-and-business-trade-offs-girls-who-code-jet-com-spring-2019-69d8b9009f02?source=collection_home---4------1-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*4iuCDgYewtvebWTzHu0GSg.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Teaching Real-World Decision-Making and Business Trade-Offs: Girls Who Code @ Jet.com Spring 2019</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/teaching-real-world-decision-making-and-business-trade-offs-girls-who-code-jet-com-spring-2019-69d8b9009f02?source=collection_home---4------1-----------------------" data-action-source="collection_home---4------1-----------------------" data-post-id="69d8b9009f02"><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">Teaching Real-World Decision-Making and Business Trade-Offs: Girls Who Code @ Jet.com Spring 2019</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">We recently hosted a tech showcase and activity day for local Girls Who Code clubs in the Jet Hoboken office. Our STEM activity focused on…</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/@erichgoldman" data-action="show-user-card" data-action-value="75eaa8d210d7" data-action-type="hover" data-user-id="75eaa8d210d7" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*tXNpl8NEbx0niT6RakJvnw.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Eric Goldman"></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/@erichgoldman" data-action="show-user-card" data-action-value="75eaa8d210d7" data-action-type="hover" data-user-id="75eaa8d210d7" dir="auto">Eric Goldman</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-04-04T20:44:05.178Z">Apr 4, 2019</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="7 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------2-----------------------" data-post-id="34f172b9b279" data-index="2"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/meet-the-women-of-tech-at-jet-com-part-ii-34f172b9b279?source=collection_home---4------2-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/meet-the-women-of-tech-at-jet-com-part-ii-34f172b9b279?source=collection_home---4------2-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*FK7T8DEyDF1kgNRw9UYtNQ.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Meet the Women of Tech at Jet.com — Part II</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/meet-the-women-of-tech-at-jet-com-part-ii-34f172b9b279?source=collection_home---4------2-----------------------" data-action-source="collection_home---4------2-----------------------" data-post-id="34f172b9b279"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Meet the Women of Tech at Jet.com — Part II</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">This week, we continue to celebrate Women’s History Month by profiling many of the great women in tech roles across the Jet organization…</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/@erichgoldman" data-action="show-user-card" data-action-value="75eaa8d210d7" data-action-type="hover" data-user-id="75eaa8d210d7" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*tXNpl8NEbx0niT6RakJvnw.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Eric Goldman"></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/@erichgoldman" data-action="show-user-card" data-action-value="75eaa8d210d7" data-action-type="hover" data-user-id="75eaa8d210d7" dir="auto">Eric Goldman</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-03-27T19:44:12.564Z">Mar 27, 2019</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="13 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------3-----------------------" data-post-id="d2e74e6d6d5e" data-index="3"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/microservices-to-workflows-expressing-business-flows-using-an-f-dsl-d2e74e6d6d5e?source=collection_home---4------3-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/microservices-to-workflows-expressing-business-flows-using-an-f-dsl-d2e74e6d6d5e?source=collection_home---4------3-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*j2UkEkp2RjAFe27M-rI_Ow.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Microservices to Workflows: Expressing Business Flows using an F# DSL</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/microservices-to-workflows-expressing-business-flows-using-an-f-dsl-d2e74e6d6d5e?source=collection_home---4------3-----------------------" data-action-source="collection_home---4------3-----------------------" data-post-id="d2e74e6d6d5e"><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">Microservices to Workflows: Expressing Business Flows using an F# DSL</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">How to represent business logic in F# using a custom Domain Specific Language (DSL).</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/@jnovino" data-action="show-user-card" data-action-value="2f0ede995d2b" data-action-type="hover" data-user-id="2f0ede995d2b" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*zSuVyzKCzCDcMsnP6jlzqg@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of James Novino"></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/@jnovino" data-action="show-user-card" data-action-value="2f0ede995d2b" data-action-type="hover" data-user-id="2f0ede995d2b" dir="auto">James Novino</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-03-22T01:52:04.323Z">Mar 21, 2019</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"><div class="u-marginTop30 u-xs-marginTop0 u-marginBottom15 u-maxWidth1032 u-marginAuto"><div class="u-paddingTop35 u-paddingBottom20 u-paddingLeft20 u-paddingRight20 u-maxWidth1000 u-marginAuto u-textAlignCenter js-trackedPromo" style="background-color: #211E1F;"data-action="open-promo-link" data-promo-id="5c62c201c614" data-collection-id="ae6c8c33b4b1"><a class="link u-baseColor--link"   href="https://careers.jet.com/technology" rel="nofollow noopener" target="_blank" data-action-source="collection_home---2------0-----------------------"><div class="u-marginAuto u-marginBottom20" style="max-width: 125px;"><div class="u-relative u-marginAuto"><div style="padding-bottom: 100%"></div><img class="collectionHeader-logoImage js-collectionHeaderLogoImage" src="https://cdn-images-1.medium.com/max/250/1*euSKI4S1rkOfMkAJDf2FyQ@2x.png" alt="Want to #WorkPurple?"  data-image-id="1*euSKI4S1rkOfMkAJDf2FyQ@2x.png" data-width="1200" data-height="1200" /></div></div></a><div class="u-textColorNormal u-contentSansRegular u-fontSize28 u-xs-fontSize24 u-lineHeightBaseSans u-marginBottom20 u-maxWidth700 u-marginAuto u-textColorTransparentWhiteDarker">Want to #WorkPurple?</div><div class="u-marginBottom20"><a class="button button--large button--light button--withChrome u-baseColor--buttonLight"   href="https://careers.jet.com/technology" rel="nofollow noopener" target="_blank" data-action-source="collection_home---2------0-----------------------">Check out our careers</a></div></div></div></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_home---4------0-----------------------" data-post-id="8348c05b304d" data-index="0"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/meet-the-women-of-tech-at-jet-com-part-i-8348c05b304d?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/meet-the-women-of-tech-at-jet-com-part-i-8348c05b304d?source=collection_home---4------0-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*caN53CRUkXr8uL0U2xMVAA.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Meet the Women of Tech at Jet.com — Part I</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/meet-the-women-of-tech-at-jet-com-part-i-8348c05b304d?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="8348c05b304d"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Meet the Women of Tech at Jet.com — Part I</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">To celebrate Women’s History Month we decided to profile women in tech roles across the Jet organization. Learn about their experiences…</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/@erichgoldman" data-action="show-user-card" data-action-value="75eaa8d210d7" data-action-type="hover" data-user-id="75eaa8d210d7" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*tXNpl8NEbx0niT6RakJvnw.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Eric Goldman"></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/@erichgoldman" data-action="show-user-card" data-action-value="75eaa8d210d7" data-action-type="hover" data-user-id="75eaa8d210d7" dir="auto">Eric Goldman</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-03-18T17:49:31.226Z">Mar 18, 2019</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-size4of12" data-source="collection_home---4------1-----------------------" data-post-id="f248aa05f2f2" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/https-medium-com-jettech-visual-search-hayneedle-f248aa05f2f2?source=collection_home---4------1-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/https-medium-com-jettech-visual-search-hayneedle-f248aa05f2f2?source=collection_home---4------1-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*4XsUB98QC_DlbIKyQ5Ddqg.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">How We Created a Visual Search Engine for Hayneedle.com</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/https-medium-com-jettech-visual-search-hayneedle-f248aa05f2f2?source=collection_home---4------1-----------------------" data-action-source="collection_home---4------1-----------------------" data-post-id="f248aa05f2f2"><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">How We Created a Visual Search Engine for Hayneedle.com</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">Have you ever found yourself searching for a piece of furniture but unsure how to describe it in exact words? Perhaps a sofa you found on…</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/@bugraa" data-action="show-user-card" data-action-value="b2b3920e71c0" data-action-type="hover" data-user-id="b2b3920e71c0" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/0*N8vd23Lhnk0c_B_S.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of bugra"></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/@bugraa" data-action="show-user-card" data-action-value="b2b3920e71c0" data-action-type="hover" data-user-id="b2b3920e71c0" dir="auto">bugra</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-02-19T19:10:50.399Z">Feb 19, 2019</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-size4of12" data-source="collection_home---4------2-----------------------" data-post-id="9ee419690a3a" data-index="2"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/how-building-a-front-end-taxonomy-for-jet-com-improved-customers-shopping-experiences-9ee419690a3a?source=collection_home---4------2-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/how-building-a-front-end-taxonomy-for-jet-com-improved-customers-shopping-experiences-9ee419690a3a?source=collection_home---4------2-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*UbdZ5D-12gZq3wesfoVm9A.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">How Building a Front-End Taxonomy for Jet.com Improved Customers’ Shopping Experiences</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/how-building-a-front-end-taxonomy-for-jet-com-improved-customers-shopping-experiences-9ee419690a3a?source=collection_home---4------2-----------------------" data-action-source="collection_home---4------2-----------------------" data-post-id="9ee419690a3a"><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">How Building a Front-End Taxonomy for Jet.com Improved Customers’ Shopping Experiences</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">Building a front-end taxonomy helped us better personalize our shopping experience.</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/@nikita.sharma280594" data-action="show-user-card" data-action-value="da1eb593fa3" data-action-type="hover" data-user-id="da1eb593fa3" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*PDz5_twnGwxqdUzhq00NXA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Nikita Sharma"></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/@nikita.sharma280594" data-action="show-user-card" data-action-value="da1eb593fa3" data-action-type="hover" data-user-id="da1eb593fa3" dir="auto">Nikita Sharma</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-02-06T20:03:48.899Z">Feb 6, 2019</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="7 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------3-----------------------" data-post-id="7db2193d1ff6" data-index="3"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/creepy-or-clever-7db2193d1ff6?source=collection_home---4------3-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/creepy-or-clever-7db2193d1ff6?source=collection_home---4------3-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*L9NM6kA7MqJcM7qhgyEJFw.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Creepy or Clever?</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/creepy-or-clever-7db2193d1ff6?source=collection_home---4------3-----------------------" data-action-source="collection_home---4------3-----------------------" data-post-id="7db2193d1ff6"><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">Creepy or Clever?</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">A simple, yet important question</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/@erichgoldman" data-action="show-user-card" data-action-value="75eaa8d210d7" data-action-type="hover" data-user-id="75eaa8d210d7" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*tXNpl8NEbx0niT6RakJvnw.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Eric Goldman"></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/@erichgoldman" data-action="show-user-card" data-action-value="75eaa8d210d7" data-action-type="hover" data-user-id="75eaa8d210d7" dir="auto">Eric Goldman</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-02-04T16:35:33.088Z">Feb 4, 2019</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="7 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------4-----------------------" data-post-id="f40af12a1c39" data-index="4"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/evaluation-of-serverless-technologies-at-jet-f40af12a1c39?source=collection_home---4------4-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/evaluation-of-serverless-technologies-at-jet-f40af12a1c39?source=collection_home---4------4-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*QlUE6ZJeTCE4Qajl&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Evaluation of Serverless Technologies at Jet</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/evaluation-of-serverless-technologies-at-jet-f40af12a1c39?source=collection_home---4------4-----------------------" data-action-source="collection_home---4------4-----------------------" data-post-id="f40af12a1c39"><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">Evaluation of Serverless Technologies at Jet</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">Serverless functions have been around for a few years and represent a new paradigm in cloud-based software engineering. This blog post…</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/@xalid.h" data-action="show-user-card" data-action-value="b91ca2c91185" data-action-type="hover" data-user-id="b91ca2c91185" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*9F2uTV-GUMSHqjFyb4skew@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Khalid Hasanov"></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/@xalid.h" data-action="show-user-card" data-action-value="b91ca2c91185" data-action-type="hover" data-user-id="b91ca2c91185" dir="auto">Khalid Hasanov</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-01-21T18:09:20.952Z">Jan 21, 2019</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="15 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------5-----------------------" data-post-id="2cbfd8c79724" data-index="5"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/breaking-all-the-rules-using-go-to-call-windows-api-2cbfd8c79724?source=collection_home---4------5-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/breaking-all-the-rules-using-go-to-call-windows-api-2cbfd8c79724?source=collection_home---4------5-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*HaQ8pO_tpIK6Y2O1LJiRZg.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Breaking all the rules: Using Go to call Windows API</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/breaking-all-the-rules-using-go-to-call-windows-api-2cbfd8c79724?source=collection_home---4------5-----------------------" data-action-source="collection_home---4------5-----------------------" data-post-id="2cbfd8c79724"><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">Breaking all the rules: Using Go to call Windows API</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">In creating Damon,  we had to interact directly with the Windows API. This documents what we learned and how you can do it too!</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/@justen.walker" data-action="show-user-card" data-action-value="a4b6914725f8" data-action-type="hover" data-user-id="a4b6914725f8" dir="auto"><div class="u-relative u-inlineBlock u-flex0"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*xSSvlf0-W1HuHfQlt1PgDQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Justen Walker"><div class="avatar-halo u-absolute u-textColorGreenNormal svgIcon" style=" display:flex; flex-direction:row; align-items: center; justify-content: center; height:calc(100% + 25px); width:calc(100% + 25px); pointer-events: none; top:50%; left:50%; transform:translateY(-50%) translateX(-50%); "><svg width="39" height="39" viewBox="0 0 39 39" xmlns="http://www.w3.org/2000/svg" style="width: calc(100% - 18px); height: calc(100% - 18px);"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.5 1C11.8339 1 5.168 5.74599 1.90845 12.7115L1 12.2885C4.40345 5.01551 11.3974 0 19.5 0C27.6026 0 34.5966 5.01551 38 12.2885L37.0915 12.7115C33.832 5.74599 27.1661 1 19.5 1ZM1.90845 26.2885C5.168 33.254 11.8339 38 19.5 38C27.1661 38 33.832 33.254 37.0915 26.2885L38 26.7115C34.5966 33.9845 27.6026 39 19.5 39C11.3974 39 4.40345 33.9845 1 26.7115L1.90845 26.2885Z" /></svg></div></div></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/@justen.walker" data-action="show-user-card" data-action-value="a4b6914725f8" data-action-type="hover" data-user-id="a4b6914725f8" dir="auto">Justen Walker</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2019-01-15T19:45:43.610Z">Jan 15, 2019</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="10 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------6-----------------------" data-post-id="af82110a0207" data-index="6"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/failover-of-systems-at-jet-a-matter-of-just-a-few-clicks-af82110a0207?source=collection_home---4------6-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/failover-of-systems-at-jet-a-matter-of-just-a-few-clicks-af82110a0207?source=collection_home---4------6-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*i9C1Hu8sEHQYUUUM31SxDw.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Failover of systems at Jet.. a matter of just a few clicks</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/failover-of-systems-at-jet-a-matter-of-just-a-few-clicks-af82110a0207?source=collection_home---4------6-----------------------" data-action-source="collection_home---4------6-----------------------" data-post-id="af82110a0207"><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">Failover of systems at Jet.. a matter of just a few clicks</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">Ever felt frustrated when your plans for a fun weekend are sabotaged by those heavy rains ? We all have gone through it. But, at least we…</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/@prathameshbhope" data-action="show-user-card" data-action-value="e0f423c12646" data-action-type="hover" data-user-id="e0f423c12646" dir="auto"><div class="u-relative u-inlineBlock u-flex0"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*0AFzaph2dr6tZf6zZrAs5A@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Prathamesh Bhope"><div class="avatar-halo u-absolute u-textColorGreenNormal svgIcon" style=" display:flex; flex-direction:row; align-items: center; justify-content: center; height:calc(100% + 25px); width:calc(100% + 25px); pointer-events: none; top:50%; left:50%; transform:translateY(-50%) translateX(-50%); "><svg width="39" height="39" viewBox="0 0 39 39" xmlns="http://www.w3.org/2000/svg" style="width: calc(100% - 18px); height: calc(100% - 18px);"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.5 1C11.8339 1 5.168 5.74599 1.90845 12.7115L1 12.2885C4.40345 5.01551 11.3974 0 19.5 0C27.6026 0 34.5966 5.01551 38 12.2885L37.0915 12.7115C33.832 5.74599 27.1661 1 19.5 1ZM1.90845 26.2885C5.168 33.254 11.8339 38 19.5 38C27.1661 38 33.832 33.254 37.0915 26.2885L38 26.7115C34.5966 33.9845 27.6026 39 19.5 39C11.3974 39 4.40345 33.9845 1 26.7115L1.90845 26.2885Z" /></svg></div></div></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/@prathameshbhope" data-action="show-user-card" data-action-value="e0f423c12646" data-action-type="hover" data-user-id="e0f423c12646" dir="auto">Prathamesh Bhope</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-12-17T16:45:41.472Z">Dec 17, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="13 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------7-----------------------" data-post-id="2573debb685e" data-index="7"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/role-based-access-control-using-a-graph-database-2573debb685e?source=collection_home---4------7-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/role-based-access-control-using-a-graph-database-2573debb685e?source=collection_home---4------7-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*rLJCDnHiXu0732DF7KCAjg.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Role Based Access Control Using a Graph Database</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/role-based-access-control-using-a-graph-database-2573debb685e?source=collection_home---4------7-----------------------" data-action-source="collection_home---4------7-----------------------" data-post-id="2573debb685e"><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">Role Based Access Control Using a Graph Database</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">How we used the Gremlin Graph API to manage role-based access control to resources in a knowledge base application.</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/@gadberger" data-action="show-user-card" data-action-value="3266eee50c97" data-action-type="hover" data-user-id="3266eee50c97" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/0*YN2CYx6M1zCgNhPI.jpg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Gad Berger"></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/@gadberger" data-action="show-user-card" data-action-value="3266eee50c97" data-action-type="hover" data-user-id="3266eee50c97" dir="auto">Gad Berger</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-12-13T14:56:46.088Z">Dec 13, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="7 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------8-----------------------" data-post-id="898ab4a31ea4" data-index="8"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/containing-windows-executables-with-damon-898ab4a31ea4?source=collection_home---4------8-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/containing-windows-executables-with-damon-898ab4a31ea4?source=collection_home---4------8-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*E-pMdtBaa9WcjCl0yCRo0g.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Containing Windows Executables with Damon</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/containing-windows-executables-with-damon-898ab4a31ea4?source=collection_home---4------8-----------------------" data-action-source="collection_home---4------8-----------------------" data-post-id="898ab4a31ea4"><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">Containing Windows Executables with Damon</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">In my previous post, “A Short Introduction to Windows Containers”, I went into some detail about the trade-offs and constraints that…</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/@justen.walker" data-action="show-user-card" data-action-value="a4b6914725f8" data-action-type="hover" data-user-id="a4b6914725f8" dir="auto"><div class="u-relative u-inlineBlock u-flex0"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*xSSvlf0-W1HuHfQlt1PgDQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Justen Walker"><div class="avatar-halo u-absolute u-textColorGreenNormal svgIcon" style=" display:flex; flex-direction:row; align-items: center; justify-content: center; height:calc(100% + 25px); width:calc(100% + 25px); pointer-events: none; top:50%; left:50%; transform:translateY(-50%) translateX(-50%); "><svg width="39" height="39" viewBox="0 0 39 39" xmlns="http://www.w3.org/2000/svg" style="width: calc(100% - 18px); height: calc(100% - 18px);"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.5 1C11.8339 1 5.168 5.74599 1.90845 12.7115L1 12.2885C4.40345 5.01551 11.3974 0 19.5 0C27.6026 0 34.5966 5.01551 38 12.2885L37.0915 12.7115C33.832 5.74599 27.1661 1 19.5 1ZM1.90845 26.2885C5.168 33.254 11.8339 38 19.5 38C27.1661 38 33.832 33.254 37.0915 26.2885L38 26.7115C34.5966 33.9845 27.6026 39 19.5 39C11.3974 39 4.40345 33.9845 1 26.7115L1.90845 26.2885Z" /></svg></div></div></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/@justen.walker" data-action="show-user-card" data-action-value="a4b6914725f8" data-action-type="hover" data-user-id="a4b6914725f8" dir="auto">Justen Walker</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-12-11T18:43:29.150Z">Dec 11, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------9-----------------------" data-post-id="db5adc0db536" data-index="9"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/a-short-introduction-to-windows-containers-db5adc0db536?source=collection_home---4------9-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/a-short-introduction-to-windows-containers-db5adc0db536?source=collection_home---4------9-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*yziiye6USiMCvXsExscEQA.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">A short introduction to Windows Containers</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/a-short-introduction-to-windows-containers-db5adc0db536?source=collection_home---4------9-----------------------" data-action-source="collection_home---4------9-----------------------" data-post-id="db5adc0db536"><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">A short introduction to Windows Containers</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">Windows has containers too! But how do they work? How are they different from Linux containers?</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/@justen.walker" data-action="show-user-card" data-action-value="a4b6914725f8" data-action-type="hover" data-user-id="a4b6914725f8" dir="auto"><div class="u-relative u-inlineBlock u-flex0"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*xSSvlf0-W1HuHfQlt1PgDQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Justen Walker"><div class="avatar-halo u-absolute u-textColorGreenNormal svgIcon" style=" display:flex; flex-direction:row; align-items: center; justify-content: center; height:calc(100% + 25px); width:calc(100% + 25px); pointer-events: none; top:50%; left:50%; transform:translateY(-50%) translateX(-50%); "><svg width="39" height="39" viewBox="0 0 39 39" xmlns="http://www.w3.org/2000/svg" style="width: calc(100% - 18px); height: calc(100% - 18px);"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.5 1C11.8339 1 5.168 5.74599 1.90845 12.7115L1 12.2885C4.40345 5.01551 11.3974 0 19.5 0C27.6026 0 34.5966 5.01551 38 12.2885L37.0915 12.7115C33.832 5.74599 27.1661 1 19.5 1ZM1.90845 26.2885C5.168 33.254 11.8339 38 19.5 38C27.1661 38 33.832 33.254 37.0915 26.2885L38 26.7115C34.5966 33.9845 27.6026 39 19.5 39C11.3974 39 4.40345 33.9845 1 26.7115L1.90845 26.2885Z" /></svg></div></div></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/@justen.walker" data-action="show-user-card" data-action-value="a4b6914725f8" data-action-type="hover" data-user-id="a4b6914725f8" dir="auto">Justen Walker</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-12-11T18:43:00.999Z">Dec 11, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="7 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------10-----------------------" data-post-id="a295d21e513a" data-index="10"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/automated-integration-testing-a295d21e513a?source=collection_home---4------10-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/automated-integration-testing-a295d21e513a?source=collection_home---4------10-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*QcAh45dlS_pwW6wvoS7JOQ.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Automated Integration Testing</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/automated-integration-testing-a295d21e513a?source=collection_home---4------10-----------------------" data-action-source="collection_home---4------10-----------------------" data-post-id="a295d21e513a"><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">Automated Integration Testing</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">Integration testing for a complex system at one of the world’s largest product catalogs.</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/@allenliuzihao" data-action="show-user-card" data-action-value="918397656aa4" data-action-type="hover" data-user-id="918397656aa4" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/0*4L93hX_VmLYeu3tQ" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Zihao Liu"></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/@allenliuzihao" data-action="show-user-card" data-action-value="918397656aa4" data-action-type="hover" data-user-id="918397656aa4" dir="auto">Zihao Liu</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-11-26T20:41:45.563Z">Nov 26, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="7 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------11-----------------------" data-post-id="9e5669bd53ab" data-index="11"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/microservices-to-workflows-the-evolution-of-jets-order-management-system-9e5669bd53ab?source=collection_home---4------11-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/microservices-to-workflows-the-evolution-of-jets-order-management-system-9e5669bd53ab?source=collection_home---4------11-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*SFxDzPCasVgi1ihRnrFQJQ.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Microservices to Workflows: The Evolution of Jet’s Order Management System</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/microservices-to-workflows-the-evolution-of-jets-order-management-system-9e5669bd53ab?source=collection_home---4------11-----------------------" data-action-source="collection_home---4------11-----------------------" data-post-id="9e5669bd53ab"><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">Microservices to Workflows: The Evolution of Jet’s Order Management System</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">Written By: James Novino</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/@jnovino" data-action="show-user-card" data-action-value="2f0ede995d2b" data-action-type="hover" data-user-id="2f0ede995d2b" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*zSuVyzKCzCDcMsnP6jlzqg@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of James Novino"></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/@jnovino" data-action="show-user-card" data-action-value="2f0ede995d2b" data-action-type="hover" data-user-id="2f0ede995d2b" dir="auto">James Novino</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-11-09T14:11:11.829Z">Nov 9, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="10 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------12-----------------------" data-post-id="fc52c4336bb3" data-index="12"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/jet-techblog-fc52c4336bb3?source=collection_home---4------12-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/jet-techblog-fc52c4336bb3?source=collection_home---4------12-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*hAgjiGzMKFWJncqF5PDCoA.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Using Natural Language Processing to Classify and Analyze User Feedback</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/jet-techblog-fc52c4336bb3?source=collection_home---4------12-----------------------" data-action-source="collection_home---4------12-----------------------" data-post-id="fc52c4336bb3"><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">Using Natural Language Processing to Classify and Analyze User Feedback</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">Hello! My name is Jayant Madugula and I’m currently a senior at Columbia University studying Computer Science. This was my second summer…</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/@jayantmadugula" data-action="show-user-card" data-action-value="d09724bb73dc" data-action-type="hover" data-user-id="d09724bb73dc" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*TJeo0YhnHKpwfoZiyV5Mzg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Jayant Madugula"></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/@jayantmadugula" data-action="show-user-card" data-action-value="d09724bb73dc" data-action-type="hover" data-user-id="d09724bb73dc" dir="auto">Jayant Madugula</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-11-07T20:59:35.575Z">Nov 7, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="9 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------13-----------------------" data-post-id="ca0d21fa3acd" data-index="13"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/how-jet-integrates-cyber-security-into-its-culture-ca0d21fa3acd?source=collection_home---4------13-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/how-jet-integrates-cyber-security-into-its-culture-ca0d21fa3acd?source=collection_home---4------13-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*cP-4doHp5LVdIwHGZ6X4Qg.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">How Jet integrates cyber security into its culture</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/how-jet-integrates-cyber-security-into-its-culture-ca0d21fa3acd?source=collection_home---4------13-----------------------" data-action-source="collection_home---4------13-----------------------" data-post-id="ca0d21fa3acd"><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">How Jet integrates cyber security into its culture</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">How you can make your security program fun, engaging, and embed it with your organization’s culture.</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/@erichgoldman" data-action="show-user-card" data-action-value="75eaa8d210d7" data-action-type="hover" data-user-id="75eaa8d210d7" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*tXNpl8NEbx0niT6RakJvnw.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Eric Goldman"></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/@erichgoldman" data-action="show-user-card" data-action-value="75eaa8d210d7" data-action-type="hover" data-user-id="75eaa8d210d7" dir="auto">Eric Goldman</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-10-29T17:06:37.312Z">Oct 29, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------14-----------------------" data-post-id="11fdeae2549a" data-index="14"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/how-to-ensure-your-developers-never-stop-learning-11fdeae2549a?source=collection_home---4------14-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/how-to-ensure-your-developers-never-stop-learning-11fdeae2549a?source=collection_home---4------14-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*NIxLdpWP4beqXkCY4aWd7A.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">How to ensure your developers never stop learning</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/how-to-ensure-your-developers-never-stop-learning-11fdeae2549a?source=collection_home---4------14-----------------------" data-action-source="collection_home---4------14-----------------------" data-post-id="11fdeae2549a"><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">How to ensure your developers never stop learning</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">Great developers never stop learning. For tech companies to attract, retain, and develop top talent, it’s crucial to create an environment…</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/@ckshei" data-action="show-user-card" data-action-value="ce987fb1a763" data-action-type="hover" data-user-id="ce987fb1a763" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*BzoXupv7c-XLAHCgjbGHQA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Christopher Shei"></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/@ckshei" data-action="show-user-card" data-action-value="ce987fb1a763" data-action-type="hover" data-user-id="ce987fb1a763" dir="auto">Christopher Shei</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-10-02T19:19:30.852Z">Oct 2, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------15-----------------------" data-post-id="78fdeb7ab5e8" data-index="15"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/feature-toggles-give-you-superpowers-78fdeb7ab5e8?source=collection_home---4------15-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/feature-toggles-give-you-superpowers-78fdeb7ab5e8?source=collection_home---4------15-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*D-1ZseTgyDMJ29C82ZBinQ.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Feature Toggles Give You Superpowers</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/feature-toggles-give-you-superpowers-78fdeb7ab5e8?source=collection_home---4------15-----------------------" data-action-source="collection_home---4------15-----------------------" data-post-id="78fdeb7ab5e8"><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">Feature Toggles Give You Superpowers</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">Feature toggles (or feature flags) are a technique in software development for adding functionality in such a way that it can be turned on…</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/@noahrobi" data-action="show-user-card" data-action-value="46204677c1ee" data-action-type="hover" data-user-id="46204677c1ee" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/0*BgCGIOTGc-60KtQO.jpg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Noah Robison-Cox"></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/@noahrobi" data-action="show-user-card" data-action-value="46204677c1ee" data-action-type="hover" data-user-id="46204677c1ee" dir="auto">Noah Robison-Cox</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-09-24T18:57:21.021Z">Sep 24, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------16-----------------------" data-post-id="8689bcf31fea" data-index="16"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/observability-using-abstracted-io-8689bcf31fea?source=collection_home---4------16-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/observability-using-abstracted-io-8689bcf31fea?source=collection_home---4------16-----------------------" 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*IX-skrkZGwmlfW6O&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Observability Using Abstracted IO</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/observability-using-abstracted-io-8689bcf31fea?source=collection_home---4------16-----------------------" data-action-source="collection_home---4------16-----------------------" data-post-id="8689bcf31fea"><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">Observability Using Abstracted IO</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">Written By: James Novino</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/@jnovino" data-action="show-user-card" data-action-value="2f0ede995d2b" data-action-type="hover" data-user-id="2f0ede995d2b" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*zSuVyzKCzCDcMsnP6jlzqg@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of James Novino"></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/@jnovino" data-action="show-user-card" data-action-value="2f0ede995d2b" data-action-type="hover" data-user-id="2f0ede995d2b" dir="auto">James Novino</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-09-24T17:39:55.320Z">Sep 24, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="10 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------17-----------------------" data-post-id="84943cd359d4" data-index="17"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/building-search-into-your-application-84943cd359d4?source=collection_home---4------17-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/building-search-into-your-application-84943cd359d4?source=collection_home---4------17-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*OCNvcz1E8LjX1FD3RSIW9A.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Building Search into Your Application</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/building-search-into-your-application-84943cd359d4?source=collection_home---4------17-----------------------" data-action-source="collection_home---4------17-----------------------" data-post-id="84943cd359d4"><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 Search into Your Application</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">Introduction</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/@bryanhanner" data-action="show-user-card" data-action-value="6e52c4c05f30" data-action-type="hover" data-user-id="6e52c4c05f30" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/2*2irl5_jrAc3YQLdthSDIBg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Bryan Hanner"></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/@bryanhanner" data-action="show-user-card" data-action-value="6e52c4c05f30" data-action-type="hover" data-user-id="6e52c4c05f30" dir="auto">Bryan Hanner</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-09-21T16:21:22.202Z">Sep 21, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="10 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------18-----------------------" data-post-id="8afb4157fe79" data-index="18"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/interview-tips-and-the-hiring-process-for-jet-walmartlabs-engineering-8afb4157fe79?source=collection_home---4------18-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/interview-tips-and-the-hiring-process-for-jet-walmartlabs-engineering-8afb4157fe79?source=collection_home---4------18-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*tkKtdbvWUp7kb4U5r1cnew.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Interview Tips and the Hiring Process for Jet &amp; WalmartLabs Engineering — Hoboken</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/interview-tips-and-the-hiring-process-for-jet-walmartlabs-engineering-8afb4157fe79?source=collection_home---4------18-----------------------" data-action-source="collection_home---4------18-----------------------" data-post-id="8afb4157fe79"><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">Interview Tips and the Hiring Process for Jet &amp; WalmartLabs Engineering — Hoboken</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">In Engineering and interested in working at Jet.com or WalmartLabs in Hoboken? We’re hiring bold, kind, entrepreneurial humans! If this…</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/@srs_recruiter" data-action="show-user-card" data-action-value="2ab4d8b715cf" data-action-type="hover" data-user-id="2ab4d8b715cf" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/0*tbNoMsC7uVBkWKXp.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Swetak Shah"></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/@srs_recruiter" data-action="show-user-card" data-action-value="2ab4d8b715cf" data-action-type="hover" data-user-id="2ab4d8b715cf" dir="auto">Swetak Shah</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-09-11T15:11:38.249Z">Sep 11, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------19-----------------------" data-post-id="811ba61c8c34" data-index="19"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/the-design-review-811ba61c8c34?source=collection_home---4------19-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/the-design-review-811ba61c8c34?source=collection_home---4------19-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*WZHonKCxRSWRzMNvmJ79hg.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">The Design Review</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/the-design-review-811ba61c8c34?source=collection_home---4------19-----------------------" data-action-source="collection_home---4------19-----------------------" data-post-id="811ba61c8c34"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">The Design Review</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">The design review, and then later in the development phase, the production readiness review, are two incredibly important parts of our…</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/@LBacaj" data-action="show-user-card" data-action-value="f140905c374e" data-action-type="hover" data-user-id="f140905c374e" dir="auto"><div class="u-relative u-inlineBlock u-flex0"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*Aa6j7MAntU4FBLZ6GztK6g.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Louie Bacaj"><div class="avatar-halo u-absolute u-textColorGreenNormal svgIcon" style=" display:flex; flex-direction:row; align-items: center; justify-content: center; height:calc(100% + 25px); width:calc(100% + 25px); pointer-events: none; top:50%; left:50%; transform:translateY(-50%) translateX(-50%); "><svg width="39" height="39" viewBox="0 0 39 39" xmlns="http://www.w3.org/2000/svg" style="width: calc(100% - 18px); height: calc(100% - 18px);"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.5 1C11.8339 1 5.168 5.74599 1.90845 12.7115L1 12.2885C4.40345 5.01551 11.3974 0 19.5 0C27.6026 0 34.5966 5.01551 38 12.2885L37.0915 12.7115C33.832 5.74599 27.1661 1 19.5 1ZM1.90845 26.2885C5.168 33.254 11.8339 38 19.5 38C27.1661 38 33.832 33.254 37.0915 26.2885L38 26.7115C34.5966 33.9845 27.6026 39 19.5 39C11.3974 39 4.40345 33.9845 1 26.7115L1.90845 26.2885Z" /></svg></div></div></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/@LBacaj" data-action="show-user-card" data-action-value="f140905c374e" data-action-type="hover" data-user-id="f140905c374e" dir="auto">Louie Bacaj</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-09-10T18:33:35.421Z">Sep 10, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------20-----------------------" data-post-id="4a5bf0eaad92" data-index="20"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/scaling-microservices-jet-com-4a5bf0eaad92?source=collection_home---4------20-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/scaling-microservices-jet-com-4a5bf0eaad92?source=collection_home---4------20-----------------------" 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*vgG6qMNmIv8yb1gM&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Scaling Microservices @ Jet.com</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/scaling-microservices-jet-com-4a5bf0eaad92?source=collection_home---4------20-----------------------" data-action-source="collection_home---4------20-----------------------" data-post-id="4a5bf0eaad92"><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">Scaling Microservices @ Jet.com</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">Written By: James Novino</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/@jnovino" data-action="show-user-card" data-action-value="2f0ede995d2b" data-action-type="hover" data-user-id="2f0ede995d2b" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*zSuVyzKCzCDcMsnP6jlzqg@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of James Novino"></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/@jnovino" data-action="show-user-card" data-action-value="2f0ede995d2b" data-action-type="hover" data-user-id="2f0ede995d2b" dir="auto">James Novino</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-09-05T16:09:32.350Z">Sep 5, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="7 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------21-----------------------" data-post-id="98b5f7025423" data-index="21"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/f-microservice-patterns-jet-com-98b5f7025423?source=collection_home---4------21-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/f-microservice-patterns-jet-com-98b5f7025423?source=collection_home---4------21-----------------------" 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*v1wN1UWERkTnKxwB&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">F# Microservice Patterns @ Jet.com</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/f-microservice-patterns-jet-com-98b5f7025423?source=collection_home---4------21-----------------------" data-action-source="collection_home---4------21-----------------------" data-post-id="98b5f7025423"><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">F# Microservice Patterns @ Jet.com</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">Written By: James Novino</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/@jnovino" data-action="show-user-card" data-action-value="2f0ede995d2b" data-action-type="hover" data-user-id="2f0ede995d2b" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*zSuVyzKCzCDcMsnP6jlzqg@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of James Novino"></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/@jnovino" data-action="show-user-card" data-action-value="2f0ede995d2b" data-action-type="hover" data-user-id="2f0ede995d2b" dir="auto">James Novino</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-09-05T15:40:08.842Z">Sep 5, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="9 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------22-----------------------" data-post-id="a0090104c007" data-index="22"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/pager-duty-jet-com-a0090104c007?source=collection_home---4------22-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/pager-duty-jet-com-a0090104c007?source=collection_home---4------22-----------------------" 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*ZodYCSOn4FdAG0x5&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Pager Duty @ Jet.com</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/pager-duty-jet-com-a0090104c007?source=collection_home---4------22-----------------------" data-action-source="collection_home---4------22-----------------------" data-post-id="a0090104c007"><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">Pager Duty @ Jet.com</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">Written By: James Novino &amp; Anthony Hobbs</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/@jnovino" data-action="show-user-card" data-action-value="2f0ede995d2b" data-action-type="hover" data-user-id="2f0ede995d2b" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*zSuVyzKCzCDcMsnP6jlzqg@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of James Novino"></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/@jnovino" data-action="show-user-card" data-action-value="2f0ede995d2b" data-action-type="hover" data-user-id="2f0ede995d2b" dir="auto">James Novino</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-09-04T14:40:44.575Z">Sep 4, 2018</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-size4of12" data-source="collection_home---4------23-----------------------" data-post-id="dc841519610e" data-index="23"><div class="u-lineHeightBase postItem"><a href="https://medium.com/jettech/abstracting-io-using-f-dc841519610e?source=collection_home---4------23-----------------------" data-action="open-post" data-action-value="https://medium.com/jettech/abstracting-io-using-f-dc841519610e?source=collection_home---4------23-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*mxhWy2lwPrRLIff5Kh9YTg.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Abstracting IO using F#</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class=""   href="https://medium.com/jettech/abstracting-io-using-f-dc841519610e?source=collection_home---4------23-----------------------" data-action-source="collection_home---4------23-----------------------" data-post-id="dc841519610e"><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">Abstracting IO using F#</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">Written By: James Novino</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/@jnovino" data-action="show-user-card" data-action-value="2f0ede995d2b" data-action-type="hover" data-user-id="2f0ede995d2b" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/72/72/1*zSuVyzKCzCDcMsnP6jlzqg@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of James Novino"></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/@jnovino" data-action="show-user-card" data-action-value="2f0ede995d2b" data-action-type="hover" data-user-id="2f0ede995d2b" dir="auto">James Novino</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2018-08-20T17:37:15.496Z">Aug 20, 2018</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="11 min read"></span></div></div></div></div></div></div></div></section></div></div><style class="js-collectionStyle">
.u-accentColor--borderLight {border-color: #888384 !important;}
.u-accentColor--borderNormal {border-color: #888384 !important;}
.u-accentColor--borderDark {border-color: #757171 !important;}
.u-accentColor--iconLight .svgIcon,.u-accentColor--iconLight.svgIcon {fill: #888384 !important;}
.u-accentColor--iconNormal .svgIcon,.u-accentColor--iconNormal.svgIcon {fill: #888384 !important;}
.u-accentColor--iconDark .svgIcon,.u-accentColor--iconDark.svgIcon {fill: #757171 !important;}
.u-accentColor--textNormal {color: #757171 !important;}
.u-accentColor--hoverTextNormal:hover {color: #757171 !important;}
.u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #6B6768 !important;}
.u-accentColor--textDark {color: #6B6768 !important;}
.u-accentColor--backgroundLight {background-color: #888384 !important;}
.u-accentColor--backgroundNormal {background-color: #888384 !important;}
.u-accentColor--backgroundDark {background-color: #757171 !important;}
.u-accentColor--buttonDark {border-color: #757171 !important; color: #6B6768 !important;}
.u-accentColor--buttonDark:hover {border-color: #6B6768 !important;}
.u-accentColor--buttonDark .icon:before,.u-accentColor--buttonDark .svgIcon{color: #757171 !important; fill: #757171 !important;}
.u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #888384 !important; color: #757171 !important;}
.u-accentColor--buttonNormal:hover {border-color: #757171 !important;}
.u-accentColor--buttonNormal .icon:before,.u-accentColor--buttonNormal .svgIcon{color: #888384 !important; fill: #888384 !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: #757171 !important; border-color: #757171 !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: #888384 !important; border-color: #888384 !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: #757171 !important;}.u-tintBgColor {background-color: rgba(33, 30, 31, 1) !important;}.u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(33, 30, 31, 1) 0%, rgba(33, 30, 31, 0) 100%) !important;}.u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(33, 30, 31, 0) 0%, rgba(33, 30, 31, 1) 100%) !important;}
.u-tintSpectrum .u-baseColor--borderLight {border-color: #9E9A9A !important;}
.u-tintSpectrum .u-baseColor--borderNormal {border-color: #C7C3C3 !important;}
.u-tintSpectrum .u-baseColor--borderDark {border-color: #EEEAEA !important;}
.u-tintSpectrum .u-baseColor--iconLight .svgIcon,.u-tintSpectrum .u-baseColor--iconLight.svgIcon {fill: #9E9A9A !important;}
.u-tintSpectrum .u-baseColor--iconNormal .svgIcon,.u-tintSpectrum .u-baseColor--iconNormal.svgIcon {fill: #C7C3C3 !important;}
.u-tintSpectrum .u-baseColor--iconDark .svgIcon,.u-tintSpectrum .u-baseColor--iconDark.svgIcon {fill: #EEEAEA !important;}
.u-tintSpectrum .u-baseColor--textNormal {color: #C7C3C3 !important;}
.u-tintSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: #FFFDFC !important;}
.u-tintSpectrum .u-baseColor--textDark {color: #FFFDFC !important;}
.u-tintSpectrum .u-baseColor--textDarker {color: #FFFDFC !important;}
.u-tintSpectrum .u-baseColor--backgroundLight {background-color: #9E9A9A !important;}
.u-tintSpectrum .u-baseColor--backgroundNormal {background-color: #C7C3C3 !important;}
.u-tintSpectrum .u-baseColor--backgroundDark {background-color: #EEEAEA !important;}
.u-tintSpectrum .u-baseColor--buttonLight {border-color: #9E9A9A !important; color: #9E9A9A !important;}
.u-tintSpectrum .u-baseColor--buttonLight:hover {border-color: #9E9A9A !important;}
.u-tintSpectrum .u-baseColor--buttonLight .icon:before,.u-tintSpectrum .u-baseColor--buttonLight .svgIcon {color: #9E9A9A !important; fill: #9E9A9A !important;}
.u-tintSpectrum .u-baseColor--buttonDark {border-color: #EEEAEA !important; color: #FFFDFC !important;}
.u-tintSpectrum .u-baseColor--buttonDark:hover {border-color: #FFFDFC !important;}
.u-tintSpectrum .u-baseColor--buttonDark .icon:before,.u-tintSpectrum .u-baseColor--buttonDark .svgIcon {color: #EEEAEA !important; fill: #EEEAEA !important;}
.u-tintSpectrum .u-baseColor--buttonNormal {border-color: #C7C3C3 !important; color: #C7C3C3 !important;}
.u-tintSpectrum .u-baseColor--buttonNormal:hover {border-color: #EEEAEA !important;}
.u-tintSpectrum .u-baseColor--buttonNormal .icon:before,.u-tintSpectrum .u-baseColor--buttonNormal .svgIcon {color: #C7C3C3 !important; fill: #C7C3C3 !important;}
.u-tintSpectrum .u-baseColor--buttonDark.button--filled,.u-tintSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: #EEEAEA !important; border-color: #EEEAEA !important; color: rgba(33, 30, 31, 1) !important; fill: rgba(33, 30, 31, 1) !important;}
.u-tintSpectrum .u-baseColor--buttonNormal.button--filled,.u-tintSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: #C7C3C3 !important; border-color: #C7C3C3 !important; color: rgba(33, 30, 31, 1) !important; fill: rgba(33, 30, 31, 1) !important;}
.u-tintSpectrum .u-baseColor--link {color: #C7C3C3 !important;}
.u-tintSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: #FFFDFC !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: #FFFDFC !important;}
.u-tintSpectrum .u-baseColor--link.link--dark {color: #FFFDFC !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: #FFFDFC !important;}
.u-tintSpectrum .u-baseColor--link.link--darker {color: #FFFDFC !important;}
.u-tintSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: #9E9A9A;}
.u-tintSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: #9E9A9A;}
.u-tintSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: #9E9A9A;}
.u-tintSpectrum .svgIcon--logoWordmark {stroke: none !important; fill: #FFFDFC !important;}
.u-tintSpectrum .svgIcon--logoMonogram {stroke: none !important; fill: #FFFDFC !important;}
.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: #FFFDFC !important; fill: #FFFDFC !important;}
.u-tintSpectrum  .ui-body,.u-tintSpectrum  .ui-caps {color: #FFFDFC !important; fill: #FFFDFC !important;}
.u-tintSpectrum  .ui-summary,.u-tintSpectrum  .ui-caption {color: #9E9A9A !important; fill: #9E9A9A !important;}
.u-tintSpectrum .u-accentColor--borderLight {border-color: #9E9A9A !important;}
.u-tintSpectrum .u-accentColor--borderNormal {border-color: #C7C3C3 !important;}
.u-tintSpectrum .u-accentColor--borderDark {border-color: #EEEAEA !important;}
.u-tintSpectrum .u-accentColor--iconLight .svgIcon,.u-tintSpectrum .u-accentColor--iconLight.svgIcon {fill: #9E9A9A !important;}
.u-tintSpectrum .u-accentColor--iconNormal .svgIcon,.u-tintSpectrum .u-accentColor--iconNormal.svgIcon {fill: #C7C3C3 !important;}
.u-tintSpectrum .u-accentColor--iconDark .svgIcon,.u-tintSpectrum .u-accentColor--iconDark.svgIcon {fill: #EEEAEA !important;}
.u-tintSpectrum .u-accentColor--textNormal {color: #C7C3C3 !important;}
.u-tintSpectrum .u-accentColor--hoverTextNormal:hover {color: #C7C3C3 !important;}
.u-tintSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #FFFDFC !important;}
.u-tintSpectrum .u-accentColor--textDark {color: #FFFDFC !important;}
.u-tintSpectrum .u-accentColor--backgroundLight {background-color: #9E9A9A !important;}
.u-tintSpectrum .u-accentColor--backgroundNormal {background-color: #C7C3C3 !important;}
.u-tintSpectrum .u-accentColor--backgroundDark {background-color: #EEEAEA !important;}
.u-tintSpectrum .u-accentColor--buttonDark {border-color: #EEEAEA !important; color: #FFFDFC !important;}
.u-tintSpectrum .u-accentColor--buttonDark:hover {border-color: #FFFDFC !important;}
.u-tintSpectrum .u-accentColor--buttonDark .icon:before,.u-tintSpectrum .u-accentColor--buttonDark .svgIcon{color: #EEEAEA !important; fill: #EEEAEA !important;}
.u-tintSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #C7C3C3 !important; color: #C7C3C3 !important;}
.u-tintSpectrum .u-accentColor--buttonNormal:hover {border-color: #EEEAEA !important;}
.u-tintSpectrum .u-accentColor--buttonNormal .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal .svgIcon{color: #C7C3C3 !important; fill: #C7C3C3 !important;}
.u-tintSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(33, 30, 31, 1) !important; fill: rgba(33, 30, 31, 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: #EEEAEA !important; border-color: #EEEAEA !important; color: rgba(33, 30, 31, 1) !important; fill: rgba(33, 30, 31, 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: #C7C3C3 !important; border-color: #C7C3C3 !important; color: rgba(33, 30, 31, 1) !important; fill: rgba(33, 30, 31, 1) !important;}
.u-tintSpectrum .postArticle.is-withAccentColors .markup--user,.u-tintSpectrum .postArticle.is-withAccentColors .markup--query {color: #C7C3C3 !important;}
.u-accentColor--highlightFaint {background-color: rgba(244, 240, 239, 1) !important;}
.u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(228, 222, 223, 1) !important;}
.postArticle.is-withAccentColors .markup--quote.is-other {background-color: rgba(244, 240, 239, 1) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(244, 240, 239, 1), rgba(244, 240, 239, 1));}
.postArticle.is-withAccentColors .markup--quote.is-me {background-color: rgba(235, 230, 230, 1) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(235, 230, 230, 1), rgba(235, 230, 230, 1));}
.postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: rgba(228, 222, 223, 1) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(228, 222, 223, 1), rgba(228, 222, 223, 1));}
.postArticle.is-withAccentColors .markup--quote.is-selected {background-color: rgba(228, 222, 223, 1) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(228, 222, 223, 1), rgba(228, 222, 223, 1));}
.postArticle.is-withAccentColors .markup--highlight {background-color: rgba(228, 222, 223, 1) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(228, 222, 223, 1), rgba(228, 222, 223, 1));}.u-baseColor--iconNormal.avatar-halo {fill: rgba(0, 0, 0, 0.4980392156862745) !important;}</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 .svgIcon--logoWordmark {stroke: none !important; fill: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .svgIcon--logoMonogram {stroke: none !important; fill: rgba(255, 255, 255, 1) !important;}
.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 .svgIcon--logoWordmark {stroke: none !important; fill: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .svgIcon--logoMonogram {stroke: none !important; fill: rgba(0, 0, 0, 0.6) !important;}
.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(2, 184, 117, 1) !important;}
.u-resetSpectrum .u-accentColor--borderNormal {border-color: rgba(2, 184, 117, 1) !important;}
.u-resetSpectrum .u-accentColor--borderDark {border-color: rgba(0, 171, 107, 1) !important;}
.u-resetSpectrum .u-accentColor--iconLight .svgIcon,.u-resetSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(2, 184, 117, 1) !important;}
.u-resetSpectrum .u-accentColor--iconNormal .svgIcon,.u-resetSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(0, 171, 107, 1) !important;}
.u-resetSpectrum .u-accentColor--iconDark .svgIcon,.u-resetSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(28, 153, 99, 1) !important;}
.u-resetSpectrum .u-accentColor--textNormal {color: rgba(0, 171, 107, 1) !important;}
.u-resetSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(0, 171, 107, 1) !important;}
.u-resetSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(28, 153, 99, 1) !important;}
.u-resetSpectrum .u-accentColor--textDark {color: rgba(28, 153, 99, 1) !important;}
.u-resetSpectrum .u-accentColor--backgroundLight {background-color: rgba(2, 184, 117, 1) !important;}
.u-resetSpectrum .u-accentColor--backgroundNormal {background-color: rgba(0, 171, 107, 1) !important;}
.u-resetSpectrum .u-accentColor--backgroundDark {background-color: rgba(28, 153, 99, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonDark {border-color: rgba(0, 171, 107, 1) !important; color: rgba(28, 153, 99, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(28, 153, 99, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonDark .icon:before,.u-resetSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(28, 153, 99, 1) !important; fill: rgba(28, 153, 99, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(2, 184, 117, 1) !important; color: rgba(0, 171, 107, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(0, 171, 107, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonNormal .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(0, 171, 107, 1) !important; fill: rgba(0, 171, 107, 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(28, 153, 99, 1) !important; border-color: rgba(28, 153, 99, 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(0, 171, 107, 1) !important; border-color: rgba(0, 171, 107, 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(0, 171, 107, 1) !important;}</style><div class="js-collectionFooter u-tintBgColor u-hide"><div class="container u-maxWidth1040"><div class="u-marginTop10 u-paddingTop10 u-paddingBottom30 u-tintSpectrum"><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/jettech/about" title="About Jet Tech" aria-label="About Jet Tech">About Jet Tech</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/jettech/latest" title="Latest Stories for Jet Tech" aria-label="Latest Stories for Jet Tech">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/jettech/archive" title="Archive for Jet Tech" aria-label="Archive for Jet Tech">Archive</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block"   href="https://about.medium.com">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://medium.com/policy/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://medium.com/policy/f03bf92035c9">Privacy</a></div></div></div></div></div></div></div></div><div class="loadingBar"></div><script>// <![CDATA[
window["obvInit"] = function (opt_embedded) {window["obvInit"]["embedded"] = opt_embedded; window["obvInit"]["ready"] = true;}
// ]]></script><script>// <![CDATA[
var GLOBALS = {"audioUrl":"https://d1fcbxp97j4nb2.cloudfront.net","baseUrl":"https://medium.com","buildLabel":"41247-4bb7f1e","currentUser":{"userId":"lo_WOyUOpwJohmK","isVerified":false,"subscriberEmail":"","hasPastMemberships":false,"isEnrolledInHightower":false,"isEligibleForHightower":false,"hightowerLastLockedAt":0,"isWriterProgramEnrolled":true,"isWriterProgramInvited":false,"isWriterProgramOptedOut":false,"writerProgramVersion":0,"writerProgramEnrolledAt":0,"friendLinkOnboarding":0,"hasAdditionalUnlocks":false,"hasApiAccess":false,"writerProgramDistributionSettingOptedIn":false,"isSuspended":false},"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.ah3X70iRG19Y_JWJ_wOR6A.js","common-async":"https://cdn-static-1.medium.com/_/fp/gen-js/main-common-async.bundle.Mh_XBZ56YHqNxwQzqdy1eA.js","hightower":"https://cdn-static-1.medium.com/_/fp/gen-js/main-hightower.bundle.rc5LYhV1V0_m73CJ_GaKyw.js","home-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-home-screens.bundle.-3AhmmQS4EB4Y1et1lVOAg.js","misc-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-misc-screens.bundle.kJw6zEFpCukUVCHYXxwBEQ.js","notes":"https://cdn-static-1.medium.com/_/fp/gen-js/main-notes.bundle.5Kt9YeqhR16g6-xABUWT_g.js","payments":"https://cdn-static-1.medium.com/_/fp/gen-js/main-payments.bundle.m7Ld5HLDvRermWyNjFJupQ.js","posters":"https://cdn-static-1.medium.com/_/fp/gen-js/main-posters.bundle.Iw2nuZsErpRoRgIEMRN9-Q.js","power-readers":"https://cdn-static-1.medium.com/_/fp/gen-js/main-power-readers.bundle.GkcD0XuDA1z1zdVzsbX7ZQ.js","pubs":"https://cdn-static-1.medium.com/_/fp/gen-js/main-pubs.bundle.GPti5Cps_c5PnbsffZcreg.js","stats":"https://cdn-static-1.medium.com/_/fp/gen-js/main-stats.bundle.c29QwlZoWUxHZcC3d4J9Sg.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":"//medium.com/policy/9db0094a1e0f","textshotHost":"textshot.medium.com","transactionId":"1591367730002:6c2c045fa30e","useragent":{"browser":"other","family":"","os":"","version":0,"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":{"add_friction_to_signup":true,"allow_access":true,"allow_signup":true,"allow_test_auth":"disallow","android_rating_prompt_stories_read_threshold":2,"assign_default_topic_to_posts":true,"available_annual_plan":"2c754bcc2995","available_monthly_plan":"60e220181034","bane_add_user":true,"branch_seo_metadata":true,"browsable_stream_config_bucket":"curated-topics","coronavirus_topic_recirc":true,"covid_19_cdc_banner":true,"disable_android_subscription_activity_carousel":true,"disable_gosocial_followers_that_you_follow":true,"disable_ios_resume_reading_toast":true,"disable_ios_subscription_activity_carousel":true,"disable_mobile_featured_chunk":true,"disable_post_recommended_from_friends_provider":true,"enable_alternate_onboarding_email_subject":true,"enable_android_local_currency":true,"enable_annual_renewal_reminder_email":true,"enable_app_flirty_thirty":true,"enable_apple_sign_in":true,"enable_automated_mission_control_triggers":true,"enable_braintree_integration":true,"enable_braintree_webhook":true,"enable_branch_io":true,"enable_branding":true,"enable_branding_fonts":true,"enable_cleansweep_cachev2_reads":true,"enable_cleansweep_double_writes":true,"enable_confirm_sign_in":true,"enable_cta_meter":true,"enable_curation_priority_queue_experiment":true,"enable_dedicated_series_tab_api_ios":true,"enable_different_grid":true,"enable_digest_feature_logging":true,"enable_digest_tagline":true,"enable_disregard_trunc_state_for_footer":true,"enable_edit_alt_text":true,"enable_email_sign_in_captcha":true,"enable_embedding_based_diversification":true,"enable_end_of_post_cleanup":true,"enable_expanded_feature_chunk_pool":true,"enable_filter_by_resend_rules":true,"enable_filter_expire_processor":true,"enable_first_name_on_paywall":true,"enable_footer_app_buttons":true,"enable_free_corona_topic":true,"enable_global_susi_modal":true,"enable_google_one_tap":true,"enable_highlander_member_digest":true,"enable_ios_post_stats":true,"enable_janky_spam_rules":"users,posts","enable_json_logs_trained_ranker":true,"enable_kafka_events":true,"enable_kbfd_rex":true,"enable_kbfd_rex_app_highlights":true,"enable_kbfd_rex_daily_digest":true,"enable_li_open_in_app":true,"enable_lite_about_page":true,"enable_lite_notifications":true,"enable_lite_post":true,"enable_lite_post_cd":true,"enable_lite_post_highlights":true,"enable_lite_post_highlights_view_only":true,"enable_lite_profile":true,"enable_lite_pub_header_menu":true,"enable_lite_pub_homepage_for_selected_domains":true,"enable_lite_server_upstream_deadlines":true,"enable_lite_stories":true,"enable_lite_topics":true,"enable_lite_unread_notification_count_mutation":true,"enable_lo_homepage":true,"enable_lo_open_in_app":true,"enable_logged_out_history":true,"enable_login_code_flow":true,"enable_m2_unviewable_filter":true,"enable_marketing_emails":true,"enable_media_resource_try_catch":true,"enable_membership_remove_section_a":true,"enable_miro_on_kubernetes":true,"enable_ml_rank_modules":true,"enable_ml_rank_rex_anno":true,"enable_monthly_member_onboarding_emails":true,"enable_more_on_coronavirus":true,"enable_mute":true,"enable_new_collaborative_filtering_data":true,"enable_new_suspended_page":true,"enable_new_three_dot_menu":true,"enable_newsletter_v3":true,"enable_olsen":true,"enable_open_in_app_regwall":true,"enable_optimizely":true,"enable_parsely":true,"enable_patronus_on_kubernetes":true,"enable_popularity_feature":true,"enable_post_import":true,"enable_post_page_nav_stickiness_removal":true,"enable_post_seo_settings_screen":true,"enable_post_settings_screen":true,"enable_primary_topic_for_mobile":true,"enable_responses_2":true,"enable_rito_upstream_deadlines":true,"enable_rtr_channel":true,"enable_save_to_medium":true,"enable_sepia_to_olsen":true,"enable_sisko":true,"enable_starspace":true,"enable_starspace_digest_app":true,"enable_starspace_ranker_starspace":true,"enable_theme_editor":true,"enable_tick_landing_page":true,"enable_tipalti_onboarding":true,"enable_topic_lifecycle_email":true,"enable_tribute_landing_page":true,"enable_trumpland_landing_page":true,"enable_utc_fix_on_partner_program_dashboard":true,"exclude_curated_in_popular_topic":true,"featured_fc_and_ydr":true,"filter_low_scoring_users":true,"glyph_embed_commands":"control","glyph_font_set":"m2","google_sign_in_android":true,"integration_token_threshold":30,"ios_pub_follow_email_opt_in":true,"is_not_medium_subscriber":true,"limit_post_referrers":true,"make_nav_sticky":true,"max_premium_content_per_user_under_metering":3,"new_transition_page":true,"pub_sidebar":true,"rank_model":"default","reengagement_notification_duration":3,"remove_email_opt_in_on_pub_follow":true,"remove_post_post_similarity":true,"share_post_linkedin":true,"sign_up_with_email_button":true,"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_sign_in_recaptcha":true,"sourcing_refactor_2":true,"topic_post_candidates_from_fs":true,"use_new_admin_topic_backend":true,"user_creation_ip_limit":25,"user_score_threshold":30,"xgboost_auto_suspend":true,"xgboost_spam_score_threshold":0.8},"xsrfToken":"","iosAppId":"828256236","supportEmail":"yourfriends@medium.com","fp":{"/icons/monogram-mask.svg":"https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.svg","/icons/favicon-dev-editor.ico":"https://cdn-static-1.medium.com/_/fp/icons/favicon-dev-editor.YKKRxBO8EMvIqhyCwIiJeQ.ico","/icons/favicon-hatch-editor.ico":"https://cdn-static-1.medium.com/_/fp/icons/favicon-hatch-editor.BuEyHIqlyh2s_XEk4Rl32Q.ico","/icons/favicon-medium-editor.ico":"https://cdn-static-1.medium.com/_/fp/icons/favicon-medium-editor.PiakrZWB7Yb80quUVQWM6g.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":"UA-24232453-2","jsShivUrl":"https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.js","useDynamicCss":false,"faviconUrl":"https://cdn-static-1.medium.com/_/fp/icons/favicon-rebrand-medium.3Y6xpZ-0FSdWDnPM3hSBIA.ico","faviconImageId":"1*8I-HPL0bfoIzGied-dzOvA.png","fontSets":[{"id":8,"url":"https://glyph.medium.com/css/e/sr/latin/e/ssr/latin/e/ssb/latin/m2.css"},{"id":11,"url":"https://glyph.medium.com/css/m2.css"},{"id":9,"url":"https://glyph.medium.com/css/mkt.css"}],"editorFaviconUrl":"https://cdn-static-1.medium.com/_/fp/icons/favicon-rebrand-medium-editor.3Y6xpZ-0FSdWDnPM3hSBIA.ico","glyphUrl":"https://glyph.medium.com"},"authBaseUrlRev":"moc.muidem//:sptth","stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","archiveUploadSizeMb":100,"paymentData":{"currencies":{"1":{"label":"US Dollar","external":"usd"}},"countries":{"1":{"label":"United States of America","external":"US"}},"accountTypes":{"1":{"label":"Individual","external":"individual"},"2":{"label":"Company","external":"company"}}},"previewConfig2":{"weightThreshold":1,"weightImageParagraph":0.05,"raiseImage":true,"enforceHeaderHierarchy":true,"isImageInsetRight":true},"isAmp":false,"iosScheme":"medium","isSwBoot":false,"lightstep":{"accessToken":"ce5be895bef60919541332990ac9fef2","carrier":"{\"ot-tracer-spanid\":\"2f7da5966a5882a1\",\"ot-tracer-traceid\":\"4a041dea688f09a8\",\"ot-tracer-sampled\":\"true\"}","host":"collector-medium.lightstep.com"},"facebook":{"key":"542599432471018","namespace":"medium-com","scope":{"default":["public_profile","email"],"connect":["public_profile","email"],"login":["public_profile","email"],"share":["public_profile","email"]}},"editorsPicksTopicId":"3985d2a191c5","popularOnMediumTopicId":"9d34e48ecf94","memberContentTopicId":"13d7efd82fb2","audioContentTopicId":"3792abbd134","brandedSequenceId":"7d337ddf1941","isDoNotAuth":false,"buggle":{"url":"https://buggle.medium.com","videoUrl":"https://cdn-videos-1.medium.com","audioUrl":"https://cdn-audio-1.medium.com"},"referrerType":5,"isMeteredOut":false,"meterConfig":{"maxUnlockCount":3,"windowLength":"MONTHLY"},"partnerProgramEmail":"partnerprogram@medium.com","recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","signinWallCustomDomainCollectionIds":["3a8144eabfe3","336d898217ee","61061eb0c96b","138adf9c44c","819cc2aaeee0"],"countryCode":"US","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":["544c7006046e","bcc38c8f6edf","444d13b52878","8d6b8a439e32","92d2092dc598","1285ba81cada","cb8577c9149e","8ccfed20cbb2","ae2a65f35510","3f6ecf56618","7b6769f2748b","fc8964313712","ef8e90590e66","191186aaafa0","d944778ce714","bdc4052bbdba","88d9857e584e"]},"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}],"covidApplicableTagSlugs":["pandemic","epidemic","coronavirus","covid19","co-vid-19","containment","self-care","flatten-the-curve","public-health","virus","public-health-crisis","quarantine","self-quarantine","zika","corona","disease-prevention","wuhan","chinavirus","outbreak","influenza","socialdistancing","social-distance","flu","vaccines","healthcare","medicine","conspiracy-theories","conspiracy","virality","epidemia","pandemia","salud","corona-e-virus","coronavirus-covid19","covid-19","covid-19-symptoms","covid-19-crisis","covid-19-testing","covid-19-treatment","coronavirus-update","coronavirus-diaries"],"braintree":{"merchantId":"m56f8fqpf7ngnrd4"}}
// ]]></script><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.ah3X70iRG19Y_JWJ_wOR6A.js" async></script><script>// <![CDATA[
window["obvInit"]({"references":{"CollectionPromo":{"5c62c201c614":{"promoId":"5c62c201c614","collectionId":"ae6c8c33b4b1","createdAt":1539807459579,"linkWithContentItem":{"url":"https://careers.jet.com/technology","image":{"id":"1*euSKI4S1rkOfMkAJDf2FyQ@2x.png","originalWidth":1200,"originalHeight":1200},"description":"Want to #WorkPurple?","buttonText":"Check out our careers","tintColor":"#FF211E1F","colorSpectrum":{"colorPoints":[{"color":"#FF211E1F","point":0},{"color":"#FF3F3B3C","point":0.1},{"color":"#FF595556","point":0.2},{"color":"#FF716D6E","point":0.3},{"color":"#FF888485","point":0.4},{"color":"#FF9E9A9A","point":0.5},{"color":"#FFB3AFAF","point":0.6},{"color":"#FFC7C3C3","point":0.7},{"color":"#FFDBD7D7","point":0.8},{"color":"#FFEEEAEA","point":0.9},{"color":"#FFFFFDFC","point":1}],"backgroundColor":"#FF211E1F"},"isLightText":true},"itemType":"linkWithContentItem","type":"CollectionPromo"}},"Collection":{"ae6c8c33b4b1":{"id":"ae6c8c33b4b1","name":"Jet Tech","slug":"jettech","tags":["EVENT SOURCING","FUNCTIONAL PROGRAMMING","MICROSERVICES","ENGINEERING","FSHARP"],"creatorId":"9b1e8617170a","description":"Sharing our engineering org’s learnings & stories as we build the world’s best experience to shop curated brands and city essentials in one place.","shortDescription":"Sharing our engineering org’s learnings & stories as we…","image":{"imageId":"1*EM9URFCvZ1CvdNz3I2RcLQ.jpeg","filter":"","backgroundSize":"","originalWidth":1200,"originalHeight":1200,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":1349,"activeAt":1557352519185},"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},"logo":{"imageId":"1*NeX1QtyxRBKMftwCkTUURQ.png","filter":"","backgroundSize":"","originalWidth":1500,"originalHeight":300,"strategy":"resample","height":0,"width":0},"twitterUsername":"JetTechnology","publicEmail":"tech.lte@jet.com","collectionMastheadId":"928c539187ee","sections":[{"type":2,"collectionHeaderMetadata":{"backgroundImage":{},"logoImage":{"id":"1*2VGuR4soAG-oJKp6LI51Dw@2x.png","originalWidth":1500,"originalHeight":300,"alt":"Jet Tech"},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":4,"postIds":[]}},{"type":3,"promoMetadata":{"sectionHeader":"","promoId":"5c62c201c614"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[]}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[]}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[]}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}}],"tintColor":"#FF211E1F","lightText":true,"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF888384","point":0},{"color":"#FF7E7A7B","point":0.1},{"color":"#FF757171","point":0.2},{"color":"#FF6B6768","point":0.3},{"color":"#FF615D5E","point":0.4},{"color":"#FF565354","point":0.5},{"color":"#FF4B4949","point":0.6},{"color":"#FF403E3E","point":0.7},{"color":"#FF343333","point":0.8},{"color":"#FF282727","point":0.9},{"color":"#FF1B1A1A","point":1}],"backgroundColor":"#FFFFFFFF"},"tintBackgroundSpectrum":{"colorPoints":[{"color":"#FF211E1F","point":0},{"color":"#FF3F3B3C","point":0.1},{"color":"#FF595556","point":0.2},{"color":"#FF716D6E","point":0.3},{"color":"#FF888485","point":0.4},{"color":"#FF9E9A9A","point":0.5},{"color":"#FFB3AFAF","point":0.6},{"color":"#FFC7C3C3","point":0.7},{"color":"#FFDBD7D7","point":0.8},{"color":"#FFEEEAEA","point":0.9},{"color":"#FFFFFDFC","point":1}],"backgroundColor":"#FF211E1F"},"highlightSpectrum":{"colorPoints":[{"color":"#FFF6F1F1","point":0},{"color":"#FFF4F0EF","point":0.1},{"color":"#FFF2EEEE","point":0.2},{"color":"#FFF0ECEC","point":0.3},{"color":"#FFEEEAEA","point":0.4},{"color":"#FFEDE8E8","point":0.5},{"color":"#FFEBE6E6","point":0.6},{"color":"#FFE9E4E4","point":0.7},{"color":"#FFE7E2E2","point":0.8},{"color":"#FFE5E0E1","point":0.9},{"color":"#FFE4DEDF","point":1}],"backgroundColor":"#FFFFFFFF"}},"navItems":[{"type":6,"title":"About","url":"https://medium.com/jettech/about"},{"type":1,"title":"FSharp","tagSlug":"fsharp","url":"https://medium.com/jettech/tagged/fsharp","source":"tagSlug"},{"type":1,"title":"Security","tagSlug":"security","url":"https://medium.com/jettech/tagged/security","source":"tagSlug"},{"type":2,"title":"Disclaimer","postId":"ba975b6b1f08","url":"https://medium.com/jettech/jet-tech-blog-disclaimer-ba975b6b1f08","source":"postId"},{"type":3,"title":"Meetups (in greater NYC area) ","url":"https://www.meetup.com/JetTech/"}],"colorBehavior":2,"instantArticlesState":0,"acceleratedMobilePagesState":0,"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"backgroundImage":{},"logoImage":{"id":"1*2VGuR4soAG-oJKp6LI51Dw@2x.png","originalWidth":1500,"originalHeight":300,"alt":"Jet Tech"},"alignment":2,"layout":5},"subscriberCount":1349,"tagline":"Sharing our engineering org’s learnings & stories as we…","type":"Collection"}},"User":{"75eaa8d210d7":{"userId":"75eaa8d210d7","name":"Eric Goldman","username":"erichgoldman","createdAt":1531232319693,"imageId":"1*tXNpl8NEbx0niT6RakJvnw.jpeg","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"optOutOfIceland":false,"type":"User"},"2f0ede995d2b":{"userId":"2f0ede995d2b","name":"James Novino","username":"jnovino","createdAt":1488827336191,"imageId":"1*zSuVyzKCzCDcMsnP6jlzqg@2x.jpeg","backgroundImageId":"","bio":"engineer @capsule","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"optOutOfIceland":false,"type":"User"},"b2b3920e71c0":{"userId":"b2b3920e71c0","name":"bugra","username":"bugraa","createdAt":1366678500590,"imageId":"0*N8vd23Lhnk0c_B_S.png","backgroundImageId":"","bio":"https://twitter.com/bugraa","twitterScreenName":"bugraa","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"optOutOfIceland":false,"type":"User"},"da1eb593fa3":{"userId":"da1eb593fa3","name":"Nikita Sharma","username":"nikita.sharma280594","createdAt":1538248974685,"imageId":"1*PDz5_twnGwxqdUzhq00NXA.jpeg","backgroundImageId":"","bio":"Sr. Software Engineer @ jet.com","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"optOutOfIceland":false,"type":"User"},"b91ca2c91185":{"userId":"b91ca2c91185","name":"Khalid Hasanov","username":"xalid.h","createdAt":1521937933773,"imageId":"1*9F2uTV-GUMSHqjFyb4skew@2x.jpeg","backgroundImageId":"","bio":"Senior Software Engineer at Jet.com","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"optOutOfIceland":false,"type":"User"},"a4b6914725f8":{"userId":"a4b6914725f8","name":"Justen Walker","username":"justen.walker","createdAt":1528926099408,"imageId":"1*xSSvlf0-W1HuHfQlt1PgDQ.jpeg","backgroundImageId":"","bio":"Senior Software Engineer at Jet.com. Hacks around in Golang. Pronounces Gif with a hard 'G'. Puns always intended.","twitterScreenName":"justenwalker","allowNotes":1,"mediumMemberAt":1547539200000,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"optOutOfIceland":false,"type":"User"},"e0f423c12646":{"userId":"e0f423c12646","name":"Prathamesh Bhope","username":"prathameshbhope","createdAt":1497512924253,"imageId":"1*0AFzaph2dr6tZf6zZrAs5A@2x.jpeg","backgroundImageId":"","bio":"Software Engineer @ Jet (Walmart Labs)","twitterScreenName":"","allowNotes":1,"mediumMemberAt":1556379647000,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"optOutOfIceland":false,"type":"User"},"3266eee50c97":{"userId":"3266eee50c97","name":"Gad Berger","username":"gadberger","createdAt":1426857749481,"imageId":"0*YN2CYx6M1zCgNhPI.jpg","backgroundImageId":"","bio":"Husband, Dad, Classical Guitarist. Tech lead at Jet.com","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"optOutOfIceland":false,"type":"User"},"918397656aa4":{"userId":"918397656aa4","name":"Zihao Liu","username":"allenliuzihao","createdAt":1542148403457,"imageId":"0*4L93hX_VmLYeu3tQ","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"optOutOfIceland":false,"type":"User"},"d09724bb73dc":{"userId":"d09724bb73dc","name":"Jayant Madugula","username":"jayantmadugula","createdAt":1482977312246,"imageId":"1*TJeo0YhnHKpwfoZiyV5Mzg.jpeg","backgroundImageId":"","bio":"Computer Science student at Columbia University","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"optOutOfIceland":false,"type":"User"},"ce987fb1a763":{"userId":"ce987fb1a763","name":"Christopher Shei","username":"ckshei","createdAt":1524595061364,"imageId":"1*BzoXupv7c-XLAHCgjbGHQA.jpeg","backgroundImageId":"","bio":"MS @ Cornell Tech","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"optOutOfIceland":false,"type":"User"},"46204677c1ee":{"userId":"46204677c1ee","name":"Noah Robison-Cox","username":"noahrobi","createdAt":1464223540390,"imageId":"0*BgCGIOTGc-60KtQO.jpg","backgroundImageId":"","bio":"Software Engineer at Jet","twitterScreenName":"noahrobi","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"optOutOfIceland":false,"type":"User"},"6e52c4c05f30":{"userId":"6e52c4c05f30","name":"Bryan Hanner","username":"bryanhanner","createdAt":1535046537138,"imageId":"2*2irl5_jrAc3YQLdthSDIBg.jpeg","backgroundImageId":"","bio":"Software Engineer at Palantir. B.S. in Computer Science, University of Washington. Enjoys learning fast, building trust on a team, and hacking reliable code.","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"optOutOfIceland":false,"type":"User"},"2ab4d8b715cf":{"userId":"2ab4d8b715cf","name":"Swetak Shah","username":"srs_recruiter","createdAt":1465932918951,"imageId":"0*tbNoMsC7uVBkWKXp.jpeg","backgroundImageId":"","bio":"Recruit Engineering Talent for Jet.com/Walmart ecommerce. Cricket, VolleyBall , Ping pong. Do or do not, there is no try.","twitterScreenName":"srs_recruiter","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"optOutOfIceland":false,"type":"User"},"f140905c374e":{"userId":"f140905c374e","name":"Louie Bacaj","username":"LBacaj","createdAt":1396119503947,"imageId":"1*Aa6j7MAntU4FBLZ6GztK6g.jpeg","backgroundImageId":"","bio":"Currently, Senior Director of Engineering at jet.com. Former Senior Software Engineer. http://louiebacaj.com","twitterScreenName":"LBacaj","allowNotes":1,"mediumMemberAt":1571939906000,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"optOutOfIceland":false,"type":"User"}},"Post":{"f61f4b8b8ba5":{"id":"f61f4b8b8ba5","versionId":"982c15c91613","creatorId":"75eaa8d210d7","homeCollectionId":"ae6c8c33b4b1","title":"Developers need to stop fearing the InfoSec Mafia","detectedLanguage":"en","latestVersion":"982c15c91613","latestPublishedVersion":"982c15c91613","hasUnpublishedEdits":false,"latestRev":861,"createdAt":1544644895648,"updatedAt":1557367191112,"acceptedAt":0,"firstPublishedAt":1557352519027,"latestPublishedAt":1557367190871,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Sometimes it feels like your organization’s Security seems to push its way into everything: Do you want to implement a new feature, change…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*Y7mIT6pr8_JSgQCz8orlZA.jpeg","filter":"","backgroundSize":"","originalWidth":1920,"originalHeight":1280,"strategy":"resample","height":0,"width":0},"wordCount":1773,"imageCount":3,"readingTime":7.2405660377358485,"subtitle":"Sometimes it feels like your organization’s Security seems to push its way into everything: Do you want to implement a new feature, change…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":24,"isBookmarked":false,"tags":[{"slug":"security","name":"Security","postCount":62109,"metadata":{"postCount":62109,"coverImage":{"id":"1*i_ODevOX3oiLR_kwsEONHA.png","originalWidth":2970,"originalHeight":1534,"isFeatured":true}},"type":"Tag"},{"slug":"cybersecurity","name":"Cybersecurity","postCount":43418,"metadata":{"postCount":43418,"coverImage":{"id":"0*Ry9ZLmGVjjqUriy7.jpg","originalWidth":640,"originalHeight":479,"isFeatured":true}},"type":"Tag"},{"slug":"development","name":"Development","postCount":40134,"metadata":{"postCount":40134,"coverImage":{"id":"0*sh5wiMdDoiFtEv-H","originalWidth":6214,"originalHeight":4303,"isFeatured":true,"unsplashPhotoId":"lQCwvbmkqSg"}},"type":"Tag"},{"slug":"coding","name":"Coding","postCount":40307,"metadata":{"postCount":40307,"coverImage":{"id":"1*bZhWJF5ABFU6z0AWS06hGg.gif","originalWidth":1700,"originalHeight":1122,"isFeatured":true}},"type":"Tag"},{"slug":"privacy","name":"Privacy","postCount":36723,"metadata":{"postCount":36723,"coverImage":{"id":"1*Arv1JHuRxjBBAJ6thw2VPA.jpeg"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://www.urbandictionary.com/define.php?term=fuhgeddaboutit.","alts":[{"type":1,"url":"https://cdn.ampproject.org/c/s/www.urbandictionary.com/define.php?term=fuhgeddaboutit.&amp=true"}],"httpStatus":200},{"url":"https://medium.com/@erichgoldman/the-importance-of-helping-to-protect-your-customers-from-family-member-fraud-eca61d42c2f6","alts":[{"type":2,"url":"medium://p/eca61d42c2f6"},{"type":3,"url":"medium://p/eca61d42c2f6"}],"httpStatus":200},{"url":"https://medium.com/jettech/the-design-review-811ba61c8c34","alts":[{"type":2,"url":"medium://p/811ba61c8c34"},{"type":3,"url":"medium://p/811ba61c8c34"}],"httpStatus":200},{"url":"https://medium.com/jettech/how-jet-integrates-cyber-security-into-its-culture-ca0d21fa3acd","alts":[{"type":2,"url":"medium://p/ca0d21fa3acd"},{"type":3,"url":"medium://p/ca0d21fa3acd"}],"httpStatus":200},{"url":"https://medium.com/jettech/creepy-or-clever-7db2193d1ff6","alts":[{"type":3,"url":"medium://p/7db2193d1ff6"},{"type":2,"url":"medium://p/7db2193d1ff6"}],"httpStatus":200},{"url":"https://www.hashicorp.com/products/vault/","alts":[],"httpStatus":200},{"url":"https://medium.freecodecamp.org/the-code-im-still-ashamed-of-e4c021dff55e","alts":[{"type":2,"url":"medium://p/e4c021dff55e"},{"type":3,"url":"medium://p/e4c021dff55e"}],"httpStatus":200},{"url":"https://pixabay.com/en/gangster-cool-urban-fashion-model-1876017/","alts":[],"httpStatus":200},{"url":"https://careers.walmart.com/technology/cybersecurity","alts":[],"httpStatus":200},{"url":"https://careers.jet.com/results?q=&page=1&sort=rank&jobSubCategory=0000015f-1141-d77a-addf-1bd79f3c0000&expand=department,type","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1557367191353},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":717,"sectionCount":7,"readingList":0,"topics":[{"topicId":"d4e7f4144ac5","slug":"cybersecurity","createdAt":1493946839810,"deletedAt":0,"image":{"id":"1*JpJUz3WBPiQG5vkJ9WY8rw@2x.jpeg","originalWidth":6000,"originalHeight":4000},"name":"Cybersecurity","description":"Towards a more perfect password.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Cybersecurity News and Articles — Medium","type":"Topic"},{"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":"developers-need-to-stop-fearing-the-infosec-mafia","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"developers-need-to-stop-fearing-the-infosec-mafia-f61f4b8b8ba5","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*Y7mIT6pr8_JSgQCz8orlZA.jpeg","originalWidth":1920,"originalHeight":1280,"isFeatured":true}},{"name":"92e3","type":3,"text":"Developers need to stop fearing the InfoSec Mafia","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Sometimes it feels like your organization’s Security seems to push its way into everything: Do you want to implement a new feature, change…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"92e3","type":3,"text":"Developers need to stop fearing the InfoSec Mafia","markups":[]},{"name":"7242","type":4,"text":"The Digital Artist — CC0","markups":[{"type":3,"start":0,"end":18,"href":"https://pixabay.com/en/gangster-cool-urban-fashion-model-1876017/","title":"","rel":"","anchorType":0}],"layout":5,"metadata":{"id":"1*Y7mIT6pr8_JSgQCz8orlZA.jpeg","originalWidth":1920,"originalHeight":1280,"isFeatured":true}},{"name":"0fe7","type":1,"text":"Sometimes it feels like your organization’s Security seems to push its way into everything: Do you want to implement a new feature, change an API? Not without security’s blessing, right? It can feel like your security team just complicates everything — and did you even really want their protection in…","markups":[{"type":2,"start":288,"end":298}]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Sometimes it feels like your organization’s Security seems to push its way into everything: Do you want to implement a new feature, change…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"69d8b9009f02":{"id":"69d8b9009f02","versionId":"caa43e40f88","creatorId":"75eaa8d210d7","homeCollectionId":"ae6c8c33b4b1","title":"Teaching Real-World Decision-Making and Business Trade-Offs: Girls Who Code @ Jet.com Spring 2019","detectedLanguage":"en","latestVersion":"caa43e40f88","latestPublishedVersion":"caa43e40f88","hasUnpublishedEdits":false,"latestRev":1498,"createdAt":1551724014013,"updatedAt":1554736167759,"acceptedAt":0,"firstPublishedAt":1554410645178,"latestPublishedAt":1554736167759,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"We recently hosted a tech showcase and activity day for local Girls Who Code clubs in the Jet Hoboken office. Our STEM activity focused on…","postDisplay":{"coverless":true},"metaDescription":"Jet.com recently hosted an event for Girls Who Code. Check out the cool STEM event we created to model real business challenges we face here at Jet.com"},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*4iuCDgYewtvebWTzHu0GSg.jpeg","filter":"","backgroundSize":"","originalWidth":1388,"originalHeight":830,"strategy":"resample","height":0,"width":0},"wordCount":1569,"imageCount":6,"readingTime":6.870754716981132,"subtitle":"We recently hosted a tech showcase and activity day for local Girls Who Code clubs in the Jet Hoboken office. Our STEM activity focused on…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":16,"isBookmarked":false,"tags":[{"slug":"women-in-tech","name":"Women In Tech","postCount":26844,"metadata":{"postCount":26844,"coverImage":{"id":"1*t7BrSZdwus1cQmb_E3cybw.jpeg"}},"type":"Tag"},{"slug":"diversity-in-tech","name":"Diversity In Tech","postCount":4368,"metadata":{"postCount":4368,"coverImage":{"id":"1*uv95KuDu3xV3IXJsyTDG_w.jpeg","originalWidth":1920,"originalHeight":1920,"isFeatured":true}},"type":"Tag"},{"slug":"diversity-and-inclusion","name":"Diversity And Inclusion","postCount":3968,"metadata":{"postCount":3968,"coverImage":{"id":"1*QmIFDZRv3szyFuGFvUj7jQ.png","originalWidth":800,"originalHeight":425,"isFeatured":true}},"type":"Tag"},{"slug":"engineering","name":"Engineering","postCount":22933,"metadata":{"postCount":22933,"coverImage":{"id":"1*1AktzTtx2ZOH1kb8yv7Piw.jpeg","originalWidth":6000,"originalHeight":4000,"isFeatured":true}},"type":"Tag"},{"slug":"girls-who-code","name":"Girls Who Code","postCount":527,"metadata":{"postCount":527,"coverImage":{"id":"1*XUKXAtZEmta9LNP8ld4-9A.jpeg","originalWidth":1600,"originalHeight":1200,"isFeatured":true,"alt":"@EricaKHanson with DSC SSA Leads during the Developer Student Club, Sub Saharan Africa Summit, in Accra Ghana."}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://www.girlscouts.org/en/our-program/our-program/stem.html","alts":[],"httpStatus":200},{"url":"http://www.thesparkwomen.com/","alts":[],"httpStatus":200},{"url":"https://www.girlscouts.org/en/about-girl-scouts/girl-scouts-and-stem.html","alts":[],"httpStatus":200},{"url":"https://medium.com/jettech/meet-the-women-of-tech-at-jet-com-part-i-8348c05b304d","alts":[{"type":2,"url":"medium://p/8348c05b304d"},{"type":3,"url":"medium://p/8348c05b304d"}],"httpStatus":200},{"url":"https://careers.jet.com/","alts":[],"httpStatus":200},{"url":"https://medium.com/jettech/creepy-or-clever-7db2193d1ff6","alts":[{"type":2,"url":"medium://p/7db2193d1ff6"},{"type":3,"url":"medium://p/7db2193d1ff6"}],"httpStatus":200},{"url":"https://theardentteacher.com/2016/06/12/stem-car-crash-project/","alts":[{"type":1,"url":"https://cdn.ampproject.org/c/s/theardentteacher.com/2016/06/12/stem-car-crash-project/amp/"}],"httpStatus":200},{"url":"https://www.engineergirl.org/10851/About","alts":[],"httpStatus":200},{"url":"https://www.engineergirl.org/245/Clubs-And-Programs","alts":[],"httpStatus":200},{"url":"https://girlswhocode.com/2019/03/08/walmart-partners-with-girls-who-code/","alts":[],"httpStatus":200},{"url":"https://girlswhocode.com/about-us/","alts":[],"httpStatus":200},{"url":"https://medium.com/p/34f172b9b279","alts":[{"type":2,"url":"medium://p/34f172b9b279"},{"type":3,"url":"medium://p/34f172b9b279"}],"httpStatus":200},{"url":"https://girlswhocode.com/clubs/","alts":[],"httpStatus":200},{"url":"https://medium.com/girls-who-code","alts":[{"type":2,"url":"medium://girls-who-code"},{"type":3,"url":"medium://girls-who-code"}],"httpStatus":200}],"version":"0.3","generatedAt":1554736220015},"isLockedPreviewOnly":false,"metaDescription":"Jet.com recently hosted an event for Girls Who Code. Check out the cool STEM event we created to model real business challenges we face here at Jet.com","totalClapCount":444,"sectionCount":4,"readingList":0,"topics":[{"topicId":"a205669c739e","slug":"education","createdAt":1493934008418,"deletedAt":0,"image":{"id":"1*T4rtHBuFYlSoP4OuU9W0yQ@2x.jpeg","originalWidth":5536,"originalHeight":3691},"name":"Education","description":"Live it, learn it.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"News and Articles About Education — Medium","type":"Topic"}]},"coverless":true,"slug":"teaching-real-world-decision-making-and-business-trade-offs-girls-who-code-jet-com-spring-2019","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"teaching-real-world-decision-making-and-business-trade-offs-girls-who-code-jet-com-spring-2019-69d8b9009f02","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*4iuCDgYewtvebWTzHu0GSg.jpeg","originalWidth":1388,"originalHeight":830,"isFeatured":true}},{"name":"3c8f","type":3,"text":"Teaching Real-World Decision-Making and Business Trade-Offs: Girls Who Code @ Jet.com Spring 2019","markups":[{"type":3,"start":78,"end":85,"anchorType":2,"userId":"5d253732716"}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"We recently hosted a tech showcase and activity day for local Girls Who Code clubs in the Jet Hoboken office. Our STEM activity focused on…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"3c8f","type":3,"text":"Teaching Real-World Decision-Making and Business Trade-Offs: Girls Who Code @ Jet.com Spring 2019","markups":[{"type":3,"start":78,"end":85,"anchorType":2,"userId":"5d253732716"}]},{"name":"e9de","type":13,"text":"We recently hosted a field trip for local Girls Who Code clubs at our office in Hoboken, NJ. Part of the trip was a STEM activity that empowered the girls to make business decisions that mirror the real-life challenges our engineers work on here at Jet and Walmart.","markups":[]},{"name":"8d87","type":4,"text":"","markups":[],"layout":4,"metadata":{"id":"1*krmMfNzO3gK9mRJe2S6vvQ.jpeg","originalWidth":548,"originalHeight":613}},{"name":"d941","type":1,"text":"As a man working in Tech, I am all too aware of the gender gap in many STEM fields, especially in the domain of cybersecurity.","markups":[]},{"name":"3e31","type":1,"text":"Closing the gender gap and increasing diversity not only improves equity in the workplace, but it also ensures that products and services reflect the…","markups":[]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"We recently hosted a tech showcase and activity day for local Girls Who Code clubs in the Jet Hoboken office. Our STEM activity focused on…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"34f172b9b279":{"id":"34f172b9b279","versionId":"39316280436","creatorId":"75eaa8d210d7","homeCollectionId":"ae6c8c33b4b1","title":"Meet the Women of Tech at Jet.com — Part II","detectedLanguage":"en","latestVersion":"39316280436","latestPublishedVersion":"39316280436","hasUnpublishedEdits":false,"latestRev":999,"createdAt":1552590790281,"updatedAt":1553715852738,"acceptedAt":0,"firstPublishedAt":1553715852564,"latestPublishedAt":1553715852564,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"This week, we continue to celebrate Women’s History Month by profiling many of the great women in tech roles across the Jet organization…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*FK7T8DEyDF1kgNRw9UYtNQ.jpeg","filter":"","backgroundSize":"","originalWidth":861,"originalHeight":512,"strategy":"resample","height":0,"width":0},"wordCount":3110,"imageCount":6,"readingTime":12.685849056603773,"subtitle":"This week, we continue to celebrate Women’s History Month by profiling many of the great women in tech roles across the Jet organization…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":23,"isBookmarked":false,"tags":[{"slug":"product-management","name":"Product Management","postCount":42167,"metadata":{"postCount":42167,"coverImage":{"id":"0*z_CKbNbljnZQ1BXS.jpg","originalWidth":640,"originalHeight":697,"isFeatured":true,"alt":"Two men in a bar"}},"type":"Tag"},{"slug":"women-in-tech","name":"Women In Tech","postCount":26844,"metadata":{"postCount":26844,"coverImage":{"id":"1*t7BrSZdwus1cQmb_E3cybw.jpeg"}},"type":"Tag"},{"slug":"womens-march","name":"Womens March","postCount":2175,"metadata":{"postCount":2175,"coverImage":{"id":"1*CbsONsYk4wGSQDYZN_Ciig.jpeg","originalWidth":4096,"originalHeight":2144}},"type":"Tag"},{"slug":"diversity-in-tech","name":"Diversity In Tech","postCount":4368,"metadata":{"postCount":4368,"coverImage":{"id":"1*uv95KuDu3xV3IXJsyTDG_w.jpeg","originalWidth":1920,"originalHeight":1920,"isFeatured":true}},"type":"Tag"},{"slug":"diversity-and-inclusion","name":"Diversity And Inclusion","postCount":3968,"metadata":{"postCount":3968,"coverImage":{"id":"1*QmIFDZRv3szyFuGFvUj7jQ.png","originalWidth":800,"originalHeight":425,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://medium.com/jettech/meet-the-women-of-tech-at-jet-com-part-i-8348c05b304d","alts":[{"type":2,"url":"medium://p/8348c05b304d"},{"type":3,"url":"medium://p/8348c05b304d"}],"httpStatus":200},{"url":"https://medium.com/p/8348c05b304d","alts":[{"type":2,"url":"medium://p/8348c05b304d"},{"type":3,"url":"medium://p/8348c05b304d"}],"httpStatus":200},{"url":"https://github.com/jet","alts":[],"httpStatus":200},{"url":"https://corporate.walmart.com/global-responsibility/opportunity/diversity-and-inclusion","alts":[],"httpStatus":200},{"url":"https://careers.jet.com/results?q=&page=1&sort=rank&expand=department,type&jobCareerArea=0000015f-110b-de7b-addf-3f8f8bf10000","alts":[],"httpStatus":200},{"url":"https://www.meetup.com/NYC-Women-in-Machine-Learning-Data-Science/","alts":[{"type":3,"url":"meetup://NYC-Women-in-Machine-Learning-Data-Science/"},{"type":2,"url":"meetup://NYC-Women-in-Machine-Learning-Data-Science/"}],"httpStatus":200}],"version":"0.3","generatedAt":1553715855521},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":508,"sectionCount":11,"readingList":0,"topics":[{"topicId":"af49579e220a","slug":"work","createdAt":1487918186996,"deletedAt":0,"image":{"id":"1*knbAt5qCQCelKx0BDkzZpQ@2x.jpeg","originalWidth":5018,"originalHeight":3049},"name":"Work","description":"The meaning behind the meetings.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Work Life: Articles and News — Medium","type":"Topic"}]},"coverless":true,"slug":"meet-the-women-of-tech-at-jet-com-part-ii","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"meet-the-women-of-tech-at-jet-com-part-ii-34f172b9b279","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*FK7T8DEyDF1kgNRw9UYtNQ.jpeg","originalWidth":861,"originalHeight":512,"isFeatured":true}},{"name":"3baa","type":3,"text":"Meet the Women of Tech at Jet.com — Part II","markups":[],"alignment":1},{"name":"7e43","type":13,"text":"This week, we continue to celebrate Women’s History Month…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"This week, we continue to celebrate Women’s History Month by profiling many of the great women in tech roles across the Jet organization…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"3baa","type":3,"text":"Meet the Women of Tech at Jet.com — Part II","markups":[]},{"name":"7e43","type":13,"text":"This week, we continue to celebrate Women’s History Month by profiling many of the great women in tech roles across the Jet organization. Learn about their experiences here at Jet and working as women in Tech.","markups":[]},{"name":"00b3","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*FK7T8DEyDF1kgNRw9UYtNQ.jpeg","originalWidth":861,"originalHeight":512,"isFeatured":true}},{"name":"7162","type":1,"text":"This is a continuation of our Women’s History Month series. Don’t forget to check out Part I to meet more of the talented tech women here at Jet.","markups":[{"type":3,"start":76,"end":92,"href":"https://medium.com/jettech/meet-the-women-of-tech-at-jet-com-part-i-8348c05b304d","title":"","rel":"","anchorType":0},{"type":2,"start":0,"end":145}]},{"name":"6677","type":1,"text":"Part of the Jet culture is recognizing excellence and celebrating our people. We work hard to build a diverse and inclusive workplace…","markups":[]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"This week, we continue to celebrate Women’s History Month by profiling many of the great women in tech roles across the Jet organization…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"d2e74e6d6d5e":{"id":"d2e74e6d6d5e","versionId":"962e13c06610","creatorId":"2f0ede995d2b","homeCollectionId":"ae6c8c33b4b1","title":"Microservices to Workflows: Expressing Business Flows using an F# DSL","detectedLanguage":"en","latestVersion":"962e13c06610","latestPublishedVersion":"962e13c06610","hasUnpublishedEdits":false,"latestRev":2959,"createdAt":1534792828208,"updatedAt":1553225004283,"acceptedAt":0,"firstPublishedAt":1553219524323,"latestPublishedAt":1553219524323,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"How to represent business logic in F# using a custom Domain Specific Language (DSL).","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*j2UkEkp2RjAFe27M-rI_Ow.png","filter":"","backgroundSize":"","originalWidth":1740,"originalHeight":670,"strategy":"resample","height":0,"width":0},"wordCount":2112,"imageCount":1,"readingTime":8.169811320754716,"subtitle":"How to represent business logic in F# using a custom Domain Specific Language (DSL).","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":38,"isBookmarked":false,"tags":[{"slug":"functional-programming","name":"Functional Programming","postCount":8006,"metadata":{"postCount":8006,"coverImage":{"id":"0*h2cOgKsaX1Zorrom","originalWidth":2762,"originalHeight":4017,"isFeatured":true,"unsplashPhotoId":"eIjIn7zln2U"}},"type":"Tag"},{"slug":"fsharp","name":"Fsharp","postCount":411,"metadata":{"postCount":411,"coverImage":{"id":"1*zvHkz8SUJ8u7BktJSW1P1g.jpeg","originalWidth":2999,"originalHeight":1365,"isFeatured":true}},"type":"Tag"},{"slug":"dsl","name":"Dsl","postCount":199,"metadata":{"postCount":199,"coverImage":{"id":"1*H7MuNowLYlJ1vp61v4k9nQ.jpeg","originalWidth":3925,"originalHeight":2942,"isFeatured":true}},"type":"Tag"},{"slug":"workflow","name":"Workflow","postCount":2913,"metadata":{"postCount":2913,"coverImage":{"id":"1*7vq8aPvlFXemG_URVa_7lw.jpeg","originalWidth":1597,"originalHeight":595,"isFeatured":true}},"type":"Tag"},{"slug":"microservices","name":"Microservices","postCount":9404,"metadata":{"postCount":9404,"coverImage":{"id":"1*WjgXCQVqiLTJtzVDjci0fA.png","originalWidth":737,"originalHeight":572,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":3,"links":{"entries":[{"url":"https://netflix.github.io/conductor/","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/DOT_(graph_description_language)","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Domain-specific_language","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Directed_acyclic_graph","alts":[],"httpStatus":200},{"url":"https://eventstore.org/","alts":[],"httpStatus":200},{"url":"https://airflow.apache.org/","alts":[],"httpStatus":200},{"url":"https://kafka.apache.org/","alts":[],"httpStatus":200},{"url":"https://careers.jet.com/results?q=engineer&page=1&sort=rank&expand=department,type&jobCareerArea=all","alts":[],"httpStatus":200},{"url":"https://medium.com/jettech/f-microservice-patterns-jet-com-98b5f7025423","alts":[{"type":2,"url":"medium://p/98b5f7025423"},{"type":3,"url":"medium://p/98b5f7025423"}],"httpStatus":200},{"url":"https://medium.com/jettech/microservices-to-workflows-the-evolution-of-jets-order-management-system-9e5669bd53ab","alts":[{"type":3,"url":"medium://p/9e5669bd53ab"},{"type":2,"url":"medium://p/9e5669bd53ab"}],"httpStatus":200},{"url":"https://medium.com/jettech/abstracting-io-using-f-dc841519610e","alts":[{"type":3,"url":"medium://p/dc841519610e"},{"type":2,"url":"medium://p/dc841519610e"}],"httpStatus":200}],"version":"0.3","generatedAt":1553219527235},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":416,"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":"microservices-to-workflows-expressing-business-flows-using-an-f-dsl","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"microservices-to-workflows-expressing-business-flows-using-an-f-dsl-d2e74e6d6d5e","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*j2UkEkp2RjAFe27M-rI_Ow.png","originalWidth":1740,"originalHeight":670}},{"name":"previewTitle","type":3,"text":"Microservices to Workflows: Expressing Business Flows using an F# DSL","alignment":1},{"name":"previewSubtitle","type":13,"text":"How to represent business logic…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"How to represent business logic in F# using a custom Domain Specific Language (DSL)."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":4,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1553219521360,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"ccca","type":3,"text":"Microservices to Workflows: Expressing Business Flows using an F# DSL","markups":[]},{"name":"b859","type":1,"text":"Over two years, the Order Management Team built and migrated to a new Workflow System, motivated by some reasons which I explain in an earlier post:","markups":[]},{"name":"a8cb","type":9,"text":"Microservices to Workflows: The Evolution of Jet.com Order Management System","markups":[{"type":3,"start":0,"end":76,"href":"https://medium.com/jettech/microservices-to-workflows-the-evolution-of-jets-order-management-system-9e5669bd53ab","title":"","rel":"","anchorType":0}]},{"name":"0760","type":1,"text":"TLDR: Expressing business domains as workflows simplifies development and improves the overall maintainability. Read…","markups":[]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"How to represent business logic in F# using a custom Domain Specific Language (DSL)."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"8348c05b304d":{"id":"8348c05b304d","versionId":"e8aa0b5a3a6a","creatorId":"75eaa8d210d7","homeCollectionId":"ae6c8c33b4b1","title":"Meet the Women of Tech at Jet.com — Part I","detectedLanguage":"en","latestVersion":"e8aa0b5a3a6a","latestPublishedVersion":"e8aa0b5a3a6a","hasUnpublishedEdits":false,"latestRev":1095,"createdAt":1551984073278,"updatedAt":1553736208436,"acceptedAt":0,"firstPublishedAt":1552931371226,"latestPublishedAt":1553736208436,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"To celebrate Women’s History Month we decided to profile women in tech roles across the Jet organization. Learn about their experiences…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*caN53CRUkXr8uL0U2xMVAA.jpeg","filter":"","backgroundSize":"","originalWidth":861,"originalHeight":512,"strategy":"resample","height":0,"width":0},"wordCount":2618,"imageCount":5,"readingTime":10.712578616352202,"subtitle":"To celebrate Women’s History Month we decided to profile women in tech roles across the Jet organization. Learn about their experiences…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":29,"isBookmarked":false,"tags":[{"slug":"engineering","name":"Engineering","postCount":22933,"metadata":{"postCount":22933,"coverImage":{"id":"1*1AktzTtx2ZOH1kb8yv7Piw.jpeg","originalWidth":6000,"originalHeight":4000,"isFeatured":true}},"type":"Tag"},{"slug":"women-in-tech","name":"Women In Tech","postCount":26844,"metadata":{"postCount":26844,"coverImage":{"id":"1*t7BrSZdwus1cQmb_E3cybw.jpeg"}},"type":"Tag"},{"slug":"womens-history-month","name":"Womens History Month","postCount":961,"metadata":{"postCount":961,"coverImage":{"id":"0*V9xgRpPV-vPGDk85","originalWidth":576,"originalHeight":384,"isFeatured":true}},"type":"Tag"},{"slug":"diversity-and-inclusion","name":"Diversity And Inclusion","postCount":3968,"metadata":{"postCount":3968,"coverImage":{"id":"1*QmIFDZRv3szyFuGFvUj7jQ.png","originalWidth":800,"originalHeight":425,"isFeatured":true}},"type":"Tag"},{"slug":"women-in-stem","name":"Women in STEM","postCount":1643,"metadata":{"postCount":1643,"coverImage":{"id":"0*7WIZQwtxdhuMdoaw","originalWidth":1600,"originalHeight":790,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://medium.com/jettech/meet-the-women-of-tech-at-jet-com-part-ii-34f172b9b279","alts":[{"type":2,"url":"medium://p/34f172b9b279"},{"type":3,"url":"medium://p/34f172b9b279"}],"httpStatus":200},{"url":"https://careers.jet.com/results?q=&page=1&sort=rank&expand=department,type&jobCareerArea=0000015f-110b-de7b-addf-3f8f8bf10000","alts":[],"httpStatus":200},{"url":"https://corporate.walmart.com/global-responsibility/opportunity/diversity-and-inclusion","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1553736209112},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":604,"sectionCount":9,"readingList":0,"topics":[{"topicId":"af49579e220a","slug":"work","createdAt":1487918186996,"deletedAt":0,"image":{"id":"1*knbAt5qCQCelKx0BDkzZpQ@2x.jpeg","originalWidth":5018,"originalHeight":3049},"name":"Work","description":"The meaning behind the meetings.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Work Life: Articles and News — Medium","type":"Topic"}]},"coverless":true,"slug":"meet-the-women-of-tech-at-jet-com-part-i","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"meet-the-women-of-tech-at-jet-com-part-i-8348c05b304d","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*caN53CRUkXr8uL0U2xMVAA.jpeg","originalWidth":861,"originalHeight":512,"isFeatured":true}},{"name":"aa40","type":3,"text":"Meet the Women of Tech at Jet.com — Part I","markups":[],"alignment":1},{"name":"9a5d","type":13,"text":"To celebrate Women’s History Month we decided to profile…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"To celebrate Women’s History Month we decided to profile women in tech roles across the Jet organization. Learn about their experiences…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"aa40","type":3,"text":"Meet the Women of Tech at Jet.com — Part I","markups":[]},{"name":"9a5d","type":13,"text":"To celebrate Women’s History Month we decided to profile women in tech roles across the Jet organization. Learn about their experiences here at Jet and working as women in tech.","markups":[]},{"name":"c4a3","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*caN53CRUkXr8uL0U2xMVAA.jpeg","originalWidth":861,"originalHeight":512,"isFeatured":true}},{"name":"4959","type":1,"text":"At Jet, we are building the future of eCommerce. Being successful requires more than just the right bits of tech, it requires people power. We know it is important to bring in a variety of viewpoints and perspectives to make a great workplace and to build an online experience that…","markups":[]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"To celebrate Women’s History Month we decided to profile women in tech roles across the Jet organization. Learn about their experiences…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"f248aa05f2f2":{"id":"f248aa05f2f2","versionId":"f5f7b3f057b9","creatorId":"b2b3920e71c0","homeCollectionId":"ae6c8c33b4b1","title":"How We Created a Visual Search Engine for Hayneedle.com","detectedLanguage":"en","latestVersion":"f5f7b3f057b9","latestPublishedVersion":"f5f7b3f057b9","hasUnpublishedEdits":false,"latestRev":2977,"createdAt":1537194560467,"updatedAt":1551127019668,"acceptedAt":0,"firstPublishedAt":1550603450399,"latestPublishedAt":1551127019668,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Have you ever found yourself searching for a piece of furniture but unsure how to describe it in exact words? Perhaps a sofa you found on…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*4XsUB98QC_DlbIKyQ5Ddqg.jpeg","filter":"","backgroundSize":"","originalWidth":1390,"originalHeight":844,"strategy":"resample","height":0,"width":0},"wordCount":2388,"imageCount":10,"readingTime":10.261320754716982,"subtitle":"Have you ever found yourself searching for a piece of furniture but unsure how to describe it in exact words? Perhaps a sofa you found on…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":132,"isBookmarked":false,"tags":[{"slug":"machine-learning","name":"Machine Learning","postCount":114385,"metadata":{"postCount":114385,"coverImage":{"id":"1*CE4B1cQRXbMnPwKTnryI5A.jpeg","originalWidth":1920,"originalHeight":1280,"isFeatured":true}},"type":"Tag"},{"slug":"software-engineering","name":"Software Engineering","postCount":20107,"metadata":{"postCount":20107,"coverImage":{"id":"0*mQ_pAWWpx3LZZ34P","originalWidth":3543,"originalHeight":2365,"isFeatured":true,"unsplashPhotoId":"OqtafYT5kTw"}},"type":"Tag"},{"slug":"visual-search","name":"Visual Search","postCount":156,"metadata":{"postCount":156,"coverImage":{"id":"0*1S_4d6Ml8D-Qnfw3","originalWidth":1600,"originalHeight":413,"isFeatured":true}},"type":"Tag"},{"slug":"deep-learning","name":"Deep Learning","postCount":28534,"metadata":{"postCount":28534,"coverImage":{"id":"1*iC8dFixF65HJH2G3_sS8ZQ.png","originalWidth":1536,"originalHeight":1520,"isFeatured":true}},"type":"Tag"},{"slug":"computer-vision","name":"Computer Vision","postCount":6348,"metadata":{"postCount":6348,"coverImage":{"id":"0*-YFvSBEvkgUlsm4w","originalWidth":2848,"originalHeight":4272,"isFeatured":true,"unsplashPhotoId":"IPRFX7CVVoU"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":5,"links":{"entries":[{"url":"https://code.fb.com/data-infrastructure/faiss-a-library-for-efficient-similarity-search/","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Overfitting","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Interest_point_detection","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Dimensionality_reduction","alts":[],"httpStatus":200},{"url":"https://js.tensorflow.org/","alts":[],"httpStatus":200},{"url":"http://yann.lecun.com/exdb/publis/pdf/ranzato-nips-07.pdf","alts":[],"httpStatus":200},{"url":"https://hayneedle.com/visual-search/?VISUAL_SEARCH_MOBILE=B","alts":[],"httpStatus":405},{"url":"https://careers.jet.com/technology","alts":[],"httpStatus":200},{"url":"https://medium.com/p/f248aa05f2f2#30e4","alts":[{"type":2,"url":"medium://p/f248aa05f2f2"},{"type":3,"url":"medium://p/f248aa05f2f2"}],"httpStatus":200},{"url":"https://github.com/tensorflow/models/blob/master/research/slim/nets/nasnet/pnasnet.py","alts":[],"httpStatus":200},{"url":"http://image-net.org/challenges/LSVRC/2012/results.html","alts":[],"httpStatus":200},{"url":"https://medium.com/p/f248aa05f2f2#ef7b","alts":[{"type":2,"url":"medium://p/f248aa05f2f2"},{"type":3,"url":"medium://p/f248aa05f2f2"}],"httpStatus":200},{"url":"https://medium.com/p/f248aa05f2f2#1b79","alts":[{"type":2,"url":"medium://p/f248aa05f2f2"},{"type":3,"url":"medium://p/f248aa05f2f2"}],"httpStatus":200},{"url":"https://medium.com/p/f248aa05f2f2#abb3","alts":[{"type":2,"url":"medium://p/f248aa05f2f2"},{"type":3,"url":"medium://p/f248aa05f2f2"}],"httpStatus":200},{"url":"https://medium.com/p/f248aa05f2f2#50b9","alts":[{"type":3,"url":"medium://p/f248aa05f2f2"},{"type":2,"url":"medium://p/f248aa05f2f2"}],"httpStatus":200},{"url":"http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks","alts":[],"httpStatus":200},{"url":"https://www.tensorflow.org/mobile/","alts":[],"httpStatus":200},{"url":"http://www.scholarpedia.org/article/Deep_Learning","alts":[],"httpStatus":200},{"url":"http://yann.lecun.com/exdb/publis/pdf/lecun-89e.pdf","alts":[],"httpStatus":200},{"url":"https://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf","alts":[],"httpStatus":200},{"url":"https://medium.com/@bugraa","alts":[{"type":2,"url":"medium://@bugraa"},{"type":3,"url":"medium://@bugraa"}],"httpStatus":200},{"url":"https://www.vision.ee.ethz.ch/~surf/eccv06.pdf","alts":[],"httpStatus":200},{"url":"https://arxiv.org/pdf/1611.01578.pdf","alts":[],"httpStatus":200},{"url":"https://arxiv.org/pdf/1712.00559.pdf","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1551127023421},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":882,"sectionCount":5,"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":"55f1c20aba7a","slug":"software-engineering","createdAt":1491949272237,"deletedAt":0,"image":{"id":"1*U8FboK4lz1wqwQC6IcqxKw@2x.jpeg","originalWidth":5507,"originalHeight":3098},"name":"Software Engineering","description":"Back-end to front-end.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Software Engineering News and Articles — Medium","type":"Topic"},{"topicId":"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":"how-we-created-a-visual-search-engine-for-hayneedle-com","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"https-medium-com-jettech-visual-search-hayneedle-f248aa05f2f2","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*4XsUB98QC_DlbIKyQ5Ddqg.jpeg","originalWidth":1390,"originalHeight":844,"isFeatured":true}},{"name":"d26b","type":3,"text":"How We Created a Visual Search Engine for Hayneedle.com","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Have you ever found yourself searching for a piece of furniture but unsure how to describe it in exact words? Perhaps a sofa you found on…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"1eca0103fff3","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"d26b","type":3,"text":"How We Created a Visual Search Engine for Hayneedle.com","markups":[]},{"name":"ac36","type":4,"text":"","markups":[],"layout":3,"metadata":{"id":"1*4XsUB98QC_DlbIKyQ5Ddqg.jpeg","originalWidth":1390,"originalHeight":844,"isFeatured":true}},{"name":"8b05","type":1,"text":"Have you ever found yourself searching for a piece of furniture but unsure how to describe it in exact words? Perhaps a sofa you found on Pinterest or home decor you stumbled upon on Instagram?","markups":[]},{"name":"2ce7","type":1,"text":"This post explains the visual search project we did for Hayneedle, a home furnishings and…","markups":[]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Have you ever found yourself searching for a piece of furniture but unsure how to describe it in exact words? Perhaps a sofa you found on…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"9ee419690a3a":{"id":"9ee419690a3a","versionId":"faa8ecaf822","creatorId":"da1eb593fa3","homeCollectionId":"ae6c8c33b4b1","title":"How Building a Front-End Taxonomy for Jet.com Improved Customers’ Shopping Experiences","detectedLanguage":"en","latestVersion":"faa8ecaf822","latestPublishedVersion":"faa8ecaf822","hasUnpublishedEdits":false,"latestRev":2120,"createdAt":1538756460456,"updatedAt":1549560512882,"acceptedAt":0,"firstPublishedAt":1549483428899,"latestPublishedAt":1549483533672,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Building a front-end taxonomy helped us better personalize our shopping experience.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*UbdZ5D-12gZq3wesfoVm9A.jpeg","filter":"","backgroundSize":"","originalWidth":3018,"originalHeight":1736,"strategy":"resample","height":0,"width":0},"wordCount":1378,"imageCount":6,"readingTime":6.15,"subtitle":"Building a front-end taxonomy helped us better personalize our shopping experience.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":20,"isBookmarked":false,"tags":[{"slug":"ecommerce","name":"Ecommerce","postCount":88479,"metadata":{"postCount":88479,"coverImage":{"id":"1*iH9huSb2AsU5fLl3H-Rt-Q.png","originalWidth":1200,"originalHeight":675,"isFeatured":true}},"type":"Tag"},{"slug":"taxonomy","name":"Taxonomy","postCount":275,"metadata":{"postCount":275,"coverImage":{"id":"1*-ZWikSFxHMshujPBdE0VBQ.jpeg","originalWidth":6716,"originalHeight":3863,"focusPercentX":51,"focusPercentY":43,"alt":"White rabbit coming out of a magic hat"}},"type":"Tag"},{"slug":"content-discovery","name":"Content Discovery","postCount":146,"metadata":{"postCount":146,"coverImage":{"id":"1*cMESxuReNE4H-4ViXzS9GA.jpeg","originalWidth":1920,"originalHeight":1280,"isFeatured":true}},"type":"Tag"},{"slug":"personalization","name":"Personalization","postCount":2287,"metadata":{"postCount":2287,"coverImage":{"id":"1*xwD8rVHPapbfmrl6AIbQbA.png","originalWidth":1464,"originalHeight":858,"isFeatured":true}},"type":"Tag"},{"slug":"online-shopping","name":"Online Shopping","postCount":12316,"metadata":{"postCount":12316,"coverImage":{"id":"1*klhYLMuIf-IuzYiVGAaC7Q.jpeg","originalWidth":6000,"originalHeight":4000,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/Tree_(data_structure)","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Directed_acyclic_graph","alts":[],"httpStatus":200},{"url":"https://careers.jet.com/technology","alts":[],"httpStatus":200},{"url":"https://pixabay.com/en/apple-red-fruit-fruits-decoration-1506119/","alts":[],"httpStatus":200},{"url":"https://www.walmart.com","alts":[],"httpStatus":200},{"url":"https://pixabay.com/en/shopping-business-retail-1165437/","alts":[],"httpStatus":200},{"url":"https://jet.com","alts":[],"httpStatus":403}],"version":"0.3","generatedAt":1549483535629},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":313,"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":"how-building-a-front-end-taxonomy-for-jet-com-improved-customers-shopping-experiences","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"how-building-a-front-end-taxonomy-for-jet-com-improved-customers-shopping-experiences-9ee419690a3a","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*UbdZ5D-12gZq3wesfoVm9A.jpeg","originalWidth":3018,"originalHeight":1736,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"How Building a Front-End Taxonomy for Jet.com Improved Customers’ Shopping Experiences","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Building a front-end taxonomy helped us better personalize our shopping experience."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":4,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"e070","type":3,"text":"How developing a front-end taxonomy helped us better personalize our shopping experience for customers","markups":[]},{"name":"0d6e","type":4,"text":"Image courtesy Alexas_Fotos on pixabay.","markups":[{"type":3,"start":31,"end":38,"href":"https://pixabay.com/en/shopping-business-retail-1165437/","title":"","rel":"","anchorType":0}],"layout":5,"metadata":{"id":"1*UbdZ5D-12gZq3wesfoVm9A.jpeg","originalWidth":3018,"originalHeight":1736,"isFeatured":true}},{"name":"582e","type":1,"text":"This article explores how front-end taxonomy came to be at Jet. Let’s begin by discussing the concept of taxonomy.","markups":[]},{"name":"9a19","type":1,"text":"In e-commerce, using a “taxonomy structure” is the practice of bucketing similar products together based on some classification logic.","markups":[]},{"name":"aa2d","type":1,"text":"For a long time at Jet, we only used one type of…","markups":[]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Building a front-end taxonomy helped us better personalize our shopping experience."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"7db2193d1ff6":{"id":"7db2193d1ff6","versionId":"40e598847107","creatorId":"75eaa8d210d7","homeCollectionId":"ae6c8c33b4b1","title":"Creepy or Clever?","detectedLanguage":"en","latestVersion":"40e598847107","latestPublishedVersion":"40e598847107","hasUnpublishedEdits":false,"latestRev":371,"createdAt":1549040514118,"updatedAt":1549473642095,"acceptedAt":0,"firstPublishedAt":1549298133088,"latestPublishedAt":1549473642095,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"A simple, yet important question","postDisplay":{"coverless":true},"metaDescription":"This is the simple, three-word question I teach all new hires at Jet during the cyber security portion of their first day orientation. While we start out by talking about the importance of only…"},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*L9NM6kA7MqJcM7qhgyEJFw.jpeg","filter":"","backgroundSize":"","originalWidth":4668,"originalHeight":3192,"strategy":"resample","height":0,"width":0},"wordCount":1503,"imageCount":5,"readingTime":6.5050314465408805,"subtitle":"A simple, yet important question","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":26,"isBookmarked":false,"tags":[{"slug":"security","name":"Security","postCount":62109,"metadata":{"postCount":62109,"coverImage":{"id":"1*i_ODevOX3oiLR_kwsEONHA.png","originalWidth":2970,"originalHeight":1534,"isFeatured":true}},"type":"Tag"},{"slug":"privacy","name":"Privacy","postCount":36723,"metadata":{"postCount":36723,"coverImage":{"id":"1*Arv1JHuRxjBBAJ6thw2VPA.jpeg"}},"type":"Tag"},{"slug":"big-tech","name":"Big Tech","postCount":360,"metadata":{"postCount":360,"coverImage":{"id":"0*2o9Vr8KE4alK8dUZ","originalWidth":810,"originalHeight":456,"isFeatured":true}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":278980,"metadata":{"postCount":278980,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"},{"slug":"ethics","name":"Ethics","postCount":13687,"metadata":{"postCount":13687,"coverImage":{"id":"1*kpnGSMuWd770eoO5FlJp4A.png","originalWidth":2264,"originalHeight":1180,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/Data_Privacy_Day","alts":[],"httpStatus":200},{"url":"https://www.eff.org/deeplinks","alts":[],"httpStatus":200},{"url":"https://www.sans.org/sites/default/files/2018-03/201803-OUCH-March-English_0.pdf","alts":[],"httpStatus":200},{"url":"https://files.consumerfinance.gov/f/documents/201604_cfpb_fraud-protection-tool-for-justice-involved-individuals-handout.pdf","alts":[],"httpStatus":200},{"url":"https://medium.com/jettech/how-jet-integrates-cyber-security-into-its-culture-ca0d21fa3acd","alts":[{"type":2,"url":"medium://p/ca0d21fa3acd"},{"type":3,"url":"medium://p/ca0d21fa3acd"}],"httpStatus":200},{"url":"https://careers.jet.com/results?q=&page=1&sort=rank&expand=department,type&jobCareerArea=0000015f-110b-de7b-addf-3f8f8bf10000","alts":[],"httpStatus":200},{"url":"https://careers.walmart.com/results?q=&page=1&sort=rank&jobCategory=00000161-7bff-da32-a37b-fbffc8c10000&expand=department,brand,type,rate&type=jobs","alts":[],"httpStatus":200},{"url":"https://www.youtube.com/watch?v=JMpuxLIgjPs","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?v=JMpuxLIgjPs&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?v=JMpuxLIgjPs&feature=applinks"}],"httpStatus":200},{"url":"https://www.walmartethics.com","alts":[],"httpStatus":500},{"url":"https://www.stopdatamining.me/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1549473643688},"isLockedPreviewOnly":false,"metaDescription":"This is the simple, three-word question I teach all new hires at Jet during the cyber security portion of their first day orientation. While we start out by talking about the importance of only…","totalClapCount":523,"sectionCount":7,"readingList":0,"topics":[{"topicId":"d4e7f4144ac5","slug":"cybersecurity","createdAt":1493946839810,"deletedAt":0,"image":{"id":"1*JpJUz3WBPiQG5vkJ9WY8rw@2x.jpeg","originalWidth":6000,"originalHeight":4000},"name":"Cybersecurity","description":"Towards a more perfect password.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Cybersecurity News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"creepy-or-clever","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"creepy-or-clever-7db2193d1ff6","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*L9NM6kA7MqJcM7qhgyEJFw.jpeg","originalWidth":4668,"originalHeight":3192,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"Creepy or Clever?","alignment":1},{"name":"previewSubtitle","type":13,"text":"A simple, yet important question","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"A simple, yet important question"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"d4e7f4144ac5","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"a46e","type":3,"text":"Creepy or Clever?","markups":[]},{"name":"fb07","type":4,"text":"Creepy or Clever, The Game — Learn about how we made privacy fun, read through…","markups":[{"type":2,"start":18,"end":26}],"layout":3,"metadata":{"id":"1*L9NM6kA7MqJcM7qhgyEJFw.jpeg","originalWidth":4668,"originalHeight":3192,"isFeatured":true}},{"name":"43ed","type":3,"text":"Welcome to Orientation","markups":[]},{"name":"b313","type":1,"text":"This is the simple, three-word question I teach all new hires at Jet during the cyber security portion of their first day orientation. While we start out by talking about the importance of only storing data on authorized servers and apps (i.e., where we store data), I spend a lot…","markups":[{"type":1,"start":298,"end":318},{"type":2,"start":245,"end":264},{"type":2,"start":306,"end":308}]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"A simple, yet important question"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"f40af12a1c39":{"id":"f40af12a1c39","versionId":"5181cb6476ba","creatorId":"b91ca2c91185","homeCollectionId":"ae6c8c33b4b1","title":"Evaluation of Serverless Technologies at Jet","detectedLanguage":"en","latestVersion":"5181cb6476ba","latestPublishedVersion":"5181cb6476ba","hasUnpublishedEdits":false,"latestRev":2994,"createdAt":1546012694888,"updatedAt":1579383585850,"acceptedAt":0,"firstPublishedAt":1548094160952,"latestPublishedAt":1552383268314,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Serverless functions have been around for a few years and represent a new paradigm in cloud-based software engineering. This blog post…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*QlUE6ZJeTCE4Qajl","filter":"","backgroundSize":"","originalWidth":5760,"originalHeight":3840,"strategy":"resample","height":0,"width":0},"wordCount":3564,"imageCount":12,"readingTime":14.799056603773584,"subtitle":"Serverless functions have been around for a few years and represent a new paradigm in cloud-based software engineering. This blog post…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":25,"isBookmarked":false,"tags":[{"slug":"serverless","name":"Serverless","postCount":8161,"metadata":{"postCount":8161,"coverImage":{"id":"1*WjgXCQVqiLTJtzVDjci0fA.png","originalWidth":737,"originalHeight":572,"isFeatured":true}},"type":"Tag"},{"slug":"azure-functions","name":"Azure Functions","postCount":900,"metadata":{"postCount":900,"coverImage":{"id":"1*akVOajSkjZ_ICGqkpGmaRA.jpeg","originalWidth":1280,"originalHeight":853,"isFeatured":true}},"type":"Tag"},{"slug":"docker","name":"Docker","postCount":25690,"metadata":{"postCount":25690,"coverImage":{"id":"1*WjgXCQVqiLTJtzVDjci0fA.png","originalWidth":737,"originalHeight":572,"isFeatured":true}},"type":"Tag"},{"slug":"azure","name":"Azure","postCount":7798,"metadata":{"postCount":7798,"coverImage":{"id":"1*1HeUu7Zk3DqwfvoyGKQ23A.png","originalWidth":1264,"originalHeight":384,"isFeatured":true}},"type":"Tag"},{"slug":"openfaas","name":"Openfaas","postCount":90,"metadata":{"postCount":90,"coverImage":{"id":"1*v4o2AXLIJaHSZmqYZk26qA.jpeg","originalWidth":1080,"originalHeight":600,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":3,"links":{"entries":[{"url":"https://unsplash.com?utm_source=medium&utm_medium=referral","alts":[],"httpStatus":200},{"url":"https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.t.html","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Bcrypt","alts":[],"httpStatus":200},{"url":"https://www.consul.io/","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol","alts":[],"httpStatus":200},{"url":"https://www.vaultproject.io/","alts":[],"httpStatus":200},{"url":"https://nats.io/","alts":[],"httpStatus":200},{"url":"https://www.openfaas.com/","alts":[],"httpStatus":200},{"url":"https://docs.openfaas.com/","alts":[],"httpStatus":200},{"url":"https://www.splunk.com/","alts":[],"httpStatus":200},{"url":"https://fnproject.io/","alts":[],"httpStatus":200},{"url":"https://kubeless.io/","alts":[],"httpStatus":200},{"url":"https://gist.github.com/hxalid/f630948b5aa33429e88868fc726e2c0a","alts":[],"httpStatus":200},{"url":"https://openwhisk.apache.org/","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sizes-compute","alts":[],"httpStatus":200},{"url":"https://prometheus.io/docs/alerting/alertmanager/","alts":[],"httpStatus":200},{"url":"https://gist.github.com/hxalid/25620e229b4cc117c220df887016c08b","alts":[],"httpStatus":200},{"url":"https://gist.github.com/hxalid/37fd5c56bfa88175016f228444cd21fe","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview","alts":[],"httpStatus":200},{"url":"https://nuclio.io/","alts":[],"httpStatus":200},{"url":"https://grafana.com/","alts":[],"httpStatus":200},{"url":"https://fission.io/","alts":[],"httpStatus":200},{"url":"https://gist.github.com/hxalid/083e6cb7188371478bb1a372aa5517c3","alts":[],"httpStatus":200},{"url":"https://github.com/openfaas/faas/tree/master/gateway","alts":[],"httpStatus":200},{"url":"https://medium.com/jettech/microservices-to-workflows-the-evolution-of-jets-order-management-system-9e5669bd53ab","alts":[{"type":2,"url":"medium://p/9e5669bd53ab"},{"type":3,"url":"medium://p/9e5669bd53ab"}],"httpStatus":200},{"url":"https://github.com/hashicorp/faas-nomad/blob/master/nomad_job_files/faas.hcl","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/azure/azure-functions/functions-runtime-overview","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/azure/azure-functions/","alts":[],"httpStatus":200},{"url":"https://prometheus.io/","alts":[],"httpStatus":200},{"url":"https://azure.microsoft.com/en-us/pricing/details/functions/","alts":[],"httpStatus":200},{"url":"https://unsplash.com/@markusspiske?utm_source=medium&utm_medium=referral","alts":[],"httpStatus":200},{"url":"https://medium.com/jettech/a-short-introduction-to-windows-containers-db5adc0db536","alts":[{"type":3,"url":"medium://p/db5adc0db536"},{"type":2,"url":"medium://p/db5adc0db536"}],"httpStatus":200},{"url":"https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#numerical-sandbox-limits","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/azure/application-insights/app-insights-live-stream","alts":[],"httpStatus":200},{"url":"https://github.com/hashicorp/faas-nomad","alts":[],"httpStatus":200},{"url":"https://azure.microsoft.com/en-us/services/cosmos-db/","alts":[],"httpStatus":200},{"url":"https://github.com/reorx/httpstat","alts":[],"httpStatus":200},{"url":"https://azure.microsoft.com/en-us/services/functions/","alts":[],"httpStatus":200},{"url":"https://github.com/openfaas/nats-queue-worker","alts":[],"httpStatus":200},{"url":"https://www.ubuntu.com/","alts":[],"httpStatus":200},{"url":"http://careers.jet.com/results?q=engineering","alts":[],"httpStatus":200},{"url":"https://medium.com/@ronanwatson","alts":[{"type":3,"url":"medium://@ronanwatson"},{"type":2,"url":"medium://@ronanwatson"}],"httpStatus":200},{"url":"https://github.com/cncf/wg-serverless/tree/master/whitepapers/serverless-overview","alts":[],"httpStatus":200},{"url":"https://kafka.apache.org/","alts":[],"httpStatus":200},{"url":"https://github.com/openfaas-incubator/faas-idler","alts":[],"httpStatus":200},{"url":"https://github.com/tsenart/vegeta","alts":[],"httpStatus":200},{"url":"https://github.com/openfaas-incubator/kafka-connector","alts":[],"httpStatus":200},{"url":"https://azure.microsoft.com/en-us/services/storage/blobs/","alts":[],"httpStatus":200},{"url":"https://medium.com/@jnovino","alts":[{"type":2,"url":"medium://@jnovino"},{"type":3,"url":"medium://@jnovino"}],"httpStatus":200},{"url":"https://medium.com/@erichgoldman","alts":[{"type":2,"url":"medium://@erichgoldman"},{"type":3,"url":"medium://@erichgoldman"}],"httpStatus":200},{"url":"https://medium.com/@mohitarora","alts":[{"type":2,"url":"medium://@mohitarora"},{"type":3,"url":"medium://@mohitarora"}],"httpStatus":200},{"url":"https://medium.com/@bartelink","alts":[{"type":2,"url":"medium://@bartelink"},{"type":3,"url":"medium://@bartelink"}],"httpStatus":200},{"url":"https://cloud.google.com/knative/","alts":[],"httpStatus":200},{"url":"https://medium.com/@truebuddi","alts":[{"type":3,"url":"medium://@truebuddi"},{"type":2,"url":"medium://@truebuddi"}],"httpStatus":200},{"url":"https://github.com/openfaas-incubator/golang-http-template","alts":[],"httpStatus":200},{"url":"https://medium.com/@justen.walker?source=post_page","alts":[{"type":2,"url":"medium://@justen.walker"},{"type":3,"url":"medium://@justen.walker"}],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/azure/azure-functions/functions-versions","alts":[],"httpStatus":200},{"url":"https://medium.com/@mjshulman","alts":[{"type":2,"url":"medium://@mjshulman"},{"type":3,"url":"medium://@mjshulman"}],"httpStatus":200}],"version":"0.3","generatedAt":1552383270158},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":475,"sectionCount":5,"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":"evaluation-of-serverless-technologies-at-jet","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"evaluation-of-serverless-technologies-at-jet-f40af12a1c39","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*QlUE6ZJeTCE4Qajl","originalWidth":5760,"originalHeight":3840,"isFeatured":true,"unsplashPhotoId":"xekxE_VR0Ec"}},{"name":"4570","type":3,"text":"Evaluation of Serverless Technologies at Jet","markups":[],"alignment":1},{"name":"ff01","type":1,"text":"Serverless functions have been around for a few years and represent a new paradigm…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Serverless functions have been around for a few years and represent a new paradigm in cloud-based software engineering. This blog post…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":4,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"4570","type":3,"text":"Evaluation of Serverless Technologies at Jet","markups":[]},{"name":"5aa4","type":4,"text":"Photo by Markus Spiske on Unsplash","markups":[{"type":3,"start":9,"end":22,"href":"https://unsplash.com/@markusspiske?utm_source=medium&utm_medium=referral","title":"","rel":"photo-creator","anchorType":0},{"type":3,"start":26,"end":34,"href":"https://unsplash.com?utm_source=medium&utm_medium=referral","title":"","rel":"photo-source","anchorType":0}],"layout":1,"metadata":{"id":"0*QlUE6ZJeTCE4Qajl","originalWidth":5760,"originalHeight":3840,"isFeatured":true,"unsplashPhotoId":"xekxE_VR0Ec"}},{"name":"ff01","type":1,"text":"Serverless functions have been around for a few years and represent a new paradigm in cloud-based software engineering. This blog post focuses on enterprise adoption of serverless functions.","markups":[]},{"name":"88eb","type":1,"text":"We are encouraged to keep an eye on new technology trends and adopt their usage at Jet. However, the adoption of any…","markups":[]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Serverless functions have been around for a few years and represent a new paradigm in cloud-based software engineering. This blog post…"},"cardType":0,"isDistributionAlertDismissed":true,"isShortform":false,"shortformType":0,"type":"Post"},"2cbfd8c79724":{"id":"2cbfd8c79724","versionId":"2400efc9261c","creatorId":"a4b6914725f8","homeCollectionId":"ae6c8c33b4b1","title":"Breaking all the rules: Using Go to call Windows API","detectedLanguage":"en","latestVersion":"2400efc9261c","latestPublishedVersion":"2400efc9261c","hasUnpublishedEdits":false,"latestRev":2243,"createdAt":1547060919595,"updatedAt":1548120761992,"acceptedAt":0,"firstPublishedAt":1547581543610,"latestPublishedAt":1548120761992,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"In creating Damon,  we had to interact directly with the Windows API. This documents what we learned and how you can do it too!","postDisplay":{"coverless":true},"metaDescription":"In creating Damon, we had to interact directly with the Windows API. This documents what we learned about syscall and unsafe packages in Go, and how you can use it to make Windows API calls too!"},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*HaQ8pO_tpIK6Y2O1LJiRZg.jpeg","filter":"","backgroundSize":"","originalWidth":3264,"originalHeight":2448,"strategy":"resample","height":0,"width":0},"wordCount":2454,"imageCount":1,"readingTime":9.460377358490565,"subtitle":"In creating Damon,  we had to interact directly with the Windows API. This documents what we learned and how you can do it too!","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":73,"isBookmarked":false,"tags":[{"slug":"programming","name":"Programming","postCount":145674,"metadata":{"postCount":145674,"coverImage":{"id":"1*shUrkvXszH1wJlm1LZRNvQ.png","originalWidth":1280,"originalHeight":720,"isFeatured":true}},"type":"Tag"},{"slug":"windows","name":"Windows","postCount":6572,"metadata":{"postCount":6572,"coverImage":{"id":"1*oF_Usr5oXeOFLwH_QVYpBA.jpeg","originalWidth":2388,"originalHeight":971,"isFeatured":true}},"type":"Tag"},{"slug":"go","name":"Go","postCount":3830,"metadata":{"postCount":3830,"coverImage":{"id":"1*bx6bQuo3TdlikIoTcFsGZw.jpeg","originalWidth":5287,"originalHeight":3525,"isFeatured":true}},"type":"Tag"},{"slug":"api","name":"API","postCount":19832,"metadata":{"postCount":19832,"coverImage":{"id":"0*z_CKbNbljnZQ1BXS.jpg","originalWidth":640,"originalHeight":697,"isFeatured":true,"alt":"Two men in a bar"}},"type":"Tag"},{"slug":"guides-and-tutorials","name":"Guides And Tutorials","postCount":3631,"metadata":{"postCount":3631,"coverImage":{"id":"1*DOXaFF6Hg9KcDQK9wgMrWA.png","originalWidth":1280,"originalHeight":1012,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":4,"links":{"entries":[{"url":"https://godoc.org/golang.org/x/sys/windows#SecurityAttributes","alts":[],"httpStatus":200},{"url":"https://golang.org/pkg/unsafe/","alts":[],"httpStatus":200},{"url":"https://nomadproject.io/","alts":[],"httpStatus":200},{"url":"http://careers.jet.com/results?q=engineering","alts":[],"httpStatus":200},{"url":"https://github.com/jet/damon","alts":[],"httpStatus":200},{"url":"https://dave.cheney.net/2013/10/12/how-to-use-conditional-compilation-with-the-go-build-tool","alts":[],"httpStatus":200},{"url":"https://godoc.org/builtin#uintptr","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/windows/desktop/apiindex/api-index-portal","alts":[],"httpStatus":200},{"url":"https://msdn.microsoft.com/en-us/56b5b350-f4b7-47af-b5f8-6a35f32c1009","alts":[],"httpStatus":200},{"url":"https://godoc.org/builtin#uint32","alts":[],"httpStatus":200},{"url":"https://godoc.org/golang.org/x/sys/windows","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Windows-1252","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/windows/desktop/WinProg/windows-data-types","alts":[],"httpStatus":200},{"url":"https://golang.org/doc/go1compat","alts":[],"httpStatus":200},{"url":"https://github.com/golang/go/issues/28434","alts":[],"httpStatus":200},{"url":"https://golang.org/pkg/unsafe/#Pointer","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/windows/desktop/api/tcpmib/ns-tcpmib-_mib_tcptable_owner_pid","alts":[],"httpStatus":200},{"url":"https://play.golang.org/p/1XN1bLer-se","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/windows/desktop/api/iphlpapi/nf-iphlpapi-getextendedtcptable","alts":[],"httpStatus":200},{"url":"https://www.youtube.com/watch?v=PAAkCSZUG1c&feature=youtu.be&t=830","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?v=PAAkCSZUG1c&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?v=PAAkCSZUG1c&feature=applinks"}],"httpStatus":200}],"version":"0.3","generatedAt":1548120762223},"isLockedPreviewOnly":false,"metaDescription":"In creating Damon, we had to interact directly with the Windows API. This documents what we learned about syscall and unsafe packages in Go, and how you can use it to make Windows API calls too!","totalClapCount":629,"sectionCount":2,"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":"breaking-all-the-rules-using-go-to-call-windows-api","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"breaking-all-the-rules-using-go-to-call-windows-api-2cbfd8c79724","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*HaQ8pO_tpIK6Y2O1LJiRZg.jpeg","originalWidth":3264,"originalHeight":2448,"isFeatured":true}},{"name":"e61e","type":3,"text":"Breaking all the rules: Using Go to call Windows API","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"In creating Damon,  we had to interact directly with the Windows API. This documents what we learned and how you can do it too!"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":4,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"e61e","type":3,"text":"Breaking all the rules: Using Go to call Windows API","markups":[]},{"name":"74cc","type":4,"text":"","markups":[],"layout":5,"metadata":{"id":"1*HaQ8pO_tpIK6Y2O1LJiRZg.jpeg","originalWidth":3264,"originalHeight":2448,"isFeatured":true}},{"name":"63af","type":1,"text":"In creating Damon, the supervisor application that constrains Jet’s Windows microservices in Nomad, we had to interact directly with the Windows API. The Windows API grants access to the more advanced features of the OS, including creation and configuration of JobObjects and Security Token manipulation. Fortunately, Go provides a way…","markups":[{"type":10,"start":362,"end":369,"href":"","title":"","rel":"","name":"","anchorType":0,"creatorIds":[],"userId":""},{"type":10,"start":455,"end":461,"href":"","title":"","rel":"","name":"","anchorType":0,"creatorIds":[],"userId":""},{"type":3,"start":12,"end":17,"href":"https://github.com/jet/damon","title":"","rel":"","name":"","anchorType":0,"creatorIds":[],"userId":""},{"type":3,"start":93,"end":98,"href":"https://nomadproject.io/","title":"","rel":"","name":"","anchorType":0,"creatorIds":[],"userId":""}]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"In creating Damon,  we had to interact directly with the Windows API. This documents what we learned and how you can do it too!"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"af82110a0207":{"id":"af82110a0207","versionId":"5c356e7e2bf0","creatorId":"e0f423c12646","homeCollectionId":"ae6c8c33b4b1","title":"Failover of systems at Jet.. a matter of just a few clicks","detectedLanguage":"en","latestVersion":"5c356e7e2bf0","latestPublishedVersion":"5c356e7e2bf0","hasUnpublishedEdits":false,"latestRev":3390,"createdAt":1541876290129,"updatedAt":1584745338888,"acceptedAt":0,"firstPublishedAt":1545065141472,"latestPublishedAt":1545353394077,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Ever felt frustrated when your plans for a fun weekend are sabotaged by those heavy rains ? We all have gone through it. But, at least we…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*i9C1Hu8sEHQYUUUM31SxDw.jpeg","filter":"","backgroundSize":"","originalWidth":4229,"originalHeight":2819,"strategy":"resample","height":0,"width":0},"wordCount":2984,"imageCount":14,"readingTime":12.710377358490565,"subtitle":"Ever felt frustrated when your plans for a fun weekend are sabotaged by those heavy rains ? We all have gone through it. But, at least we…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":25,"isBookmarked":false,"tags":[{"slug":"cloud","name":"Cloud","postCount":11260,"metadata":{"postCount":11260,"coverImage":{"id":"1*5A9VtbGmPYeV3WHhiVAp3Q.png","originalWidth":1920,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"cloud-computing","name":"Cloud Computing","postCount":35198,"metadata":{"postCount":35198,"coverImage":{"id":"1*WjgXCQVqiLTJtzVDjci0fA.png","originalWidth":737,"originalHeight":572,"isFeatured":true}},"type":"Tag"},{"slug":"resilience","name":"Resilience","postCount":8933,"metadata":{"postCount":8933,"coverImage":{"id":"0*qH_1H6QK1PBXd6xk","originalWidth":3264,"originalHeight":4896,"isFeatured":true,"unsplashPhotoId":"3X-ZMvcEVyY"}},"type":"Tag"},{"slug":"golang","name":"Golang","postCount":9186,"metadata":{"postCount":9186,"coverImage":{"id":"1*9D9u62mCYT7OhB9dNxXrkw.png","originalWidth":1000,"originalHeight":1000,"isFeatured":true,"alt":"Golang gopher dropping a microphone"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://www.nomadproject.io/","alts":[],"httpStatus":200},{"url":"https://kafka.apache.org/intro","alts":[],"httpStatus":200},{"url":"https://www.envoyproxy.io/","alts":[],"httpStatus":200},{"url":"http://consul.io","alts":[],"httpStatus":200},{"url":"https://eventstore.org/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/levgorodinski/","alts":[],"httpStatus":999},{"url":"https://www.vaultproject.io/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/justenwalker/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/john-turek-0660634/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/andrew-duch-31727421/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/prathamesh-bhope-86a24a57/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/2mohitarora/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/joe2far/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/laura-varga-7114548/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/khalid-hasanov-3634271a/","alts":[],"httpStatus":999},{"url":"https://medium.com/@eulerfx/scaling-event-sourcing-at-jet-9c873cac33b8","alts":[{"type":2,"url":"medium://p/9c873cac33b8"},{"type":3,"url":"medium://p/9c873cac33b8"}],"httpStatus":200},{"url":"http://careers.jet.com/results?q=engineering","alts":[],"httpStatus":200},{"url":"https://www.nginx.com/","alts":[],"httpStatus":200},{"url":"https://azure.microsoft.com/en-us/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1545353394798},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":309,"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":"failover-of-systems-at-jet-a-matter-of-just-a-few-clicks","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"failover-of-systems-at-jet-a-matter-of-just-a-few-clicks-af82110a0207","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*i9C1Hu8sEHQYUUUM31SxDw.jpeg","originalWidth":4229,"originalHeight":2819,"isFeatured":true}},{"name":"d94b","type":3,"text":"Fail-over of systems at Jet: A matter of just a few clicks","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Ever felt frustrated when your plans for a fun weekend are sabotaged by those heavy rains ? We all have gone through it. But, at least we…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":4,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"d94b","type":3,"text":"Fail-over of systems at Jet: A matter of just a few clicks","markups":[]},{"name":"b9ea","type":4,"text":"","markups":[],"layout":3,"metadata":{"id":"1*i9C1Hu8sEHQYUUUM31SxDw.jpeg","originalWidth":4229,"originalHeight":2819,"isFeatured":true}},{"name":"1efe","type":1,"text":"Ever felt frustrated when your plans for a fun weekend are sabotaged by heavy rains? We all have gone through it. But, at least we have weather forecasts to warn us of these possibilities. It’s a similar story with cloud technology, except that we don’t get any warnings.","markups":[]},{"name":"e325","type":1,"text":"Jet was…","markups":[]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Ever felt frustrated when your plans for a fun weekend are sabotaged by those heavy rains ? We all have gone through it. But, at least we…"},"cardType":0,"isDistributionAlertDismissed":true,"isShortform":false,"shortformType":0,"type":"Post"},"2573debb685e":{"id":"2573debb685e","versionId":"60464b6a68c","creatorId":"3266eee50c97","homeCollectionId":"ae6c8c33b4b1","title":"Role Based Access Control Using a Graph Database","detectedLanguage":"en","latestVersion":"60464b6a68c","latestPublishedVersion":"60464b6a68c","hasUnpublishedEdits":false,"latestRev":2427,"createdAt":1542822382112,"updatedAt":1544713006284,"acceptedAt":0,"firstPublishedAt":1544713006088,"latestPublishedAt":1544713006088,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"How we used the Gremlin Graph API to manage role-based access control to resources in a knowledge base application.","postDisplay":{"coverless":true},"metaDescription":"Using the Gremlin Graph API on Azure to manage role-based access control to resources in an ASP.NET knowledge base application."},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*rLJCDnHiXu0732DF7KCAjg.jpeg","filter":"","backgroundSize":"","originalWidth":4316,"originalHeight":2827,"strategy":"resample","height":0,"width":0},"wordCount":1479,"imageCount":4,"readingTime":6.281132075471699,"subtitle":"How we used the Gremlin Graph API to manage role-based access control to resources in a knowledge base application.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":44,"isBookmarked":false,"tags":[{"slug":"software-development","name":"Software Development","postCount":89589,"metadata":{"postCount":89589,"coverImage":{"id":"1*CE4B1cQRXbMnPwKTnryI5A.jpeg","originalWidth":1920,"originalHeight":1280,"isFeatured":true}},"type":"Tag"},{"slug":"cosmosdb","name":"Cosmosdb","postCount":178,"metadata":{"postCount":178,"coverImage":{"id":"1*V_LR3VOmyF27OIapw2C7hg.jpeg","originalWidth":6016,"originalHeight":4016,"isFeatured":true}},"type":"Tag"},{"slug":"azure","name":"Azure","postCount":7798,"metadata":{"postCount":7798,"coverImage":{"id":"1*1HeUu7Zk3DqwfvoyGKQ23A.png","originalWidth":1264,"originalHeight":384,"isFeatured":true}},"type":"Tag"},{"slug":"api","name":"API","postCount":19832,"metadata":{"postCount":19832,"coverImage":{"id":"0*z_CKbNbljnZQ1BXS.jpg","originalWidth":640,"originalHeight":697,"isFeatured":true,"alt":"Two men in a bar"}},"type":"Tag"},{"slug":"software-engineering","name":"Software Engineering","postCount":20107,"metadata":{"postCount":20107,"coverImage":{"id":"0*mQ_pAWWpx3LZZ34P","originalWidth":3543,"originalHeight":2365,"isFeatured":true,"unsplashPhotoId":"OqtafYT5kTw"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"http://blog.mechanicalkern.com/posts/role-based-access-control-in-one-line.html","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/aspnet/core/security/authorization/introduction?view=aspnetcore-2.1","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/azure/cosmos-db/graph-introduction","alts":[],"httpStatus":200},{"url":"https://github.com/thinkaurelius/faunus/wiki/GraphSON-Format","alts":[],"httpStatus":200},{"url":"http://kelvinlawrence.net/book/Gremlin-Graph-Guide.html","alts":[],"httpStatus":200},{"url":"https://careers.jet.com/technology","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1544713006639},"isLockedPreviewOnly":false,"metaDescription":"Using the Gremlin Graph API on Azure to manage role-based access control to resources in an ASP.NET knowledge base application.","totalClapCount":452,"sectionCount":2,"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":"role-based-access-control-using-a-graph-database","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"role-based-access-control-using-a-graph-database-2573debb685e","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*rLJCDnHiXu0732DF7KCAjg.jpeg","originalWidth":4316,"originalHeight":2827,"isFeatured":true}},{"name":"7353","type":3,"text":"Role-Based Access Control Using a Graph Database","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"How we used the Gremlin Graph API to manage role-based access control to resources in a knowledge base application."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"7353","type":3,"text":"Role-Based Access Control Using a Graph Database","markups":[]},{"name":"65d3","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*rLJCDnHiXu0732DF7KCAjg.jpeg","originalWidth":4316,"originalHeight":2827,"isFeatured":true}},{"name":"77ce","type":1,"text":"We recently launched a new internal application to enable help center agents to view and edit help center content across all of our communication channels. It’s a knowledge base application, and what makes it unique from a development perspective is that it leverages the Azure Cosmos DB implementation of the…","markups":[{"type":3,"start":310,"end":327,"href":"https://docs.microsoft.com/en-us/azure/cosmos-db/graph-introduction","title":"","rel":"","anchorType":0}]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"How we used the Gremlin Graph API to manage role-based access control to resources in a knowledge base application."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"898ab4a31ea4":{"id":"898ab4a31ea4","versionId":"4e95c86ef7f6","creatorId":"a4b6914725f8","homeCollectionId":"ae6c8c33b4b1","title":"Containing Windows Executables with Damon","detectedLanguage":"en","latestVersion":"4e95c86ef7f6","latestPublishedVersion":"4e95c86ef7f6","hasUnpublishedEdits":false,"latestRev":853,"createdAt":1541568679916,"updatedAt":1544556408277,"acceptedAt":0,"firstPublishedAt":1544553809150,"latestPublishedAt":1544556408277,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"In my previous post, “A Short Introduction to Windows Containers”, I went into some detail about the trade-offs and constraints that…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*E-pMdtBaa9WcjCl0yCRo0g.jpeg","filter":"","backgroundSize":"","originalWidth":1920,"originalHeight":1386,"strategy":"resample","height":0,"width":0},"wordCount":1021,"imageCount":2,"readingTime":4.236163522012578,"subtitle":"In my previous post, “A Short Introduction to Windows Containers”, I went into some detail about the trade-offs and constraints that…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":14,"isBookmarked":false,"tags":[{"slug":"windows","name":"Windows","postCount":6572,"metadata":{"postCount":6572,"coverImage":{"id":"1*oF_Usr5oXeOFLwH_QVYpBA.jpeg","originalWidth":2388,"originalHeight":971,"isFeatured":true}},"type":"Tag"},{"slug":"golang","name":"Golang","postCount":9186,"metadata":{"postCount":9186,"coverImage":{"id":"1*9D9u62mCYT7OhB9dNxXrkw.png","originalWidth":1000,"originalHeight":1000,"isFeatured":true,"alt":"Golang gopher dropping a microphone"}},"type":"Tag"},{"slug":"containers","name":"Containers","postCount":5181,"metadata":{"postCount":5181,"coverImage":{"id":"0*WfHIi_lTVU8KlmHB.jpg","originalWidth":1024,"originalHeight":512,"isFeatured":true}},"type":"Tag"},{"slug":"open-source","name":"Open Source","postCount":24377,"metadata":{"postCount":24377,"coverImage":{"id":"1*X9X9qmOZ8dlpAn0Rs-b2BA.png","originalWidth":2086,"originalHeight":1610,"isFeatured":true}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":278980,"metadata":{"postCount":278980,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://www.nomadproject.io/docs/drivers/raw_exec.html","alts":[],"httpStatus":200},{"url":"https://nomadproject.io","alts":[],"httpStatus":200},{"url":"https://medium.com/jettech/a-short-introduction-to-windows-containers-db5adc0db536","alts":[{"type":3,"url":"medium://p/db5adc0db536"},{"type":2,"url":"medium://p/db5adc0db536"}],"httpStatus":200},{"url":"https://github.com/jet/damon/blob/master/README.md","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/windows/desktop/procthread/job-objects","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-createjobobjecta","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/windows/desktop/api/processthreadsapi/nf-processthreadsapi-createprocessa","alts":[],"httpStatus":200},{"url":"http://careers.jet.com/results?q=engineering","alts":[],"httpStatus":200},{"url":"https://github.com/jet/damon","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/windows/desktop/api/processthreadsapi/nf-processthreadsapi-resumethread","alts":[],"httpStatus":200},{"url":"https://msdn.microsoft.com/en-us/46f7c579-e8d3-4434-a6ce-56573cd84387","alts":[],"httpStatus":200},{"url":"https://msdn.microsoft.com/en-us/library/windows/desktop/ms681949(v=vs.85).aspx","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1544556409276},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":132,"sectionCount":2,"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":"containing-windows-executables-with-damon","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"containing-windows-executables-with-damon-898ab4a31ea4","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*E-pMdtBaa9WcjCl0yCRo0g.jpeg","originalWidth":1920,"originalHeight":1386,"isFeatured":true}},{"name":"6df8","type":3,"text":"Containing Windows Executables with Damon","markups":[],"alignment":1},{"name":"cf92","type":1,"text":"In my previous post, “A Short Introduction to Windows Containers”, I went into some…","markups":[{"type":3,"start":22,"end":64,"href":"https://medium.com/jettech/a-short-introduction-to-windows-containers-db5adc0db536","title":"","rel":"","anchorType":0}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"In my previous post, “A Short Introduction to Windows Containers”, I went into some detail about the trade-offs and constraints that…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"6df8","type":3,"text":"Containing Windows Executables with Damon","markups":[]},{"name":"bd72","type":4,"text":"","markups":[],"layout":3,"metadata":{"id":"1*E-pMdtBaa9WcjCl0yCRo0g.jpeg","originalWidth":1920,"originalHeight":1386,"isFeatured":true}},{"name":"cf92","type":1,"text":"In my previous post, “A Short Introduction to Windows Containers”, I went into some detail about the trade-offs and constraints that you’ll have to deal with when working with Windows Containers. But what if you don’t want to deal with any of that? If you want true isolation, there isn’t…","markups":[{"type":3,"start":22,"end":64,"href":"https://medium.com/jettech/a-short-introduction-to-windows-containers-db5adc0db536","title":"","rel":"","anchorType":0}]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"In my previous post, “A Short Introduction to Windows Containers”, I went into some detail about the trade-offs and constraints that…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"db5adc0db536":{"id":"db5adc0db536","versionId":"d6085787bb26","creatorId":"a4b6914725f8","homeCollectionId":"ae6c8c33b4b1","title":"A short introduction to Windows Containers","detectedLanguage":"en","latestVersion":"d6085787bb26","latestPublishedVersion":"d6085787bb26","hasUnpublishedEdits":false,"latestRev":1597,"createdAt":1541384423480,"updatedAt":1545278407463,"acceptedAt":0,"firstPublishedAt":1544553780999,"latestPublishedAt":1545278407463,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Windows has containers too! But how do they work? How are they different from Linux containers?","postDisplay":{"coverless":true},"metaDescription":"Windows has containers too! But how do they work? How are they different from Linux containers? Find out about how they work and the trade-offs that were made to get bring them to Windows."},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*yziiye6USiMCvXsExscEQA.jpeg","filter":"","backgroundSize":"","originalWidth":2250,"originalHeight":1500,"strategy":"resample","height":0,"width":0},"wordCount":1376,"imageCount":9,"readingTime":6.392452830188679,"subtitle":"Windows has containers too! But how do they work? How are they different from Linux containers?","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":58,"isBookmarked":false,"tags":[{"slug":"docker","name":"Docker","postCount":25690,"metadata":{"postCount":25690,"coverImage":{"id":"1*WjgXCQVqiLTJtzVDjci0fA.png","originalWidth":737,"originalHeight":572,"isFeatured":true}},"type":"Tag"},{"slug":"windows","name":"Windows","postCount":6572,"metadata":{"postCount":6572,"coverImage":{"id":"1*oF_Usr5oXeOFLwH_QVYpBA.jpeg","originalWidth":2388,"originalHeight":971,"isFeatured":true}},"type":"Tag"},{"slug":"containers","name":"Containers","postCount":5181,"metadata":{"postCount":5181,"coverImage":{"id":"0*WfHIi_lTVU8KlmHB.jpg","originalWidth":1024,"originalHeight":512,"isFeatured":true}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":278980,"metadata":{"postCount":278980,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"},{"slug":"devops","name":"DevOps","postCount":28525,"metadata":{"postCount":28525,"coverImage":{"id":"0*WfHIi_lTVU8KlmHB.jpg","originalWidth":1024,"originalHeight":512,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://medium.com/jettech/containing-windows-executables-with-damon-898ab4a31ea4","alts":[{"type":2,"url":"medium://p/898ab4a31ea4"},{"type":3,"url":"medium://p/898ab4a31ea4"}],"httpStatus":200},{"url":"https://azure.microsoft.com/en-us/blog/nested-virtualization-in-azure/","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/windows-server/get-started/powershell-on-nano-server#differences-in-powershell-on-nano-server","alts":[],"httpStatus":200},{"url":"http://careers.jet.com/results?q=engineering","alts":[],"httpStatus":200},{"url":"https://msdn.microsoft.com/en-us/magazine/mt797649","alts":[],"httpStatus":200},{"url":"https://twitter.com/thomzuehlke","alts":[{"type":2,"url":"twitter://user?screen_name=thomzuehlke"},{"type":3,"url":"twitter://user?screen_name=thomzuehlke"}],"httpStatus":200},{"url":"https://www.youtube.com/watch?v=Kh0Y2hVe_bw&t=6","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?v=Kh0Y2hVe_bw&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?v=Kh0Y2hVe_bw&feature=applinks"}],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1545278408106},"isLockedPreviewOnly":false,"metaDescription":"Windows has containers too! But how do they work? How are they different from Linux containers? Find out about how they work and the trade-offs that were made to get bring them to Windows.","totalClapCount":489,"sectionCount":3,"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":"a-short-introduction-to-windows-containers","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"a-short-introduction-to-windows-containers-db5adc0db536","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*yziiye6USiMCvXsExscEQA.jpeg","originalWidth":2250,"originalHeight":1500,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"A short introduction to Windows Containers","alignment":1},{"name":"previewSubtitle","type":13,"text":"Windows has containers too! But how do they work? How are…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Windows has containers too! But how do they work? How are they different from Linux containers?"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"cf2e","type":3,"text":"A short introduction to Windows Containers","markups":[]},{"name":"80a8","type":4,"text":"Container with a Window (you may now chuckle sensibly)","markups":[],"layout":5,"metadata":{"id":"1*yziiye6USiMCvXsExscEQA.jpeg","originalWidth":2250,"originalHeight":1500,"isFeatured":true}},{"name":"2e35","type":1,"text":"Pretty much everyone and their pet are trying to put their applications inside containers. There are talks upon talks about them and how they are changing the face of technology forever. You are probably containing some application right this minute, aren’t you? Probably using Docker, right?","markups":[]},{"name":"5a99","type":1,"text":"But, what is a…","markups":[{"type":3,"start":5,"end":24,"href":"https://www.youtube.com/watch?v=Kh0Y2hVe_bw&t=6","title":"","rel":"","anchorType":0}]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Windows has containers too! But how do they work? How are they different from Linux containers?"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"a295d21e513a":{"id":"a295d21e513a","versionId":"1d977897562c","creatorId":"918397656aa4","homeCollectionId":"ae6c8c33b4b1","title":"Automated Integration Testing","detectedLanguage":"en","latestVersion":"1d977897562c","latestPublishedVersion":"1d977897562c","hasUnpublishedEdits":false,"latestRev":2298,"createdAt":1542292987374,"updatedAt":1543275915094,"acceptedAt":0,"firstPublishedAt":1543264905563,"latestPublishedAt":1543264905563,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Integration testing for a complex system at one of the world’s largest product catalogs.","postDisplay":{"coverless":true},"metaDescription":"At Jet, we would like our customers to have the best experience possible which is why we ensure our systems are well tested before pushing to production. Testing is a necessary part of software…"},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*QcAh45dlS_pwW6wvoS7JOQ.jpeg","filter":"","backgroundSize":"","originalWidth":4032,"originalHeight":1960,"strategy":"resample","height":0,"width":0},"wordCount":1596,"imageCount":3,"readingTime":6.5726415094339625,"subtitle":"Integration testing for a complex system at one of the world’s largest product catalogs.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":19,"isBookmarked":false,"tags":[{"slug":"software-engineering","name":"Software Engineering","postCount":20107,"metadata":{"postCount":20107,"coverImage":{"id":"0*mQ_pAWWpx3LZZ34P","originalWidth":3543,"originalHeight":2365,"isFeatured":true,"unsplashPhotoId":"OqtafYT5kTw"}},"type":"Tag"},{"slug":"integration-testing","name":"Integration Testing","postCount":342,"metadata":{"postCount":342,"coverImage":{"id":"0*RWwqLSy3MEQ3Ph0V.png","originalWidth":1024,"originalHeight":512,"isFeatured":true}},"type":"Tag"},{"slug":"distributed-systems","name":"Distributed Systems","postCount":2780,"metadata":{"postCount":2780,"coverImage":{"id":"1*mBnRdy9kXHZhfzE2dti5mQ.jpeg","originalWidth":3300,"originalHeight":2550,"isFeatured":true,"focusPercentX":88,"focusPercentY":84}},"type":"Tag"},{"slug":"microservice-architecture","name":"Microservice Architecture","postCount":471,"metadata":{"postCount":471,"coverImage":{"id":"0*svLsTyjPqory4r2A.png","originalWidth":767,"originalHeight":512,"isFeatured":true,"alt":"3 figurines of male construction workers wearing yellow hats, standing on a black computer keyboard"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/Integration_testing","alts":[],"httpStatus":200},{"url":"https://www.getpostman.com/","alts":[],"httpStatus":200},{"url":"https://www.jet.com","alts":[],"httpStatus":403},{"url":"https://unsplash.com/search/photos/f%23?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","alts":[],"httpStatus":200},{"url":"https://unsplash.com/photos/0nI1DczRQAM?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","alts":[],"httpStatus":200},{"url":"http://careers.jet.com/results?q=engineering","alts":[],"httpStatus":200},{"url":"https://medium.com/@eulerfx?source=post_page","alts":[{"type":2,"url":"medium://@eulerfx"},{"type":3,"url":"medium://@eulerfx"}],"httpStatus":200},{"url":"https://medium.com/@jnovino","alts":[{"type":2,"url":"medium://@jnovino"},{"type":3,"url":"medium://@jnovino"}],"httpStatus":200}],"version":"0.3","generatedAt":1543264908170},"isLockedPreviewOnly":false,"metaDescription":"At Jet, we would like our customers to have the best experience possible which is why we ensure our systems are well tested before pushing to production. Testing is a necessary part of software…","totalClapCount":319,"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":"automated-integration-testing","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"automated-integration-testing-a295d21e513a","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*QcAh45dlS_pwW6wvoS7JOQ.jpeg","originalWidth":4032,"originalHeight":1960,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"Automated Integration Testing","alignment":1},{"name":"previewSubtitle","type":13,"text":"Integration testing for a complex system at one of the world’s largest…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Integration testing for a complex system at one of the world’s largest product catalogs."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":4,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"0306","type":3,"text":"Automated Integration Testing","markups":[{"type":1,"start":0,"end":29}]},{"name":"ec5e","type":4,"text":"Photo by Ilija Boshkov on Unsplash","markups":[{"type":3,"start":9,"end":22,"href":"https://unsplash.com/photos/0nI1DczRQAM?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","title":"","rel":"","anchorType":0},{"type":3,"start":26,"end":34,"href":"https://unsplash.com/search/photos/f%23?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText","title":"","rel":"","anchorType":0}],"layout":1,"metadata":{"id":"1*QcAh45dlS_pwW6wvoS7JOQ.jpeg","originalWidth":4032,"originalHeight":1960,"isFeatured":true}},{"name":"de37","type":1,"text":"In this post, we will be talking about integration testing for Jet’s product catalog. Testing is a necessary part of software engineering because it allows us to:","markups":[{"type":3,"start":39,"end":58,"href":"https://en.wikipedia.org/wiki/Integration_testing","title":"","rel":"","anchorType":0},{"type":3,"start":63,"end":66,"href":"https://www.jet.com","title":"","rel":"","anchorType":0}]},{"name":"5b3d","type":10,"text":"ensure that each feature developed operates as expected.","markups":[]},{"name":"21a5","type":10,"text":"save time taken by manual testing.","markups":[]},{"name":"0050","type":10,"text":"increase design and implementation flexibility by having a specification…","markups":[]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Integration testing for a complex system at one of the world’s largest product catalogs."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"9e5669bd53ab":{"id":"9e5669bd53ab","versionId":"a3d9bb2879b9","creatorId":"2f0ede995d2b","homeCollectionId":"ae6c8c33b4b1","title":"Microservices to Workflows: The Evolution of Jet’s Order Management System","detectedLanguage":"en","latestVersion":"a3d9bb2879b9","latestPublishedVersion":"a3d9bb2879b9","hasUnpublishedEdits":false,"latestRev":5923,"createdAt":1534439251141,"updatedAt":1542072925337,"acceptedAt":0,"firstPublishedAt":1541772671829,"latestPublishedAt":1542072925337,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Written By: James Novino","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*SFxDzPCasVgi1ihRnrFQJQ.png","filter":"","backgroundSize":"","originalWidth":1372,"originalHeight":1007,"strategy":"resample","height":0,"width":0},"wordCount":2243,"imageCount":4,"readingTime":9.164150943396226,"subtitle":"Written By: James Novino","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":64,"isBookmarked":false,"tags":[{"slug":"microservices","name":"Microservices","postCount":9404,"metadata":{"postCount":9404,"coverImage":{"id":"1*WjgXCQVqiLTJtzVDjci0fA.png","originalWidth":737,"originalHeight":572,"isFeatured":true}},"type":"Tag"},{"slug":"fsharp","name":"Fsharp","postCount":411,"metadata":{"postCount":411,"coverImage":{"id":"1*zvHkz8SUJ8u7BktJSW1P1g.jpeg","originalWidth":2999,"originalHeight":1365,"isFeatured":true}},"type":"Tag"},{"slug":"workflow","name":"Workflow","postCount":2913,"metadata":{"postCount":2913,"coverImage":{"id":"1*7vq8aPvlFXemG_URVa_7lw.jpeg","originalWidth":1597,"originalHeight":595,"isFeatured":true}},"type":"Tag"},{"slug":"workflow-automation","name":"Workflow Automation","postCount":530,"metadata":{"postCount":530,"coverImage":{"id":"1*ZhzHQ8iwYkdEPHH7iG33EA.png","originalWidth":782,"originalHeight":585}},"type":"Tag"},{"slug":"workflow-management","name":"Workflow Management","postCount":165,"metadata":{"postCount":165,"coverImage":{"id":"1*G4zI_hs0AS17ueKb4eoeQQ.png","originalWidth":908,"originalHeight":237,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":7,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/Service-oriented_architecture","alts":[],"httpStatus":200},{"url":"https://aws.amazon.com/lambda/","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Directed_acyclic_graph","alts":[],"httpStatus":200},{"url":"https://netflix.github.io/conductor/","alts":[],"httpStatus":200},{"url":"https://careers.jet.com/results?q=engineer&page=1&sort=rank&expand=department,type&jobCareerArea=all","alts":[],"httpStatus":200},{"url":"https://workflowengine.io/features/","alts":[],"httpStatus":200},{"url":"https://medium.com/jettech/observability-using-abstracted-io-8689bcf31fea","alts":[{"type":2,"url":"medium://p/8689bcf31fea"},{"type":3,"url":"medium://p/8689bcf31fea"}],"httpStatus":200},{"url":"https://medium.com/jettech/scaling-microservices-jet-com-4a5bf0eaad92","alts":[{"type":2,"url":"medium://p/4a5bf0eaad92"},{"type":3,"url":"medium://p/4a5bf0eaad92"}],"httpStatus":200},{"url":"https://medium.com/jettech/abstracting-io-using-f-dc841519610e","alts":[{"type":2,"url":"medium://p/dc841519610e"},{"type":3,"url":"medium://p/dc841519610e"}],"httpStatus":200},{"url":"https://medium.com/jettech/f-microservice-patterns-jet-com-98b5f7025423","alts":[{"type":2,"url":"medium://p/98b5f7025423"},{"type":3,"url":"medium://p/98b5f7025423"}],"httpStatus":200},{"url":"https://msdn.microsoft.com/en-us/library/jj684582.aspx","alts":[],"httpStatus":200},{"url":"https://states-language.net/spec.html","alts":[],"httpStatus":200},{"url":"https://queue.acm.org/detail.cfm?id=3025012","alts":[],"httpStatus":200},{"url":"https://www.microsoft.com/en-us/cloud-platform/biztalk","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1542072927585},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":422,"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":"microservices-to-workflows-the-evolution-of-jets-order-management-system","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"microservices-to-workflows-the-evolution-of-jets-order-management-system-9e5669bd53ab","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*SFxDzPCasVgi1ihRnrFQJQ.png","originalWidth":1372,"originalHeight":1007,"isFeatured":true}},{"name":"920b","type":3,"text":"Microservices to Workflows: The Evolution of Jet’s Order Management System","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Written By: James Novino"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":4,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"920b","type":3,"text":"Microservices to Workflows: The Evolution of Jet’s Order Management System","markups":[]},{"name":"e85d","type":1,"text":"Written By: James Novino","markups":[]},{"name":"53e2","type":1,"text":"The Order Management System (OMS) at Jet is responsible for a number of business functions:","markups":[]},{"name":"6115","type":9,"text":"Order Initialization and Verifications","markups":[]},{"name":"b366","type":9,"text":"Charging / Credits / Money Management","markups":[]},{"name":"9907","type":9,"text":"Order Fulfillment Integrations","markups":[]},{"name":"49fc","type":9,"text":"Order History","markups":[]},{"name":"f6e4","type":9,"text":"Concessions (Refunds, Returns, etc. )","markups":[]},{"name":"3d25","type":1,"text":"These flows are asynchronous processes that are currently executed in a…","markups":[{"type":3,"start":72,"end":107,"href":"https://en.wikipedia.org/wiki/Service-oriented_architecture","title":"","rel":"","anchorType":0}]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Written By: James Novino"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"fc52c4336bb3":{"id":"fc52c4336bb3","versionId":"7808474ef3ad","creatorId":"d09724bb73dc","homeCollectionId":"ae6c8c33b4b1","title":"Using Natural Language Processing to Classify and Analyze User Feedback","detectedLanguage":"en","latestVersion":"7808474ef3ad","latestPublishedVersion":"7808474ef3ad","hasUnpublishedEdits":false,"latestRev":455,"createdAt":1538405615021,"updatedAt":1541631733317,"acceptedAt":0,"firstPublishedAt":1541624375575,"latestPublishedAt":1541631733317,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Hello! My name is Jayant Madugula and I’m currently a senior at Columbia University studying Computer Science. This was my second summer…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*hAgjiGzMKFWJncqF5PDCoA.png","filter":"","backgroundSize":"","originalWidth":2048,"originalHeight":1097,"strategy":"resample","height":0,"width":0},"wordCount":2093,"imageCount":4,"readingTime":8.59811320754717,"subtitle":"Hello! My name is Jayant Madugula and I’m currently a senior at Columbia University studying Computer Science. This was my second summer…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":28,"isBookmarked":false,"tags":[{"slug":"machine-learning","name":"Machine Learning","postCount":114385,"metadata":{"postCount":114385,"coverImage":{"id":"1*CE4B1cQRXbMnPwKTnryI5A.jpeg","originalWidth":1920,"originalHeight":1280,"isFeatured":true}},"type":"Tag"},{"slug":"nlp","name":"NLP","postCount":8532,"metadata":{"postCount":8532,"coverImage":{"id":"1*gRNu1wGJ-67SOS6yryQu0A.jpeg","originalWidth":2800,"originalHeight":1866,"isFeatured":true}},"type":"Tag"},{"slug":"analysis","name":"Analysis","postCount":8547,"metadata":{"postCount":8547,"coverImage":{"id":"0*xTJw6T7OHKpZ6nw7.png","originalWidth":601,"originalHeight":227,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/F1_score","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Stop_words","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Lemmatisation","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Topic_model","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Contraction_(grammar)","alts":[],"httpStatus":200},{"url":"https://pandas.pydata.org","alts":[],"httpStatus":200},{"url":"http://scikit-learn.org/stable/","alts":[],"httpStatus":200},{"url":"https://spacy.io","alts":[],"httpStatus":200},{"url":"https://spacy.io/api/textcategorizer","alts":[],"httpStatus":200},{"url":"https://github.com/chartbeat-labs/textacy","alts":[],"httpStatus":200},{"url":"https://www.instagram.com/orange_couscous/","alts":[{"type":2,"url":"instagram://user?username=orange_couscous"},{"type":3,"url":"https://www.instagram.com/_u/orange_couscous/"}],"httpStatus":200},{"url":"https://github.com/bmabey/pyLDAvis","alts":[],"httpStatus":200},{"url":"http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.458.1445&rep=rep1&type=pdf","alts":[],"httpStatus":200},{"url":"http://www.aclweb.org/anthology/S15-1013","alts":[],"httpStatus":200},{"url":"https://towardsdatascience.com/yet-another-twitter-sentiment-analysis-part-1-tackling-class-imbalance-4d7a7f717d44","alts":[{"type":2,"url":"medium://p/4d7a7f717d44"},{"type":3,"url":"medium://p/4d7a7f717d44"}],"httpStatus":200}],"version":"0.3","generatedAt":1541631734462},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":162,"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"}]},"coverless":true,"slug":"jet-techblog","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"jet-techblog-fc52c4336bb3","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*hAgjiGzMKFWJncqF5PDCoA.png","originalWidth":2048,"originalHeight":1097,"isFeatured":true}},{"name":"fffc","type":3,"text":"Using Natural Language Processing to Classify and Analyze User Feedback","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Hello! My name is Jayant Madugula and I’m currently a senior at Columbia University studying Computer Science. This was my second summer…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"fffc","type":3,"text":"Using Natural Language Processing to Classify and Analyze User Feedback","markups":[]},{"name":"cbd4","type":4,"text":"Illustrations by Mengdi Zhang","markups":[{"type":3,"start":17,"end":29,"href":"https://www.instagram.com/orange_couscous/","title":"","rel":"","anchorType":0}],"layout":3,"metadata":{"id":"1*hAgjiGzMKFWJncqF5PDCoA.png","originalWidth":2048,"originalHeight":1097,"isFeatured":true}},{"name":"bd7a","type":1,"text":"Hello! My name is Jayant Madugula and I’m currently a senior at Columbia University studying Computer Science. This was my second summer interning with the iOS team at Jet. During my first summer at Jet, I saw just how important customer feedback was to design and development. As a result,…","markups":[]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Hello! My name is Jayant Madugula and I’m currently a senior at Columbia University studying Computer Science. This was my second summer…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"ca0d21fa3acd":{"id":"ca0d21fa3acd","versionId":"13bb69284698","creatorId":"75eaa8d210d7","homeCollectionId":"ae6c8c33b4b1","title":"How Jet integrates cyber security into its culture","detectedLanguage":"en","latestVersion":"13bb69284698","latestPublishedVersion":"13bb69284698","hasUnpublishedEdits":false,"latestRev":1016,"createdAt":1540251162306,"updatedAt":1540832797906,"acceptedAt":0,"firstPublishedAt":1540832797312,"latestPublishedAt":1540832797312,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"How you can make your security program fun, engaging, and embed it with your organization’s culture.","postDisplay":{"coverless":true},"metaDescription":"Advice on how to create a non-generic security awareness program that will resonant and be embraced by your company and its culture."},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*cP-4doHp5LVdIwHGZ6X4Qg.jpeg","filter":"","backgroundSize":"","originalWidth":3971,"originalHeight":2013,"strategy":"resample","height":0,"width":0},"wordCount":1159,"imageCount":2,"readingTime":4.756918238993711,"subtitle":"How you can make your security program fun, engaging, and embed it with your organization’s culture.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":14,"isBookmarked":false,"tags":[{"slug":"cybersecurity","name":"Cybersecurity","postCount":43418,"metadata":{"postCount":43418,"coverImage":{"id":"0*Ry9ZLmGVjjqUriy7.jpg","originalWidth":640,"originalHeight":479,"isFeatured":true}},"type":"Tag"},{"slug":"security","name":"Security","postCount":62109,"metadata":{"postCount":62109,"coverImage":{"id":"1*i_ODevOX3oiLR_kwsEONHA.png","originalWidth":2970,"originalHeight":1534,"isFeatured":true}},"type":"Tag"},{"slug":"security-awareness","name":"Security Awareness","postCount":201,"metadata":{"postCount":201,"coverImage":{"id":"0*93RNHncgPL9AQ6yn","originalWidth":983,"originalHeight":535,"isFeatured":true}},"type":"Tag"},{"slug":"cyber-security-awareness","name":"Cyber Security Awareness","postCount":560,"metadata":{"postCount":560,"coverImage":{"id":"0*93RNHncgPL9AQ6yn","originalWidth":983,"originalHeight":535,"isFeatured":true}},"type":"Tag"},{"slug":"culture-change","name":"Culture Change","postCount":2223,"metadata":{"postCount":2223,"coverImage":{"id":"1*I7ilbc10FVHpMzXkcLOvaQ.jpeg","originalWidth":1024,"originalHeight":768,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":3,"links":{"entries":[{"url":"https://jet.com/c/brands/uniquely-j/45900151","alts":[],"httpStatus":403},{"url":"https://phased-westus.jet.com/product/Uniquely-J-Organic-Light-Blue-Agave-Nectar-235-oz/28abac97c833444bbb2bde79e8812f32","alts":[],"httpStatus":403},{"url":"https://jet.com/c/pantry-and-household/shop-by-brand/uniquely-j/beverages/1499101538?experienceId=21","alts":[],"httpStatus":403},{"url":"https://careers.jet.com/technology","alts":[],"httpStatus":200},{"url":"https://bugcrowd.com/jet","alts":[],"httpStatus":200},{"url":"https://hobokenlife.co/2018/05/02/njs-jet-com-hosts-cyber-security-event-take-kids-work-day/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1540832801278},"isLockedPreviewOnly":false,"metaDescription":"Advice on how to create a non-generic security awareness program that will resonant and be embraced by your company and its culture.","totalClapCount":255,"sectionCount":6,"readingList":0,"topics":[{"topicId":"d4e7f4144ac5","slug":"cybersecurity","createdAt":1493946839810,"deletedAt":0,"image":{"id":"1*JpJUz3WBPiQG5vkJ9WY8rw@2x.jpeg","originalWidth":6000,"originalHeight":4000},"name":"Cybersecurity","description":"Towards a more perfect password.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Cybersecurity News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"how-jet-integrates-cyber-security-into-its-culture","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"how-jet-integrates-cyber-security-into-its-culture-ca0d21fa3acd","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*cP-4doHp5LVdIwHGZ6X4Qg.jpeg","originalWidth":3971,"originalHeight":2013,"isFeatured":true}},{"name":"5fd4","type":3,"text":"How Jet integrates cyber security into its culture","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"How you can make your security program fun, engaging, and embed it with your organization’s culture."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"5fd4","type":3,"text":"How Jet integrates cyber security into its culture","markups":[]},{"name":"641a","type":1,"text":"Are you a cyber security super star? Jet.com’s Security team is growing and we have several open positions currently around application security, infrastructure security, and cyber security risk. Check out our current open roles to learn more.","markups":[{"type":3,"start":206,"end":242,"href":"https://careers.jet.com/technology","title":"","rel":"","anchorType":0},{"type":2,"start":0,"end":243}]},{"name":"d1fd","type":1,"text":"Are you a security researcher or bug hunter? Check out Jet’s security bug…","markups":[{"type":3,"start":55,"end":88,"href":"https://bugcrowd.com/jet","title":"","rel":"","anchorType":0},{"type":2,"start":0,"end":89}]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"How you can make your security program fun, engaging, and embed it with your organization’s culture."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"11fdeae2549a":{"id":"11fdeae2549a","versionId":"581b99f153dd","creatorId":"ce987fb1a763","homeCollectionId":"ae6c8c33b4b1","title":"How to ensure your developers never stop learning","detectedLanguage":"en","latestVersion":"581b99f153dd","latestPublishedVersion":"581b99f153dd","hasUnpublishedEdits":false,"latestRev":4312,"createdAt":1529514012158,"updatedAt":1538668380229,"acceptedAt":0,"firstPublishedAt":1538507970852,"latestPublishedAt":1538668380229,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Great developers never stop learning. For tech companies to attract, retain, and develop top talent, it’s crucial to create an environment…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*NIxLdpWP4beqXkCY4aWd7A.png","filter":"","backgroundSize":"","originalWidth":2800,"originalHeight":1500,"strategy":"resample","height":0,"width":0},"wordCount":1081,"imageCount":7,"readingTime":5.129245283018868,"subtitle":"Great developers never stop learning. For tech companies to attract, retain, and develop top talent, it’s crucial to create an environment…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":16,"isBookmarked":false,"tags":[{"slug":"learning","name":"Learning","postCount":57040,"metadata":{"postCount":57040,"coverImage":{"id":"0*aai3nvziwZfX4kqb","originalWidth":5760,"originalHeight":3840,"isFeatured":true,"focusPercentX":49,"focusPercentY":44,"unsplashPhotoId":"4nulm-JUYFo"}},"type":"Tag"},{"slug":"learning-and-development","name":"Learning And Development","postCount":3812,"metadata":{"postCount":3812,"coverImage":{"id":"1*l2j1m2WR6aXJbU1_7dIbbg.jpeg","originalWidth":5760,"originalHeight":3840,"isFeatured":true}},"type":"Tag"},{"slug":"professional-development","name":"Professional Development","postCount":8943,"metadata":{"postCount":8943,"coverImage":{"id":"1*ONmLVy4mVekEBjOJuHtf7g.jpeg","originalWidth":1399,"originalHeight":1596,"isFeatured":true,"focusPercentX":38,"focusPercentY":32}},"type":"Tag"},{"slug":"engineering","name":"Engineering","postCount":22933,"metadata":{"postCount":22933,"coverImage":{"id":"1*1AktzTtx2ZOH1kb8yv7Piw.jpeg","originalWidth":6000,"originalHeight":4000,"isFeatured":true}},"type":"Tag"},{"slug":"growth-mindset","name":"Growth Mindset","postCount":8520,"metadata":{"postCount":8520,"coverImage":{"id":"1*raTxK-eFXWzDHBKaKnAHJQ.jpeg","originalWidth":4756,"originalHeight":4000,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://business.udemy.com/","alts":[],"httpStatus":200},{"url":"https://research.hackerrank.com/developer-skills/2018/","alts":[],"httpStatus":200},{"url":"https://www.safaribooksonline.com/","alts":[],"httpStatus":200},{"url":"http://careers.jet.com","alts":[],"httpStatus":200},{"url":"https://www.coursera.org/","alts":[],"httpStatus":200},{"url":"https://www.pluralsight.com/","alts":[],"httpStatus":200},{"url":"https://www.meetup.com/jettech/","alts":[{"type":3,"url":"meetup://JetTech/"},{"type":2,"url":"meetup://JetTech/"}],"httpStatus":200},{"url":"https://egghead.io/browse/frameworks/react","alts":[],"httpStatus":200},{"url":"https://www.instagram.com/orange_couscous/","alts":[{"type":3,"url":"https://www.instagram.com/_u/orange_couscous/"},{"type":2,"url":"instagram://user?username=orange_couscous"}],"httpStatus":200}],"version":"0.3","generatedAt":1538668383074},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":276,"sectionCount":1,"readingList":0,"topics":[{"topicId":"af49579e220a","slug":"work","createdAt":1487918186996,"deletedAt":0,"image":{"id":"1*knbAt5qCQCelKx0BDkzZpQ@2x.jpeg","originalWidth":5018,"originalHeight":3049},"name":"Work","description":"The meaning behind the meetings.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Work Life: Articles and News — 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":"how-to-ensure-your-developers-never-stop-learning","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"how-to-ensure-your-developers-never-stop-learning-11fdeae2549a","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*NIxLdpWP4beqXkCY4aWd7A.png","originalWidth":2800,"originalHeight":1500,"isFeatured":true}},{"name":"f4e1","type":3,"text":"How to ensure your developers never stop learning","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Great developers never stop learning. For tech companies to attract, retain, and develop top talent, it’s crucial to create an environment…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"f4e1","type":3,"text":"How to ensure your developers never stop learning","markups":[]},{"name":"f402","type":4,"text":"Illustration by Mengdi Zhang","markups":[{"type":3,"start":16,"end":28,"href":"https://www.instagram.com/orange_couscous/","title":"","rel":"","anchorType":0}],"layout":1,"metadata":{"id":"1*NIxLdpWP4beqXkCY4aWd7A.png","originalWidth":2800,"originalHeight":1500,"isFeatured":true}},{"name":"0073","type":1,"text":"Great developers never stop learning. For tech companies to attract, retain, and develop top talent, it’s crucial to create an environment that prioritizes continuous learning and growth.","markups":[],"hasDropCap":true},{"name":"0bd3","type":1,"text":"In the 2018 Hacker Rank Survey –– which received nearly 40,000 responses –– professional growth and learning was found to be one of…","markups":[{"type":3,"start":7,"end":30,"href":"https://research.hackerrank.com/developer-skills/2018/","title":"","rel":"noopener","anchorType":0}]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Great developers never stop learning. For tech companies to attract, retain, and develop top talent, it’s crucial to create an environment…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"78fdeb7ab5e8":{"id":"78fdeb7ab5e8","versionId":"4158e191c0b9","creatorId":"46204677c1ee","homeCollectionId":"ae6c8c33b4b1","title":"Feature Toggles Give You Superpowers","detectedLanguage":"en","latestVersion":"4158e191c0b9","latestPublishedVersion":"4158e191c0b9","hasUnpublishedEdits":false,"latestRev":2533,"createdAt":1533575586971,"updatedAt":1539781568568,"acceptedAt":0,"firstPublishedAt":1537815441021,"latestPublishedAt":1539781568568,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Feature toggles (or feature flags) are a technique in software development for adding functionality in such a way that it can be turned on…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*D-1ZseTgyDMJ29C82ZBinQ.png","filter":"","backgroundSize":"","originalWidth":2800,"originalHeight":1500,"strategy":"resample","height":0,"width":0},"wordCount":1386,"imageCount":1,"readingTime":5.430188679245283,"subtitle":"Feature toggles (or feature flags) are a technique in software development for adding functionality in such a way that it can be turned on…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":42,"isBookmarked":false,"tags":[{"slug":"continuous-delivery","name":"Continuous Delivery","postCount":3096,"metadata":{"postCount":3096,"coverImage":{"id":"0*WfHIi_lTVU8KlmHB.jpg","originalWidth":1024,"originalHeight":512,"isFeatured":true}},"type":"Tag"},{"slug":"feature-flags","name":"Feature Flags","postCount":208,"metadata":{"postCount":208,"coverImage":{"id":"1*-wzkd38oyBKuX6RyuUkw3A.jpeg","originalWidth":3000,"originalHeight":1682,"isFeatured":true}},"type":"Tag"},{"slug":"feature-toggles","name":"Feature Toggles","postCount":78,"metadata":{"postCount":78,"coverImage":{"id":"0*_K5ir2AeCo9imEUb","originalWidth":421,"originalHeight":311,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":89589,"metadata":{"postCount":89589,"coverImage":{"id":"1*CE4B1cQRXbMnPwKTnryI5A.jpeg","originalWidth":1920,"originalHeight":1280,"isFeatured":true}},"type":"Tag"},{"slug":"software-engineering","name":"Software Engineering","postCount":20107,"metadata":{"postCount":20107,"coverImage":{"id":"0*mQ_pAWWpx3LZZ34P","originalWidth":3543,"originalHeight":2365,"isFeatured":true,"unsplashPhotoId":"OqtafYT5kTw"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://careers.jet.com/results?q=engineer&page=1&sort=rank&expand=department,type&jobCareerArea=all","alts":[],"httpStatus":200},{"url":"https://www.consul.io/","alts":[],"httpStatus":200},{"url":"https://launchdarkly.com/","alts":[],"httpStatus":200},{"url":"https://martinfowler.com/bliki/FeatureBranch.html","alts":[],"httpStatus":200},{"url":"https://martinfowler.com/articles/feature-toggles.html","alts":[],"httpStatus":200},{"url":"https://www.instagram.com/orange_couscous/","alts":[{"type":3,"url":"https://www.instagram.com/_u/orange_couscous/"},{"type":2,"url":"instagram://user?username=orange_couscous"}],"httpStatus":200},{"url":"https://github.com/Unleash/unleash","alts":[],"httpStatus":200},{"url":"https://www.npmjs.com/package/feature-toggle","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1539781569880},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":494,"sectionCount":2,"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":"feature-toggles-give-you-superpowers","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"feature-toggles-give-you-superpowers-78fdeb7ab5e8","previewContent":{"bodyModel":{"paragraphs":[{"name":"52bd","type":3,"text":"Feature Toggles Give You Superpowers","markups":[],"alignment":1},{"name":"5b7f","type":4,"text":"","markups":[{"type":3,"start":16,"end":28,"href":"https://www.instagram.com/orange_couscous/","title":"","rel":"","anchorType":0}],"layout":10,"metadata":{"id":"1*D-1ZseTgyDMJ29C82ZBinQ.png","originalWidth":2800,"originalHeight":1500}},{"name":"44c2","type":1,"text":"Feature toggles (or feature flags) are a technique in software development for adding…","markups":[],"hasDropCap":true,"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Feature toggles (or feature flags) are a technique in software development for adding functionality in such a way that it can be turned on…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"52bd","type":3,"text":"Feature Toggles Give You Superpowers","markups":[]},{"name":"5b7f","type":4,"text":"Illustration by Mengdi Zhang","markups":[{"type":3,"start":16,"end":28,"href":"https://www.instagram.com/orange_couscous/","title":"","rel":"","anchorType":0}],"layout":3,"metadata":{"id":"1*D-1ZseTgyDMJ29C82ZBinQ.png","originalWidth":2800,"originalHeight":1500}},{"name":"44c2","type":1,"text":"Feature toggles (or feature flags) are a technique in software development for adding functionality in such a way that it can be turned on or off (toggled). Feature toggles fit well with the practice of Continuous Integration and Delivery (CI/CD) and with techniques like A/B testing and canary releases.","markups":[],"hasDropCap":true},{"name":"a26e","type":1,"text":"At…","markups":[]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Feature toggles (or feature flags) are a technique in software development for adding functionality in such a way that it can be turned on…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"8689bcf31fea":{"id":"8689bcf31fea","versionId":"34dedc92f4f2","creatorId":"2f0ede995d2b","homeCollectionId":"ae6c8c33b4b1","title":"Observability Using Abstracted IO","detectedLanguage":"en","latestVersion":"34dedc92f4f2","latestPublishedVersion":"34dedc92f4f2","hasUnpublishedEdits":false,"latestRev":4153,"createdAt":1533649034127,"updatedAt":1539636118128,"acceptedAt":0,"firstPublishedAt":1537810795320,"latestPublishedAt":1539636118128,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Written By: James Novino","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*IX-skrkZGwmlfW6O","filter":"","backgroundSize":"","originalWidth":1000,"originalHeight":667,"strategy":"resample","height":0,"width":0},"wordCount":2566,"imageCount":1,"readingTime":9.883018867924527,"subtitle":"Written By: James Novino","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":30,"isBookmarked":false,"tags":[{"slug":"monitoring","name":"Monitoring","postCount":3193,"metadata":{"postCount":3193,"coverImage":{"id":"0*WHPydnf7uGm5TKPx.jpg","originalWidth":1280,"originalHeight":491,"isFeatured":true}},"type":"Tag"},{"slug":"fsharp","name":"Fsharp","postCount":411,"metadata":{"postCount":411,"coverImage":{"id":"1*zvHkz8SUJ8u7BktJSW1P1g.jpeg","originalWidth":2999,"originalHeight":1365,"isFeatured":true}},"type":"Tag"},{"slug":"observability","name":"Observability","postCount":536,"metadata":{"postCount":536,"coverImage":{"id":"1*SnGn93_x4J5cC4uRPdVwzg.png","originalWidth":3584,"originalHeight":2278,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":89589,"metadata":{"postCount":89589,"coverImage":{"id":"1*CE4B1cQRXbMnPwKTnryI5A.jpeg","originalWidth":1920,"originalHeight":1280,"isFeatured":true}},"type":"Tag"},{"slug":"software","name":"Software","postCount":25016,"metadata":{"postCount":25016,"coverImage":{"id":"1*1AktzTtx2ZOH1kb8yv7Piw.jpeg","originalWidth":6000,"originalHeight":4000,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://www.nomadproject.io/","alts":[],"httpStatus":200},{"url":"https://kubernetes.io","alts":[],"httpStatus":200},{"url":"http://opentracing.io/documentation/","alts":[],"httpStatus":404},{"url":"https://medium.com/jettech/abstracting-io-using-f-dc841519610e","alts":[{"type":2,"url":"medium://p/dc841519610e"},{"type":3,"url":"medium://p/dc841519610e"}],"httpStatus":200},{"url":"https://careers.jet.com/results?q=engineer&page=1&sort=rank&expand=department,type&jobCareerArea=all","alts":[],"httpStatus":200},{"url":"https://medium.com/jettech/f-microservice-patterns-jet-com-98b5f7025423","alts":[{"type":2,"url":"medium://p/98b5f7025423"},{"type":3,"url":"medium://p/98b5f7025423"}],"httpStatus":200}],"version":"0.3","generatedAt":1539636119242},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":269,"sectionCount":2,"readingList":0,"topics":[{"topicId":"55f1c20aba7a","slug":"software-engineering","createdAt":1491949272237,"deletedAt":0,"image":{"id":"1*U8FboK4lz1wqwQC6IcqxKw@2x.jpeg","originalWidth":5507,"originalHeight":3098},"name":"Software Engineering","description":"Back-end to front-end.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Software Engineering News and Articles — Medium","type":"Topic"},{"topicId":"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":"observability-using-abstracted-io","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"observability-using-abstracted-io-8689bcf31fea","previewContent":{"bodyModel":{"paragraphs":[{"name":"ed39","type":3,"text":"Observability Using Abstracted IO","markups":[],"alignment":1},{"name":"42e5","type":1,"text":"Written By: James Novino","markups":[],"alignment":1},{"name":"83a0","type":4,"text":"","markups":[],"layout":9,"metadata":{"id":"0*IX-skrkZGwmlfW6O","originalWidth":1000,"originalHeight":667}}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Written By: James Novino"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"55f1c20aba7a","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"ed39","type":3,"text":"Observability Using Abstracted IO","markups":[]},{"name":"42e5","type":1,"text":"Written By: James Novino","markups":[]},{"name":"83a0","type":4,"text":"","markups":[],"layout":4,"metadata":{"id":"0*IX-skrkZGwmlfW6O","originalWidth":1000,"originalHeight":667}},{"name":"6266","type":1,"text":"I recently published a post about how the Order Management System (OMS) started using abstractions to deal with IO. These abstractions enable us to wrap metrics and logging around all our IO interactions to have consistent monitoring/instrumentation. This post is intended to go into a little…","markups":[{"type":3,"start":23,"end":27,"href":"https://medium.com/jettech/abstracting-io-using-f-dc841519610e","title":"","rel":"","anchorType":0}]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Written By: James Novino"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"84943cd359d4":{"id":"84943cd359d4","versionId":"1583683c06cf","creatorId":"6e52c4c05f30","homeCollectionId":"ae6c8c33b4b1","title":"Building Search into Your Application","detectedLanguage":"en","latestVersion":"1583683c06cf","latestPublishedVersion":"1583683c06cf","hasUnpublishedEdits":false,"latestRev":1545,"createdAt":1535048428346,"updatedAt":1539781385769,"acceptedAt":0,"firstPublishedAt":1537546882202,"latestPublishedAt":1539781385769,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Introduction","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*OCNvcz1E8LjX1FD3RSIW9A.png","filter":"","backgroundSize":"","originalWidth":1268,"originalHeight":1280,"strategy":"resample","height":0,"width":0},"wordCount":2228,"imageCount":6,"readingTime":9.35754716981132,"subtitle":"Introduction","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":20,"isBookmarked":false,"tags":[{"slug":"search","name":"Search","postCount":4044,"metadata":{"postCount":4044,"coverImage":{"id":"1*2vlnSk_0YlsmIirokn_5eQ.png","originalWidth":428,"originalHeight":216}},"type":"Tag"},{"slug":"search-engines","name":"Search Engines","postCount":2183,"metadata":{"postCount":2183,"coverImage":{"id":"0*O1sIIO5WY8RNZH2s.png","originalWidth":420,"originalHeight":526}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":89589,"metadata":{"postCount":89589,"coverImage":{"id":"1*CE4B1cQRXbMnPwKTnryI5A.jpeg","originalWidth":1920,"originalHeight":1280,"isFeatured":true}},"type":"Tag"},{"slug":"software-design","name":"Software Design","postCount":1007,"metadata":{"postCount":1007,"coverImage":{"id":"1*jx1s23tjvFmT5dg2CC_4-Q.jpeg","originalWidth":900,"originalHeight":610,"isFeatured":true}},"type":"Tag"},{"slug":"azure","name":"Azure","postCount":7798,"metadata":{"postCount":7798,"coverImage":{"id":"1*1HeUu7Zk3DqwfvoyGKQ23A.png","originalWidth":1264,"originalHeight":384,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/N-gram","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/azure/search/search-limits-quotas-capacity","alts":[],"httpStatus":200},{"url":"http://lucene.apache.org/","alts":[],"httpStatus":200},{"url":"https://careers.jet.com/results?q=engineer&page=1&sort=rank&expand=department,type&jobCareerArea=all","alts":[],"httpStatus":200},{"url":"https://azure.microsoft.com/en-us/pricing/details/search/","alts":[],"httpStatus":200},{"url":"https://azure.microsoft.com/en-us/services/search/","alts":[],"httpStatus":200},{"url":"https://lucene.apache.org/core/3_6_0/api/all/org/apache/lucene/analysis/ngram/EdgeNGramTokenFilter.html","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/rest/api/searchservice/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1539781387011},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":328,"sectionCount":1,"readingList":0,"topics":[]},"coverless":true,"slug":"building-search-into-your-application","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"building-search-into-your-application-84943cd359d4","previewContent":{"bodyModel":{"paragraphs":[{"name":"0a7f","type":4,"text":"","markups":[],"layout":9,"metadata":{"id":"1*OCNvcz1E8LjX1FD3RSIW9A.png","originalWidth":1268,"originalHeight":1280}},{"name":"77a2","type":3,"text":"Building Search into Your Application","markups":[],"alignment":1},{"name":"a783","type":3,"text":"Introduction","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Introduction"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"0a7f","type":4,"text":"","markups":[],"layout":4,"metadata":{"id":"1*OCNvcz1E8LjX1FD3RSIW9A.png","originalWidth":1268,"originalHeight":1280}},{"name":"77a2","type":3,"text":"Building Search into Your Application","markups":[]},{"name":"a783","type":3,"text":"Introduction","markups":[]},{"name":"4198","type":1,"text":"This summer, I interned with a new team at Jet.com that is building a multi-tenant knowledge base system for customer FAQs, service agent FAQs, and chat-bot data. My focus has been building out our search functionality. Successfully building a greenfield project involves getting many elements right from the start, and…","markups":[]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Introduction"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"8afb4157fe79":{"id":"8afb4157fe79","versionId":"8c63f3a02cac","creatorId":"2ab4d8b715cf","homeCollectionId":"ae6c8c33b4b1","title":"Interview Tips and the Hiring Process for Jet & WalmartLabs Engineering — Hoboken","detectedLanguage":"en","latestVersion":"8c63f3a02cac","latestPublishedVersion":"8c63f3a02cac","hasUnpublishedEdits":false,"latestRev":825,"createdAt":1535053856655,"updatedAt":1539781481768,"acceptedAt":0,"firstPublishedAt":1536678698249,"latestPublishedAt":1539781481768,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"In Engineering and interested in working at Jet.com or WalmartLabs in Hoboken? We’re hiring bold, kind, entrepreneurial humans! If this…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*tkKtdbvWUp7kb4U5r1cnew.jpeg","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":755,"strategy":"resample","height":0,"width":0},"wordCount":1450,"imageCount":1,"readingTime":5.6716981132075475,"subtitle":"In Engineering and interested in working at Jet.com or WalmartLabs in Hoboken? We’re hiring bold, kind, entrepreneurial humans! If this…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":23,"isBookmarked":false,"tags":[{"slug":"interview","name":"Interview","postCount":42643,"metadata":{"postCount":42643,"coverImage":{"id":"0*f1fZSYbLB8Ifklg6.png","originalWidth":1920,"originalHeight":1444,"isFeatured":true}},"type":"Tag"},{"slug":"tech-recruiting","name":"Tech Recruiting","postCount":272,"metadata":{"postCount":272,"coverImage":{"id":"1*IQCuH598pXP0ur7hC0UZJQ.jpeg","originalWidth":3528,"originalHeight":2120,"isFeatured":true}},"type":"Tag"},{"slug":"tech-interview","name":"Tech Interview","postCount":148,"metadata":{"postCount":148,"coverImage":{"id":"1*gBkMCGTAdSk4tu17SCa7RQ.png","originalWidth":1360,"originalHeight":512,"isFeatured":true}},"type":"Tag"},{"slug":"hiring","name":"Hiring","postCount":23803,"metadata":{"postCount":23803,"coverImage":{"id":"1*mMsgnA_e3mt2IcqeZ6duZQ.png","originalWidth":1280,"originalHeight":720,"isFeatured":true}},"type":"Tag"},{"slug":"engineering","name":"Engineering","postCount":22933,"metadata":{"postCount":22933,"coverImage":{"id":"1*1AktzTtx2ZOH1kb8yv7Piw.jpeg","originalWidth":6000,"originalHeight":4000,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://medium.com/jettech","alts":[{"type":2,"url":"medium://jettech"},{"type":3,"url":"medium://jettech"}],"httpStatus":200},{"url":"https://youtu.be/yApH08rXxuk","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?v=yApH08rXxuk&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?v=yApH08rXxuk&feature=applinks"}],"httpStatus":200},{"url":"https://careers.jet.com/results?q=engineer&page=1&sort=rank&expand=department,type&jobCareerArea=all","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1539781482922},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":375,"sectionCount":1,"readingList":0,"topics":[{"topicId":"af49579e220a","slug":"work","createdAt":1487918186996,"deletedAt":0,"image":{"id":"1*knbAt5qCQCelKx0BDkzZpQ@2x.jpeg","originalWidth":5018,"originalHeight":3049},"name":"Work","description":"The meaning behind the meetings.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Work Life: Articles and News — Medium","type":"Topic"}]},"coverless":true,"slug":"interview-tips-and-the-hiring-process-for-jet-walmartlabs-engineering","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"interview-tips-and-the-hiring-process-for-jet-walmartlabs-engineering-8afb4157fe79","previewContent":{"bodyModel":{"paragraphs":[{"name":"d852","type":4,"text":"","markups":[{"type":1,"start":0,"end":58}],"layout":10,"metadata":{"id":"1*tkKtdbvWUp7kb4U5r1cnew.jpeg","originalWidth":1600,"originalHeight":755}},{"name":"5a33","type":3,"text":"Interview Tips and the Hiring Process for Jet & WalmartLabs Engineering — Hoboken","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"In Engineering and interested in working at Jet.com or WalmartLabs in Hoboken? We’re hiring bold, kind, entrepreneurial humans! If this…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":true,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"d852","type":4,"text":"Hiring Process for Jet & WalmartLabs Engineering — Hoboken","markups":[{"type":1,"start":0,"end":58}],"layout":5,"metadata":{"id":"1*tkKtdbvWUp7kb4U5r1cnew.jpeg","originalWidth":1600,"originalHeight":755}},{"name":"5a33","type":3,"text":"Interview Tips and the Hiring Process for Jet & WalmartLabs Engineering — Hoboken","markups":[]},{"name":"2a93","type":1,"text":"In Engineering and interested in working at Jet.com or WalmartLabs in Hoboken? We’re hiring bold, kind, entrepreneurial humans! If this sounds like you, read on for tips to crush your application and interview process.","markups":[]},{"name":"f48d","type":1,"text":"First, a note about how we hire.","markups":[{"type":1,"start":0,"end":32}]},{"name":"7e72","type":1,"text":"Our process is built around you! That means the…","markups":[]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"In Engineering and interested in working at Jet.com or WalmartLabs in Hoboken? We’re hiring bold, kind, entrepreneurial humans! If this…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"811ba61c8c34":{"id":"811ba61c8c34","versionId":"59f979606a5f","creatorId":"f140905c374e","homeCollectionId":"ae6c8c33b4b1","title":"The Design Review","detectedLanguage":"en","latestVersion":"59f979606a5f","latestPublishedVersion":"59f979606a5f","hasUnpublishedEdits":false,"latestRev":698,"createdAt":1535553550043,"updatedAt":1536721271782,"acceptedAt":0,"firstPublishedAt":1536604415421,"latestPublishedAt":1536721271782,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"The design review, and then later in the development phase, the production readiness review, are two incredibly important parts of our…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*WZHonKCxRSWRzMNvmJ79hg.jpeg","filter":"","backgroundSize":"","originalWidth":6720,"originalHeight":4480,"strategy":"resample","height":0,"width":0},"wordCount":1510,"imageCount":1,"readingTime":5.89811320754717,"subtitle":"The design review, and then later in the development phase, the production readiness review, are two incredibly important parts of our…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":14,"isBookmarked":false,"tags":[{"slug":"sofware-development","name":"Sofware Development","postCount":195,"metadata":{"postCount":195,"coverImage":{"id":"1*1-CfvtlNK7-AFmBrZWlX4Q.jpeg","originalWidth":2000,"originalHeight":1025,"isFeatured":true,"alt":"Radiant documentation portal"}},"type":"Tag"},{"slug":"software-architecture","name":"Software Architecture","postCount":5425,"metadata":{"postCount":5425,"coverImage":{"id":"1*M22DR3WPqbWXWidYIq2GwA.png","originalWidth":1039,"originalHeight":519,"isFeatured":true}},"type":"Tag"},{"slug":"best-practices","name":"Best Practices","postCount":4671,"metadata":{"postCount":4671,"coverImage":{"id":"1*Fo9VNC5yp_AZnayb8K7B0g.jpeg","originalWidth":5760,"originalHeight":3840,"isFeatured":true}},"type":"Tag"},{"slug":"software-engineering","name":"Software Engineering","postCount":20107,"metadata":{"postCount":20107,"coverImage":{"id":"0*mQ_pAWWpx3LZZ34P","originalWidth":3543,"originalHeight":2365,"isFeatured":true,"unsplashPhotoId":"OqtafYT5kTw"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://github.com/lbacaj/design-review-template/blob/master/README.md","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1536721272204},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":265,"sectionCount":2,"readingList":0,"topics":[{"topicId":"55321ac40456","slug":"design","createdAt":1536181929758,"deletedAt":0,"image":{"id":"1*1aLu20aptPeUTDg_E8KtmA@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Design","description":"Below the surface.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Design Articles and News — Medium","type":"Topic"}]},"coverless":true,"slug":"the-design-review","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"the-design-review-811ba61c8c34","previewContent":{"bodyModel":{"paragraphs":[{"name":"4f47","type":4,"text":"","markups":[],"layout":9,"metadata":{"id":"1*WZHonKCxRSWRzMNvmJ79hg.jpeg","originalWidth":6720,"originalHeight":4480}},{"name":"efe2","type":3,"text":"The Design Review","markups":[],"alignment":1},{"name":"dda5","type":1,"text":"The design review, and then later in the development phase, the production readiness review, are two incredibly important parts…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"The design review, and then later in the development phase, the production readiness review, are two incredibly important parts of our…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"4f47","type":4,"text":"","markups":[],"layout":4,"metadata":{"id":"1*WZHonKCxRSWRzMNvmJ79hg.jpeg","originalWidth":6720,"originalHeight":4480}},{"name":"efe2","type":3,"text":"The Design Review","markups":[]},{"name":"dda5","type":1,"text":"The design review, and then later in the development phase, the production readiness review, are two incredibly important parts of our development cycle on the Jet.com engineering team. These two events are a huge part of our success; in fact, I will argue that the design review process has been…","markups":[]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"The design review, and then later in the development phase, the production readiness review, are two incredibly important parts of our…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"4a5bf0eaad92":{"id":"4a5bf0eaad92","versionId":"c02199644111","creatorId":"2f0ede995d2b","homeCollectionId":"ae6c8c33b4b1","title":"Scaling Microservices @ Jet.com","detectedLanguage":"en","latestVersion":"c02199644111","latestPublishedVersion":"c02199644111","hasUnpublishedEdits":false,"latestRev":284,"createdAt":1535399216385,"updatedAt":1539636146617,"acceptedAt":0,"firstPublishedAt":1536163772350,"latestPublishedAt":1539636146617,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Written By: James Novino","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*vgG6qMNmIv8yb1gM","filter":"","backgroundSize":"","originalWidth":1000,"originalHeight":668,"strategy":"resample","height":0,"width":0},"wordCount":1632,"imageCount":1,"readingTime":6.358490566037736,"subtitle":"Written By: James Novino","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":9,"isBookmarked":false,"tags":[{"slug":"microservices","name":"Microservices","postCount":9404,"metadata":{"postCount":9404,"coverImage":{"id":"1*WjgXCQVqiLTJtzVDjci0fA.png","originalWidth":737,"originalHeight":572,"isFeatured":true}},"type":"Tag"},{"slug":"fsharp","name":"Fsharp","postCount":411,"metadata":{"postCount":411,"coverImage":{"id":"1*zvHkz8SUJ8u7BktJSW1P1g.jpeg","originalWidth":2999,"originalHeight":1365,"isFeatured":true}},"type":"Tag"},{"slug":"scaling","name":"Scaling","postCount":1530,"metadata":{"postCount":1530,"coverImage":{"id":"1*akVOajSkjZ_ICGqkpGmaRA.jpeg","originalWidth":1280,"originalHeight":853,"isFeatured":true}},"type":"Tag"},{"slug":"software","name":"Software","postCount":25016,"metadata":{"postCount":25016,"coverImage":{"id":"1*1AktzTtx2ZOH1kb8yv7Piw.jpeg","originalWidth":6000,"originalHeight":4000,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":89589,"metadata":{"postCount":89589,"coverImage":{"id":"1*CE4B1cQRXbMnPwKTnryI5A.jpeg","originalWidth":1920,"originalHeight":1280,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/Fork%E2%80%93join_model","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Amdahl%27s_law","alts":[],"httpStatus":200},{"url":"https://www.nomadproject.io/","alts":[],"httpStatus":200},{"url":"https://kafka.apache.org/","alts":[],"httpStatus":200},{"url":"https://medium.com/jettech/f-microservice-patterns-jet-com-98b5f7025423","alts":[{"type":2,"url":"medium://p/98b5f7025423"},{"type":3,"url":"medium://p/98b5f7025423"}],"httpStatus":200},{"url":"https://careers.jet.com/results?q=engineer&page=1&sort=rank&expand=department,type&jobCareerArea=all","alts":[],"httpStatus":200},{"url":"https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/","alts":[],"httpStatus":200},{"url":"https://azure.microsoft.com/en-us/services/service-bus/","alts":[],"httpStatus":200},{"url":"https://www.ics.uci.edu/~cs223/papers/cidr07p15.pdf","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1539636148020},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":13,"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":"scaling-microservices-jet-com","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"scaling-microservices-jet-com-4a5bf0eaad92","previewContent":{"bodyModel":{"paragraphs":[{"name":"169a","type":3,"text":"Scaling Microservices @ Jet.com","markups":[],"alignment":1},{"name":"ff9f","type":1,"text":"Written By: James Novino","markups":[],"alignment":1},{"name":"e2fb","type":4,"text":"","markups":[],"layout":9,"metadata":{"id":"0*vgG6qMNmIv8yb1gM","originalWidth":1000,"originalHeight":668}}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Written By: James Novino"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"169a","type":3,"text":"Scaling Microservices @ Jet.com","markups":[]},{"name":"ff9f","type":1,"text":"Written By: James Novino","markups":[]},{"name":"e2fb","type":4,"text":"","markups":[],"layout":4,"metadata":{"id":"0*vgG6qMNmIv8yb1gM","originalWidth":1000,"originalHeight":668}},{"name":"dfae","type":1,"text":"In the previous post, I talk about how we build our microservices using the decode → handle → interpret pipeline. This post is intended to talk more about scaling those microservices as scalability is an important part of the microservice development process.","markups":[{"type":3,"start":7,"end":20,"href":"https://medium.com/jettech/f-microservice-patterns-jet-com-98b5f7025423","title":"","rel":"","anchorType":0}]},{"name":"0295","type":1,"text":"One of the main…","markups":[]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Written By: James Novino"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"98b5f7025423":{"id":"98b5f7025423","versionId":"c283b58003aa","creatorId":"2f0ede995d2b","homeCollectionId":"ae6c8c33b4b1","title":"F# Microservice Patterns @ Jet.com","detectedLanguage":"en","latestVersion":"c283b58003aa","latestPublishedVersion":"c283b58003aa","hasUnpublishedEdits":false,"latestRev":4681,"createdAt":1533647492232,"updatedAt":1554123985506,"acceptedAt":0,"firstPublishedAt":1536162008842,"latestPublishedAt":1554123985506,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Written By: James Novino","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*v1wN1UWERkTnKxwB","filter":"","backgroundSize":"","originalWidth":1000,"originalHeight":667,"strategy":"resample","height":0,"width":0},"wordCount":2144,"imageCount":1,"readingTime":8.290566037735848,"subtitle":"Written By: James Novino","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":31,"isBookmarked":false,"tags":[{"slug":"microservices","name":"Microservices","postCount":9404,"metadata":{"postCount":9404,"coverImage":{"id":"1*WjgXCQVqiLTJtzVDjci0fA.png","originalWidth":737,"originalHeight":572,"isFeatured":true}},"type":"Tag"},{"slug":"soa","name":"Soa","postCount":314,"metadata":{"postCount":314,"coverImage":{"id":"1*TJTynKpSA-Pm9oFJET8jMQ.png","originalWidth":1410,"originalHeight":1024,"isFeatured":true,"alt":"Cost per line of Code"}},"type":"Tag"},{"slug":"fsharp","name":"Fsharp","postCount":411,"metadata":{"postCount":411,"coverImage":{"id":"1*zvHkz8SUJ8u7BktJSW1P1g.jpeg","originalWidth":2999,"originalHeight":1365,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://microservices.io/patterns/microservices.html","alts":[],"httpStatus":200},{"url":"https://eventstore.org/","alts":[],"httpStatus":200},{"url":"https://medium.com/jettech/abstracting-io-using-f-dc841519610e","alts":[{"type":2,"url":"medium://p/dc841519610e"},{"type":3,"url":"medium://p/dc841519610e"}],"httpStatus":200},{"url":"https://careers.jet.com/results?q=engineer&page=1&sort=rank&expand=department,type&jobCareerArea=all","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/discriminated-unions","alts":[],"httpStatus":200},{"url":"https://kafka.apache.org/","alts":[],"httpStatus":200},{"url":"https://azure.microsoft.com/en-us/services/service-bus/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1554123986331},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":283,"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":"f-microservice-patterns-jet-com","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"f-microservice-patterns-jet-com-98b5f7025423","previewContent":{"bodyModel":{"paragraphs":[{"name":"88be","type":3,"text":"F# Microservice Patterns @ Jet.com","markups":[],"alignment":1},{"name":"a8b4","type":1,"text":"Written By: James Novino","markups":[],"alignment":1},{"name":"8016","type":4,"text":"","markups":[],"layout":9,"metadata":{"id":"0*v1wN1UWERkTnKxwB","originalWidth":1000,"originalHeight":667}}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Written By: James Novino"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"88be","type":3,"text":"F# Microservice Patterns @ Jet.com","markups":[]},{"name":"a8b4","type":1,"text":"Written By: James Novino","markups":[]},{"name":"8016","type":4,"text":"","markups":[],"layout":4,"metadata":{"id":"0*v1wN1UWERkTnKxwB","originalWidth":1000,"originalHeight":667}},{"name":"f49c","type":1,"text":"In this post, I elaborate on the details of how we build, design and scale microservices on Jet’s Order Management System (OMS). This post is an extension of Abstracting IO using F# posted previously.","markups":[{"type":3,"start":158,"end":181,"href":"https://medium.com/jettech/abstracting-io-using-f-dc841519610e","title":"","rel":"","anchorType":0}]},{"name":"7678","type":3,"text":"Background","markups":[]},{"name":"5c6c","type":1,"text":"A Microservice Architecture is a method of developing software that tries to…","markups":[{"type":3,"start":2,"end":27,"href":"https://microservices.io/patterns/microservices.html","title":"","rel":"","anchorType":0}]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Written By: James Novino"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"a0090104c007":{"id":"a0090104c007","versionId":"6578adb14baf","creatorId":"2f0ede995d2b","homeCollectionId":"ae6c8c33b4b1","title":"Pager Duty @ Jet.com","detectedLanguage":"en","latestVersion":"6578adb14baf","latestPublishedVersion":"6578adb14baf","hasUnpublishedEdits":false,"latestRev":1566,"createdAt":1534251320073,"updatedAt":1539636201220,"acceptedAt":0,"firstPublishedAt":1536072044575,"latestPublishedAt":1539636201220,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Written By: James Novino & Anthony Hobbs","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*ZodYCSOn4FdAG0x5","filter":"","backgroundSize":"","originalWidth":1000,"originalHeight":668,"strategy":"resample","height":0,"width":0},"wordCount":1831,"imageCount":4,"readingTime":7.609433962264151,"subtitle":"Written By: James Novino & Anthony Hobbs","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":32,"isBookmarked":false,"tags":[{"slug":"devops","name":"DevOps","postCount":28525,"metadata":{"postCount":28525,"coverImage":{"id":"0*WfHIi_lTVU8KlmHB.jpg","originalWidth":1024,"originalHeight":512,"isFeatured":true}},"type":"Tag"},{"slug":"pagerduty","name":"Pagerduty","postCount":46,"metadata":{"postCount":46,"coverImage":{"id":"0*ZodYCSOn4FdAG0x5","originalWidth":1000,"originalHeight":668}},"type":"Tag"},{"slug":"site-reliability","name":"Site Reliability","postCount":209,"metadata":{"postCount":209,"coverImage":{"id":"0*KxxfNSGzKRSywfzC.jpg","originalWidth":750,"originalHeight":400,"isFeatured":true}},"type":"Tag"},{"slug":"software-engineering","name":"Software Engineering","postCount":20107,"metadata":{"postCount":20107,"coverImage":{"id":"0*mQ_pAWWpx3LZZ34P","originalWidth":3543,"originalHeight":2365,"isFeatured":true,"unsplashPhotoId":"OqtafYT5kTw"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://www.pagerduty.com/","alts":[],"httpStatus":200},{"url":"https://support.pagerduty.com/docs/notification-phone-numbers","alts":[],"httpStatus":200},{"url":"https://github.com/PagerDuty/incident-response-docs","alts":[],"httpStatus":200},{"url":"https://careers.jet.com/results?q=engineer&page=1&sort=rank&expand=department,type&jobCareerArea=all","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1539636202183},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":185,"sectionCount":2,"readingList":0,"topics":[{"topicId":"55f1c20aba7a","slug":"software-engineering","createdAt":1491949272237,"deletedAt":0,"image":{"id":"1*U8FboK4lz1wqwQC6IcqxKw@2x.jpeg","originalWidth":5507,"originalHeight":3098},"name":"Software Engineering","description":"Back-end to front-end.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Software Engineering News and Articles — Medium","type":"Topic"},{"topicId":"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":"pager-duty-jet-com","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"pager-duty-jet-com-a0090104c007","previewContent":{"bodyModel":{"paragraphs":[{"name":"69f0","type":3,"text":"Pager Duty @ Jet.com","markups":[],"alignment":1},{"name":"7b71","type":1,"text":"Written By: James Novino & Anthony Hobbs","markups":[],"alignment":1},{"name":"f702","type":4,"text":"","markups":[],"layout":9,"metadata":{"id":"0*ZodYCSOn4FdAG0x5","originalWidth":1000,"originalHeight":668}}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Written By: James Novino & Anthony Hobbs"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"55f1c20aba7a","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"69f0","type":3,"text":"Pager Duty @ Jet.com","markups":[]},{"name":"7b71","type":1,"text":"Written By: James Novino & Anthony Hobbs","markups":[]},{"name":"f702","type":4,"text":"","markups":[],"layout":4,"metadata":{"id":"0*ZodYCSOn4FdAG0x5","originalWidth":1000,"originalHeight":668}},{"name":"3d42","type":1,"text":"At Jet, we utilize several different monitoring solutions, which include but are not limited to NewRelic, Splunk, and Prometheus among others. We do this to have consistent alerting across our systems, and so we are aware of the problems as they arise. We…","markups":[{"type":3,"start":318,"end":329,"href":"https://www.pagerduty.com/","title":"","rel":"nofollow","anchorType":0}]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Written By: James Novino & Anthony Hobbs"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"},"dc841519610e":{"id":"dc841519610e","versionId":"2ba59ce8d38a","creatorId":"2f0ede995d2b","homeCollectionId":"ae6c8c33b4b1","title":"Abstracting IO using F#","detectedLanguage":"en","latestVersion":"2ba59ce8d38a","latestPublishedVersion":"2ba59ce8d38a","hasUnpublishedEdits":false,"latestRev":3240,"createdAt":1532004219887,"updatedAt":1539636219157,"acceptedAt":0,"firstPublishedAt":1534786635496,"latestPublishedAt":1539636219157,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Written By: James Novino","postDisplay":{"coverless":true},"metaDescription":"How at Jet we are leveraging F# language features to abstract our IO implementations from our service users."},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*mxhWy2lwPrRLIff5Kh9YTg.jpeg","filter":"","backgroundSize":"","originalWidth":5472,"originalHeight":3648,"strategy":"resample","height":0,"width":0},"wordCount":2626,"imageCount":1,"readingTime":10.10943396226415,"subtitle":"Written By: James Novino","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":25,"isBookmarked":false,"tags":[{"slug":"fsharp","name":"Fsharp","postCount":411,"metadata":{"postCount":411,"coverImage":{"id":"1*zvHkz8SUJ8u7BktJSW1P1g.jpeg","originalWidth":2999,"originalHeight":1365,"isFeatured":true}},"type":"Tag"},{"slug":"functional-programming","name":"Functional Programming","postCount":8006,"metadata":{"postCount":8006,"coverImage":{"id":"0*h2cOgKsaX1Zorrom","originalWidth":2762,"originalHeight":4017,"isFeatured":true,"unsplashPhotoId":"eIjIn7zln2U"}},"type":"Tag"},{"slug":"async","name":"Async","postCount":613,"metadata":{"postCount":613,"coverImage":{"id":"1*fAHNsUYY969SDNdGk2LePA.jpeg","originalWidth":496,"originalHeight":255,"isFeatured":true}},"type":"Tag"},{"slug":"eventstore","name":"Eventstore","postCount":17,"metadata":{"postCount":17,"coverImage":{"id":"1*q-3iTTfvBs2l0U8pYZchiw.png","originalWidth":1241,"originalHeight":333,"isFeatured":true}},"type":"Tag"},{"slug":"kafka","name":"Kafka","postCount":2299,"metadata":{"postCount":2299,"coverImage":{"id":"1*8ZVx9mJtt-nxe5x_UOzIKA.jpeg","originalWidth":7360,"originalHeight":4912,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://careers.jet.com/results?q=engineer&page=1&sort=rank&expand=department,type&jobCareerArea=all","alts":[],"httpStatus":200},{"url":"https://eventstore.org","alts":[],"httpStatus":200},{"url":"https://github.com/fsprojects/FSharp.Control.AsyncSeq","alts":[],"httpStatus":200},{"url":"https://github.com/jet/kafunk","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/azure/storage/","alts":[],"httpStatus":200},{"url":"https://docs.microsoft.com/en-us/azure/cosmos-db/introduction","alts":[],"httpStatus":200},{"url":"https://dzone.com/articles/understanding-retry-pattern-with-exponential-back","alts":[],"httpStatus":200},{"url":"https://azure.microsoft.com/en-us/services/sql-database/","alts":[],"httpStatus":200},{"url":"https://kafka.apache.org","alts":[],"httpStatus":200},{"url":"https://azure.microsoft.com/en-us/services/service-bus/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1539636220314},"isLockedPreviewOnly":false,"metaDescription":"How at Jet we are leveraging F# language features to abstract our IO implementations from our service users.","totalClapCount":150,"sectionCount":2,"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":"abstracting-io-using-f","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"abstracting-io-using-f-dc841519610e","previewContent":{"bodyModel":{"paragraphs":[{"name":"f787","type":3,"text":"Abstracting IO using F#","markups":[],"alignment":1},{"name":"c806","type":1,"text":"Written By: James Novino","markups":[],"alignment":1},{"name":"d968","type":4,"text":"","markups":[],"layout":9,"metadata":{"id":"1*mxhWy2lwPrRLIff5Kh9YTg.jpeg","originalWidth":5472,"originalHeight":3648}}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Written By: James Novino"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ae6c8c33b4b1","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":4,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"f787","type":3,"text":"Abstracting IO using F#","markups":[]},{"name":"c806","type":1,"text":"Written By: James Novino","markups":[]},{"name":"d968","type":4,"text":"","markups":[],"layout":4,"metadata":{"id":"1*mxhWy2lwPrRLIff5Kh9YTg.jpeg","originalWidth":5472,"originalHeight":3648}},{"name":"8c81","type":1,"text":"In this post, I discuss approaches to unifying IO access pattern in F#. Unification allows us to abstract the underlying infrastructure implementations while enabling us to have consistent interfaces for all our IO patterns. Having shared access methods enabled consistent wrappings for things like retries, metrics,…","markups":[]}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Written By: James Novino"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"type":"Post"}}},"paging":{"path":"/_/api/collections/ae6c8c33b4b1/stream","next":{"to":"1534786635496","ignoredIds":[],"page":4}},"collection":{"id":"ae6c8c33b4b1","name":"Jet Tech","slug":"jettech","tags":["EVENT SOURCING","FUNCTIONAL PROGRAMMING","MICROSERVICES","ENGINEERING","FSHARP"],"creatorId":"9b1e8617170a","description":"Sharing our engineering org’s learnings & stories as we build the world’s best experience to shop curated brands and city essentials in one place.","shortDescription":"Sharing our engineering org’s learnings & stories as we…","image":{"imageId":"1*EM9URFCvZ1CvdNz3I2RcLQ.jpeg","filter":"","backgroundSize":"","originalWidth":1200,"originalHeight":1200,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":1349,"activeAt":1557352519185},"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},"logo":{"imageId":"1*NeX1QtyxRBKMftwCkTUURQ.png","filter":"","backgroundSize":"","originalWidth":1500,"originalHeight":300,"strategy":"resample","height":0,"width":0},"twitterUsername":"JetTechnology","publicEmail":"tech.lte@jet.com","collectionMastheadId":"928c539187ee","sections":[{"type":2,"collectionHeaderMetadata":{"backgroundImage":{},"logoImage":{"id":"1*2VGuR4soAG-oJKp6LI51Dw@2x.png","originalWidth":1500,"originalHeight":300,"alt":"Jet Tech"},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":4,"postIds":["f61f4b8b8ba5","69d8b9009f02","34f172b9b279","d2e74e6d6d5e"]}},{"type":3,"promoMetadata":{"sectionHeader":"","promoId":"5c62c201c614"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":["8348c05b304d","f248aa05f2f2","9ee419690a3a","7db2193d1ff6","f40af12a1c39","2cbfd8c79724","af82110a0207","2573debb685e","898ab4a31ea4","db5adc0db536","a295d21e513a","9e5669bd53ab","fc52c4336bb3","ca0d21fa3acd","11fdeae2549a","78fdeb7ab5e8","8689bcf31fea","84943cd359d4","8afb4157fe79","811ba61c8c34","4a5bf0eaad92","98b5f7025423","a0090104c007","dc841519610e"]}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[]}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[]}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}}],"tintColor":"#FF211E1F","lightText":true,"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF888384","point":0},{"color":"#FF7E7A7B","point":0.1},{"color":"#FF757171","point":0.2},{"color":"#FF6B6768","point":0.3},{"color":"#FF615D5E","point":0.4},{"color":"#FF565354","point":0.5},{"color":"#FF4B4949","point":0.6},{"color":"#FF403E3E","point":0.7},{"color":"#FF343333","point":0.8},{"color":"#FF282727","point":0.9},{"color":"#FF1B1A1A","point":1}],"backgroundColor":"#FFFFFFFF"},"tintBackgroundSpectrum":{"colorPoints":[{"color":"#FF211E1F","point":0},{"color":"#FF3F3B3C","point":0.1},{"color":"#FF595556","point":0.2},{"color":"#FF716D6E","point":0.3},{"color":"#FF888485","point":0.4},{"color":"#FF9E9A9A","point":0.5},{"color":"#FFB3AFAF","point":0.6},{"color":"#FFC7C3C3","point":0.7},{"color":"#FFDBD7D7","point":0.8},{"color":"#FFEEEAEA","point":0.9},{"color":"#FFFFFDFC","point":1}],"backgroundColor":"#FF211E1F"},"highlightSpectrum":{"colorPoints":[{"color":"#FFF6F1F1","point":0},{"color":"#FFF4F0EF","point":0.1},{"color":"#FFF2EEEE","point":0.2},{"color":"#FFF0ECEC","point":0.3},{"color":"#FFEEEAEA","point":0.4},{"color":"#FFEDE8E8","point":0.5},{"color":"#FFEBE6E6","point":0.6},{"color":"#FFE9E4E4","point":0.7},{"color":"#FFE7E2E2","point":0.8},{"color":"#FFE5E0E1","point":0.9},{"color":"#FFE4DEDF","point":1}],"backgroundColor":"#FFFFFFFF"}},"navItems":[{"type":6,"title":"About","url":"https://medium.com/jettech/about"},{"type":1,"title":"FSharp","tagSlug":"fsharp","url":"https://medium.com/jettech/tagged/fsharp","source":"tagSlug"},{"type":1,"title":"Security","tagSlug":"security","url":"https://medium.com/jettech/tagged/security","source":"tagSlug"},{"type":2,"title":"Disclaimer","postId":"ba975b6b1f08","url":"https://medium.com/jettech/jet-tech-blog-disclaimer-ba975b6b1f08","source":"postId"},{"type":3,"title":"Meetups (in greater NYC area) ","url":"https://www.meetup.com/JetTech/"}],"colorBehavior":2,"instantArticlesState":0,"acceleratedMobilePagesState":0,"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"backgroundImage":{},"logoImage":{"id":"1*2VGuR4soAG-oJKp6LI51Dw@2x.png","originalWidth":1500,"originalHeight":300,"alt":"Jet Tech"},"alignment":2,"layout":5},"subscriberCount":1349,"tagline":"Sharing our engineering org’s learnings & stories as we…","type":"Collection"},"header":{"backgroundImage":{},"logoImage":{"id":"1*2VGuR4soAG-oJKp6LI51Dw@2x.png","originalWidth":1500,"originalHeight":300,"alt":"Jet Tech"},"alignment":2,"layout":5},"streamItems":[{"createdAt":1591367305427,"randomId":"c9c0e4ea711a","section":{"items":[{"post":{"postId":"f61f4b8b8ba5"},"itemType":"post"},{"post":{"postId":"69d8b9009f02"},"itemType":"post"},{"post":{"postId":"34f172b9b279"},"itemType":"post"},{"post":{"postId":"d2e74e6d6d5e"},"itemType":"post"}],"layout":4},"itemType":"section","type":"StreamItem"},{"createdAt":1591367305427,"randomId":"e5e5c235fa6f","section":{"items":[{"promo":{"promoId":"5c62c201c614"},"itemType":"promo"}],"layout":2},"itemType":"section","type":"StreamItem"},{"createdAt":1591367305428,"randomId":"95d6808f69df","section":{"items":[{"post":{"postId":"8348c05b304d"},"itemType":"post"},{"post":{"postId":"f248aa05f2f2"},"itemType":"post"},{"post":{"postId":"9ee419690a3a"},"itemType":"post"},{"post":{"postId":"7db2193d1ff6"},"itemType":"post"},{"post":{"postId":"f40af12a1c39"},"itemType":"post"},{"post":{"postId":"2cbfd8c79724"},"itemType":"post"},{"post":{"postId":"af82110a0207"},"itemType":"post"},{"post":{"postId":"2573debb685e"},"itemType":"post"},{"post":{"postId":"898ab4a31ea4"},"itemType":"post"},{"post":{"postId":"db5adc0db536"},"itemType":"post"},{"post":{"postId":"a295d21e513a"},"itemType":"post"},{"post":{"postId":"9e5669bd53ab"},"itemType":"post"},{"post":{"postId":"fc52c4336bb3"},"itemType":"post"},{"post":{"postId":"ca0d21fa3acd"},"itemType":"post"},{"post":{"postId":"11fdeae2549a"},"itemType":"post"},{"post":{"postId":"78fdeb7ab5e8"},"itemType":"post"},{"post":{"postId":"8689bcf31fea"},"itemType":"post"},{"post":{"postId":"84943cd359d4"},"itemType":"post"},{"post":{"postId":"8afb4157fe79"},"itemType":"post"},{"post":{"postId":"811ba61c8c34"},"itemType":"post"},{"post":{"postId":"4a5bf0eaad92"},"itemType":"post"},{"post":{"postId":"98b5f7025423"},"itemType":"post"},{"post":{"postId":"a0090104c007"},"itemType":"post"},{"post":{"postId":"dc841519610e"},"itemType":"post"}],"layout":4},"itemType":"section","type":"StreamItem"}]})
// ]]></script><script>window.PARSELY = window.PARSELY || { autotrack: false }</script><script id="parsely-cfg" src="//d1z2jf7jlzjs58.cloudfront.net/keys/medium.com/p.js"></script><script type="text/javascript">(function(b,r,a,n,c,h,_,s,d,k){if(!b[n]||!b[n]._q){for(;s<_.length;)c(h,_[s++]);d=r.createElement(a);d.async=1;d.src="https://cdn.branch.io/branch-latest.min.js";k=r.getElementsByTagName(a)[0];k.parentNode.insertBefore(d,k);b[n]=h}})(window,document,"script","branch",function(b,r){b[r]=function(){b._q.push([r,arguments])}},{_q:[],_v:1},"addListener applyCode autoAppIndex banner closeBanner closeJourney creditHistory credits data deepview deepviewCta first getCode init link logout redeem referrals removeListener sendSMS setBranchViewData setIdentity track validateCode trackCommerceEvent logEvent".split(" "), 0); branch.init('key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm', {'no_journeys': true, 'disable_exit_animation': true, 'disable_entry_animation': true, 'tracking_disabled':  false }, function(err, data) {});</script></body></html>