CINXE.COM

Latest stories published on Outfit7 – Medium

<!DOCTYPE html><html xmlns:cc="http://creativecommons.org/ns#"><head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# medium-com: http://ogp.me/ns/fb/medium-com#"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=contain"><title>Latest stories published on Outfit7 – Medium</title><link rel="canonical" href="https://medium.com/outfit7/latest"><meta name="robots" content="index,follow"><meta name="title" content="Latest stories published on Outfit7 – Medium"><meta name="referrer" content="unsafe-url"><meta name="description" content="Read the latest stories published by Outfit7. The inside scoop on development, engineering &amp; tech innovation @ Outfit7."><meta name="keywords" content="TECHNOLOGY, ENGINEERING, SOFTWARE DEVELOPMENT, GAME DEVELOPMENT, PROGRAMMING"><meta name="theme-color" content="#000000"><meta property="og:title" content="Latest stories published on Outfit7 – Medium"><meta property="twitter:title" content="Latest stories published on Outfit7 – Medium"><meta property="og:url" content="https://medium.com/outfit7/latest"><meta property="og:image" content="https://cdn-images-1.medium.com/max/1200/1*dCIQWfMya9g57UUL2ZzrJQ.png"><meta property="fb:app_id" content="542599432471018"><meta property="og:description" content="Read the latest stories published by Outfit7. The inside scoop on development, engineering &amp; tech innovation @ Outfit7."><meta name="twitter:description" content="Read the latest stories published by Outfit7. The inside scoop on development, engineering &amp; tech innovation @ Outfit7."><meta name="twitter:image:src" content="https://cdn-images-1.medium.com/max/1200/1*dCIQWfMya9g57UUL2ZzrJQ.png"><meta property="og:type" content="medium-com:collection"><meta name="twitter:card" content="summary_large_image"><meta property="medium-com:creator" content="https://medium.com/@tech-at-outfit7"><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://outfit7"><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://outfit7"><meta property="al:android:url" content="medium://outfit7"><meta property="al:web:url" content="https://medium.com/outfit7/latest"><link rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml" /><link rel="alternate" href="android-app://com.medium.reader/https/medium.com/outfit7" /><link rel="stylesheet" href="https://cdn-static-1.medium.com/_/fp/css/main-branding-base.tWIMt8r3Nl52PPi9OfgcVw.12.css"><script>!function(n,e){var t,o,i,c=[],f={passive:!0,capture:!0},r=new Date,a="pointerup",u="pointercancel";function p(n,c){t||(t=c,o=n,i=new Date,w(e),s())}function s(){o>=0&&o<i-r&&(c.forEach(function(n){n(o,t)}),c=[])}function l(t){if(t.cancelable){var o=(t.timeStamp>1e12?new Date:performance.now())-t.timeStamp;"pointerdown"==t.type?function(t,o){function i(){p(t,o),r()}function c(){r()}function r(){e(a,i,f),e(u,c,f)}n(a,i,f),n(u,c,f)}(o,t):p(o,t)}}function w(n){["click","mousedown","keydown","touchstart","pointerdown"].forEach(function(e){n(e,l,f)})}w(n),self.perfMetrics=self.perfMetrics||{},self.perfMetrics.onFirstInputDelay=function(n){c.push(n),s()}}(addEventListener,removeEventListener);</script><script>document.domain = document.domain;</script><script>if (window.top !== window.self) window.location = 'about:blank';var OB_startTime = new Date().getTime(); var OB_loadErrors = []; function _onerror(e) { OB_loadErrors.push(e) }; if (document.addEventListener) document.addEventListener("error", _onerror, true); else if (document.attachEvent) document.attachEvent("onerror", _onerror); function _asyncScript(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("script"); s.type = "text/javascript"; s.async = true; s.src = u; f.parentNode.insertBefore(s, f);}function _asyncStyles(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("link"); s.rel = "stylesheet"; s.href = u; f.parentNode.insertBefore(s, f); return s}(new Image()).src = "/_/stat?event=pixel.load&origin=" + encodeURIComponent(location.origin);</script><script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga("create", "G-7JY7T788PK", "auto", {"allowLinker": true, "legacyCookieDomain": window.location.hostname});ga("send", "pageview");</script><script async src="https://www.google-analytics.com/analytics.js"></script><script>(function () {var height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; document.write("<style>section.section-image--fullBleed.is-backgrounded {padding-top: " + Math.round(1.1 * height) + "px;}section.section-image--fullScreen.is-backgrounded, section.section-image--coverFade.is-backgrounded {min-height: " + height + "px; padding-top: " + Math.round(0.5 * height) + "px;}.u-height100vh {height: " + height + "px !important;}.u-height110vh {height: " + Math.round(1.1 * height) + "px !important;}.u-minHeight100vh {min-height: " + height + "px !important;}.u-maxHeight100vh {max-height: " + height + "px !important;}section.section-image--coverFade {height: " + height + "px;}.section-aspectRatioViewportPlaceholder, .section-aspectRatioViewportCropPlaceholder {max-height: " + height + "px;}.section-aspectRatioViewportBottomSpacer, .section-aspectRatioViewportBottomPlaceholder {max-height: " + Math.round(0.5 * height) + "px;}.zoomable:before {top: " + (-1 * height) + "px; left: " + (-1 * width) + "px; padding: " + height + "px " + width + "px;}</style>");})()</script><!--[if lt IE 9]><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.12.js"></script><![endif]--><link rel="icon" href="https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19" class="js-favicon"><link rel="apple-touch-icon" sizes="152x152" href="https://cdn-images-1.medium.com/fit/c/304/304/1*dCIQWfMya9g57UUL2ZzrJQ.png"><link rel="apple-touch-icon" sizes="120x120" href="https://cdn-images-1.medium.com/fit/c/240/240/1*dCIQWfMya9g57UUL2ZzrJQ.png"><link rel="apple-touch-icon" sizes="76x76" href="https://cdn-images-1.medium.com/fit/c/152/152/1*dCIQWfMya9g57UUL2ZzrJQ.png"><link rel="apple-touch-icon" sizes="60x60" href="https://cdn-images-1.medium.com/fit/c/120/120/1*dCIQWfMya9g57UUL2ZzrJQ.png"><link rel="mask-icon" href="https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg" color="#171717"></head><body itemscope class=" browser-ie os-windows v-unbound v-glyph v-glyph--m2-unbound-source-serif-pro is-noJs"><script>document.body.className = document.body.className.replace(/(^|\s)is-noJs(\s|$)/, "$1is-js$2")</script><div class="site-main" id="container"><div class="butterBar butterBar--error"></div><div class="surface"><div id="prerendered" class="screenContent"><div class="metabar u-clearfix js-metabar"><div class="branch-journeys-top"></div><div class="js-metabarMiddle metabar-inner u-marginAuto u-maxWidth1032 u-flexCenter u-justifyContentSpaceBetween u-height65 u-xs-height56 u-paddingHorizontal20"><div class="metabar-block u-flex1 u-flexCenter"><div class="js-metabarLogoLeft"><a href="https://medium.com/" data-log-event="home" class="siteNav-logo u-fillBlack u-flex0 u-flexCenter u-paddingTop0"><span class="svgIcon svgIcon--wordmarkMedium svgIcon--120x26px u-flex"><svg class="svgIcon-use" width="120" height="26" ><path d="M29.57 1.404l.036-.008V1.12h-7.27l-6.75 15.979-6.75-15.98H1.003v.278l.035.008c1.327.302 2 .752 2 2.374v18.993c0 1.623-.676 2.073-2.003 2.374L1 25.153v.279h5.315v-.278l-.035-.008c-1.327-.302-2-.751-2-2.374V4.88l8.67 20.552h.492l8.924-21.125V23.24c-.114 1.282-.782 1.677-1.983 1.95l-.036.009v.275h9.259V25.2l-.036-.008c-1.203-.274-1.886-.67-2-1.95l-.006-19.464h.006c0-1.622.674-2.072 2-2.374zm4.23 12.582c.15-3.412 1.367-5.875 3.41-5.918.629.01 1.157.219 1.568.62.872.852 1.282 2.634 1.219 5.298h-6.198zm-.092.962h10.85v-.046c-.03-2.61-.78-4.64-2.228-6.033-1.25-1.204-3.103-1.867-5.048-1.867h-.043c-1.01 0-2.248.246-3.13.693a7.316 7.316 0 00-2.623 2.086c-1.185 1.479-1.903 3.477-2.078 5.724a13.717 13.717 0 00-.04.755c-.004.195-.005.39-.001.587.117 5.087 2.846 9.153 7.692 9.153 4.254 0 6.73-3.132 7.348-7.336l-.312-.11c-1.085 2.259-3.034 3.628-5.252 3.461-3.028-.228-5.347-3.32-5.137-7.066m23.122 6.893c-.356.85-1.099 1.319-2.094 1.319-.995 0-1.905-.689-2.552-1.939-.694-1.342-1.06-3.24-1.06-5.487 0-4.678 1.445-7.704 3.68-7.704.937 0 1.674.468 2.026 1.284v12.527zm7.198 3.335c-1.327-.316-2-.787-2-2.492V0l-8.062 2.392v.293l.05-.004c1.111-.09 1.866.064 2.304.472.343.32.51.809.51 1.498v3.11C56.033 7.25 55.088 7 53.94 7c-2.326 0-4.453.987-5.986 2.779-1.599 1.867-2.444 4.42-2.444 7.38 0 5.287 2.584 8.84 6.43 8.84 2.25 0 4.06-1.242 4.888-3.336v2.811h7.233v-.29l-.035-.008zM70.94 3.085c0-1.65-1.236-2.896-2.875-2.896-1.632 0-2.908 1.272-2.908 2.896 0 1.624 1.278 2.896 2.908 2.896 1.64 0 2.875-1.245 2.875-2.896zm1.903 22.092c-1.327-.316-2-.787-2-2.492h-.006V7.055l-7.234 2.092v.284l.043.004c1.566.14 1.994.683 1.994 2.525v13.515h7.24v-.29l-.037-.008zm18.536 0c-1.327-.316-2-.787-2-2.492V7.055L82.49 9.078v.285l.04.004c1.28.136 1.65.71 1.65 2.56v9.88c-.426.85-1.227 1.356-2.196 1.39-1.573 0-2.439-1.07-2.439-3.012V7.055l-7.234 2.092v.284l.044.004c1.565.14 1.994.683 1.994 2.525v8.362a9.443 9.443 0 00.15 1.741l.13.57C75.243 24.845 76.848 26 79.362 26c2.129 0 3.996-1.328 4.818-3.405v2.885h7.233v-.291l-.034-.012zm28.102.298v-.291l-.035-.009c-1.44-.334-2.001-.964-2.001-2.248V12.295C117.445 8.98 115.597 7 112.5 7c-2.257 0-4.16 1.314-4.893 3.36-.582-2.168-2.257-3.36-4.734-3.36-2.175 0-3.88 1.156-4.612 3.11V7.056l-7.233 2.006v.286l.043.004c1.547.138 1.994.697 1.994 2.492v13.631h6.75v-.29l-.037-.01c-1.148-.271-1.519-.767-1.519-2.04V10.95c.304-.715.917-1.562 2.127-1.562 1.504 0 2.266 1.05 2.266 3.116v12.972h6.751v-.29l-.035-.01c-1.149-.271-1.52-.767-1.52-2.04V12.294a7.107 7.107 0 00-.095-1.21c.322-.777.97-1.696 2.23-1.696 1.524 0 2.265 1.02 2.265 3.116v12.972h7.233z"/></svg></span><span class="u-textScreenReader">Homepage</span></a></div><div class="u-paddingLeft10 u-sm-show r-paddingRight10"><a href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com/outfit7%3F~feature=LoMobileNavBar&~channel=ShowCollectionHome&~stage=m2">Open in app</a></div></div><div class="metabar-block u-flex0 u-flexCenter"><div class="u-flexCenter u-height65 u-xs-height56"><div class="buttonSet buttonSet--wide u-lineHeightInherit"><a class="button button--primary button--chromeless u-accentColor--buttonNormal is-inSiteNavBar u-xs-hide js-signInButton" href="https://medium.com/m/signin?redirect=https%3A%2F%2Fmedium.com%2Foutfit7%2Flatest&amp;source=--------------------------nav_reg&amp;operation=login" data-action="sign-in-prompt" data-redirect="https://medium.com/outfit7/latest" data-action-source="--------------------------nav_reg">Sign in</a><a class="button button--primary button--withChrome u-accentColor--buttonNormal is-inSiteNavBar js-signUpButton" href="https://medium.com/m/signin?redirect=https%3A%2F%2Fmedium.com%2Foutfit7%2Flatest&amp;source=--------------------------nav_reg&amp;operation=register" data-action="sign-up-prompt" data-redirect="https://medium.com/outfit7/latest" data-action-source="--------------------------nav_reg">Get started</a></div></div></div></div></div><div class="metabar metabar--spacer js-metabarSpacer u-height65 u-xs-height56"></div><div class="collectionHeader js-collectionHeaderContainer u-relative collectionHeader--layoutMedium collectionHeader--alignmentLeft collectionHeader--withLogo collectionHeader--withBackground collectionHeader--colorBehaviorBold collectionHeader--withNavigation collectionHeader--editorLayoutTitleAndLogo is-modeView u-tintBgColor"><div class="collectionHeader-aspectRatioTable"><div class="collectionHeader-aspectRatioContent u-backgroundSizeCover js-collectionHeaderBackground" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/2400/1*lduq8q-DAzZbQ9GtDcLBvw.png&quot;); background-position: 53.57142857142857% 95.83333333333333% !important;"><div class="collectionHeader-overlayBackground u-height100vh"></div><header class="collectionHeader-heroAndInlineNav u-borderBox u-maxWidth1072 u-paddingLeft20 u-paddingRight20 u-marginAuto u-foreground js-collectionHeader"><div class="collectionHeader-hero js-collectionHeaderHero u-clearfix u-imageSpectrum"><div class="collectionHeader-heroInner"><div class="collectionHeader-logo js-collectionHeaderLogo" style="max-width: 490px;"><a class="link u-baseColor--link" href="https://medium.com/outfit7" title="Go to Outfit7" aria-label="Go to Outfit7"><div class="u-relative u-marginAuto"><div style="padding-bottom: 13.433559650824442%"></div><img class="collectionHeader-logoImage js-collectionHeaderLogoImage" src="https://cdn-images-1.medium.com/max/980/1*rsxLbtYH2VSNPlCVkyXhSw@2x.png" data-image-id="1*rsxLbtYH2VSNPlCVkyXhSw@2x.png" data-width="2062" data-height="277" /></div></a></div><div class="collectionHeader-nameAndDescription"><a class="link link--noUnderline u-baseColor--link" href="https://medium.com/outfit7" title="Go to Outfit7" aria-label="Go to Outfit7"><h1 class="collectionHeader-name js-collectionName u-foreground u-baseColor--textDark u-paddingBottom4 u-lineHeightTightest u-contentSansBold u-fontSize40 u-xs-fontSize32">The inside scoop on development, engineering &amp; tech innovation</h1></a></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/outfit7/latest">All</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/outfit7/game-dev/home">Game Dev</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/outfit7/qa/home">QA</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/outfit7/the-outfit7-tech-blog-13e11ddd19e7">About</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://outfit7.com/careers/jobs?field=technology&amp;utm_source=social&amp;utm_medium=medium&amp;utm_campaign=tech-jobs" rel="nofollow noopener" target="_blank">Jobs</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 Outfit7"><span class="svgIcon svgIcon--search svgIcon--25px u-baseColor--iconLight"><svg class="svgIcon-use" width="25" height="25" ><path d="M20.067 18.933l-4.157-4.157a6 6 0 10-.884.884l4.157 4.157a.624.624 0 10.884-.884zM6.5 11c0-2.62 2.13-4.75 4.75-4.75S16 8.38 16 11s-2.13 4.75-4.75 4.75S6.5 13.62 6.5 11z"/></svg></span><input class="js-predictiveSearchInput textInput textInput--rounded textInput--darkText u-baseColor--textNormal textInput--transparent" type="search" placeholder="Search Outfit7" required="true" data-collection-id="6ec626d5ad62" /></label><a class="button button--light button--chromeless is-touchIconBlackPulse u-baseColor--buttonLight button--withIcon button--withSvgIcon button--chromeless u-verticalAlignMiddle" href="//facebook.com/outfit7" title="Visit “Outfit7” on Facebook" aria-label="Visit “Outfit7” on Facebook" rel="me" target="_blank"><span class="button-defaultState"><span class="svgIcon svgIcon--facebookFilled svgIcon--25px"><svg class="svgIcon-use" width="25" height="25" ><path d="M21 12.646C21 7.65 16.97 3.6 12 3.6s-9 4.05-9 9.046a9.026 9.026 0 007.59 8.924v-6.376H8.395V12.64h2.193v-1.88c0-2.186 1.328-3.375 3.267-3.375.93 0 1.728.07 1.96.1V9.77H14.47c-1.055 0-1.26.503-1.26 1.242v1.63h2.517l-.33 2.554H13.21V21.6c4.398-.597 7.79-4.373 7.79-8.954"/></svg></span></span></a><a class="button button--light button--chromeless is-touchIconBlackPulse u-baseColor--buttonLight button--withIcon button--withSvgIcon button--chromeless u-verticalAlignMiddle" href="https://instagram.com/outfit7" title="Visit “Outfit7” on Instagram" aria-label="Visit “Outfit7” on Instagram" rel="me" target="_blank"><span class="button-defaultState"><span class="svgIcon svgIcon--instagram svgIcon--25px"><svg class="svgIcon-use" width="25" height="25" ><path d="M12.497 5.531c2.27 0 2.536.01 3.433.05.83.038 1.279.176 1.579.294.398.156.681.338.978.635.297.296.482.58.634.978.115.3.257.749.294 1.578.04.897.05 1.164.05 3.434 0 2.27-.01 2.537-.05 3.434-.037.83-.176 1.278-.294 1.578a2.637 2.637 0 01-.634.979 2.61 2.61 0 01-.978.634c-.3.114-.749.256-1.579.293-.897.04-1.163.05-3.433.05-2.27 0-2.537-.01-3.434-.05-.83-.037-1.278-.175-1.579-.293a2.638 2.638 0 01-.978-.634 2.596 2.596 0 01-.634-.979c-.115-.3-.256-.748-.293-1.578-.04-.897-.051-1.164-.051-3.434 0-2.27.01-2.537.05-3.434.038-.83.176-1.278.294-1.578.155-.398.337-.682.634-.978a2.6 2.6 0 01.978-.635c.3-.114.75-.256 1.579-.293.897-.044 1.164-.05 3.434-.05zm0-1.531c-2.307 0-2.598.01-3.505.05-.904.041-1.521.186-2.06.395-.56.216-1.033.51-1.505.982a4.214 4.214 0 00-.982 1.504c-.209.54-.354 1.157-.394 2.064C4.01 9.9 4 10.19 4 12.497c0 2.307.01 2.597.05 3.504.041.904.186 1.521.395 2.064.216.56.51 1.033.982 1.505s.948.762 1.504.981c.54.21 1.157.355 2.064.395.908.04 1.195.05 3.505.05 2.31 0 2.597-.01 3.505-.05.904-.04 1.52-.186 2.064-.395a4.14 4.14 0 001.504-.981c.472-.472.762-.948.982-1.505.209-.54.354-1.157.394-2.064.04-.907.051-1.194.051-3.504s-.01-2.598-.05-3.505c-.041-.904-.186-1.521-.395-2.064a4.142 4.142 0 00-.982-1.505 4.215 4.215 0 00-1.504-.981c-.54-.21-1.157-.354-2.064-.395C15.094 4.01 14.804 4 12.497 4z"/><path d="M12.496 8.132a4.365 4.365 0 000 8.73 4.367 4.367 0 004.365-4.365 4.367 4.367 0 00-4.365-4.365zm0 7.198a2.833 2.833 0 110-5.666 2.833 2.833 0 010 5.666z"/><path d="M17.034 8.979a1.019 1.019 0 100-2.038 1.019 1.019 0 000 2.038z"/></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/outfit7" data-action-source="pub_header----6ec626d5ad62----------------------follow_pub" data-collection-id="6ec626d5ad62"><span class="button-label js-buttonLabel">Follow</span></button></div></nav></div></div></div><div class="container u-maxWidth1040"><div class="row u-paddingTop20 u-paddingBottom10 u-xs-paddingTop0 js-postList"><div class="col u-xs-size12of12 u-size8of12"><nav class="u-flex heading heading--borderedBottom heading--paddedTop"><span class="u-minWidth0"><ul class="heading-tabs"><li class="heading-tabsItem u-inlineBlock js-tabsItem is-active u-fontSize16"><span class="heading-title u-inlineBlock u-fontSize16"><a class="button button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/latest">Latest</a></span></li><li class="heading-tabsItem u-inlineBlock js-tabsItem u-fontSize16"><span class="heading-title u-inlineBlock u-fontSize16"><a class="button button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/trending">Trending</a></span></li></ul></span></nav><div class="js-postListHandle"><div class="u-maxWidth600 js-postList" data-count="10"><div class="js-postListHandle"><div class="u-paddingTop20 u-paddingBottom25 u-borderBottomLight js-block"><div class="postArticle postArticle--short js-postArticle js-trackPostPresentation" data-post-id="b317a75e1447" data-source="---------0"><div class="u-clearfix u-marginBottom15 u-paddingTop5"><div class="postMetaInline u-floatLeft u-sm-maxWidthFullWidth"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@jure.gorinsek_80693" data-action="show-user-card" data-action-value="3215f0e451af" data-action-type="hover" data-user-id="3215f0e451af" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*n3730i_0LsgcubhV" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Jure Gorinsek"></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/@jure.gorinsek_80693?source=---------0" data-action="show-user-card" data-action-source="---------0" data-action-value="3215f0e451af" data-action-type="hover" data-user-id="3215f0e451af" dir="auto">Jure Gorinsek</a> in <a class="ds-link ds-link--styleSubtle link--darken link--accent u-accentColor--textNormal" href="https://medium.com/outfit7?source=---------0" data-action="show-collection-card" data-action-source="---------0" data-action-value="outfit7" data-action-type="hover">Outfit7</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><a class="link link--darken" href="https://medium.com/outfit7/new-home-for-outfit7-tech-articles-b317a75e1447?source=---------0" data-action="open-post" data-action-value="https://medium.com/outfit7/new-home-for-outfit7-tech-articles-b317a75e1447?source=---------0" data-action-source="preview-listing" ><time datetime="2024-09-26T12:16:37.939Z">Sep 26, 2024</time></a><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="2 min read"></span></div></div></div></div></div><div class="postArticle-content"><a href="https://medium.com/outfit7/new-home-for-outfit7-tech-articles-b317a75e1447?source=---------0" title="Latest stories published on Outfit7 – Medium" aria-label="Latest stories published on Outfit7 – Medium" data-action="open-post" data-action-source="---------0" data-action-value="https://medium.com/outfit7/new-home-for-outfit7-tech-articles-b317a75e1447?source=---------0" data-action-index="0" data-post-id="b317a75e1447"><section class="section section--body section--first section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><h3 name="4bb7" id="4bb7" class="graf graf--h3 graf--leading graf--title">New home for Outfit7 tech articles</h3><figure name="d96d" id="d96d" class="graf graf--figure graf--layoutConstrainedHeightPreview graf-after--h3"><div class="aspectRatioPlaceholder is-locked" style="max-width: 426.66666666666663px; max-height: 240px;"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 56.3%;"></div><img class="graf-image" data-image-id="1*Omir8OiKC9D30ujLb-QrSQ.jpeg" data-width="1200" data-height="675" src="https://cdn-images-1.medium.com/max/853/1*Omir8OiKC9D30ujLb-QrSQ.jpeg"></div></figure><p name="8d6b" id="8d6b" class="graf graf--p graf-after--figure graf--trailing">Hey, tech enthusiasts!</p></div></div></section></a></div><div class="postArticle-readMore"><a class="button button--smaller button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/new-home-for-outfit7-tech-articles-b317a75e1447?source=---------0" data-action="open-post" data-action-source="---------0" data-action-value="https://medium.com/outfit7/new-home-for-outfit7-tech-articles-b317a75e1447?source=---------0" data-post-id="b317a75e1447">Read more…</a></div><div class="u-clearfix u-paddingTop10"><div class="u-floatLeft"><div class="multirecommend js-actionMultirecommend u-flexCenter" data-post-id="b317a75e1447" data-is-flush-left="true" data-source="listing-----b317a75e1447---------------------clap_preview"><div class="u-relative u-foreground"><button class="button button--primary button--chromeless u-accentColor--buttonNormal button--withIcon button--withSvgIcon clapButton js-actionMultirecommendButton clapButton--darker" data-action="sign-up-prompt" data-sign-in-action="multivote" data-requires-token="true" data-redirect="https://medium.com/_/vote/p/b317a75e1447" data-action-source="listing-----b317a75e1447---------------------clap_preview" aria-label="Clap"><span class="button-defaultState"><span class="svgIcon svgIcon--clap svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.739 0l.761 2.966L13.261 0z"/><path d="M14.815 3.776l1.84-2.551-1.43-.471z"/><path d="M8.378 1.224l1.84 2.551L9.81.753z"/><path d="M20.382 21.622c-1.04 1.04-2.115 1.507-3.166 1.608.168-.14.332-.29.492-.45 2.885-2.886 3.456-5.982 1.69-9.211l-1.101-1.937-.955-2.02c-.315-.676-.235-1.185.245-1.556a.836.836 0 01.66-.16c.342.056.66.28.879.605l2.856 5.023c1.179 1.962 1.379 5.119-1.6 8.098m-13.29-.528l-5.02-5.02a1 1 0 01.707-1.701c.255 0 .512.098.707.292l2.607 2.607a.442.442 0 00.624-.624L4.11 14.04l-1.75-1.75a.998.998 0 111.41-1.413l4.154 4.156a.44.44 0 00.624 0 .44.44 0 000-.624l-4.152-4.153-1.172-1.171a.998.998 0 010-1.41 1.018 1.018 0 011.41 0l1.172 1.17 4.153 4.152a.437.437 0 00.624 0 .442.442 0 000-.624L6.43 8.222a.988.988 0 01-.291-.705.99.99 0 01.29-.706 1 1 0 011.412 0l6.992 6.993a.443.443 0 00.71-.501l-1.35-2.856c-.315-.676-.235-1.185.246-1.557a.85.85 0 01.66-.16c.342.056.659.28.879.606L18.628 14c1.573 2.876 1.067 5.545-1.544 8.156-1.396 1.397-3.144 1.966-5.063 1.652-1.713-.286-3.463-1.248-4.928-2.714zM10.99 5.976l2.562 2.562c-.497.607-.563 1.414-.155 2.284l.265.562-4.257-4.257a.98.98 0 01-.117-.445c0-.267.104-.517.292-.706a1.023 1.023 0 011.41 0zm8.887 2.06c-.375-.557-.902-.916-1.486-1.011a1.738 1.738 0 00-1.342.332c-.376.29-.61.656-.712 1.065a2.1 2.1 0 00-1.095-.562 1.776 1.776 0 00-.992.128l-2.636-2.636a1.883 1.883 0 00-2.658 0 1.862 1.862 0 00-.478.847 1.886 1.886 0 00-2.671-.012 1.867 1.867 0 00-.503.909c-.754-.754-1.992-.754-2.703-.044a1.881 1.881 0 000 2.658c-.288.12-.605.288-.864.547a1.884 1.884 0 000 2.659l.624.622a1.879 1.879 0 00-.91 3.16l5.019 5.02c1.595 1.594 3.515 2.645 5.408 2.959a7.16 7.16 0 001.173.098c1.026 0 1.997-.24 2.892-.7.279.04.555.065.828.065 1.53 0 2.969-.628 4.236-1.894 3.338-3.338 3.083-6.928 1.738-9.166l-2.868-5.043z"/></g></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--clapFilled svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.738 0l.762 2.966L13.262 0z"/><path d="M16.634 1.224l-1.432-.47-.408 3.022z"/><path d="M9.79.754l-1.431.47 1.84 2.552z"/><path d="M22.472 13.307l-3.023-5.32c-.287-.426-.689-.705-1.123-.776a1.16 1.16 0 00-.911.221c-.297.231-.474.515-.535.84.017.022.036.04.053.063l2.843 5.001c1.95 3.564 1.328 6.973-1.843 10.144a8.46 8.46 0 01-.549.501c1.205-.156 2.328-.737 3.351-1.76 3.268-3.268 3.041-6.749 1.737-8.914"/><path d="M12.58 9.887c-.156-.83.096-1.569.692-2.142L10.78 5.252c-.5-.504-1.378-.504-1.879 0-.178.18-.273.4-.329.63l4.008 4.005z"/><path d="M15.812 9.04c-.218-.323-.539-.55-.88-.606a.814.814 0 00-.644.153c-.176.137-.713.553-.24 1.566l1.43 3.025a.539.539 0 11-.868.612L7.2 6.378a.986.986 0 10-1.395 1.395l4.401 4.403a.538.538 0 11-.762.762L5.046 8.54 3.802 7.295a.99.99 0 00-1.396 0 .981.981 0 000 1.394L3.647 9.93l4.402 4.403a.537.537 0 010 .761.535.535 0 01-.762 0L2.89 10.696a.992.992 0 00-1.399-.003.983.983 0 000 1.395l1.855 1.854 2.763 2.765a.538.538 0 01-.76.761l-2.765-2.764a.982.982 0 00-1.395 0 .989.989 0 000 1.395l5.32 5.32c3.371 3.372 6.64 4.977 10.49 1.126C19.74 19.8 20.271 17 18.62 13.982L15.812 9.04z"/></g></svg></span></span></button></div><span class="u-relative u-background js-actionMultirecommendCount u-marginLeft5"><button class="button button--chromeless u-baseColor--buttonNormal js-multirecommendCountButton u-disablePointerEvents" data-action="show-recommends" data-action-value="b317a75e1447">51</button></span></div></div><div class="buttonSet u-floatRight"><button class="button button--dark button--chromeless is-touchIconFadeInPulse u-baseColor--buttonDark button--withIcon button--withSvgIcon button--bookmark js-bookmarkButton" data-action="add-to-bookmarks" data-action-value="b317a75e1447"><span class="js-remove-from-bookmarks u-hide"><span class="svgIcon svgIcon--bookmarkFilled svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" ><path d="M19 6c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 00.706.03L12.5 16.85l5.662 4.126c.205.183.52.17.708-.03a.5.5 0 00.118-.285H19V6z"/></svg></span></span><span class="js-add-to-bookmarks"><span class="svgIcon svgIcon--bookmarkAdd svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" fill="none" ><path d="M18 2.5a.5.5 0 011 0V5h2.5a.5.5 0 010 1H19v2.5a.5.5 0 11-1 0V6h-2.5a.5.5 0 010-1H18V2.5z" fill="#292929"/><path d="M7 7a1 1 0 011-1h3.5a.5.5 0 000-1H8a2 2 0 00-2 2v14a.5.5 0 00.805.396L12.5 17l5.695 4.396A.5.5 0 0019 21v-8.5a.5.5 0 00-1 0v7.485l-5.195-4.012a.5.5 0 00-.61 0L7 19.985V7z" fill="#292929"/></svg></span></span></button></div></div></div></div><div class="u-paddingTop20 u-paddingBottom25 u-borderBottomLight js-block"><div class="postArticle postArticle--short js-postArticle js-trackPostPresentation" data-post-id="858b9aa1baa4" data-source="---------1"><div class="u-clearfix u-marginBottom15 u-paddingTop5"><div class="postMetaInline u-floatLeft u-sm-maxWidthFullWidth"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@primoz.bevk" data-action="show-user-card" data-action-value="752fffec2a47" data-action-type="hover" data-user-id="752fffec2a47" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*Yfeh63vu0fLIS6yfY7UEkw.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Primož Bevk"></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/@primoz.bevk?source=---------1" data-action="show-user-card" data-action-source="---------1" data-action-value="752fffec2a47" data-action-type="hover" data-user-id="752fffec2a47" dir="auto">Primož Bevk</a> in <a class="ds-link ds-link--styleSubtle link--darken link--accent u-accentColor--textNormal" href="https://medium.com/outfit7?source=---------1" data-action="show-collection-card" data-action-source="---------1" data-action-value="outfit7" data-action-type="hover">Outfit7</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><a class="link link--darken" href="https://medium.com/outfit7/web-engineering-at-outfit7-a-decade-of-evolution-858b9aa1baa4?source=---------1" data-action="open-post" data-action-value="https://medium.com/outfit7/web-engineering-at-outfit7-a-decade-of-evolution-858b9aa1baa4?source=---------1" data-action-source="preview-listing" ><time datetime="2024-05-17T13:01:19.574Z">May 17, 2024</time></a><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="9 min read"></span></div></div></div></div></div><div class="postArticle-content"><a href="https://medium.com/outfit7/web-engineering-at-outfit7-a-decade-of-evolution-858b9aa1baa4?source=---------1" title="Latest stories published on Outfit7 – Medium" aria-label="Latest stories published on Outfit7 – Medium" data-action="open-post" data-action-source="---------1" data-action-value="https://medium.com/outfit7/web-engineering-at-outfit7-a-decade-of-evolution-858b9aa1baa4?source=---------1" data-action-index="1" data-post-id="858b9aa1baa4"><section class="section section--body section--first section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><figure name="previewImage" id="previewImage" class="graf graf--figure graf--layoutCroppedHeightPreview graf--leading"><div class="aspectRatioPlaceholder is-locked"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 30%;"></div><img class="graf-image" data-image-id="0*rGYh2zhhWT8BIcRf" data-width="1600" data-height="838" data-is-featured="true" src="https://cdn-images-1.medium.com/fit/t/1600/480/0*rGYh2zhhWT8BIcRf"></div></figure><h3 name="1048" id="1048" class="graf graf--h3 graf-after--figure graf--trailing graf--title"><strong class="markup--strong markup--h3-strong">Web engineering at Outfit7: A decade of evolution</strong></h3></div></div></section></a></div><div class="postArticle-readMore"><a class="button button--smaller button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/web-engineering-at-outfit7-a-decade-of-evolution-858b9aa1baa4?source=---------1" data-action="open-post" data-action-source="---------1" data-action-value="https://medium.com/outfit7/web-engineering-at-outfit7-a-decade-of-evolution-858b9aa1baa4?source=---------1" data-post-id="858b9aa1baa4">Read more…</a></div><div class="u-clearfix u-paddingTop10"><div class="u-floatLeft"><div class="multirecommend js-actionMultirecommend u-flexCenter" data-post-id="858b9aa1baa4" data-is-flush-left="true" data-source="listing-----858b9aa1baa4---------------------clap_preview"><div class="u-relative u-foreground"><button class="button button--primary button--chromeless u-accentColor--buttonNormal button--withIcon button--withSvgIcon clapButton js-actionMultirecommendButton clapButton--darker" data-action="sign-up-prompt" data-sign-in-action="multivote" data-requires-token="true" data-redirect="https://medium.com/_/vote/p/858b9aa1baa4" data-action-source="listing-----858b9aa1baa4---------------------clap_preview" aria-label="Clap"><span class="button-defaultState"><span class="svgIcon svgIcon--clap svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.739 0l.761 2.966L13.261 0z"/><path d="M14.815 3.776l1.84-2.551-1.43-.471z"/><path d="M8.378 1.224l1.84 2.551L9.81.753z"/><path d="M20.382 21.622c-1.04 1.04-2.115 1.507-3.166 1.608.168-.14.332-.29.492-.45 2.885-2.886 3.456-5.982 1.69-9.211l-1.101-1.937-.955-2.02c-.315-.676-.235-1.185.245-1.556a.836.836 0 01.66-.16c.342.056.66.28.879.605l2.856 5.023c1.179 1.962 1.379 5.119-1.6 8.098m-13.29-.528l-5.02-5.02a1 1 0 01.707-1.701c.255 0 .512.098.707.292l2.607 2.607a.442.442 0 00.624-.624L4.11 14.04l-1.75-1.75a.998.998 0 111.41-1.413l4.154 4.156a.44.44 0 00.624 0 .44.44 0 000-.624l-4.152-4.153-1.172-1.171a.998.998 0 010-1.41 1.018 1.018 0 011.41 0l1.172 1.17 4.153 4.152a.437.437 0 00.624 0 .442.442 0 000-.624L6.43 8.222a.988.988 0 01-.291-.705.99.99 0 01.29-.706 1 1 0 011.412 0l6.992 6.993a.443.443 0 00.71-.501l-1.35-2.856c-.315-.676-.235-1.185.246-1.557a.85.85 0 01.66-.16c.342.056.659.28.879.606L18.628 14c1.573 2.876 1.067 5.545-1.544 8.156-1.396 1.397-3.144 1.966-5.063 1.652-1.713-.286-3.463-1.248-4.928-2.714zM10.99 5.976l2.562 2.562c-.497.607-.563 1.414-.155 2.284l.265.562-4.257-4.257a.98.98 0 01-.117-.445c0-.267.104-.517.292-.706a1.023 1.023 0 011.41 0zm8.887 2.06c-.375-.557-.902-.916-1.486-1.011a1.738 1.738 0 00-1.342.332c-.376.29-.61.656-.712 1.065a2.1 2.1 0 00-1.095-.562 1.776 1.776 0 00-.992.128l-2.636-2.636a1.883 1.883 0 00-2.658 0 1.862 1.862 0 00-.478.847 1.886 1.886 0 00-2.671-.012 1.867 1.867 0 00-.503.909c-.754-.754-1.992-.754-2.703-.044a1.881 1.881 0 000 2.658c-.288.12-.605.288-.864.547a1.884 1.884 0 000 2.659l.624.622a1.879 1.879 0 00-.91 3.16l5.019 5.02c1.595 1.594 3.515 2.645 5.408 2.959a7.16 7.16 0 001.173.098c1.026 0 1.997-.24 2.892-.7.279.04.555.065.828.065 1.53 0 2.969-.628 4.236-1.894 3.338-3.338 3.083-6.928 1.738-9.166l-2.868-5.043z"/></g></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--clapFilled svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.738 0l.762 2.966L13.262 0z"/><path d="M16.634 1.224l-1.432-.47-.408 3.022z"/><path d="M9.79.754l-1.431.47 1.84 2.552z"/><path d="M22.472 13.307l-3.023-5.32c-.287-.426-.689-.705-1.123-.776a1.16 1.16 0 00-.911.221c-.297.231-.474.515-.535.84.017.022.036.04.053.063l2.843 5.001c1.95 3.564 1.328 6.973-1.843 10.144a8.46 8.46 0 01-.549.501c1.205-.156 2.328-.737 3.351-1.76 3.268-3.268 3.041-6.749 1.737-8.914"/><path d="M12.58 9.887c-.156-.83.096-1.569.692-2.142L10.78 5.252c-.5-.504-1.378-.504-1.879 0-.178.18-.273.4-.329.63l4.008 4.005z"/><path d="M15.812 9.04c-.218-.323-.539-.55-.88-.606a.814.814 0 00-.644.153c-.176.137-.713.553-.24 1.566l1.43 3.025a.539.539 0 11-.868.612L7.2 6.378a.986.986 0 10-1.395 1.395l4.401 4.403a.538.538 0 11-.762.762L5.046 8.54 3.802 7.295a.99.99 0 00-1.396 0 .981.981 0 000 1.394L3.647 9.93l4.402 4.403a.537.537 0 010 .761.535.535 0 01-.762 0L2.89 10.696a.992.992 0 00-1.399-.003.983.983 0 000 1.395l1.855 1.854 2.763 2.765a.538.538 0 01-.76.761l-2.765-2.764a.982.982 0 00-1.395 0 .989.989 0 000 1.395l5.32 5.32c3.371 3.372 6.64 4.977 10.49 1.126C19.74 19.8 20.271 17 18.62 13.982L15.812 9.04z"/></g></svg></span></span></button></div><span class="u-relative u-background js-actionMultirecommendCount u-marginLeft5"><button class="button button--chromeless u-baseColor--buttonNormal js-multirecommendCountButton u-disablePointerEvents" data-action="show-recommends" data-action-value="858b9aa1baa4">43</button></span></div></div><div class="buttonSet u-floatRight"><button class="button button--dark button--chromeless is-touchIconFadeInPulse u-baseColor--buttonDark button--withIcon button--withSvgIcon button--bookmark js-bookmarkButton" data-action="add-to-bookmarks" data-action-value="858b9aa1baa4"><span class="js-remove-from-bookmarks u-hide"><span class="svgIcon svgIcon--bookmarkFilled svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" ><path d="M19 6c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 00.706.03L12.5 16.85l5.662 4.126c.205.183.52.17.708-.03a.5.5 0 00.118-.285H19V6z"/></svg></span></span><span class="js-add-to-bookmarks"><span class="svgIcon svgIcon--bookmarkAdd svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" fill="none" ><path d="M18 2.5a.5.5 0 011 0V5h2.5a.5.5 0 010 1H19v2.5a.5.5 0 11-1 0V6h-2.5a.5.5 0 010-1H18V2.5z" fill="#292929"/><path d="M7 7a1 1 0 011-1h3.5a.5.5 0 000-1H8a2 2 0 00-2 2v14a.5.5 0 00.805.396L12.5 17l5.695 4.396A.5.5 0 0019 21v-8.5a.5.5 0 00-1 0v7.485l-5.195-4.012a.5.5 0 00-.61 0L7 19.985V7z" fill="#292929"/></svg></span></span></button></div></div></div></div><div class="u-paddingTop20 u-paddingBottom25 u-borderBottomLight js-block"><div class="postArticle postArticle--short js-postArticle js-trackPostPresentation" data-post-id="1a44213a12bf" data-source="---------2"><div class="u-clearfix u-marginBottom15 u-paddingTop5"><div class="postMetaInline u-floatLeft u-sm-maxWidthFullWidth"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@mitja.bezensek_98237" data-action="show-user-card" data-action-value="95ecd7ef38ba" data-action-type="hover" data-user-id="95ecd7ef38ba" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*3VkJ01vMUfVDBJYX.jpg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Mitja Bezenšek"></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/@mitja.bezensek_98237?source=---------2" data-action="show-user-card" data-action-source="---------2" data-action-value="95ecd7ef38ba" data-action-type="hover" data-user-id="95ecd7ef38ba" dir="auto">Mitja Bezenšek</a> in <a class="ds-link ds-link--styleSubtle link--darken link--accent u-accentColor--textNormal" href="https://medium.com/outfit7?source=---------2" data-action="show-collection-card" data-action-source="---------2" data-action-value="outfit7" data-action-type="hover">Outfit7</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><a class="link link--darken" href="https://medium.com/outfit7/cracking-the-monolith-a-journey-to-continuous-deployment-1a44213a12bf?source=---------2" data-action="open-post" data-action-value="https://medium.com/outfit7/cracking-the-monolith-a-journey-to-continuous-deployment-1a44213a12bf?source=---------2" data-action-source="preview-listing" ><time datetime="2023-10-16T08:13:35.805Z">Oct 16, 2023</time></a><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="8 min read"></span></div></div></div></div></div><div class="postArticle-content"><a href="https://medium.com/outfit7/cracking-the-monolith-a-journey-to-continuous-deployment-1a44213a12bf?source=---------2" title="Latest stories published on Outfit7 – Medium" aria-label="Latest stories published on Outfit7 – Medium" data-action="open-post" data-action-source="---------2" data-action-value="https://medium.com/outfit7/cracking-the-monolith-a-journey-to-continuous-deployment-1a44213a12bf?source=---------2" data-action-index="2" data-post-id="1a44213a12bf"><section class="section section--body section--first section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><h3 name="34d2" id="34d2" class="graf graf--h3 graf--leading graf--title">Cracking the Monolith: A Journey to Continuous Deployment</h3><p name="0d43" id="0d43" class="graf graf--p graf-after--h3 graf--trailing"><em class="markup--em markup--p-em">TL;DR: At the Outfit7 platform team we are strong believers in agile development principles and recognize that fast and automated deployments are essential. We’ll see how we made this happen by transforming our deployment process</em>…</p></div></div></section></a></div><div class="postArticle-readMore"><a class="button button--smaller button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/cracking-the-monolith-a-journey-to-continuous-deployment-1a44213a12bf?source=---------2" data-action="open-post" data-action-source="---------2" data-action-value="https://medium.com/outfit7/cracking-the-monolith-a-journey-to-continuous-deployment-1a44213a12bf?source=---------2" data-post-id="1a44213a12bf">Read more…</a></div><div class="u-clearfix u-paddingTop10"><div class="u-floatLeft"><div class="multirecommend js-actionMultirecommend u-flexCenter" data-post-id="1a44213a12bf" data-is-flush-left="true" data-source="listing-----1a44213a12bf---------------------clap_preview"><div class="u-relative u-foreground"><button class="button button--primary button--chromeless u-accentColor--buttonNormal button--withIcon button--withSvgIcon clapButton js-actionMultirecommendButton clapButton--darker" data-action="sign-up-prompt" data-sign-in-action="multivote" data-requires-token="true" data-redirect="https://medium.com/_/vote/p/1a44213a12bf" data-action-source="listing-----1a44213a12bf---------------------clap_preview" aria-label="Clap"><span class="button-defaultState"><span class="svgIcon svgIcon--clap svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.739 0l.761 2.966L13.261 0z"/><path d="M14.815 3.776l1.84-2.551-1.43-.471z"/><path d="M8.378 1.224l1.84 2.551L9.81.753z"/><path d="M20.382 21.622c-1.04 1.04-2.115 1.507-3.166 1.608.168-.14.332-.29.492-.45 2.885-2.886 3.456-5.982 1.69-9.211l-1.101-1.937-.955-2.02c-.315-.676-.235-1.185.245-1.556a.836.836 0 01.66-.16c.342.056.66.28.879.605l2.856 5.023c1.179 1.962 1.379 5.119-1.6 8.098m-13.29-.528l-5.02-5.02a1 1 0 01.707-1.701c.255 0 .512.098.707.292l2.607 2.607a.442.442 0 00.624-.624L4.11 14.04l-1.75-1.75a.998.998 0 111.41-1.413l4.154 4.156a.44.44 0 00.624 0 .44.44 0 000-.624l-4.152-4.153-1.172-1.171a.998.998 0 010-1.41 1.018 1.018 0 011.41 0l1.172 1.17 4.153 4.152a.437.437 0 00.624 0 .442.442 0 000-.624L6.43 8.222a.988.988 0 01-.291-.705.99.99 0 01.29-.706 1 1 0 011.412 0l6.992 6.993a.443.443 0 00.71-.501l-1.35-2.856c-.315-.676-.235-1.185.246-1.557a.85.85 0 01.66-.16c.342.056.659.28.879.606L18.628 14c1.573 2.876 1.067 5.545-1.544 8.156-1.396 1.397-3.144 1.966-5.063 1.652-1.713-.286-3.463-1.248-4.928-2.714zM10.99 5.976l2.562 2.562c-.497.607-.563 1.414-.155 2.284l.265.562-4.257-4.257a.98.98 0 01-.117-.445c0-.267.104-.517.292-.706a1.023 1.023 0 011.41 0zm8.887 2.06c-.375-.557-.902-.916-1.486-1.011a1.738 1.738 0 00-1.342.332c-.376.29-.61.656-.712 1.065a2.1 2.1 0 00-1.095-.562 1.776 1.776 0 00-.992.128l-2.636-2.636a1.883 1.883 0 00-2.658 0 1.862 1.862 0 00-.478.847 1.886 1.886 0 00-2.671-.012 1.867 1.867 0 00-.503.909c-.754-.754-1.992-.754-2.703-.044a1.881 1.881 0 000 2.658c-.288.12-.605.288-.864.547a1.884 1.884 0 000 2.659l.624.622a1.879 1.879 0 00-.91 3.16l5.019 5.02c1.595 1.594 3.515 2.645 5.408 2.959a7.16 7.16 0 001.173.098c1.026 0 1.997-.24 2.892-.7.279.04.555.065.828.065 1.53 0 2.969-.628 4.236-1.894 3.338-3.338 3.083-6.928 1.738-9.166l-2.868-5.043z"/></g></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--clapFilled svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.738 0l.762 2.966L13.262 0z"/><path d="M16.634 1.224l-1.432-.47-.408 3.022z"/><path d="M9.79.754l-1.431.47 1.84 2.552z"/><path d="M22.472 13.307l-3.023-5.32c-.287-.426-.689-.705-1.123-.776a1.16 1.16 0 00-.911.221c-.297.231-.474.515-.535.84.017.022.036.04.053.063l2.843 5.001c1.95 3.564 1.328 6.973-1.843 10.144a8.46 8.46 0 01-.549.501c1.205-.156 2.328-.737 3.351-1.76 3.268-3.268 3.041-6.749 1.737-8.914"/><path d="M12.58 9.887c-.156-.83.096-1.569.692-2.142L10.78 5.252c-.5-.504-1.378-.504-1.879 0-.178.18-.273.4-.329.63l4.008 4.005z"/><path d="M15.812 9.04c-.218-.323-.539-.55-.88-.606a.814.814 0 00-.644.153c-.176.137-.713.553-.24 1.566l1.43 3.025a.539.539 0 11-.868.612L7.2 6.378a.986.986 0 10-1.395 1.395l4.401 4.403a.538.538 0 11-.762.762L5.046 8.54 3.802 7.295a.99.99 0 00-1.396 0 .981.981 0 000 1.394L3.647 9.93l4.402 4.403a.537.537 0 010 .761.535.535 0 01-.762 0L2.89 10.696a.992.992 0 00-1.399-.003.983.983 0 000 1.395l1.855 1.854 2.763 2.765a.538.538 0 01-.76.761l-2.765-2.764a.982.982 0 00-1.395 0 .989.989 0 000 1.395l5.32 5.32c3.371 3.372 6.64 4.977 10.49 1.126C19.74 19.8 20.271 17 18.62 13.982L15.812 9.04z"/></g></svg></span></span></button></div><span class="u-relative u-background js-actionMultirecommendCount u-marginLeft5"><button class="button button--chromeless u-baseColor--buttonNormal js-multirecommendCountButton u-disablePointerEvents" data-action="show-recommends" data-action-value="1a44213a12bf">35</button></span></div></div><div class="buttonSet u-floatRight"><a class="button button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/cracking-the-monolith-a-journey-to-continuous-deployment-1a44213a12bf?source=---------2#--responses" data-action-source="---------2">1 response</a><button class="button button--dark button--chromeless is-touchIconFadeInPulse u-baseColor--buttonDark button--withIcon button--withSvgIcon button--bookmark js-bookmarkButton" data-action="add-to-bookmarks" data-action-value="1a44213a12bf"><span class="js-remove-from-bookmarks u-hide"><span class="svgIcon svgIcon--bookmarkFilled svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" ><path d="M19 6c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 00.706.03L12.5 16.85l5.662 4.126c.205.183.52.17.708-.03a.5.5 0 00.118-.285H19V6z"/></svg></span></span><span class="js-add-to-bookmarks"><span class="svgIcon svgIcon--bookmarkAdd svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" fill="none" ><path d="M18 2.5a.5.5 0 011 0V5h2.5a.5.5 0 010 1H19v2.5a.5.5 0 11-1 0V6h-2.5a.5.5 0 010-1H18V2.5z" fill="#292929"/><path d="M7 7a1 1 0 011-1h3.5a.5.5 0 000-1H8a2 2 0 00-2 2v14a.5.5 0 00.805.396L12.5 17l5.695 4.396A.5.5 0 0019 21v-8.5a.5.5 0 00-1 0v7.485l-5.195-4.012a.5.5 0 00-.61 0L7 19.985V7z" fill="#292929"/></svg></span></span></button></div></div></div></div><div class="u-paddingTop20 u-paddingBottom25 u-borderBottomLight js-block"><div class="postArticle postArticle--short js-postArticle js-trackPostPresentation" data-post-id="ba5d97a4c1c2" data-source="---------3"><div class="u-clearfix u-marginBottom15 u-paddingTop5"><div class="postMetaInline u-floatLeft u-sm-maxWidthFullWidth"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@samy.benrabah" data-action="show-user-card" data-action-value="1357db1365fb" data-action-type="hover" data-user-id="1357db1365fb" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*0bdDD8vd7YgYyqhLHCMoJQ.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Samy Ben Rabah"></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/@samy.benrabah?source=---------3" data-action="show-user-card" data-action-source="---------3" data-action-value="1357db1365fb" data-action-type="hover" data-user-id="1357db1365fb" dir="auto">Samy Ben Rabah</a> in <a class="ds-link ds-link--styleSubtle link--darken link--accent u-accentColor--textNormal" href="https://medium.com/outfit7?source=---------3" data-action="show-collection-card" data-action-source="---------3" data-action-value="outfit7" data-action-type="hover">Outfit7</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><a class="link link--darken" href="https://medium.com/outfit7/outfit7s-art-pipeline-ba5d97a4c1c2?source=---------3" data-action="open-post" data-action-value="https://medium.com/outfit7/outfit7s-art-pipeline-ba5d97a4c1c2?source=---------3" data-action-source="preview-listing" ><time datetime="2023-08-22T07:15:16.814Z">Aug 21, 2023</time></a><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="1 min read"></span></div></div></div></div></div><div class="postArticle-content"><a href="https://medium.com/outfit7/outfit7s-art-pipeline-ba5d97a4c1c2?source=---------3" title="Latest stories published on Outfit7 – Medium" aria-label="Latest stories published on Outfit7 – Medium" data-action="open-post" data-action-source="---------3" data-action-value="https://medium.com/outfit7/outfit7s-art-pipeline-ba5d97a4c1c2?source=---------3" data-action-index="3" data-post-id="ba5d97a4c1c2"><section class="section section--body section--first section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><figure name="previewImage" id="previewImage" class="graf graf--figure graf--layoutCroppedHeightPreview graf--leading"><div class="aspectRatioPlaceholder is-locked"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 30%;"></div><img class="graf-image" data-image-id="0*YchegUssBmvcXiBp" data-width="1600" data-height="838" data-is-featured="true" src="https://cdn-images-1.medium.com/fit/t/1600/480/0*YchegUssBmvcXiBp"></div></figure><h3 name="previewTitle" id="previewTitle" class="graf graf--h3 graf-after--figure graf--title">Outfit7’s Art Pipeline</h3><h4 name="previewSubtitle" id="previewSubtitle" class="graf graf--h4 graf-after--h3 graf--trailing graf--subtitle">TL;DR: We’re taking a look at Outfit7’s art pipeline and how we transitioned…</h4></div></div></section></a></div><div class="postArticle-readMore"><a class="button button--smaller button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/outfit7s-art-pipeline-ba5d97a4c1c2?source=---------3" data-action="open-post" data-action-source="---------3" data-action-value="https://medium.com/outfit7/outfit7s-art-pipeline-ba5d97a4c1c2?source=---------3" data-post-id="ba5d97a4c1c2">Read more…</a></div><div class="u-clearfix u-paddingTop10"><div class="u-floatLeft"><div class="multirecommend js-actionMultirecommend u-flexCenter" data-post-id="ba5d97a4c1c2" data-is-flush-left="true" data-source="listing-----ba5d97a4c1c2---------------------clap_preview"><div class="u-relative u-foreground"><button class="button button--primary button--chromeless u-accentColor--buttonNormal button--withIcon button--withSvgIcon clapButton js-actionMultirecommendButton clapButton--darker" data-action="sign-up-prompt" data-sign-in-action="multivote" data-requires-token="true" data-redirect="https://medium.com/_/vote/p/ba5d97a4c1c2" data-action-source="listing-----ba5d97a4c1c2---------------------clap_preview" aria-label="Clap"><span class="button-defaultState"><span class="svgIcon svgIcon--clap svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.739 0l.761 2.966L13.261 0z"/><path d="M14.815 3.776l1.84-2.551-1.43-.471z"/><path d="M8.378 1.224l1.84 2.551L9.81.753z"/><path d="M20.382 21.622c-1.04 1.04-2.115 1.507-3.166 1.608.168-.14.332-.29.492-.45 2.885-2.886 3.456-5.982 1.69-9.211l-1.101-1.937-.955-2.02c-.315-.676-.235-1.185.245-1.556a.836.836 0 01.66-.16c.342.056.66.28.879.605l2.856 5.023c1.179 1.962 1.379 5.119-1.6 8.098m-13.29-.528l-5.02-5.02a1 1 0 01.707-1.701c.255 0 .512.098.707.292l2.607 2.607a.442.442 0 00.624-.624L4.11 14.04l-1.75-1.75a.998.998 0 111.41-1.413l4.154 4.156a.44.44 0 00.624 0 .44.44 0 000-.624l-4.152-4.153-1.172-1.171a.998.998 0 010-1.41 1.018 1.018 0 011.41 0l1.172 1.17 4.153 4.152a.437.437 0 00.624 0 .442.442 0 000-.624L6.43 8.222a.988.988 0 01-.291-.705.99.99 0 01.29-.706 1 1 0 011.412 0l6.992 6.993a.443.443 0 00.71-.501l-1.35-2.856c-.315-.676-.235-1.185.246-1.557a.85.85 0 01.66-.16c.342.056.659.28.879.606L18.628 14c1.573 2.876 1.067 5.545-1.544 8.156-1.396 1.397-3.144 1.966-5.063 1.652-1.713-.286-3.463-1.248-4.928-2.714zM10.99 5.976l2.562 2.562c-.497.607-.563 1.414-.155 2.284l.265.562-4.257-4.257a.98.98 0 01-.117-.445c0-.267.104-.517.292-.706a1.023 1.023 0 011.41 0zm8.887 2.06c-.375-.557-.902-.916-1.486-1.011a1.738 1.738 0 00-1.342.332c-.376.29-.61.656-.712 1.065a2.1 2.1 0 00-1.095-.562 1.776 1.776 0 00-.992.128l-2.636-2.636a1.883 1.883 0 00-2.658 0 1.862 1.862 0 00-.478.847 1.886 1.886 0 00-2.671-.012 1.867 1.867 0 00-.503.909c-.754-.754-1.992-.754-2.703-.044a1.881 1.881 0 000 2.658c-.288.12-.605.288-.864.547a1.884 1.884 0 000 2.659l.624.622a1.879 1.879 0 00-.91 3.16l5.019 5.02c1.595 1.594 3.515 2.645 5.408 2.959a7.16 7.16 0 001.173.098c1.026 0 1.997-.24 2.892-.7.279.04.555.065.828.065 1.53 0 2.969-.628 4.236-1.894 3.338-3.338 3.083-6.928 1.738-9.166l-2.868-5.043z"/></g></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--clapFilled svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.738 0l.762 2.966L13.262 0z"/><path d="M16.634 1.224l-1.432-.47-.408 3.022z"/><path d="M9.79.754l-1.431.47 1.84 2.552z"/><path d="M22.472 13.307l-3.023-5.32c-.287-.426-.689-.705-1.123-.776a1.16 1.16 0 00-.911.221c-.297.231-.474.515-.535.84.017.022.036.04.053.063l2.843 5.001c1.95 3.564 1.328 6.973-1.843 10.144a8.46 8.46 0 01-.549.501c1.205-.156 2.328-.737 3.351-1.76 3.268-3.268 3.041-6.749 1.737-8.914"/><path d="M12.58 9.887c-.156-.83.096-1.569.692-2.142L10.78 5.252c-.5-.504-1.378-.504-1.879 0-.178.18-.273.4-.329.63l4.008 4.005z"/><path d="M15.812 9.04c-.218-.323-.539-.55-.88-.606a.814.814 0 00-.644.153c-.176.137-.713.553-.24 1.566l1.43 3.025a.539.539 0 11-.868.612L7.2 6.378a.986.986 0 10-1.395 1.395l4.401 4.403a.538.538 0 11-.762.762L5.046 8.54 3.802 7.295a.99.99 0 00-1.396 0 .981.981 0 000 1.394L3.647 9.93l4.402 4.403a.537.537 0 010 .761.535.535 0 01-.762 0L2.89 10.696a.992.992 0 00-1.399-.003.983.983 0 000 1.395l1.855 1.854 2.763 2.765a.538.538 0 01-.76.761l-2.765-2.764a.982.982 0 00-1.395 0 .989.989 0 000 1.395l5.32 5.32c3.371 3.372 6.64 4.977 10.49 1.126C19.74 19.8 20.271 17 18.62 13.982L15.812 9.04z"/></g></svg></span></span></button></div><span class="u-relative u-background js-actionMultirecommendCount u-marginLeft5"><button class="button button--chromeless u-baseColor--buttonNormal js-multirecommendCountButton u-disablePointerEvents" data-action="show-recommends" data-action-value="ba5d97a4c1c2">71</button></span></div></div><div class="buttonSet u-floatRight"><a class="button button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/outfit7s-art-pipeline-ba5d97a4c1c2?source=---------3#--responses" data-action-source="---------3">1 response</a><button class="button button--dark button--chromeless is-touchIconFadeInPulse u-baseColor--buttonDark button--withIcon button--withSvgIcon button--bookmark js-bookmarkButton" data-action="add-to-bookmarks" data-action-value="ba5d97a4c1c2"><span class="js-remove-from-bookmarks u-hide"><span class="svgIcon svgIcon--bookmarkFilled svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" ><path d="M19 6c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 00.706.03L12.5 16.85l5.662 4.126c.205.183.52.17.708-.03a.5.5 0 00.118-.285H19V6z"/></svg></span></span><span class="js-add-to-bookmarks"><span class="svgIcon svgIcon--bookmarkAdd svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" fill="none" ><path d="M18 2.5a.5.5 0 011 0V5h2.5a.5.5 0 010 1H19v2.5a.5.5 0 11-1 0V6h-2.5a.5.5 0 010-1H18V2.5z" fill="#292929"/><path d="M7 7a1 1 0 011-1h3.5a.5.5 0 000-1H8a2 2 0 00-2 2v14a.5.5 0 00.805.396L12.5 17l5.695 4.396A.5.5 0 0019 21v-8.5a.5.5 0 00-1 0v7.485l-5.195-4.012a.5.5 0 00-.61 0L7 19.985V7z" fill="#292929"/></svg></span></span></button></div></div></div></div><div class="u-paddingTop20 u-paddingBottom25 u-borderBottomLight js-block"><div class="postArticle postArticle--short js-postArticle js-trackPostPresentation" data-post-id="ce93b31b61bd" data-source="---------4"><div class="u-clearfix u-marginBottom15 u-paddingTop5"><div class="postMetaInline u-floatLeft u-sm-maxWidthFullWidth"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@blaz.tomazic" data-action="show-user-card" data-action-value="5d16f8c96c79" data-action-type="hover" data-user-id="5d16f8c96c79" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*o7nAdO_BYV_0AkMg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Blaž Tomažič"></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/@blaz.tomazic?source=---------4" data-action="show-user-card" data-action-source="---------4" data-action-value="5d16f8c96c79" data-action-type="hover" data-user-id="5d16f8c96c79" dir="auto">Blaž Tomažič</a> in <a class="ds-link ds-link--styleSubtle link--darken link--accent u-accentColor--textNormal" href="https://medium.com/outfit7?source=---------4" data-action="show-collection-card" data-action-source="---------4" data-action-value="outfit7" data-action-type="hover">Outfit7</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><a class="link link--darken" href="https://medium.com/outfit7/creating-a-custom-animation-system-for-unity-ce93b31b61bd?source=---------4" data-action="open-post" data-action-value="https://medium.com/outfit7/creating-a-custom-animation-system-for-unity-ce93b31b61bd?source=---------4" data-action-source="preview-listing" ><time datetime="2023-07-10T08:52:39.704Z">Jul 10, 2023</time></a><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="16 min read"></span></div></div></div></div></div><div class="postArticle-content"><a href="https://medium.com/outfit7/creating-a-custom-animation-system-for-unity-ce93b31b61bd?source=---------4" title="Latest stories published on Outfit7 – Medium" aria-label="Latest stories published on Outfit7 – Medium" data-action="open-post" data-action-source="---------4" data-action-value="https://medium.com/outfit7/creating-a-custom-animation-system-for-unity-ce93b31b61bd?source=---------4" data-action-index="4" data-post-id="ce93b31b61bd"><section class="section section--body section--first section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><figure name="previewImage" id="previewImage" class="graf graf--figure graf--layoutCroppedHeightPreview graf--leading"><div class="aspectRatioPlaceholder is-locked"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 30%;"></div><img class="graf-image" data-image-id="0*TbmS5EonHW_ICYg3" data-width="1600" data-height="838" data-is-featured="true" src="https://cdn-images-1.medium.com/fit/t/1600/480/0*TbmS5EonHW_ICYg3"></div></figure><h3 name="0796" id="0796" class="graf graf--h3 graf-after--figure graf--title">Creating a custom animation system for Unity</h3><p name="598f" id="598f" class="graf graf--p graf-after--h3 graf--trailing"><strong class="markup--strong markup--p-strong">TL;DR:</strong> Making a custom animation system to reduce the size of assets by 50% and…</p></div></div></section></a></div><div class="postArticle-readMore"><a class="button button--smaller button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/creating-a-custom-animation-system-for-unity-ce93b31b61bd?source=---------4" data-action="open-post" data-action-source="---------4" data-action-value="https://medium.com/outfit7/creating-a-custom-animation-system-for-unity-ce93b31b61bd?source=---------4" data-post-id="ce93b31b61bd">Read more…</a></div><div class="u-clearfix u-paddingTop10"><div class="u-floatLeft"><div class="multirecommend js-actionMultirecommend u-flexCenter" data-post-id="ce93b31b61bd" data-is-flush-left="true" data-source="listing-----ce93b31b61bd---------------------clap_preview"><div class="u-relative u-foreground"><button class="button button--primary button--chromeless u-accentColor--buttonNormal button--withIcon button--withSvgIcon clapButton js-actionMultirecommendButton clapButton--darker" data-action="sign-up-prompt" data-sign-in-action="multivote" data-requires-token="true" data-redirect="https://medium.com/_/vote/p/ce93b31b61bd" data-action-source="listing-----ce93b31b61bd---------------------clap_preview" aria-label="Clap"><span class="button-defaultState"><span class="svgIcon svgIcon--clap svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.739 0l.761 2.966L13.261 0z"/><path d="M14.815 3.776l1.84-2.551-1.43-.471z"/><path d="M8.378 1.224l1.84 2.551L9.81.753z"/><path d="M20.382 21.622c-1.04 1.04-2.115 1.507-3.166 1.608.168-.14.332-.29.492-.45 2.885-2.886 3.456-5.982 1.69-9.211l-1.101-1.937-.955-2.02c-.315-.676-.235-1.185.245-1.556a.836.836 0 01.66-.16c.342.056.66.28.879.605l2.856 5.023c1.179 1.962 1.379 5.119-1.6 8.098m-13.29-.528l-5.02-5.02a1 1 0 01.707-1.701c.255 0 .512.098.707.292l2.607 2.607a.442.442 0 00.624-.624L4.11 14.04l-1.75-1.75a.998.998 0 111.41-1.413l4.154 4.156a.44.44 0 00.624 0 .44.44 0 000-.624l-4.152-4.153-1.172-1.171a.998.998 0 010-1.41 1.018 1.018 0 011.41 0l1.172 1.17 4.153 4.152a.437.437 0 00.624 0 .442.442 0 000-.624L6.43 8.222a.988.988 0 01-.291-.705.99.99 0 01.29-.706 1 1 0 011.412 0l6.992 6.993a.443.443 0 00.71-.501l-1.35-2.856c-.315-.676-.235-1.185.246-1.557a.85.85 0 01.66-.16c.342.056.659.28.879.606L18.628 14c1.573 2.876 1.067 5.545-1.544 8.156-1.396 1.397-3.144 1.966-5.063 1.652-1.713-.286-3.463-1.248-4.928-2.714zM10.99 5.976l2.562 2.562c-.497.607-.563 1.414-.155 2.284l.265.562-4.257-4.257a.98.98 0 01-.117-.445c0-.267.104-.517.292-.706a1.023 1.023 0 011.41 0zm8.887 2.06c-.375-.557-.902-.916-1.486-1.011a1.738 1.738 0 00-1.342.332c-.376.29-.61.656-.712 1.065a2.1 2.1 0 00-1.095-.562 1.776 1.776 0 00-.992.128l-2.636-2.636a1.883 1.883 0 00-2.658 0 1.862 1.862 0 00-.478.847 1.886 1.886 0 00-2.671-.012 1.867 1.867 0 00-.503.909c-.754-.754-1.992-.754-2.703-.044a1.881 1.881 0 000 2.658c-.288.12-.605.288-.864.547a1.884 1.884 0 000 2.659l.624.622a1.879 1.879 0 00-.91 3.16l5.019 5.02c1.595 1.594 3.515 2.645 5.408 2.959a7.16 7.16 0 001.173.098c1.026 0 1.997-.24 2.892-.7.279.04.555.065.828.065 1.53 0 2.969-.628 4.236-1.894 3.338-3.338 3.083-6.928 1.738-9.166l-2.868-5.043z"/></g></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--clapFilled svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.738 0l.762 2.966L13.262 0z"/><path d="M16.634 1.224l-1.432-.47-.408 3.022z"/><path d="M9.79.754l-1.431.47 1.84 2.552z"/><path d="M22.472 13.307l-3.023-5.32c-.287-.426-.689-.705-1.123-.776a1.16 1.16 0 00-.911.221c-.297.231-.474.515-.535.84.017.022.036.04.053.063l2.843 5.001c1.95 3.564 1.328 6.973-1.843 10.144a8.46 8.46 0 01-.549.501c1.205-.156 2.328-.737 3.351-1.76 3.268-3.268 3.041-6.749 1.737-8.914"/><path d="M12.58 9.887c-.156-.83.096-1.569.692-2.142L10.78 5.252c-.5-.504-1.378-.504-1.879 0-.178.18-.273.4-.329.63l4.008 4.005z"/><path d="M15.812 9.04c-.218-.323-.539-.55-.88-.606a.814.814 0 00-.644.153c-.176.137-.713.553-.24 1.566l1.43 3.025a.539.539 0 11-.868.612L7.2 6.378a.986.986 0 10-1.395 1.395l4.401 4.403a.538.538 0 11-.762.762L5.046 8.54 3.802 7.295a.99.99 0 00-1.396 0 .981.981 0 000 1.394L3.647 9.93l4.402 4.403a.537.537 0 010 .761.535.535 0 01-.762 0L2.89 10.696a.992.992 0 00-1.399-.003.983.983 0 000 1.395l1.855 1.854 2.763 2.765a.538.538 0 01-.76.761l-2.765-2.764a.982.982 0 00-1.395 0 .989.989 0 000 1.395l5.32 5.32c3.371 3.372 6.64 4.977 10.49 1.126C19.74 19.8 20.271 17 18.62 13.982L15.812 9.04z"/></g></svg></span></span></button></div><span class="u-relative u-background js-actionMultirecommendCount u-marginLeft5"><button class="button button--chromeless u-baseColor--buttonNormal js-multirecommendCountButton u-disablePointerEvents" data-action="show-recommends" data-action-value="ce93b31b61bd">74</button></span></div></div><div class="buttonSet u-floatRight"><a class="button button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/creating-a-custom-animation-system-for-unity-ce93b31b61bd?source=---------4#--responses" data-action-source="---------4">2 responses</a><button class="button button--dark button--chromeless is-touchIconFadeInPulse u-baseColor--buttonDark button--withIcon button--withSvgIcon button--bookmark js-bookmarkButton" data-action="add-to-bookmarks" data-action-value="ce93b31b61bd"><span class="js-remove-from-bookmarks u-hide"><span class="svgIcon svgIcon--bookmarkFilled svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" ><path d="M19 6c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 00.706.03L12.5 16.85l5.662 4.126c.205.183.52.17.708-.03a.5.5 0 00.118-.285H19V6z"/></svg></span></span><span class="js-add-to-bookmarks"><span class="svgIcon svgIcon--bookmarkAdd svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" fill="none" ><path d="M18 2.5a.5.5 0 011 0V5h2.5a.5.5 0 010 1H19v2.5a.5.5 0 11-1 0V6h-2.5a.5.5 0 010-1H18V2.5z" fill="#292929"/><path d="M7 7a1 1 0 011-1h3.5a.5.5 0 000-1H8a2 2 0 00-2 2v14a.5.5 0 00.805.396L12.5 17l5.695 4.396A.5.5 0 0019 21v-8.5a.5.5 0 00-1 0v7.485l-5.195-4.012a.5.5 0 00-.61 0L7 19.985V7z" fill="#292929"/></svg></span></span></button></div></div></div></div><div class="u-paddingTop20 u-paddingBottom25 u-borderBottomLight js-block"><div class="postArticle postArticle--short js-postArticle js-trackPostPresentation" data-post-id="14b640e2757b" data-source="---------5"><div class="u-clearfix u-marginBottom15 u-paddingTop5"><div class="postMetaInline u-floatLeft u-sm-maxWidthFullWidth"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@crt.kristl" data-action="show-user-card" data-action-value="b9d3e3fbf665" data-action-type="hover" data-user-id="b9d3e3fbf665" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*52vDhSjGYB9cVy6U" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Črt Kristl"></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/@crt.kristl?source=---------5" data-action="show-user-card" data-action-source="---------5" data-action-value="b9d3e3fbf665" data-action-type="hover" data-user-id="b9d3e3fbf665" dir="auto">Črt Kristl</a> in <a class="ds-link ds-link--styleSubtle link--darken link--accent u-accentColor--textNormal" href="https://medium.com/outfit7?source=---------5" data-action="show-collection-card" data-action-source="---------5" data-action-value="outfit7" data-action-type="hover">Outfit7</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><a class="link link--darken" href="https://medium.com/outfit7/building-the-ultimate-mobile-game-engine-starlite-14b640e2757b?source=---------5" data-action="open-post" data-action-value="https://medium.com/outfit7/building-the-ultimate-mobile-game-engine-starlite-14b640e2757b?source=---------5" data-action-source="preview-listing" ><time datetime="2023-06-01T08:14:11.723Z">Jun 1, 2023</time></a><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="1 min read"></span></div></div></div></div></div><div class="postArticle-content"><a href="https://medium.com/outfit7/building-the-ultimate-mobile-game-engine-starlite-14b640e2757b?source=---------5" title="Latest stories published on Outfit7 – Medium" aria-label="Latest stories published on Outfit7 – Medium" data-action="open-post" data-action-source="---------5" data-action-value="https://medium.com/outfit7/building-the-ultimate-mobile-game-engine-starlite-14b640e2757b?source=---------5" data-action-index="5" data-post-id="14b640e2757b"><section class="section section--body section--first section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><figure name="previewImage" id="previewImage" class="graf graf--figure graf--layoutCroppedHeightPreview graf--leading"><div class="aspectRatioPlaceholder is-locked"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 30%;"></div><img class="graf-image" data-image-id="1*d9Zk7nRSza7P9wnjEbMOXQ.png" data-width="1920" data-height="1005" data-is-featured="true" src="https://cdn-images-1.medium.com/fit/t/1600/480/1*d9Zk7nRSza7P9wnjEbMOXQ.png"></div></figure><h3 name="6d84" id="6d84" class="graf graf--h3 graf-after--figure graf--trailing graf--title">Building the Ultimate Mobile Game Engine: Starlite</h3></div></div></section></a></div><div class="postArticle-readMore"><a class="button button--smaller button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/building-the-ultimate-mobile-game-engine-starlite-14b640e2757b?source=---------5" data-action="open-post" data-action-source="---------5" data-action-value="https://medium.com/outfit7/building-the-ultimate-mobile-game-engine-starlite-14b640e2757b?source=---------5" data-post-id="14b640e2757b">Read more…</a></div><div class="u-clearfix u-paddingTop10"><div class="u-floatLeft"><div class="multirecommend js-actionMultirecommend u-flexCenter" data-post-id="14b640e2757b" data-is-flush-left="true" data-source="listing-----14b640e2757b---------------------clap_preview"><div class="u-relative u-foreground"><button class="button button--primary button--chromeless u-accentColor--buttonNormal button--withIcon button--withSvgIcon clapButton js-actionMultirecommendButton clapButton--darker" data-action="sign-up-prompt" data-sign-in-action="multivote" data-requires-token="true" data-redirect="https://medium.com/_/vote/p/14b640e2757b" data-action-source="listing-----14b640e2757b---------------------clap_preview" aria-label="Clap"><span class="button-defaultState"><span class="svgIcon svgIcon--clap svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.739 0l.761 2.966L13.261 0z"/><path d="M14.815 3.776l1.84-2.551-1.43-.471z"/><path d="M8.378 1.224l1.84 2.551L9.81.753z"/><path d="M20.382 21.622c-1.04 1.04-2.115 1.507-3.166 1.608.168-.14.332-.29.492-.45 2.885-2.886 3.456-5.982 1.69-9.211l-1.101-1.937-.955-2.02c-.315-.676-.235-1.185.245-1.556a.836.836 0 01.66-.16c.342.056.66.28.879.605l2.856 5.023c1.179 1.962 1.379 5.119-1.6 8.098m-13.29-.528l-5.02-5.02a1 1 0 01.707-1.701c.255 0 .512.098.707.292l2.607 2.607a.442.442 0 00.624-.624L4.11 14.04l-1.75-1.75a.998.998 0 111.41-1.413l4.154 4.156a.44.44 0 00.624 0 .44.44 0 000-.624l-4.152-4.153-1.172-1.171a.998.998 0 010-1.41 1.018 1.018 0 011.41 0l1.172 1.17 4.153 4.152a.437.437 0 00.624 0 .442.442 0 000-.624L6.43 8.222a.988.988 0 01-.291-.705.99.99 0 01.29-.706 1 1 0 011.412 0l6.992 6.993a.443.443 0 00.71-.501l-1.35-2.856c-.315-.676-.235-1.185.246-1.557a.85.85 0 01.66-.16c.342.056.659.28.879.606L18.628 14c1.573 2.876 1.067 5.545-1.544 8.156-1.396 1.397-3.144 1.966-5.063 1.652-1.713-.286-3.463-1.248-4.928-2.714zM10.99 5.976l2.562 2.562c-.497.607-.563 1.414-.155 2.284l.265.562-4.257-4.257a.98.98 0 01-.117-.445c0-.267.104-.517.292-.706a1.023 1.023 0 011.41 0zm8.887 2.06c-.375-.557-.902-.916-1.486-1.011a1.738 1.738 0 00-1.342.332c-.376.29-.61.656-.712 1.065a2.1 2.1 0 00-1.095-.562 1.776 1.776 0 00-.992.128l-2.636-2.636a1.883 1.883 0 00-2.658 0 1.862 1.862 0 00-.478.847 1.886 1.886 0 00-2.671-.012 1.867 1.867 0 00-.503.909c-.754-.754-1.992-.754-2.703-.044a1.881 1.881 0 000 2.658c-.288.12-.605.288-.864.547a1.884 1.884 0 000 2.659l.624.622a1.879 1.879 0 00-.91 3.16l5.019 5.02c1.595 1.594 3.515 2.645 5.408 2.959a7.16 7.16 0 001.173.098c1.026 0 1.997-.24 2.892-.7.279.04.555.065.828.065 1.53 0 2.969-.628 4.236-1.894 3.338-3.338 3.083-6.928 1.738-9.166l-2.868-5.043z"/></g></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--clapFilled svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.738 0l.762 2.966L13.262 0z"/><path d="M16.634 1.224l-1.432-.47-.408 3.022z"/><path d="M9.79.754l-1.431.47 1.84 2.552z"/><path d="M22.472 13.307l-3.023-5.32c-.287-.426-.689-.705-1.123-.776a1.16 1.16 0 00-.911.221c-.297.231-.474.515-.535.84.017.022.036.04.053.063l2.843 5.001c1.95 3.564 1.328 6.973-1.843 10.144a8.46 8.46 0 01-.549.501c1.205-.156 2.328-.737 3.351-1.76 3.268-3.268 3.041-6.749 1.737-8.914"/><path d="M12.58 9.887c-.156-.83.096-1.569.692-2.142L10.78 5.252c-.5-.504-1.378-.504-1.879 0-.178.18-.273.4-.329.63l4.008 4.005z"/><path d="M15.812 9.04c-.218-.323-.539-.55-.88-.606a.814.814 0 00-.644.153c-.176.137-.713.553-.24 1.566l1.43 3.025a.539.539 0 11-.868.612L7.2 6.378a.986.986 0 10-1.395 1.395l4.401 4.403a.538.538 0 11-.762.762L5.046 8.54 3.802 7.295a.99.99 0 00-1.396 0 .981.981 0 000 1.394L3.647 9.93l4.402 4.403a.537.537 0 010 .761.535.535 0 01-.762 0L2.89 10.696a.992.992 0 00-1.399-.003.983.983 0 000 1.395l1.855 1.854 2.763 2.765a.538.538 0 01-.76.761l-2.765-2.764a.982.982 0 00-1.395 0 .989.989 0 000 1.395l5.32 5.32c3.371 3.372 6.64 4.977 10.49 1.126C19.74 19.8 20.271 17 18.62 13.982L15.812 9.04z"/></g></svg></span></span></button></div><span class="u-relative u-background js-actionMultirecommendCount u-marginLeft5"><button class="button button--chromeless u-baseColor--buttonNormal js-multirecommendCountButton u-disablePointerEvents" data-action="show-recommends" data-action-value="14b640e2757b">39</button></span></div></div><div class="buttonSet u-floatRight"><a class="button button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/building-the-ultimate-mobile-game-engine-starlite-14b640e2757b?source=---------5#--responses" data-action-source="---------5">1 response</a><button class="button button--dark button--chromeless is-touchIconFadeInPulse u-baseColor--buttonDark button--withIcon button--withSvgIcon button--bookmark js-bookmarkButton" data-action="add-to-bookmarks" data-action-value="14b640e2757b"><span class="js-remove-from-bookmarks u-hide"><span class="svgIcon svgIcon--bookmarkFilled svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" ><path d="M19 6c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 00.706.03L12.5 16.85l5.662 4.126c.205.183.52.17.708-.03a.5.5 0 00.118-.285H19V6z"/></svg></span></span><span class="js-add-to-bookmarks"><span class="svgIcon svgIcon--bookmarkAdd svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" fill="none" ><path d="M18 2.5a.5.5 0 011 0V5h2.5a.5.5 0 010 1H19v2.5a.5.5 0 11-1 0V6h-2.5a.5.5 0 010-1H18V2.5z" fill="#292929"/><path d="M7 7a1 1 0 011-1h3.5a.5.5 0 000-1H8a2 2 0 00-2 2v14a.5.5 0 00.805.396L12.5 17l5.695 4.396A.5.5 0 0019 21v-8.5a.5.5 0 00-1 0v7.485l-5.195-4.012a.5.5 0 00-.61 0L7 19.985V7z" fill="#292929"/></svg></span></span></button></div></div></div></div><div class="u-paddingTop20 u-paddingBottom25 u-borderBottomLight js-block"><div class="postArticle postArticle--short js-postArticle js-trackPostPresentation" data-post-id="66e045b2da0" data-source="---------6"><div class="u-clearfix u-marginBottom15 u-paddingTop5"><div class="postMetaInline u-floatLeft u-sm-maxWidthFullWidth"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@bostjan.lasnik" data-action="show-user-card" data-action-value="b53717573314" data-action-type="hover" data-user-id="b53717573314" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*ak1uGpAhFENR62rH8VLdQA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Boštjan Lasnik"></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/@bostjan.lasnik?source=---------6" data-action="show-user-card" data-action-source="---------6" data-action-value="b53717573314" data-action-type="hover" data-user-id="b53717573314" dir="auto">Boštjan Lasnik</a> in <a class="ds-link ds-link--styleSubtle link--darken link--accent u-accentColor--textNormal" href="https://medium.com/outfit7?source=---------6" data-action="show-collection-card" data-action-source="---------6" data-action-value="outfit7" data-action-type="hover">Outfit7</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><a class="link link--darken" href="https://medium.com/outfit7/from-kubernetes-to-a-fully-managed-serverless-platform-66e045b2da0?source=---------6" data-action="open-post" data-action-value="https://medium.com/outfit7/from-kubernetes-to-a-fully-managed-serverless-platform-66e045b2da0?source=---------6" data-action-source="preview-listing" ><time datetime="2023-04-06T08:53:05.891Z">Apr 6, 2023</time></a><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div><div class="postArticle-content"><a href="https://medium.com/outfit7/from-kubernetes-to-a-fully-managed-serverless-platform-66e045b2da0?source=---------6" title="Latest stories published on Outfit7 – Medium" aria-label="Latest stories published on Outfit7 – Medium" data-action="open-post" data-action-source="---------6" data-action-value="https://medium.com/outfit7/from-kubernetes-to-a-fully-managed-serverless-platform-66e045b2da0?source=---------6" data-action-index="6" data-post-id="66e045b2da0"><section class="section section--body section--first section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><figure name="previewImage" id="previewImage" class="graf graf--figure graf--layoutCroppedHeightPreview graf--leading"><div class="aspectRatioPlaceholder is-locked"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 30%;"></div><img class="graf-image" data-image-id="0*yZS5LliLtWg1rQKR" data-width="1600" data-height="838" data-is-featured="true" src="https://cdn-images-1.medium.com/fit/t/1600/480/0*yZS5LliLtWg1rQKR"></div></figure><h3 name="532c" id="532c" class="graf graf--h3 graf-after--figure graf--trailing graf--title">From Kubernetes to a fully managed, serverless platform</h3></div></div></section></a></div><div class="postArticle-readMore"><a class="button button--smaller button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/from-kubernetes-to-a-fully-managed-serverless-platform-66e045b2da0?source=---------6" data-action="open-post" data-action-source="---------6" data-action-value="https://medium.com/outfit7/from-kubernetes-to-a-fully-managed-serverless-platform-66e045b2da0?source=---------6" data-post-id="66e045b2da0">Read more…</a></div><div class="u-clearfix u-paddingTop10"><div class="u-floatLeft"><div class="multirecommend js-actionMultirecommend u-flexCenter" data-post-id="66e045b2da0" data-is-flush-left="true" data-source="listing-----66e045b2da0---------------------clap_preview"><div class="u-relative u-foreground"><button class="button button--primary button--chromeless u-accentColor--buttonNormal button--withIcon button--withSvgIcon clapButton js-actionMultirecommendButton clapButton--darker" data-action="sign-up-prompt" data-sign-in-action="multivote" data-requires-token="true" data-redirect="https://medium.com/_/vote/p/66e045b2da0" data-action-source="listing-----66e045b2da0---------------------clap_preview" aria-label="Clap"><span class="button-defaultState"><span class="svgIcon svgIcon--clap svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.739 0l.761 2.966L13.261 0z"/><path d="M14.815 3.776l1.84-2.551-1.43-.471z"/><path d="M8.378 1.224l1.84 2.551L9.81.753z"/><path d="M20.382 21.622c-1.04 1.04-2.115 1.507-3.166 1.608.168-.14.332-.29.492-.45 2.885-2.886 3.456-5.982 1.69-9.211l-1.101-1.937-.955-2.02c-.315-.676-.235-1.185.245-1.556a.836.836 0 01.66-.16c.342.056.66.28.879.605l2.856 5.023c1.179 1.962 1.379 5.119-1.6 8.098m-13.29-.528l-5.02-5.02a1 1 0 01.707-1.701c.255 0 .512.098.707.292l2.607 2.607a.442.442 0 00.624-.624L4.11 14.04l-1.75-1.75a.998.998 0 111.41-1.413l4.154 4.156a.44.44 0 00.624 0 .44.44 0 000-.624l-4.152-4.153-1.172-1.171a.998.998 0 010-1.41 1.018 1.018 0 011.41 0l1.172 1.17 4.153 4.152a.437.437 0 00.624 0 .442.442 0 000-.624L6.43 8.222a.988.988 0 01-.291-.705.99.99 0 01.29-.706 1 1 0 011.412 0l6.992 6.993a.443.443 0 00.71-.501l-1.35-2.856c-.315-.676-.235-1.185.246-1.557a.85.85 0 01.66-.16c.342.056.659.28.879.606L18.628 14c1.573 2.876 1.067 5.545-1.544 8.156-1.396 1.397-3.144 1.966-5.063 1.652-1.713-.286-3.463-1.248-4.928-2.714zM10.99 5.976l2.562 2.562c-.497.607-.563 1.414-.155 2.284l.265.562-4.257-4.257a.98.98 0 01-.117-.445c0-.267.104-.517.292-.706a1.023 1.023 0 011.41 0zm8.887 2.06c-.375-.557-.902-.916-1.486-1.011a1.738 1.738 0 00-1.342.332c-.376.29-.61.656-.712 1.065a2.1 2.1 0 00-1.095-.562 1.776 1.776 0 00-.992.128l-2.636-2.636a1.883 1.883 0 00-2.658 0 1.862 1.862 0 00-.478.847 1.886 1.886 0 00-2.671-.012 1.867 1.867 0 00-.503.909c-.754-.754-1.992-.754-2.703-.044a1.881 1.881 0 000 2.658c-.288.12-.605.288-.864.547a1.884 1.884 0 000 2.659l.624.622a1.879 1.879 0 00-.91 3.16l5.019 5.02c1.595 1.594 3.515 2.645 5.408 2.959a7.16 7.16 0 001.173.098c1.026 0 1.997-.24 2.892-.7.279.04.555.065.828.065 1.53 0 2.969-.628 4.236-1.894 3.338-3.338 3.083-6.928 1.738-9.166l-2.868-5.043z"/></g></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--clapFilled svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.738 0l.762 2.966L13.262 0z"/><path d="M16.634 1.224l-1.432-.47-.408 3.022z"/><path d="M9.79.754l-1.431.47 1.84 2.552z"/><path d="M22.472 13.307l-3.023-5.32c-.287-.426-.689-.705-1.123-.776a1.16 1.16 0 00-.911.221c-.297.231-.474.515-.535.84.017.022.036.04.053.063l2.843 5.001c1.95 3.564 1.328 6.973-1.843 10.144a8.46 8.46 0 01-.549.501c1.205-.156 2.328-.737 3.351-1.76 3.268-3.268 3.041-6.749 1.737-8.914"/><path d="M12.58 9.887c-.156-.83.096-1.569.692-2.142L10.78 5.252c-.5-.504-1.378-.504-1.879 0-.178.18-.273.4-.329.63l4.008 4.005z"/><path d="M15.812 9.04c-.218-.323-.539-.55-.88-.606a.814.814 0 00-.644.153c-.176.137-.713.553-.24 1.566l1.43 3.025a.539.539 0 11-.868.612L7.2 6.378a.986.986 0 10-1.395 1.395l4.401 4.403a.538.538 0 11-.762.762L5.046 8.54 3.802 7.295a.99.99 0 00-1.396 0 .981.981 0 000 1.394L3.647 9.93l4.402 4.403a.537.537 0 010 .761.535.535 0 01-.762 0L2.89 10.696a.992.992 0 00-1.399-.003.983.983 0 000 1.395l1.855 1.854 2.763 2.765a.538.538 0 01-.76.761l-2.765-2.764a.982.982 0 00-1.395 0 .989.989 0 000 1.395l5.32 5.32c3.371 3.372 6.64 4.977 10.49 1.126C19.74 19.8 20.271 17 18.62 13.982L15.812 9.04z"/></g></svg></span></span></button></div><span class="u-relative u-background js-actionMultirecommendCount u-marginLeft5"><button class="button button--chromeless u-baseColor--buttonNormal js-multirecommendCountButton u-disablePointerEvents" data-action="show-recommends" data-action-value="66e045b2da0">18</button></span></div></div><div class="buttonSet u-floatRight"><button class="button button--dark button--chromeless is-touchIconFadeInPulse u-baseColor--buttonDark button--withIcon button--withSvgIcon button--bookmark js-bookmarkButton" data-action="add-to-bookmarks" data-action-value="66e045b2da0"><span class="js-remove-from-bookmarks u-hide"><span class="svgIcon svgIcon--bookmarkFilled svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" ><path d="M19 6c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 00.706.03L12.5 16.85l5.662 4.126c.205.183.52.17.708-.03a.5.5 0 00.118-.285H19V6z"/></svg></span></span><span class="js-add-to-bookmarks"><span class="svgIcon svgIcon--bookmarkAdd svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" fill="none" ><path d="M18 2.5a.5.5 0 011 0V5h2.5a.5.5 0 010 1H19v2.5a.5.5 0 11-1 0V6h-2.5a.5.5 0 010-1H18V2.5z" fill="#292929"/><path d="M7 7a1 1 0 011-1h3.5a.5.5 0 000-1H8a2 2 0 00-2 2v14a.5.5 0 00.805.396L12.5 17l5.695 4.396A.5.5 0 0019 21v-8.5a.5.5 0 00-1 0v7.485l-5.195-4.012a.5.5 0 00-.61 0L7 19.985V7z" fill="#292929"/></svg></span></span></button></div></div></div></div><div class="u-paddingTop20 u-paddingBottom25 u-borderBottomLight js-block"><div class="postArticle postArticle--short js-postArticle js-trackPostPresentation" data-post-id="1e5c4a50b6c8" data-source="---------7"><div class="u-clearfix u-marginBottom15 u-paddingTop5"><div class="postMetaInline u-floatLeft u-sm-maxWidthFullWidth"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@matic.miklavcic" data-action="show-user-card" data-action-value="1b04d7f0fde6" data-action-type="hover" data-user-id="1b04d7f0fde6" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*PhI0qcA7b7tgksQB.jpg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Matic Miklavčič"></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/@matic.miklavcic?source=---------7" data-action="show-user-card" data-action-source="---------7" data-action-value="1b04d7f0fde6" data-action-type="hover" data-user-id="1b04d7f0fde6" dir="auto">Matic Miklavčič</a> in <a class="ds-link ds-link--styleSubtle link--darken link--accent u-accentColor--textNormal" href="https://medium.com/outfit7?source=---------7" data-action="show-collection-card" data-action-source="---------7" data-action-value="outfit7" data-action-type="hover">Outfit7</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><a class="link link--darken" href="https://medium.com/outfit7/kicking-the-habit-jenkins-detox-in-production-1e5c4a50b6c8?source=---------7" data-action="open-post" data-action-value="https://medium.com/outfit7/kicking-the-habit-jenkins-detox-in-production-1e5c4a50b6c8?source=---------7" data-action-source="preview-listing" ><time datetime="2023-03-02T09:27:55.154Z">Mar 2, 2023</time></a><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="11 min read"></span></div></div></div></div></div><div class="postArticle-content"><a href="https://medium.com/outfit7/kicking-the-habit-jenkins-detox-in-production-1e5c4a50b6c8?source=---------7" title="Latest stories published on Outfit7 – Medium" aria-label="Latest stories published on Outfit7 – Medium" data-action="open-post" data-action-source="---------7" data-action-value="https://medium.com/outfit7/kicking-the-habit-jenkins-detox-in-production-1e5c4a50b6c8?source=---------7" data-action-index="7" data-post-id="1e5c4a50b6c8"><section class="section section--body section--first section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><figure name="previewImage" id="previewImage" class="graf graf--figure graf--layoutCroppedHeightPreview graf--leading"><div class="aspectRatioPlaceholder is-locked"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 30%;"></div><img class="graf-image" data-image-id="0*JQsjnND9Wcgtk2nE" data-width="1600" data-height="838" data-is-featured="true" src="https://cdn-images-1.medium.com/fit/t/1600/480/0*JQsjnND9Wcgtk2nE"></div></figure><h3 name="previewTitle" id="previewTitle" class="graf graf--h3 graf-after--figure graf--title">Kicking the habit: Jenkins detox in production</h3><h4 name="previewSubtitle" id="previewSubtitle" class="graf graf--h4 graf-after--h3 graf--trailing graf--subtitle">Moving the O7 game build system into the cloud opened…</h4></div></div></section></a></div><div class="postArticle-readMore"><a class="button button--smaller button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/kicking-the-habit-jenkins-detox-in-production-1e5c4a50b6c8?source=---------7" data-action="open-post" data-action-source="---------7" data-action-value="https://medium.com/outfit7/kicking-the-habit-jenkins-detox-in-production-1e5c4a50b6c8?source=---------7" data-post-id="1e5c4a50b6c8">Read more…</a></div><div class="u-clearfix u-paddingTop10"><div class="u-floatLeft"><div class="multirecommend js-actionMultirecommend u-flexCenter" data-post-id="1e5c4a50b6c8" data-is-flush-left="true" data-source="listing-----1e5c4a50b6c8---------------------clap_preview"><div class="u-relative u-foreground"><button class="button button--primary button--chromeless u-accentColor--buttonNormal button--withIcon button--withSvgIcon clapButton js-actionMultirecommendButton clapButton--darker" data-action="sign-up-prompt" data-sign-in-action="multivote" data-requires-token="true" data-redirect="https://medium.com/_/vote/p/1e5c4a50b6c8" data-action-source="listing-----1e5c4a50b6c8---------------------clap_preview" aria-label="Clap"><span class="button-defaultState"><span class="svgIcon svgIcon--clap svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.739 0l.761 2.966L13.261 0z"/><path d="M14.815 3.776l1.84-2.551-1.43-.471z"/><path d="M8.378 1.224l1.84 2.551L9.81.753z"/><path d="M20.382 21.622c-1.04 1.04-2.115 1.507-3.166 1.608.168-.14.332-.29.492-.45 2.885-2.886 3.456-5.982 1.69-9.211l-1.101-1.937-.955-2.02c-.315-.676-.235-1.185.245-1.556a.836.836 0 01.66-.16c.342.056.66.28.879.605l2.856 5.023c1.179 1.962 1.379 5.119-1.6 8.098m-13.29-.528l-5.02-5.02a1 1 0 01.707-1.701c.255 0 .512.098.707.292l2.607 2.607a.442.442 0 00.624-.624L4.11 14.04l-1.75-1.75a.998.998 0 111.41-1.413l4.154 4.156a.44.44 0 00.624 0 .44.44 0 000-.624l-4.152-4.153-1.172-1.171a.998.998 0 010-1.41 1.018 1.018 0 011.41 0l1.172 1.17 4.153 4.152a.437.437 0 00.624 0 .442.442 0 000-.624L6.43 8.222a.988.988 0 01-.291-.705.99.99 0 01.29-.706 1 1 0 011.412 0l6.992 6.993a.443.443 0 00.71-.501l-1.35-2.856c-.315-.676-.235-1.185.246-1.557a.85.85 0 01.66-.16c.342.056.659.28.879.606L18.628 14c1.573 2.876 1.067 5.545-1.544 8.156-1.396 1.397-3.144 1.966-5.063 1.652-1.713-.286-3.463-1.248-4.928-2.714zM10.99 5.976l2.562 2.562c-.497.607-.563 1.414-.155 2.284l.265.562-4.257-4.257a.98.98 0 01-.117-.445c0-.267.104-.517.292-.706a1.023 1.023 0 011.41 0zm8.887 2.06c-.375-.557-.902-.916-1.486-1.011a1.738 1.738 0 00-1.342.332c-.376.29-.61.656-.712 1.065a2.1 2.1 0 00-1.095-.562 1.776 1.776 0 00-.992.128l-2.636-2.636a1.883 1.883 0 00-2.658 0 1.862 1.862 0 00-.478.847 1.886 1.886 0 00-2.671-.012 1.867 1.867 0 00-.503.909c-.754-.754-1.992-.754-2.703-.044a1.881 1.881 0 000 2.658c-.288.12-.605.288-.864.547a1.884 1.884 0 000 2.659l.624.622a1.879 1.879 0 00-.91 3.16l5.019 5.02c1.595 1.594 3.515 2.645 5.408 2.959a7.16 7.16 0 001.173.098c1.026 0 1.997-.24 2.892-.7.279.04.555.065.828.065 1.53 0 2.969-.628 4.236-1.894 3.338-3.338 3.083-6.928 1.738-9.166l-2.868-5.043z"/></g></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--clapFilled svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.738 0l.762 2.966L13.262 0z"/><path d="M16.634 1.224l-1.432-.47-.408 3.022z"/><path d="M9.79.754l-1.431.47 1.84 2.552z"/><path d="M22.472 13.307l-3.023-5.32c-.287-.426-.689-.705-1.123-.776a1.16 1.16 0 00-.911.221c-.297.231-.474.515-.535.84.017.022.036.04.053.063l2.843 5.001c1.95 3.564 1.328 6.973-1.843 10.144a8.46 8.46 0 01-.549.501c1.205-.156 2.328-.737 3.351-1.76 3.268-3.268 3.041-6.749 1.737-8.914"/><path d="M12.58 9.887c-.156-.83.096-1.569.692-2.142L10.78 5.252c-.5-.504-1.378-.504-1.879 0-.178.18-.273.4-.329.63l4.008 4.005z"/><path d="M15.812 9.04c-.218-.323-.539-.55-.88-.606a.814.814 0 00-.644.153c-.176.137-.713.553-.24 1.566l1.43 3.025a.539.539 0 11-.868.612L7.2 6.378a.986.986 0 10-1.395 1.395l4.401 4.403a.538.538 0 11-.762.762L5.046 8.54 3.802 7.295a.99.99 0 00-1.396 0 .981.981 0 000 1.394L3.647 9.93l4.402 4.403a.537.537 0 010 .761.535.535 0 01-.762 0L2.89 10.696a.992.992 0 00-1.399-.003.983.983 0 000 1.395l1.855 1.854 2.763 2.765a.538.538 0 01-.76.761l-2.765-2.764a.982.982 0 00-1.395 0 .989.989 0 000 1.395l5.32 5.32c3.371 3.372 6.64 4.977 10.49 1.126C19.74 19.8 20.271 17 18.62 13.982L15.812 9.04z"/></g></svg></span></span></button></div><span class="u-relative u-background js-actionMultirecommendCount u-marginLeft5"><button class="button button--chromeless u-baseColor--buttonNormal js-multirecommendCountButton u-disablePointerEvents" data-action="show-recommends" data-action-value="1e5c4a50b6c8">19</button></span></div></div><div class="buttonSet u-floatRight"><a class="button button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/kicking-the-habit-jenkins-detox-in-production-1e5c4a50b6c8?source=---------7#--responses" data-action-source="---------7">2 responses</a><button class="button button--dark button--chromeless is-touchIconFadeInPulse u-baseColor--buttonDark button--withIcon button--withSvgIcon button--bookmark js-bookmarkButton" data-action="add-to-bookmarks" data-action-value="1e5c4a50b6c8"><span class="js-remove-from-bookmarks u-hide"><span class="svgIcon svgIcon--bookmarkFilled svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" ><path d="M19 6c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 00.706.03L12.5 16.85l5.662 4.126c.205.183.52.17.708-.03a.5.5 0 00.118-.285H19V6z"/></svg></span></span><span class="js-add-to-bookmarks"><span class="svgIcon svgIcon--bookmarkAdd svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" fill="none" ><path d="M18 2.5a.5.5 0 011 0V5h2.5a.5.5 0 010 1H19v2.5a.5.5 0 11-1 0V6h-2.5a.5.5 0 010-1H18V2.5z" fill="#292929"/><path d="M7 7a1 1 0 011-1h3.5a.5.5 0 000-1H8a2 2 0 00-2 2v14a.5.5 0 00.805.396L12.5 17l5.695 4.396A.5.5 0 0019 21v-8.5a.5.5 0 00-1 0v7.485l-5.195-4.012a.5.5 0 00-.61 0L7 19.985V7z" fill="#292929"/></svg></span></span></button></div></div></div></div><div class="u-paddingTop20 u-paddingBottom25 u-borderBottomLight js-block"><div class="postArticle postArticle--short js-postArticle js-trackPostPresentation" data-post-id="6c94a6271da8" data-source="---------8"><div class="u-clearfix u-marginBottom15 u-paddingTop5"><div class="postMetaInline u-floatLeft u-sm-maxWidthFullWidth"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@marko.drvaric" data-action="show-user-card" data-action-value="517b13aeff36" data-action-type="hover" data-user-id="517b13aeff36" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*bu__k4PYAOHuEOAFpWgdzQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Marko Drvarič"></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/@marko.drvaric?source=---------8" data-action="show-user-card" data-action-source="---------8" data-action-value="517b13aeff36" data-action-type="hover" data-user-id="517b13aeff36" dir="auto">Marko Drvarič</a> in <a class="ds-link ds-link--styleSubtle link--darken link--accent u-accentColor--textNormal" href="https://medium.com/outfit7?source=---------8" data-action="show-collection-card" data-action-source="---------8" data-action-value="outfit7" data-action-type="hover">Outfit7</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><a class="link link--darken" href="https://medium.com/outfit7/410-trillion-permutations-the-art-of-knowing-what-not-to-test-6c94a6271da8?source=---------8" data-action="open-post" data-action-value="https://medium.com/outfit7/410-trillion-permutations-the-art-of-knowing-what-not-to-test-6c94a6271da8?source=---------8" data-action-source="preview-listing" ><time datetime="2023-02-13T11:23:36.379Z">Feb 13, 2023</time></a><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="10 min read"></span></div></div></div></div></div><div class="postArticle-content"><a href="https://medium.com/outfit7/410-trillion-permutations-the-art-of-knowing-what-not-to-test-6c94a6271da8?source=---------8" title="Latest stories published on Outfit7 – Medium" aria-label="Latest stories published on Outfit7 – Medium" data-action="open-post" data-action-source="---------8" data-action-value="https://medium.com/outfit7/410-trillion-permutations-the-art-of-knowing-what-not-to-test-6c94a6271da8?source=---------8" data-action-index="8" data-post-id="6c94a6271da8"><section class="section section--body section--first section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><figure name="previewImage" id="previewImage" class="graf graf--figure graf--layoutCroppedHeightPreview graf--leading"><div class="aspectRatioPlaceholder is-locked"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 30%;"></div><img class="graf-image" data-image-id="0*bp8V7w2hATa6pwQJ" data-width="1600" data-height="838" data-is-featured="true" src="https://cdn-images-1.medium.com/fit/t/1600/480/0*bp8V7w2hATa6pwQJ"></div></figure><h3 name="2b89" id="2b89" class="graf graf--h3 graf-after--figure graf--trailing graf--title">410 trillion permutations: the art of knowing what NOT to test</h3></div></div></section></a></div><div class="postArticle-readMore"><a class="button button--smaller button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/410-trillion-permutations-the-art-of-knowing-what-not-to-test-6c94a6271da8?source=---------8" data-action="open-post" data-action-source="---------8" data-action-value="https://medium.com/outfit7/410-trillion-permutations-the-art-of-knowing-what-not-to-test-6c94a6271da8?source=---------8" data-post-id="6c94a6271da8">Read more…</a></div><div class="u-clearfix u-paddingTop10"><div class="u-floatLeft"><div class="multirecommend js-actionMultirecommend u-flexCenter" data-post-id="6c94a6271da8" data-is-flush-left="true" data-source="listing-----6c94a6271da8---------------------clap_preview"><div class="u-relative u-foreground"><button class="button button--primary button--chromeless u-accentColor--buttonNormal button--withIcon button--withSvgIcon clapButton js-actionMultirecommendButton clapButton--darker" data-action="sign-up-prompt" data-sign-in-action="multivote" data-requires-token="true" data-redirect="https://medium.com/_/vote/p/6c94a6271da8" data-action-source="listing-----6c94a6271da8---------------------clap_preview" aria-label="Clap"><span class="button-defaultState"><span class="svgIcon svgIcon--clap svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.739 0l.761 2.966L13.261 0z"/><path d="M14.815 3.776l1.84-2.551-1.43-.471z"/><path d="M8.378 1.224l1.84 2.551L9.81.753z"/><path d="M20.382 21.622c-1.04 1.04-2.115 1.507-3.166 1.608.168-.14.332-.29.492-.45 2.885-2.886 3.456-5.982 1.69-9.211l-1.101-1.937-.955-2.02c-.315-.676-.235-1.185.245-1.556a.836.836 0 01.66-.16c.342.056.66.28.879.605l2.856 5.023c1.179 1.962 1.379 5.119-1.6 8.098m-13.29-.528l-5.02-5.02a1 1 0 01.707-1.701c.255 0 .512.098.707.292l2.607 2.607a.442.442 0 00.624-.624L4.11 14.04l-1.75-1.75a.998.998 0 111.41-1.413l4.154 4.156a.44.44 0 00.624 0 .44.44 0 000-.624l-4.152-4.153-1.172-1.171a.998.998 0 010-1.41 1.018 1.018 0 011.41 0l1.172 1.17 4.153 4.152a.437.437 0 00.624 0 .442.442 0 000-.624L6.43 8.222a.988.988 0 01-.291-.705.99.99 0 01.29-.706 1 1 0 011.412 0l6.992 6.993a.443.443 0 00.71-.501l-1.35-2.856c-.315-.676-.235-1.185.246-1.557a.85.85 0 01.66-.16c.342.056.659.28.879.606L18.628 14c1.573 2.876 1.067 5.545-1.544 8.156-1.396 1.397-3.144 1.966-5.063 1.652-1.713-.286-3.463-1.248-4.928-2.714zM10.99 5.976l2.562 2.562c-.497.607-.563 1.414-.155 2.284l.265.562-4.257-4.257a.98.98 0 01-.117-.445c0-.267.104-.517.292-.706a1.023 1.023 0 011.41 0zm8.887 2.06c-.375-.557-.902-.916-1.486-1.011a1.738 1.738 0 00-1.342.332c-.376.29-.61.656-.712 1.065a2.1 2.1 0 00-1.095-.562 1.776 1.776 0 00-.992.128l-2.636-2.636a1.883 1.883 0 00-2.658 0 1.862 1.862 0 00-.478.847 1.886 1.886 0 00-2.671-.012 1.867 1.867 0 00-.503.909c-.754-.754-1.992-.754-2.703-.044a1.881 1.881 0 000 2.658c-.288.12-.605.288-.864.547a1.884 1.884 0 000 2.659l.624.622a1.879 1.879 0 00-.91 3.16l5.019 5.02c1.595 1.594 3.515 2.645 5.408 2.959a7.16 7.16 0 001.173.098c1.026 0 1.997-.24 2.892-.7.279.04.555.065.828.065 1.53 0 2.969-.628 4.236-1.894 3.338-3.338 3.083-6.928 1.738-9.166l-2.868-5.043z"/></g></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--clapFilled svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.738 0l.762 2.966L13.262 0z"/><path d="M16.634 1.224l-1.432-.47-.408 3.022z"/><path d="M9.79.754l-1.431.47 1.84 2.552z"/><path d="M22.472 13.307l-3.023-5.32c-.287-.426-.689-.705-1.123-.776a1.16 1.16 0 00-.911.221c-.297.231-.474.515-.535.84.017.022.036.04.053.063l2.843 5.001c1.95 3.564 1.328 6.973-1.843 10.144a8.46 8.46 0 01-.549.501c1.205-.156 2.328-.737 3.351-1.76 3.268-3.268 3.041-6.749 1.737-8.914"/><path d="M12.58 9.887c-.156-.83.096-1.569.692-2.142L10.78 5.252c-.5-.504-1.378-.504-1.879 0-.178.18-.273.4-.329.63l4.008 4.005z"/><path d="M15.812 9.04c-.218-.323-.539-.55-.88-.606a.814.814 0 00-.644.153c-.176.137-.713.553-.24 1.566l1.43 3.025a.539.539 0 11-.868.612L7.2 6.378a.986.986 0 10-1.395 1.395l4.401 4.403a.538.538 0 11-.762.762L5.046 8.54 3.802 7.295a.99.99 0 00-1.396 0 .981.981 0 000 1.394L3.647 9.93l4.402 4.403a.537.537 0 010 .761.535.535 0 01-.762 0L2.89 10.696a.992.992 0 00-1.399-.003.983.983 0 000 1.395l1.855 1.854 2.763 2.765a.538.538 0 01-.76.761l-2.765-2.764a.982.982 0 00-1.395 0 .989.989 0 000 1.395l5.32 5.32c3.371 3.372 6.64 4.977 10.49 1.126C19.74 19.8 20.271 17 18.62 13.982L15.812 9.04z"/></g></svg></span></span></button></div><span class="u-relative u-background js-actionMultirecommendCount u-marginLeft5"><button class="button button--chromeless u-baseColor--buttonNormal js-multirecommendCountButton u-disablePointerEvents" data-action="show-recommends" data-action-value="6c94a6271da8">13</button></span></div></div><div class="buttonSet u-floatRight"><a class="button button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/410-trillion-permutations-the-art-of-knowing-what-not-to-test-6c94a6271da8?source=---------8#--responses" data-action-source="---------8">1 response</a><button class="button button--dark button--chromeless is-touchIconFadeInPulse u-baseColor--buttonDark button--withIcon button--withSvgIcon button--bookmark js-bookmarkButton" data-action="add-to-bookmarks" data-action-value="6c94a6271da8"><span class="js-remove-from-bookmarks u-hide"><span class="svgIcon svgIcon--bookmarkFilled svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" ><path d="M19 6c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 00.706.03L12.5 16.85l5.662 4.126c.205.183.52.17.708-.03a.5.5 0 00.118-.285H19V6z"/></svg></span></span><span class="js-add-to-bookmarks"><span class="svgIcon svgIcon--bookmarkAdd svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" fill="none" ><path d="M18 2.5a.5.5 0 011 0V5h2.5a.5.5 0 010 1H19v2.5a.5.5 0 11-1 0V6h-2.5a.5.5 0 010-1H18V2.5z" fill="#292929"/><path d="M7 7a1 1 0 011-1h3.5a.5.5 0 000-1H8a2 2 0 00-2 2v14a.5.5 0 00.805.396L12.5 17l5.695 4.396A.5.5 0 0019 21v-8.5a.5.5 0 00-1 0v7.485l-5.195-4.012a.5.5 0 00-.61 0L7 19.985V7z" fill="#292929"/></svg></span></span></button></div></div></div></div><div class="u-paddingTop20 u-paddingBottom25 js-block"><div class="postArticle postArticle--short js-postArticle js-trackPostPresentation" data-post-id="876685f9ed1" data-source="---------9"><div class="u-clearfix u-marginBottom15 u-paddingTop5"><div class="postMetaInline u-floatLeft u-sm-maxWidthFullWidth"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@primoz.bevk" data-action="show-user-card" data-action-value="752fffec2a47" data-action-type="hover" data-user-id="752fffec2a47" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*Yfeh63vu0fLIS6yfY7UEkw.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Primož Bevk"></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/@primoz.bevk?source=---------9" data-action="show-user-card" data-action-source="---------9" data-action-value="752fffec2a47" data-action-type="hover" data-user-id="752fffec2a47" dir="auto">Primož Bevk</a> in <a class="ds-link ds-link--styleSubtle link--darken link--accent u-accentColor--textNormal" href="https://medium.com/outfit7?source=---------9" data-action="show-collection-card" data-action-source="---------9" data-action-value="outfit7" data-action-type="hover">Outfit7</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><a class="link link--darken" href="https://medium.com/outfit7/how-we-built-the-compliance-library-on-a-modern-web-framework-876685f9ed1?source=---------9" data-action="open-post" data-action-value="https://medium.com/outfit7/how-we-built-the-compliance-library-on-a-modern-web-framework-876685f9ed1?source=---------9" data-action-source="preview-listing" ><time datetime="2023-01-11T13:02:33.857Z">Jan 11, 2023</time></a><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="1 min read"></span></div></div></div></div></div><div class="postArticle-content"><a href="https://medium.com/outfit7/how-we-built-the-compliance-library-on-a-modern-web-framework-876685f9ed1?source=---------9" title="Latest stories published on Outfit7 – Medium" aria-label="Latest stories published on Outfit7 – Medium" data-action="open-post" data-action-source="---------9" data-action-value="https://medium.com/outfit7/how-we-built-the-compliance-library-on-a-modern-web-framework-876685f9ed1?source=---------9" data-action-index="9" data-post-id="876685f9ed1"><section class="section section--body section--first section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><figure name="previewImage" id="previewImage" class="graf graf--figure graf--layoutCroppedHeightPreview graf--leading"><div class="aspectRatioPlaceholder is-locked"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 30%;"></div><img class="graf-image" data-image-id="0*ILixSBT_BE2a1oyi" data-width="1600" data-height="838" data-is-featured="true" src="https://cdn-images-1.medium.com/fit/t/1600/480/0*ILixSBT_BE2a1oyi"></div></figure><h3 name="e2c1" id="e2c1" class="graf graf--h3 graf-after--figure graf--trailing graf--title">How we built the Compliance library on a modern web framework</h3></div></div></section></a></div><div class="postArticle-readMore"><a class="button button--smaller button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/how-we-built-the-compliance-library-on-a-modern-web-framework-876685f9ed1?source=---------9" data-action="open-post" data-action-source="---------9" data-action-value="https://medium.com/outfit7/how-we-built-the-compliance-library-on-a-modern-web-framework-876685f9ed1?source=---------9" data-post-id="876685f9ed1">Read more…</a></div><div class="u-clearfix u-paddingTop10"><div class="u-floatLeft"><div class="multirecommend js-actionMultirecommend u-flexCenter" data-post-id="876685f9ed1" data-is-flush-left="true" data-source="listing-----876685f9ed1---------------------clap_preview"><div class="u-relative u-foreground"><button class="button button--primary button--chromeless u-accentColor--buttonNormal button--withIcon button--withSvgIcon clapButton js-actionMultirecommendButton clapButton--darker" data-action="sign-up-prompt" data-sign-in-action="multivote" data-requires-token="true" data-redirect="https://medium.com/_/vote/p/876685f9ed1" data-action-source="listing-----876685f9ed1---------------------clap_preview" aria-label="Clap"><span class="button-defaultState"><span class="svgIcon svgIcon--clap svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.739 0l.761 2.966L13.261 0z"/><path d="M14.815 3.776l1.84-2.551-1.43-.471z"/><path d="M8.378 1.224l1.84 2.551L9.81.753z"/><path d="M20.382 21.622c-1.04 1.04-2.115 1.507-3.166 1.608.168-.14.332-.29.492-.45 2.885-2.886 3.456-5.982 1.69-9.211l-1.101-1.937-.955-2.02c-.315-.676-.235-1.185.245-1.556a.836.836 0 01.66-.16c.342.056.66.28.879.605l2.856 5.023c1.179 1.962 1.379 5.119-1.6 8.098m-13.29-.528l-5.02-5.02a1 1 0 01.707-1.701c.255 0 .512.098.707.292l2.607 2.607a.442.442 0 00.624-.624L4.11 14.04l-1.75-1.75a.998.998 0 111.41-1.413l4.154 4.156a.44.44 0 00.624 0 .44.44 0 000-.624l-4.152-4.153-1.172-1.171a.998.998 0 010-1.41 1.018 1.018 0 011.41 0l1.172 1.17 4.153 4.152a.437.437 0 00.624 0 .442.442 0 000-.624L6.43 8.222a.988.988 0 01-.291-.705.99.99 0 01.29-.706 1 1 0 011.412 0l6.992 6.993a.443.443 0 00.71-.501l-1.35-2.856c-.315-.676-.235-1.185.246-1.557a.85.85 0 01.66-.16c.342.056.659.28.879.606L18.628 14c1.573 2.876 1.067 5.545-1.544 8.156-1.396 1.397-3.144 1.966-5.063 1.652-1.713-.286-3.463-1.248-4.928-2.714zM10.99 5.976l2.562 2.562c-.497.607-.563 1.414-.155 2.284l.265.562-4.257-4.257a.98.98 0 01-.117-.445c0-.267.104-.517.292-.706a1.023 1.023 0 011.41 0zm8.887 2.06c-.375-.557-.902-.916-1.486-1.011a1.738 1.738 0 00-1.342.332c-.376.29-.61.656-.712 1.065a2.1 2.1 0 00-1.095-.562 1.776 1.776 0 00-.992.128l-2.636-2.636a1.883 1.883 0 00-2.658 0 1.862 1.862 0 00-.478.847 1.886 1.886 0 00-2.671-.012 1.867 1.867 0 00-.503.909c-.754-.754-1.992-.754-2.703-.044a1.881 1.881 0 000 2.658c-.288.12-.605.288-.864.547a1.884 1.884 0 000 2.659l.624.622a1.879 1.879 0 00-.91 3.16l5.019 5.02c1.595 1.594 3.515 2.645 5.408 2.959a7.16 7.16 0 001.173.098c1.026 0 1.997-.24 2.892-.7.279.04.555.065.828.065 1.53 0 2.969-.628 4.236-1.894 3.338-3.338 3.083-6.928 1.738-9.166l-2.868-5.043z"/></g></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--clapFilled svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" ><g fill-rule="evenodd"><path d="M11.738 0l.762 2.966L13.262 0z"/><path d="M16.634 1.224l-1.432-.47-.408 3.022z"/><path d="M9.79.754l-1.431.47 1.84 2.552z"/><path d="M22.472 13.307l-3.023-5.32c-.287-.426-.689-.705-1.123-.776a1.16 1.16 0 00-.911.221c-.297.231-.474.515-.535.84.017.022.036.04.053.063l2.843 5.001c1.95 3.564 1.328 6.973-1.843 10.144a8.46 8.46 0 01-.549.501c1.205-.156 2.328-.737 3.351-1.76 3.268-3.268 3.041-6.749 1.737-8.914"/><path d="M12.58 9.887c-.156-.83.096-1.569.692-2.142L10.78 5.252c-.5-.504-1.378-.504-1.879 0-.178.18-.273.4-.329.63l4.008 4.005z"/><path d="M15.812 9.04c-.218-.323-.539-.55-.88-.606a.814.814 0 00-.644.153c-.176.137-.713.553-.24 1.566l1.43 3.025a.539.539 0 11-.868.612L7.2 6.378a.986.986 0 10-1.395 1.395l4.401 4.403a.538.538 0 11-.762.762L5.046 8.54 3.802 7.295a.99.99 0 00-1.396 0 .981.981 0 000 1.394L3.647 9.93l4.402 4.403a.537.537 0 010 .761.535.535 0 01-.762 0L2.89 10.696a.992.992 0 00-1.399-.003.983.983 0 000 1.395l1.855 1.854 2.763 2.765a.538.538 0 01-.76.761l-2.765-2.764a.982.982 0 00-1.395 0 .989.989 0 000 1.395l5.32 5.32c3.371 3.372 6.64 4.977 10.49 1.126C19.74 19.8 20.271 17 18.62 13.982L15.812 9.04z"/></g></svg></span></span></button></div><span class="u-relative u-background js-actionMultirecommendCount u-marginLeft5"><button class="button button--chromeless u-baseColor--buttonNormal js-multirecommendCountButton u-disablePointerEvents" data-action="show-recommends" data-action-value="876685f9ed1">61</button></span></div></div><div class="buttonSet u-floatRight"><a class="button button--chromeless u-baseColor--buttonNormal" href="https://medium.com/outfit7/how-we-built-the-compliance-library-on-a-modern-web-framework-876685f9ed1?source=---------9#--responses" data-action-source="---------9">2 responses</a><button class="button button--dark button--chromeless is-touchIconFadeInPulse u-baseColor--buttonDark button--withIcon button--withSvgIcon button--bookmark js-bookmarkButton" data-action="add-to-bookmarks" data-action-value="876685f9ed1"><span class="js-remove-from-bookmarks u-hide"><span class="svgIcon svgIcon--bookmarkFilled svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" ><path d="M19 6c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 00.706.03L12.5 16.85l5.662 4.126c.205.183.52.17.708-.03a.5.5 0 00.118-.285H19V6z"/></svg></span></span><span class="js-add-to-bookmarks"><span class="svgIcon svgIcon--bookmarkAdd svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" fill="none" ><path d="M18 2.5a.5.5 0 011 0V5h2.5a.5.5 0 010 1H19v2.5a.5.5 0 11-1 0V6h-2.5a.5.5 0 010-1H18V2.5z" fill="#292929"/><path d="M7 7a1 1 0 011-1h3.5a.5.5 0 000-1H8a2 2 0 00-2 2v14a.5.5 0 00.805.396L12.5 17l5.695 4.396A.5.5 0 0019 21v-8.5a.5.5 0 00-1 0v7.485l-5.195-4.012a.5.5 0 00-.61 0L7 19.985V7z" fill="#292929"/></svg></span></span></button></div></div></div></div></div></div></div></div><div class="col u-xs-size12of12 u-size4of12 js-aboutCollectionBox"><header class="heading heading--borderedBottom heading--paddedTop" ><div class="u-clearfix"><div class="heading-content u-floatLeft"><span class="heading-title heading-title--dark heading-title--lineHeightTight"><a class="link link--darken u-accentColor--textDarken u-baseColor--link" href="https://medium.com/outfit7/about">About</a></span></div></div></header><div class="u-tableCell"><a class="link u-baseColor--link avatar avatar--roundedRectangle" href="https://medium.com/outfit7" title="Go to Outfit7" aria-label="Go to Outfit7"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*dCIQWfMya9g57UUL2ZzrJQ.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Outfit7"></a></div><div class="u-tableCell u-verticalAlignMiddle u-textColorNormal u-fontSize16 u-breakWord u-paddingLeft10">Outfit7</div><div class="u-fontSize14 u-lineHeightBaseSans u-textColorDark u-paddingTop15 u-paddingBottom15"><div class="u-marginBottom15 u-breakWord">The inside scoop on development, engineering &amp; tech innovation @ Outfit7.</div><a class=" link--darken u-accentColor--textDarken link--accent u-accentColor--textNormal" href="https://medium.com/outfit7/about">More information</a></div><div class="u-fontSize14 u-lineHeightBaseSans u-textColorDark u-paddingBottom15"><header class="heading heading--allCaps heading--light" ><div class="u-clearfix"><div class="heading-content u-floatLeft"><span class="heading-title">Followers</span></div></div></header>57 </div><div class="u-fontSize14 u-lineHeightBaseSans u-marginBottom4 u-paddingBottom15"><header class="heading heading--allCaps heading--light" ><div class="u-clearfix"><div class="heading-content u-floatLeft"><span class="heading-title">Elsewhere</span></div></div></header><div class="linkSet"><a class="button button--dark button--chromeless is-touchIconBlackPulse u-baseColor--buttonDark button--withIcon button--withSvgIcon button--dark button--chromeless" href="//facebook.com/outfit7" title="Facebook page" aria-label="Facebook page" target="_blank"><span class="button-defaultState"><span class="svgIcon svgIcon--facebookFilled svgIcon--21px"><svg class="svgIcon-use" width="21" height="21" ><path d="M18.26 10.55c0-4.302-3.47-7.79-7.75-7.79-4.28 0-7.75 3.488-7.75 7.79a7.773 7.773 0 006.535 7.684v-5.49h-1.89v-2.2h1.89v-1.62c0-1.882 1.144-2.907 2.814-2.907.8 0 1.48.06 1.68.087V8.07h-1.15c-.91 0-1.09.435-1.09 1.07v1.405h2.16l-.28 2.2h-1.88v5.515c3.78-.514 6.7-3.766 6.7-7.71"/></svg></span></span></a></div></div></div></div></div><style class="js-collectionStyle"> .u-accentColor--borderLight {border-color: #858484 !important;} .u-accentColor--borderNormal {border-color: #858484 !important;} .u-accentColor--borderDark {border-color: #737171 !important;} .u-accentColor--iconLight .svgIcon,.u-accentColor--iconLight.svgIcon {fill: #858484 !important;} .u-accentColor--iconNormal .svgIcon,.u-accentColor--iconNormal.svgIcon {fill: #858484 !important;} .u-accentColor--iconDark .svgIcon,.u-accentColor--iconDark.svgIcon {fill: #737171 !important;} .u-accentColor--textNormal {color: #737171 !important;} .u-accentColor--hoverTextNormal:hover {color: #737171 !important;} .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #696868 !important;} .u-accentColor--textDark {color: #696868 !important;} .u-accentColor--backgroundLight {background-color: #858484 !important;} .u-accentColor--backgroundNormal {background-color: #858484 !important;} .u-accentColor--backgroundDark {background-color: #737171 !important;} .u-accentColor--buttonDark {border-color: #737171 !important; color: #696868 !important;} .u-accentColor--buttonDark:hover {border-color: #696868 !important;} .u-accentColor--buttonDark .icon:before,.u-accentColor--buttonDark .svgIcon{color: #737171 !important; fill: #737171 !important;} .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #858484 !important; color: #737171 !important;} .u-accentColor--buttonNormal:hover {border-color: #737171 !important;} .u-accentColor--buttonNormal .icon:before,.u-accentColor--buttonNormal .svgIcon{color: #858484 !important; fill: #858484 !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: #737171 !important; border-color: #737171 !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: #858484 !important; border-color: #858484 !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: #737171 !important;}.u-tintBgColor {background-color: rgba(17, 17, 17, 1) !important;}.u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(17, 17, 17, 1) 0%, rgba(17, 17, 17, 0) 100%) !important;}.u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(17, 17, 17, 0) 0%, rgba(17, 17, 17, 1) 100%) !important;} .u-tintSpectrum .u-baseColor--borderLight {border-color: #939292 !important;} .u-tintSpectrum .u-baseColor--borderNormal {border-color: #BDBBBB !important;} .u-tintSpectrum .u-baseColor--borderDark {border-color: #E5E2E2 !important;} .u-tintSpectrum .u-baseColor--iconLight .svgIcon,.u-tintSpectrum .u-baseColor--iconLight.svgIcon {fill: #939292 !important;} .u-tintSpectrum .u-baseColor--iconNormal .svgIcon,.u-tintSpectrum .u-baseColor--iconNormal.svgIcon {fill: #BDBBBB !important;} .u-tintSpectrum .u-baseColor--iconDark .svgIcon,.u-tintSpectrum .u-baseColor--iconDark.svgIcon {fill: #E5E2E2 !important;} .u-tintSpectrum .u-baseColor--textNormal {color: #BDBBBB !important;} .u-tintSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--textDark {color: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--textDarker {color: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--backgroundLight {background-color: #939292 !important;} .u-tintSpectrum .u-baseColor--backgroundNormal {background-color: #BDBBBB !important;} .u-tintSpectrum .u-baseColor--backgroundDark {background-color: #E5E2E2 !important;} .u-tintSpectrum .u-baseColor--buttonLight {border-color: #939292 !important; color: #939292 !important;} .u-tintSpectrum .u-baseColor--buttonLight:hover {border-color: #939292 !important;} .u-tintSpectrum .u-baseColor--buttonLight .icon:before,.u-tintSpectrum .u-baseColor--buttonLight .svgIcon {color: #939292 !important; fill: #939292 !important;} .u-tintSpectrum .u-baseColor--buttonDark {border-color: #E5E2E2 !important; color: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--buttonDark:hover {border-color: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--buttonDark .icon:before,.u-tintSpectrum .u-baseColor--buttonDark .svgIcon {color: #E5E2E2 !important; fill: #E5E2E2 !important;} .u-tintSpectrum .u-baseColor--buttonNormal {border-color: #BDBBBB !important; color: #BDBBBB !important;} .u-tintSpectrum .u-baseColor--buttonNormal:hover {border-color: #E5E2E2 !important;} .u-tintSpectrum .u-baseColor--buttonNormal .icon:before,.u-tintSpectrum .u-baseColor--buttonNormal .svgIcon {color: #BDBBBB !important; fill: #BDBBBB !important;} .u-tintSpectrum .u-baseColor--buttonDark.button--filled,.u-tintSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: #E5E2E2 !important; border-color: #E5E2E2 !important; color: rgba(17, 17, 17, 1) !important; fill: rgba(17, 17, 17, 1) !important;} .u-tintSpectrum .u-baseColor--buttonNormal.button--filled,.u-tintSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: #BDBBBB !important; border-color: #BDBBBB !important; color: rgba(17, 17, 17, 1) !important; fill: rgba(17, 17, 17, 1) !important;} .u-tintSpectrum .u-baseColor--link {color: #BDBBBB !important;} .u-tintSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: #F8F5F5 !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: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--link.link--dark {color: #F8F5F5 !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: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--link.link--darker {color: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: #939292;} .u-tintSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: #939292;} .u-tintSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: #939292;} .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: #F8F5F5 !important; fill: #F8F5F5 !important;} .u-tintSpectrum .ui-body,.u-tintSpectrum .ui-caps {color: #F8F5F5 !important; fill: #F8F5F5 !important;} .u-tintSpectrum .ui-summary,.u-tintSpectrum .ui-caption {color: #939292 !important; fill: #939292 !important;} .u-tintSpectrum .u-accentColor--borderLight {border-color: #939292 !important;} .u-tintSpectrum .u-accentColor--borderNormal {border-color: #BDBBBB !important;} .u-tintSpectrum .u-accentColor--borderDark {border-color: #E5E2E2 !important;} .u-tintSpectrum .u-accentColor--iconLight .svgIcon,.u-tintSpectrum .u-accentColor--iconLight.svgIcon {fill: #939292 !important;} .u-tintSpectrum .u-accentColor--iconNormal .svgIcon,.u-tintSpectrum .u-accentColor--iconNormal.svgIcon {fill: #BDBBBB !important;} .u-tintSpectrum .u-accentColor--iconDark .svgIcon,.u-tintSpectrum .u-accentColor--iconDark.svgIcon {fill: #E5E2E2 !important;} .u-tintSpectrum .u-accentColor--textNormal {color: #BDBBBB !important;} .u-tintSpectrum .u-accentColor--hoverTextNormal:hover {color: #BDBBBB !important;} .u-tintSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #F8F5F5 !important;} .u-tintSpectrum .u-accentColor--textDark {color: #F8F5F5 !important;} .u-tintSpectrum .u-accentColor--backgroundLight {background-color: #939292 !important;} .u-tintSpectrum .u-accentColor--backgroundNormal {background-color: #BDBBBB !important;} .u-tintSpectrum .u-accentColor--backgroundDark {background-color: #E5E2E2 !important;} .u-tintSpectrum .u-accentColor--buttonDark {border-color: #E5E2E2 !important; color: #F8F5F5 !important;} .u-tintSpectrum .u-accentColor--buttonDark:hover {border-color: #F8F5F5 !important;} .u-tintSpectrum .u-accentColor--buttonDark .icon:before,.u-tintSpectrum .u-accentColor--buttonDark .svgIcon{color: #E5E2E2 !important; fill: #E5E2E2 !important;} .u-tintSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #BDBBBB !important; color: #BDBBBB !important;} .u-tintSpectrum .u-accentColor--buttonNormal:hover {border-color: #E5E2E2 !important;} .u-tintSpectrum .u-accentColor--buttonNormal .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal .svgIcon{color: #BDBBBB !important; fill: #BDBBBB !important;} .u-tintSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(17, 17, 17, 1) !important; fill: rgba(17, 17, 17, 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: #E5E2E2 !important; border-color: #E5E2E2 !important; color: rgba(17, 17, 17, 1) !important; fill: rgba(17, 17, 17, 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: #BDBBBB !important; border-color: #BDBBBB !important; color: rgba(17, 17, 17, 1) !important; fill: rgba(17, 17, 17, 1) !important;} .u-tintSpectrum .postArticle.is-withAccentColors .markup--user,.u-tintSpectrum .postArticle.is-withAccentColors .markup--query {color: #BDBBBB !important;} .u-accentColor--highlightFaint {background-color: rgba(243, 240, 239, 1) !important;} .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(225, 223, 222, 1) !important;} .postArticle.is-withAccentColors .markup--quote.is-other {background-color: rgba(243, 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(243, 240, 239, 1), rgba(243, 240, 239, 1));} .postArticle.is-withAccentColors .markup--quote.is-me {background-color: rgba(233, 231, 230, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(233, 231, 230, 1), rgba(233, 231, 230, 1));} .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: rgba(225, 223, 222, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(225, 223, 222, 1), rgba(225, 223, 222, 1));} .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: rgba(225, 223, 222, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(225, 223, 222, 1), rgba(225, 223, 222, 1));} .postArticle.is-withAccentColors .markup--highlight {background-color: rgba(225, 223, 222, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(225, 223, 222, 1), rgba(225, 223, 222, 1));}</style><style class="js-collectionStyleConstant">.u-imageBgColor {background-color: rgba(0, 0, 0, 0.24705882352941178);} .u-imageSpectrum .u-baseColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-baseColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-baseColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--iconLight .svgIcon,.u-imageSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--iconNormal .svgIcon,.u-imageSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--iconDark .svgIcon,.u-imageSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textDark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textDarker {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-baseColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important; color: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-baseColor--buttonLight .icon:before,.u-imageSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonDark .icon:before,.u-imageSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonNormal .icon:before,.u-imageSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonDark.button--filled,.u-imageSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-baseColor--buttonNormal.button--filled,.u-imageSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-baseColor--link {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--darken:active {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--dark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--darker {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .ui-h1,.u-imageSpectrum .ui-h2,.u-imageSpectrum .ui-h3,.u-imageSpectrum .ui-h4,.u-imageSpectrum .ui-brand1,.u-imageSpectrum .ui-brand2,.u-imageSpectrum .ui-captionStrong {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .ui-body,.u-imageSpectrum .ui-caps {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .ui-summary,.u-imageSpectrum .ui-caption {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-accentColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-accentColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-accentColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--iconLight .svgIcon,.u-imageSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-accentColor--iconNormal .svgIcon,.u-imageSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--iconDark .svgIcon,.u-imageSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--textDark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-accentColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark .icon:before,.u-imageSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-accentColor--buttonDark.button--filled,.u-imageSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-imageSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-imageSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .postArticle.is-withAccentColors .markup--user,.u-imageSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--highlightFaint {background-color: rgba(255, 255, 255, 0.2) !important;} .u-imageSpectrum .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(255, 255, 255, 0.6) !important;} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: rgba(255, 255, 255, 0.2) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: rgba(255, 255, 255, 0.4) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.4));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));}.u-resetSpectrum .u-tintBgColor {background-color: rgba(255, 255, 255, 1) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 100%) !important;} .u-resetSpectrum .u-baseColor--borderLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--borderNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--borderDark {border-color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--iconLight .svgIcon,.u-resetSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--iconNormal .svgIcon,.u-resetSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--iconDark .svgIcon,.u-resetSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textNormal {color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textDark {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textDarker {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--backgroundLight {background-color: rgba(0, 0, 0, 0.09803921568627451) !important;} .u-resetSpectrum .u-baseColor--backgroundNormal {background-color: rgba(0, 0, 0, 0.2) !important;} .u-resetSpectrum .u-baseColor--backgroundDark {background-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight .icon:before,.u-resetSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonDark {border-color: rgba(0, 0, 0, 0.6) !important; color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--buttonDark .icon:before,.u-resetSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important; color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonNormal .icon:before,.u-resetSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(0, 0, 0, 0.4980392156862745) !important; fill: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonDark.button--filled,.u-resetSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2980392156862745) !important; border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-baseColor--buttonNormal.button--filled,.u-resetSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2) !important; border-color: rgba(0, 0, 0, 0.2) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-baseColor--link {color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--darken:active {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--dark {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--link.link--darker {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .ui-h1,.u-resetSpectrum .ui-h2,.u-resetSpectrum .ui-h3,.u-resetSpectrum .ui-h4,.u-resetSpectrum .ui-brand1,.u-resetSpectrum .ui-brand2,.u-resetSpectrum .ui-captionStrong {color: rgba(0, 0, 0, 0.8) !important; fill: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .ui-body,.u-resetSpectrum .ui-caps {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .ui-summary,.u-resetSpectrum .ui-caption {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-accentColor--borderLight {border-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--borderNormal {border-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--borderDark {border-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--iconLight .svgIcon,.u-resetSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--iconNormal .svgIcon,.u-resetSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--iconDark .svgIcon,.u-resetSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--textNormal {color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--textDark {color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundLight {background-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundNormal {background-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundDark {background-color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark {border-color: rgba(17, 128, 14, 1) !important; color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark .icon:before,.u-resetSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(15, 115, 12, 1) !important; fill: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(26, 137, 23, 1) !important; color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(17, 128, 14, 1) !important; fill: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark.button--filled,.u-resetSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-resetSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(15, 115, 12, 1) !important; border-color: rgba(15, 115, 12, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-resetSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: rgba(17, 128, 14, 1) !important; border-color: rgba(17, 128, 14, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .postArticle.is-withAccentColors .markup--user,.u-resetSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(17, 128, 14, 1) !important;}</style></div></div></div><div class="loadingBar"></div><script>// <![CDATA[ window["obvInit"] = function (opt_embedded) {window["obvInit"]["embedded"] = opt_embedded; window["obvInit"]["ready"] = true;} // ]]></script><script>// <![CDATA[ var GLOBALS = {"audioUrl":"https://d1fcbxp97j4nb2.cloudfront.net","baseUrl":"https://medium.com","buildLabel":"20250408-1802-root","currentUser":{"userId":"lo_d3e828841a24","isVerified":false,"subscriberEmail":"","hasPastMemberships":false,"isEnrolledInHightower":false,"isEligibleForHightower":true,"hightowerLastLockedAt":0,"isWriterProgramEnrolled":true,"isWriterProgramInvited":false,"isWriterProgramOptedOut":false,"writerProgramVersion":0,"writerProgramEnrolledAt":0,"friendLinkOnboarding":0,"hasAdditionalUnlocks":false,"hasApiAccess":false,"writerProgramDistributionSettingOptedIn":false,"isSuspended":false,"collectionOnboardingSeen":0,"atsQualifiedAt":0},"currentUserHasUnverifiedEmail":false,"isAuthenticated":false,"isCurrentUserVerified":false,"miroUrl":"https://cdn-images-1.medium.com","moduleUrls":{"base":"https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.Ozb8sfu1IE2zO83L0UUUxg.12.js","common-async":"https://cdn-static-1.medium.com/_/fp/gen-js/main-common-async.bundle.l49OpqrwkRyiGOCpAIcKuQ.12.js","hightower":"https://cdn-static-1.medium.com/_/fp/gen-js/main-hightower.bundle.Sbq5rN7mnRFFhd9663VgQg.12.js","home-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-home-screens.bundle.P5DOvs33eZq2vtnRFa9tMw.12.js","misc-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-misc-screens.bundle.xex472sRCFYoIullxjy5kw.12.js","notes":"https://cdn-static-1.medium.com/_/fp/gen-js/main-notes.bundle.uUasyPCj--9tvOJrZ2wVdA.12.js","payments":"https://cdn-static-1.medium.com/_/fp/gen-js/main-payments.bundle.QfTt0I9toSma5xqkGX8qjg.12.js","posters":"https://cdn-static-1.medium.com/_/fp/gen-js/main-posters.bundle.fU0CARH_Ay6RO1WXoJA9Sw.12.js","power-readers":"https://cdn-static-1.medium.com/_/fp/gen-js/main-power-readers.bundle.awg6phvqmvH3Xt4l3v8d8A.12.js","pubs":"https://cdn-static-1.medium.com/_/fp/gen-js/main-pubs.bundle.3o-nIeAdAXtv2qH_8KYeqA.12.js","stats":"https://cdn-static-1.medium.com/_/fp/gen-js/main-stats.bundle.kIgMxb5kGqZrzIpjXmhPMw.12.js"},"previewConfig":{"weightThreshold":1,"weightImageParagraph":0.51,"weightIframeParagraph":0.8,"weightTextParagraph":0.08,"weightEmptyParagraph":0,"weightP":0.003,"weightH":0.005,"weightBq":0.003,"minPTextLength":60,"truncateBoundaryChars":20,"detectTitle":true,"detectTitleLevThreshold":0.15},"productName":"Medium","supportsEdit":false,"termsUrl":"//policy.medium.com/medium-terms-of-service-9db0094a1e0f","textshotHost":"textshot.textshot-production.svc.cluster.local","transactionId":"1744212658356:ed17221f1bad","useragent":{"browser":"ie","family":"ie","os":"windows","version":7,"supportsDesktopEdit":false,"supportsInteract":false,"supportsView":true,"isMobile":false,"isTablet":false,"isNative":false,"supportsFileAPI":false,"isTier1":false,"clientVersion":"","clientChannel":"","supportsRealScrollEvents":false,"supportsVhUnits":false,"ruinsViewportSections":false,"supportsHtml5Video":false,"supportsMagicUnderlines":false,"isWebView":false,"isFacebookWebView":false,"supportsProgressiveMedia":false,"supportsPromotedPosts":true,"isBot":false,"isNativeIphone":false,"supportsCssVariables":false,"supportsVideoSections":true,"emojiSupportLevel":1,"isSearchBot":false,"isSyndicationBot":false,"isNativeAndroid":false,"isNativeIos":false,"isSeoAuditBot":false,"isInternalApp":false,"supportsApplePay":false,"supportsScrollableMetabar":false},"variants":{"allow_access":true,"allow_signup":true,"allow_test_auth":"disallow","android_dense_post_preview":"control","android_enable_editor_new_publishing_flow":true,"android_enable_friend_links_creation":true,"android_enable_friend_links_postpage_banners":true,"android_enable_image_sharer":true,"android_enable_lists_v2":true,"android_enable_syntax_highlight":true,"android_enable_topic_portals":true,"android_rating_prompt_stories_read_threshold":2,"android_two_hour_refresh":true,"available_annual_plan":"2c754bcc2995","available_annual_premium_plan":"4a442ace1476","available_monthly_plan":"60e220181034","available_monthly_premium_plan":"12a660186432","browsable_stream_config_bucket":"curated-topics","can_receive_tips_v0":true,"can_send_tips_v0":true,"coronavirus_topic_recirc":true,"disable_partner_program_enrollment":true,"disable_rex_pub_featuring_recirc":true,"enable_abandoned_cart_promotion_email":true,"enable_abandoned_paywall_promotion_email":true,"enable_android_dynamic_aspirational_paywall":true,"enable_android_dynamic_programming_paywall":true,"enable_android_miro_v2":true,"enable_android_offline_reading":true,"enable_android_verified_author":true,"enable_app_flirty_thirty":true,"enable_apple_sign_in":true,"enable_apple_webhook":true,"enable_aurora_pub_follower_page":true,"enable_author_cards":true,"enable_author_cards_byline":true,"enable_auto_follow_on_subscribe":true,"enable_automod":true,"enable_bg_post_post":true,"enable_boost_experiment":"control","enable_braintree_apple_pay":true,"enable_braintree_client":true,"enable_braintree_google_pay":true,"enable_braintree_integration":true,"enable_braintree_paypal":true,"enable_braintree_trial_membership":true,"enable_braintree_webhook":true,"enable_branch_io":true,"enable_cache_less_following_feed":true,"enable_cancellation_discount_v1_1":true,"enable_configure_pronouns":true,"enable_conversion_model_v2":"group_2","enable_conversion_ranker_v2":"control","enable_creator_welcome_email":true,"enable_deprecate_legacy_providers_v3":true,"enable_deviant_get_variant_flag_from_medium2":true,"enable_diversification_rex":true,"enable_engagement_service_publish_response":true,"enable_entities_to_follow_v2":true,"enable_eventstats_event_processing":true,"enable_footer_app_buttons":true,"enable_google_one_tap":true,"enable_google_webhook":true,"enable_group_gifting":true,"enable_homepage_featured_feed":true,"enable_hybrid_ranking_model":"experiment","enable_iceland_forced_android":true,"enable_inline_comments":true,"enable_intrinsic_automatic_actions":true,"enable_ios_autorefresh":true,"enable_ios_dynamic_paywall_aspiriational":true,"enable_ios_dynamic_paywall_programming":true,"enable_ios_easy_resubscribe":true,"enable_ios_offline_reading":true,"enable_legacy_feed_in_iceland":true,"enable_lite_archive_page":true,"enable_lite_continue_this_thread":true,"enable_lite_gql_client_events":true,"enable_lite_homepage":true,"enable_lite_response_markup":true,"enable_lite_server_upstream_deadlines":true,"enable_lo_homepage":"control","enable_maim_the_meter":true,"enable_marketing_emails":true,"enable_mastodon_avatar_upload":true,"enable_mastodon_for_members":true,"enable_mastodon_for_members_username_selection":true,"enable_medium2_kbfd":true,"enable_medium_com_canonical_urls":true,"enable_members_only_audio":true,"enable_ml_rank_rex_anno":true,"enable_moc_load_processor_all_recs_surfaces":true,"enable_moc_load_processor_c":true,"enable_moc_load_processor_first_story":true,"enable_new_manage_membership_flow":true,"enable_new_stripe_customers":true,"enable_newsletter_lo_flow_custom_domains":true,"enable_pill_based_home_feed":true,"enable_post_bottom_responses":true,"enable_post_bottom_responses_input":true,"enable_post_bottom_responses_native":true,"enable_post_publish_permission_check":true,"enable_pp_country_expansion":true,"enable_pp_v4":true,"enable_pre_pp_v4":true,"enable_premium_tier":true,"enable_premium_tier_badge":true,"enable_pub_featuring":true,"enable_pub_featuring_notifications":true,"enable_pub_featuring_post_page_label":true,"enable_pub_featuring_stats":true,"enable_ranker_v10":"control","enable_recaptcha_enterprise":true,"enable_recirc_model":true,"enable_recommended_publishers_query":true,"enable_rex_aggregator_v2":true,"enable_rex_new_push_notification_endpoint":true,"enable_rex_reading_history":true,"enable_rito_upstream_deadlines":true,"enable_seamless_social_sharing":true,"enable_see_pronouns":true,"enable_sharer_create_post_share_key":true,"enable_sharer_validate_post_share_key":true,"enable_simplified_digest_v2_b":true,"enable_speechify_ios":true,"enable_speechify_widget":true,"enable_sprig":true,"enable_starspace":true,"enable_susi_redesign_android":true,"enable_susi_redesign_ios":true,"enable_switch_plan_premium_tier":true,"enable_tag_recs":true,"enable_tick_landing_page":true,"enable_tipping_v0_android":true,"enable_tipping_v0_ios":true,"enable_tribute_landing_page":true,"enable_trust_service_recaptcha":true,"enable_update_explore_wtf":true,"enable_update_topic_portals_wtf":true,"enable_updated_pub_recs_ui":true,"enable_user_profile_nofollow_attribute":true,"enable_verifications_service":true,"enable_winback_promotion_email":true,"get_highlights_from_engagement":true,"glyph_font_set":"m2-unbound-source-serif-pro","goliath_externalsearch_enable_comment_deindexation":true,"ios_display_paywall_after_onboarding":true,"ios_enable_friend_links_creation":true,"ios_enable_friend_links_postpage_banners":true,"ios_enable_home_post_menu":true,"ios_enable_lock_responses":true,"ios_enable_verified_book_author":true,"ios_iceland_nux":true,"ios_in_app_free_trial":true,"ios_remove_twitter_onboarding_step":true,"ios_social_share_sheet":true,"limit_post_referrers":true,"limit_user_follows":true,"mobile_custom_app_icon":true,"num_post_bottom_responses_to_show":3,"onboarding_tags_from_top_views":true,"reader_fair_distribution_non_qp":true,"redefined_top_posts":true,"reengagement_notification_duration":3,"rex_enable_filter_viewed_v2":true,"rex_filter_presentation_count_increase":"experiment_a","rex_generator_max_candidates":1000,"signin_services":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple","signup_services":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple","skip_fs_cache_user_vals":true},"xsrfToken":"","iosAppId":"828256236","supportEmail":"yourfriends@medium.com","fp":{"/icons/monogram-mask.svg":"https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg","/icons/favicon-medium-editor.ico":"https://cdn-static-1.medium.com/_/fp/icons/favicon-medium-editor.PiakrZWB7Yb80quUVQWM6g.12.ico"},"authBaseUrl":"https://medium.com","imageUploadSizeMb":25,"isAuthDomainRequest":true,"algoliaApiEndpoint":"https://MQ57UUUQZ2-dsn.algolia.net","algoliaAppId":"MQ57UUUQZ2","algoliaSearchOnlyApiKey":"394474ced050e3911ae2249ecc774921","iosAppStoreUrl":"https://itunes.apple.com/app/medium-everyones-stories/id828256236?pt=698524&mt=8","iosAppLinkBaseUrl":"medium:","algoliaIndexPrefix":"medium_","androidPlayStoreUrl":"https://play.google.com/store/apps/details?id=com.medium.reader","googleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","androidPackage":"com.medium.reader","androidPlayStoreMarketScheme":"market://details?id=com.medium.reader","googleAuthUri":"https://accounts.google.com/o/oauth2/auth","androidScheme":"medium","layoutData":{"useDynamicScripts":false,"googleAnalyticsTrackingCode":"G-7JY7T788PK","jsShivUrl":"https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.12.js","useDynamicCss":false,"faviconUrl":"https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19","faviconImageId":"5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19","fontSets":[{"id":8,"url":"https://glyph.medium.com/css/e/sr/latin/e/ssr/latin/e/ssb/latin/m2-unbound-source-serif-pro.css"},{"id":11,"url":"https://glyph.medium.com/css/m2-unbound-source-serif-pro.css"},{"id":9,"url":"https://glyph.medium.com/css/mkt.css"}],"glyphUrl":"https://glyph.medium.com"},"authBaseUrlRev":"moc.muidem//:sptth","stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","archiveUploadSizeMb":100,"previewConfig2":{"weightThreshold":1,"weightImageParagraph":0.05,"raiseImage":true,"enforceHeaderHierarchy":true,"isImageInsetRight":true},"isAmp":false,"iosScheme":"medium","facebook":{"key":"542599432471018","namespace":"medium-com","scope":{"default":["public_profile","email"],"connect":["public_profile","email"],"login":["public_profile","email"],"share":["public_profile","email"]}},"memberContentTopicId":"13d7efd82fb2","audioContentTopicId":"3792abbd134","isDoNotAuth":false,"buggle":{"videoUrl":"https://cdn-videos-1.medium.com","audioUrl":"https://cdn-audio-1.medium.com"},"referrerType":5,"partnerProgramEmail":"partnerprogram@medium.com","recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","countryCode":"SG","bypassMeter":false,"branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","paypal":{"clientMode":"production","oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com/redeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"}},"collectionConfig":{"mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"]},"bypassMeterWithShareKey":false,"recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","cdcMessaging":[{"text":"For more information on the novel coronavirus and Covid-19, visit ","href":"","type":"text","start":0,"end":0},{"text":"cdc.gov","href":"https://www.cdc.gov/coronavirus/2019-nCoV","type":"link","start":66,"end":73},{"text":".","href":"","type":"text","start":0,"end":0}],"braintree":{"merchantId":"m56f8fqpf7ngnrd4"},"diagnostics":{},"domain":"medium.com"} // ]]></script><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.Ozb8sfu1IE2zO83L0UUUxg.12.js" async></script><script>// <![CDATA[ window["obvInit"]({"references":{"User":{"ebaddf6e1f2a":{"userId":"ebaddf6e1f2a","name":"Outfit7 Group","username":"tech-at-outfit7","createdAt":1664885064746,"imageId":"1*dCIQWfMya9g57UUL2ZzrJQ.png","backgroundImageId":"","bio":"","allowNotes":1,"mediumMemberAt":1723021179139,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedAndroidApp":1669991470119,"isMembershipTrialEligible":true,"optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[46,29,7,53,30,19,35,2,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"3215f0e451af":{"userId":"3215f0e451af","name":"Jure Gorinsek","username":"jure.gorinsek_80693","createdAt":1712220254385,"imageId":"0*n3730i_0LsgcubhV","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-gb","type":"User"},"752fffec2a47":{"userId":"752fffec2a47","name":"Primož Bevk","username":"primoz.bevk","createdAt":1673439624268,"imageId":"1*Yfeh63vu0fLIS6yfY7UEkw.jpeg","backgroundImageId":"","bio":"Senior Lead Software Engineer, Web Developer, Gamer","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[19,2,29],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-gb","type":"User"},"95ecd7ef38ba":{"userId":"95ecd7ef38ba","name":"Mitja Bezenšek","username":"mitja.bezensek_98237","createdAt":1585722546485,"imageId":"0*3VkJ01vMUfVDBJYX.jpg","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[8,53,12,33],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"1357db1365fb":{"userId":"1357db1365fb","name":"Samy Ben Rabah","username":"samy.benrabah","createdAt":1692618560293,"imageId":"1*0bdDD8vd7YgYyqhLHCMoJQ.png","backgroundImageId":"","bio":"Pipeline developer at Outfit7","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[29],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-gb","type":"User"},"5d16f8c96c79":{"userId":"5d16f8c96c79","name":"Blaž Tomažič","username":"blaz.tomazic","createdAt":1688381785699,"imageId":"0*o7nAdO_BYV_0AkMg","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[29],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en","type":"User"},"b9d3e3fbf665":{"userId":"b9d3e3fbf665","name":"Črt Kristl","username":"crt.kristl","createdAt":1685362589171,"imageId":"0*52vDhSjGYB9cVy6U","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-gb","type":"User"},"b53717573314":{"userId":"b53717573314","name":"Boštjan Lasnik","username":"bostjan.lasnik","createdAt":1680610147320,"imageId":"1*ak1uGpAhFENR62rH8VLdQA.jpeg","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[2,29,33],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-gb","type":"User"},"1b04d7f0fde6":{"userId":"1b04d7f0fde6","name":"Matic Miklavčič","username":"matic.miklavcic","createdAt":1550061764787,"imageId":"0*PhI0qcA7b7tgksQB.jpg","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[2,33],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"517b13aeff36":{"userId":"517b13aeff36","name":"Marko Drvarič","username":"marko.drvaric","createdAt":1676280492783,"imageId":"1*bu__k4PYAOHuEOAFpWgdzQ.jpeg","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[2,29,33],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-gb","type":"User"}},"Collection":{"6ec626d5ad62":{"id":"6ec626d5ad62","name":"Outfit7","slug":"outfit7","tags":["TECHNOLOGY","ENGINEERING","SOFTWARE DEVELOPMENT","GAME DEVELOPMENT","PROGRAMMING"],"creatorId":"ebaddf6e1f2a","description":"The inside scoop on development, engineering & tech innovation @ Outfit7.","shortDescription":"The inside scoop on development, engineering & tech…","image":{"imageId":"1*dCIQWfMya9g57UUL2ZzrJQ.png","filter":"","backgroundSize":"","originalWidth":10952,"originalHeight":10952,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":57,"activeAt":1727352998013},"virtuals":{"permissions":{"canPublish":false,"canPublishAll":false,"canRepublish":false,"canRemove":false,"canManageAll":false,"canSubmit":false,"canEditPosts":false,"canAddWriters":false,"canViewStats":false,"canSendNewsletter":false,"canViewLockedPosts":false,"canViewCloaked":false,"canEditOwnPosts":false,"canBeAssignedAuthor":false,"canEnrollInHightower":false,"canLockPostsForMediumMembers":false,"canLockOwnPostsForMediumMembers":false,"canViewNewsletterV2Stats":false,"canCreateNewsletterV3":false},"isSubscribed":false,"isEnrolledInHightower":false,"isEligibleForHightower":false,"isSubscribedToCollectionEmails":false,"isMuted":false,"canToggleEmail":false,"isWriter":false},"logo":{"imageId":"1*nTxl_7KgWQYo8PfVROUK_A.png","filter":"","backgroundSize":"","originalWidth":4566,"originalHeight":4566,"strategy":"resample","height":0,"width":0},"facebookPageName":"outfit7","collectionMastheadId":"ee5d0b65bfc","sections":[{"type":2,"collectionHeaderMetadata":{"title":"The inside scoop on development, engineering & tech innovation","description":"","backgroundImage":{"id":"1*lduq8q-DAzZbQ9GtDcLBvw.png","originalWidth":5857,"originalHeight":998,"focusPercentX":53.57142857142857,"focusPercentY":95.83333333333333},"logoImage":{"id":"1*rsxLbtYH2VSNPlCVkyXhSw@2x.png","originalWidth":2062,"originalHeight":277,"alt":"Outfit7"},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":2,"number":1,"postIds":[]}},{"type":1,"postListMetadata":{"source":2,"layout":4,"number":3,"postIds":[],"sectionHeader":"Stories worth reading"}},{"type":1,"postListMetadata":{"source":3,"layout":2,"number":10,"postIds":["46cf06181893","1e5c4a50b6c8","c5fa1610d786","ce93b31b61bd","876685f9ed1","66e045b2da0"]}}],"tintColor":"#FF111111","lightText":true,"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF858484","point":0},{"color":"#FF7C7B7B","point":0.1},{"color":"#FF737171","point":0.2},{"color":"#FF696868","point":0.3},{"color":"#FF5F5E5E","point":0.4},{"color":"#FF555454","point":0.5},{"color":"#FF4A4949","point":0.6},{"color":"#FF3F3E3E","point":0.7},{"color":"#FF343333","point":0.8},{"color":"#FF272727","point":0.9},{"color":"#FF1A1A1A","point":1}],"backgroundColor":"#FFFFFFFF"},"tintBackgroundSpectrum":{"colorPoints":[{"color":"#FF111111","point":0},{"color":"#FF313131","point":0.1},{"color":"#FF4D4C4C","point":0.2},{"color":"#FF666565","point":0.3},{"color":"#FF7D7C7C","point":0.4},{"color":"#FF939292","point":0.5},{"color":"#FFA9A7A7","point":0.6},{"color":"#FFBDBBBB","point":0.7},{"color":"#FFD2CFCF","point":0.8},{"color":"#FFE5E2E2","point":0.9},{"color":"#FFF8F5F5","point":1}],"backgroundColor":"#FF111111"},"highlightSpectrum":{"colorPoints":[{"color":"#FFF5F2F1","point":0},{"color":"#FFF3F0EF","point":0.1},{"color":"#FFF1EEEE","point":0.2},{"color":"#FFEFECEC","point":0.3},{"color":"#FFEDEAEA","point":0.4},{"color":"#FFEBE8E8","point":0.5},{"color":"#FFE9E7E6","point":0.6},{"color":"#FFE7E5E4","point":0.7},{"color":"#FFE5E3E2","point":0.8},{"color":"#FFE3E1E0","point":0.9},{"color":"#FFE1DFDE","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FF9E9C9C","point":0},{"color":"#FFA6A5A4","point":0.1},{"color":"#FFAFADAD","point":0.2},{"color":"#FFB7B6B5","point":0.3},{"color":"#FFC0BEBD","point":0.4},{"color":"#FFC8C6C6","point":0.5},{"color":"#FFD0CECE","point":0.6},{"color":"#FFD9D6D6","point":0.7},{"color":"#FFE1DEDD","point":0.8},{"color":"#FFE9E6E5","point":0.9},{"color":"#FFF0EEED","point":1}],"backgroundColor":"#FF000000"}},"navItems":[{"type":8,"title":"All","url":"https://medium.com/outfit7/latest"},{"type":4,"title":"Game Dev","url":"https://medium.com/outfit7/game-dev/home","topicId":"d7f7473196df","source":"topicId"},{"type":4,"title":"QA","url":"https://medium.com/outfit7/qa/home","topicId":"29a5e7ebfcfc","source":"topicId"},{"type":2,"title":"About","postId":"13e11ddd19e7","url":"https://medium.com/outfit7/the-outfit7-tech-blog-13e11ddd19e7","source":"postId"},{"type":3,"title":"Jobs","url":"https://outfit7.com/careers/jobs?field=technology&utm_source=social&utm_medium=medium&utm_campaign=tech-jobs"}],"colorBehavior":2,"collectionFeatures":[30],"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"title":"The inside scoop on development, engineering & tech innovation","description":"","backgroundImage":{"id":"1*lduq8q-DAzZbQ9GtDcLBvw.png","originalWidth":5857,"originalHeight":998,"focusPercentX":53.57142857142857,"focusPercentY":95.83333333333333},"logoImage":{"id":"1*rsxLbtYH2VSNPlCVkyXhSw@2x.png","originalWidth":2062,"originalHeight":277,"alt":"Outfit7"},"alignment":2,"layout":5},"subscriberCount":57,"tagline":"Our playground, your game.","instagramUsername":"outfit7","isOptedIntoAurora":false,"isCurationAllowedByDefault":false,"polarisCoverImage":{"imageId":"1*GJaVmaUaWCbCnxCoWDGxpw.png","filter":"","backgroundSize":"","originalWidth":1500,"originalHeight":749,"strategy":"resample","height":0,"width":0},"type":"Collection"}}},"paging":{"previous":{"limit":10,"from":"1727352997939"},"next":{"limit":10,"to":"1673442153857"}},"collection":{"id":"6ec626d5ad62","name":"Outfit7","slug":"outfit7","tags":["TECHNOLOGY","ENGINEERING","SOFTWARE DEVELOPMENT","GAME DEVELOPMENT","PROGRAMMING"],"creatorId":"ebaddf6e1f2a","description":"The inside scoop on development, engineering & tech innovation @ Outfit7.","shortDescription":"The inside scoop on development, engineering & tech…","image":{"imageId":"1*dCIQWfMya9g57UUL2ZzrJQ.png","filter":"","backgroundSize":"","originalWidth":10952,"originalHeight":10952,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":57,"activeAt":1727352998013},"virtuals":{"permissions":{"canPublish":false,"canPublishAll":false,"canRepublish":false,"canRemove":false,"canManageAll":false,"canSubmit":false,"canEditPosts":false,"canAddWriters":false,"canViewStats":false,"canSendNewsletter":false,"canViewLockedPosts":false,"canViewCloaked":false,"canEditOwnPosts":false,"canBeAssignedAuthor":false,"canEnrollInHightower":false,"canLockPostsForMediumMembers":false,"canLockOwnPostsForMediumMembers":false,"canViewNewsletterV2Stats":false,"canCreateNewsletterV3":false},"isSubscribed":false,"isEnrolledInHightower":false,"isEligibleForHightower":false,"isSubscribedToCollectionEmails":false,"isMuted":false,"canToggleEmail":false,"isWriter":false},"logo":{"imageId":"1*nTxl_7KgWQYo8PfVROUK_A.png","filter":"","backgroundSize":"","originalWidth":4566,"originalHeight":4566,"strategy":"resample","height":0,"width":0},"facebookPageName":"outfit7","collectionMastheadId":"ee5d0b65bfc","sections":[{"type":2,"collectionHeaderMetadata":{"title":"The inside scoop on development, engineering & tech innovation","description":"","backgroundImage":{"id":"1*lduq8q-DAzZbQ9GtDcLBvw.png","originalWidth":5857,"originalHeight":998,"focusPercentX":53.57142857142857,"focusPercentY":95.83333333333333},"logoImage":{"id":"1*rsxLbtYH2VSNPlCVkyXhSw@2x.png","originalWidth":2062,"originalHeight":277,"alt":"Outfit7"},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":2,"number":1,"postIds":[]}},{"type":1,"postListMetadata":{"source":2,"layout":4,"number":3,"postIds":[],"sectionHeader":"Stories worth reading"}},{"type":1,"postListMetadata":{"source":3,"layout":2,"number":10,"postIds":["46cf06181893","1e5c4a50b6c8","c5fa1610d786","ce93b31b61bd","876685f9ed1","66e045b2da0"]}}],"tintColor":"#FF111111","lightText":true,"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF858484","point":0},{"color":"#FF7C7B7B","point":0.1},{"color":"#FF737171","point":0.2},{"color":"#FF696868","point":0.3},{"color":"#FF5F5E5E","point":0.4},{"color":"#FF555454","point":0.5},{"color":"#FF4A4949","point":0.6},{"color":"#FF3F3E3E","point":0.7},{"color":"#FF343333","point":0.8},{"color":"#FF272727","point":0.9},{"color":"#FF1A1A1A","point":1}],"backgroundColor":"#FFFFFFFF"},"tintBackgroundSpectrum":{"colorPoints":[{"color":"#FF111111","point":0},{"color":"#FF313131","point":0.1},{"color":"#FF4D4C4C","point":0.2},{"color":"#FF666565","point":0.3},{"color":"#FF7D7C7C","point":0.4},{"color":"#FF939292","point":0.5},{"color":"#FFA9A7A7","point":0.6},{"color":"#FFBDBBBB","point":0.7},{"color":"#FFD2CFCF","point":0.8},{"color":"#FFE5E2E2","point":0.9},{"color":"#FFF8F5F5","point":1}],"backgroundColor":"#FF111111"},"highlightSpectrum":{"colorPoints":[{"color":"#FFF5F2F1","point":0},{"color":"#FFF3F0EF","point":0.1},{"color":"#FFF1EEEE","point":0.2},{"color":"#FFEFECEC","point":0.3},{"color":"#FFEDEAEA","point":0.4},{"color":"#FFEBE8E8","point":0.5},{"color":"#FFE9E7E6","point":0.6},{"color":"#FFE7E5E4","point":0.7},{"color":"#FFE5E3E2","point":0.8},{"color":"#FFE3E1E0","point":0.9},{"color":"#FFE1DFDE","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FF9E9C9C","point":0},{"color":"#FFA6A5A4","point":0.1},{"color":"#FFAFADAD","point":0.2},{"color":"#FFB7B6B5","point":0.3},{"color":"#FFC0BEBD","point":0.4},{"color":"#FFC8C6C6","point":0.5},{"color":"#FFD0CECE","point":0.6},{"color":"#FFD9D6D6","point":0.7},{"color":"#FFE1DEDD","point":0.8},{"color":"#FFE9E6E5","point":0.9},{"color":"#FFF0EEED","point":1}],"backgroundColor":"#FF000000"}},"navItems":[{"type":8,"title":"All","url":"https://medium.com/outfit7/latest"},{"type":4,"title":"Game Dev","url":"https://medium.com/outfit7/game-dev/home","topicId":"d7f7473196df","source":"topicId"},{"type":4,"title":"QA","url":"https://medium.com/outfit7/qa/home","topicId":"29a5e7ebfcfc","source":"topicId"},{"type":2,"title":"About","postId":"13e11ddd19e7","url":"https://medium.com/outfit7/the-outfit7-tech-blog-13e11ddd19e7","source":"postId"},{"type":3,"title":"Jobs","url":"https://outfit7.com/careers/jobs?field=technology&utm_source=social&utm_medium=medium&utm_campaign=tech-jobs"}],"colorBehavior":2,"collectionFeatures":[30],"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"title":"The inside scoop on development, engineering & tech innovation","description":"","backgroundImage":{"id":"1*lduq8q-DAzZbQ9GtDcLBvw.png","originalWidth":5857,"originalHeight":998,"focusPercentX":53.57142857142857,"focusPercentY":95.83333333333333},"logoImage":{"id":"1*rsxLbtYH2VSNPlCVkyXhSw@2x.png","originalWidth":2062,"originalHeight":277,"alt":"Outfit7"},"alignment":2,"layout":5},"subscriberCount":57,"tagline":"Our playground, your game.","instagramUsername":"outfit7","isOptedIntoAurora":false,"isCurationAllowedByDefault":false,"polarisCoverImage":{"imageId":"1*GJaVmaUaWCbCnxCoWDGxpw.png","filter":"","backgroundSize":"","originalWidth":1500,"originalHeight":749,"strategy":"resample","height":0,"width":0},"type":"Collection"},"posts":[{"id":"b317a75e1447","versionId":"7d2e10f6923a","creatorId":"3215f0e451af","homeCollectionId":"6ec626d5ad62","title":"New home for Outfit7 tech articles","detectedLanguage":"en","latestVersion":"7d2e10f6923a","latestPublishedVersion":"7d2e10f6923a","hasUnpublishedEdits":false,"latestRev":46,"createdAt":1727339886177,"updatedAt":1731729215202,"acceptedAt":0,"firstPublishedAt":1727352997939,"latestPublishedAt":1727355819112,"vote":false,"experimentalCss":"","displayAuthor":"","virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*Omir8OiKC9D30ujLb-QrSQ.jpeg","filter":"","backgroundSize":"","originalWidth":1200,"originalHeight":675,"strategy":"resample","height":0,"width":0},"wordCount":243,"imageCount":1,"readingTime":1.1169811320754717,"subtitle":"Hey, tech enthusiasts!","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":2,"isBookmarked":false,"tags":[],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://outfit7.com","alts":[],"httpStatus":200},{"url":"https://outfit7.com/blog/tech?utm_source=social&utm_medium=medium&utm_campaign=redirect","alts":[],"httpStatus":200},{"url":"https://outfit7.com/careers","alts":[],"httpStatus":200},{"url":"https://outfit7.com/blog/news/talking-tom-and-friends-1-for-global-downloads-10-years-in-a-row","alts":[],"httpStatus":200},{"url":"https://talkingtomandfriends.com/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1727355819412},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":51,"sectionCount":1,"readingList":0,"topics":[]},"coverless":true,"slug":"new-home-for-outfit7-tech-articles","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"new-home-for-outfit7-tech-articles-b317a75e1447","previewContent":{"bodyModel":{"paragraphs":[{"name":"4bb7","type":3,"text":"New home for Outfit7 tech articles","markups":[],"alignment":1},{"name":"d96d","type":4,"text":"","markups":[],"layout":9,"metadata":{"id":"1*Omir8OiKC9D30ujLb-QrSQ.jpeg","originalWidth":1200,"originalHeight":675}},{"name":"8d6b","type":1,"text":"Hey, tech enthusiasts!","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Hey, tech enthusiasts!"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"4bb7","type":3,"text":"New home for Outfit7 tech articles","markups":[]},{"name":"d96d","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*Omir8OiKC9D30ujLb-QrSQ.jpeg","originalWidth":1200,"originalHeight":675}},{"name":"8d6b","type":1,"text":"Hey, tech enthusiasts!","markups":[]},{"name":"a90d","type":1,"text":"We’ve got exciting news! At Outfit7, we always strive to improve how we connect with our passionate tech community. That’s why we’re moving all the articles from Medium to our new Outfit7 Tech Blog on our official website. If you’ve been following us since our first post…","markups":[{"type":3,"start":180,"end":197,"href":"https://outfit7.com/blog/tech?utm_source=social&utm_medium=medium&utm_campaign=redirect","title":"","rel":"","anchorType":0},{"type":3,"start":204,"end":221,"href":"https://outfit7.com","title":"","rel":"","anchorType":0},{"type":3,"start":314,"end":335,"href":"https://talkingtomandfriends.com/","title":"","rel":"","anchorType":0},{"type":3,"start":626,"end":673,"href":"https://outfit7.com/blog/news/talking-tom-and-friends-1-for-global-downloads-10-years-in-a-row","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"910b","startIndex":0}]},"isFullContent":false,"subtitle":"Hey, tech enthusiasts!"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},{"id":"858b9aa1baa4","versionId":"08db89830991","creatorId":"752fffec2a47","homeCollectionId":"6ec626d5ad62","title":"Web engineering at Outfit7: A decade of evolution","detectedLanguage":"en","latestVersion":"08db89830991","latestPublishedVersion":"08db89830991","hasUnpublishedEdits":false,"latestRev":282,"createdAt":1715947396517,"updatedAt":1732603358570,"acceptedAt":0,"firstPublishedAt":1715950879574,"latestPublishedAt":1715950879574,"vote":false,"experimentalCss":"","displayAuthor":"","virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*rGYh2zhhWT8BIcRf","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":838,"strategy":"resample","height":0,"width":0},"wordCount":1991,"imageCount":3,"readingTime":8.063207547169812,"subtitle":"One part of our interactive landscape is our websites. And today, we’re taking a look at the journey that got us to where we are today.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":5,"isBookmarked":false,"tags":[{"slug":"web-development","name":"Web Development","postCount":329029,"metadata":{"postCount":329029,"coverImage":{"id":"1*T6h3WOYzY13gLfjwbfL6Xg.png","originalWidth":2824,"originalHeight":1700,"isFeatured":true}},"type":"Tag"},{"slug":"ci-cd-pipeline","name":"Ci Cd Pipeline","postCount":9208,"metadata":{"postCount":9208,"coverImage":{"id":"0*5-N2NPBT6Zatzqnc.png","originalWidth":1886,"originalHeight":889,"isFeatured":true}},"type":"Tag"},{"slug":"vuejs","name":"Vuejs","postCount":15850,"metadata":{"postCount":15850,"coverImage":{"id":"0*DzxxY7308kvoikat.jpeg","originalWidth":780,"originalHeight":359,"isFeatured":true}},"type":"Tag"},{"slug":"nestjs","name":"Nestjs","postCount":4014,"metadata":{"postCount":4014,"coverImage":{"id":"1*NNSbVIYfzI95MUrKV6_uGQ.png","originalWidth":1536,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":1770980,"metadata":{"postCount":1770980,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://outfit7.com/jobs/lead-web-developer-5978177003?utm_medium=medium.com&utm_source=post&utm_campaign=decade-of-web-eng","alts":[],"httpStatus":200},{"url":"https://medium.com/outfit7/how-we-built-the-compliance-library-on-a-modern-web-framework-876685f9ed1?utm_medium=medium.com&utm_source=post&utm_campaign=decade-of-web-eng","alts":[{"type":2,"url":"medium://p/876685f9ed1"},{"type":3,"url":"medium://p/876685f9ed1"}],"httpStatus":200}],"version":"0.3","generatedAt":1715951058978},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":43,"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":"web-engineering-at-outfit7-a-decade-of-evolution","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"web-engineering-at-outfit7-a-decade-of-evolution-858b9aa1baa4","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*rGYh2zhhWT8BIcRf","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"1048","type":3,"text":"Web engineering at Outfit7: A decade of evolution","markups":[{"type":1,"start":0,"end":49}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"One part of our interactive landscape is our websites. And today, we’re taking a look at the journey that got us to where we are today."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"1048","type":3,"text":"Web engineering at Outfit7: A decade of evolution","markups":[{"type":1,"start":0,"end":49}]},{"name":"292e","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*rGYh2zhhWT8BIcRf","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"ae85","type":1,"text":"Outfit7 is a world-famous digital entertainment company. We’re known and loved for our mobile games and the goofy, adventurous characters that populate them, along with our animated series and shorts. One of the smallest parts of our huge interactive landscape is our websites, which attract a combined audience of 20…","markups":[]}],"sections":[{"name":"2fc9","startIndex":0}]},"isFullContent":false,"subtitle":"One part of our interactive landscape is our websites. And today, we’re taking a look at the journey that got us to where we are today."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},{"id":"1a44213a12bf","versionId":"b85cc81595ea","creatorId":"95ecd7ef38ba","homeCollectionId":"6ec626d5ad62","title":"Cracking the Monolith: A Journey to Continuous Deployment","detectedLanguage":"en","latestVersion":"b85cc81595ea","latestPublishedVersion":"b85cc81595ea","hasUnpublishedEdits":false,"latestRev":271,"createdAt":1696852509856,"updatedAt":1697444314729,"acceptedAt":0,"firstPublishedAt":1697444015805,"latestPublishedAt":1697444311085,"vote":false,"experimentalCss":"","displayAuthor":"","virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*orCHpijf_4Az1U6IbPX0gQ.jpeg","filter":"","backgroundSize":"","originalWidth":1920,"originalHeight":1005,"strategy":"resample","height":0,"width":0},"wordCount":1712,"imageCount":7,"readingTime":7.510377358490566,"subtitle":"TL;DR: At the Outfit7 platform team we are strong believers in agile development principles and recognize that fast and automated…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":9,"isBookmarked":false,"tags":[{"slug":"devops","name":"DevOps","postCount":111172,"metadata":{"postCount":111172,"coverImage":{"id":"0*zgB8rYgEyBwuddAc","originalWidth":2600,"originalHeight":1241,"isFeatured":true}},"type":"Tag"},{"slug":"continuous-deployment","name":"Continuous Deployment","postCount":1694,"metadata":{"postCount":1694,"coverImage":{"id":"1*NGGjZrbu55GLpqqHWSlftQ.png","originalWidth":1792,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"continuous-delivery","name":"Continuous Delivery","postCount":4763,"metadata":{"postCount":4763,"coverImage":{"id":"1*DZmmY5GWXD0_I2s2ggawsQ.png","originalWidth":1280,"originalHeight":960,"isFeatured":true}},"type":"Tag"},{"slug":"cloud","name":"Cloud","postCount":50616,"metadata":{"postCount":50616,"coverImage":{"id":"0*vAtnO3MxWkWyF6if","originalWidth":2160,"originalHeight":1939,"isFeatured":true}},"type":"Tag"},{"slug":"continuous-integration","name":"Continuous Integration","postCount":8749,"metadata":{"postCount":8749,"coverImage":{"id":"1*WaxmiXGbgnRcSB3bcfhYrw.png","originalWidth":1866,"originalHeight":972,"isFeatured":true,"alt":"Title image with text “How merge queues helped us stabilize our main branch” “Engineering” and Faire’s logo, surrounded by illustrated icons that represent engineering."}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://itrevolution.com/product/the-phoenix-project/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1697444311208},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":35,"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":"cracking-the-monolith-a-journey-to-continuous-deployment","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"cracking-the-monolith-a-journey-to-continuous-deployment-1a44213a12bf","previewContent":{"bodyModel":{"paragraphs":[{"name":"34d2","type":3,"text":"Cracking the Monolith: A Journey to Continuous Deployment","markups":[],"alignment":1},{"name":"0d43","type":1,"text":"TL;DR: At the Outfit7 platform team we are strong believers in agile development principles and recognize that fast and automated deployments are essential. We’ll see how we made this happen by transforming our deployment process…","markups":[{"type":2,"start":0,"end":229}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"TL;DR: At the Outfit7 platform team we are strong believers in agile development principles and recognize that fast and automated…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"34d2","type":3,"text":"Cracking the Monolith: A Journey to Continuous Deployment","markups":[]},{"name":"0d43","type":1,"text":"TL;DR: At the Outfit7 platform team we are strong believers in agile development principles and recognize that fast and automated deployments are essential. We’ll see how we made this happen by transforming our deployment process moving from a manual deployment pipeline to fully automated continuous deployment.","markups":[{"type":2,"start":0,"end":312}]},{"name":"7df0","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*orCHpijf_4Az1U6IbPX0gQ.jpeg","originalWidth":1920,"originalHeight":1005}},{"name":"8b29","type":1,"text":"Hi, I’m Mitja Bezenšek…","markups":[]}],"sections":[{"name":"05f5","startIndex":0}]},"isFullContent":false,"subtitle":"TL;DR: At the Outfit7 platform team we are strong believers in agile development principles and recognize that fast and automated…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},{"id":"ba5d97a4c1c2","versionId":"fc5017080d32","creatorId":"1357db1365fb","homeCollectionId":"6ec626d5ad62","title":"Outfit7’s Art Pipeline","detectedLanguage":"en","latestVersion":"fc5017080d32","latestPublishedVersion":"fc5017080d32","hasUnpublishedEdits":false,"latestRev":747,"createdAt":1692620773276,"updatedAt":1728415035745,"acceptedAt":0,"firstPublishedAt":1692688516814,"latestPublishedAt":1728411987119,"vote":false,"experimentalCss":"","displayAuthor":"","virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*YchegUssBmvcXiBp","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":838,"strategy":"resample","height":0,"width":0},"wordCount":48,"imageCount":1,"readingTime":0.38113207547169814,"subtitle":"TL;DR: We’re taking a look at Outfit7’s art pipeline and how we transitioned from a proprietary system to the commercial solution — and a…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":9,"isBookmarked":false,"tags":[{"slug":"pipeline","name":"Pipeline","postCount":5104,"metadata":{"postCount":5104,"coverImage":{"id":"1*YKQfyBwcmley48PC3BdZ4g.png","originalWidth":1280,"originalHeight":720,"isFeatured":true}},"type":"Tag"},{"slug":"shotgrid","name":"Shotgrid","postCount":1,"metadata":{"postCount":1,"coverImage":{"id":"0*YchegUssBmvcXiBp","originalWidth":1600,"originalHeight":838,"isFeatured":true}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":1770980,"metadata":{"postCount":1770980,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"},{"slug":"game-development","name":"Game Development","postCount":57755,"metadata":{"postCount":57755,"coverImage":{"id":"1*qzD5569s6dSBjXIstZe9Lg.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true}},"type":"Tag"},{"slug":"animation","name":"Animation","postCount":28843,"metadata":{"postCount":28843,"coverImage":{"id":"1*-eMAiEDlhaz1G4s5GCYqFA.jpeg","originalWidth":4096,"originalHeight":2048,"isFeatured":true,"focusPercentX":32,"focusPercentY":33}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://outfit7.com/blog/tech/outfit7s-art-pipeline?utm_source=social&utm_medium=medium&utm_campaign=o7-art-pipeline","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1728411987646},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":71,"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":"outfit7s-art-pipeline","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"outfit7s-art-pipeline-ba5d97a4c1c2","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*YchegUssBmvcXiBp","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"Outfit7’s Art Pipeline","alignment":1},{"name":"previewSubtitle","type":13,"text":"TL;DR: We’re taking a look at Outfit7’s art pipeline and how we transitioned…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"TL;DR: We’re taking a look at Outfit7’s art pipeline and how we transitioned from a proprietary system to the commercial solution — and a…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"0c38","type":3,"text":"Outfit7’s Art Pipeline","markups":[]},{"name":"2927","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*YchegUssBmvcXiBp","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"9269","type":1,"text":"This article is now available on the Outfit7 Tech Blog!","markups":[{"type":1,"start":0,"end":55}]},{"name":"8b13","type":1,"text":"We’ve moved this content to our website’s official Outfit7 Tech Blog.\nYou can now find the full article here.","markups":[{"type":3,"start":104,"end":108,"href":"https://outfit7.com/blog/tech/outfit7s-art-pipeline?utm_source=social&utm_medium=medium&utm_campaign=o7-art-pipeline","title":"","rel":"","anchorType":0},{"type":1,"start":51,"end":68}]},{"name":"27af","type":1,"text":"Visit our new blog for more tech insights, mobile game development tips, and software engineering stories!","markups":[]}],"sections":[{"name":"0819","startIndex":0}]},"isFullContent":true,"subtitle":"TL;DR: We’re taking a look at Outfit7’s art pipeline and how we transitioned from a proprietary system to the commercial solution — and a…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":true,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},{"id":"ce93b31b61bd","versionId":"8b1be5fa05be","creatorId":"5d16f8c96c79","homeCollectionId":"6ec626d5ad62","title":"Creating a custom animation system for Unity","detectedLanguage":"en","latestVersion":"8b1be5fa05be","latestPublishedVersion":"8b1be5fa05be","hasUnpublishedEdits":false,"latestRev":1452,"createdAt":1688707151758,"updatedAt":1689554691229,"acceptedAt":0,"firstPublishedAt":1688979159704,"latestPublishedAt":1688979159704,"vote":false,"experimentalCss":"","displayAuthor":"","virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*TbmS5EonHW_ICYg3","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":838,"strategy":"resample","height":0,"width":0},"wordCount":3845,"imageCount":14,"readingTime":15.95943396226415,"subtitle":"TL;DR: Making a custom animation system to reduce the size of assets by 50% and solving all the problems that come with it.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":13,"isBookmarked":false,"tags":[{"slug":"unity3d","name":"Unity3d","postCount":12447,"metadata":{"postCount":12447,"coverImage":{"id":"1*WXLh05J5QLYll6snCEbHsQ.gif","originalWidth":400,"originalHeight":296,"isFeatured":true}},"type":"Tag"},{"slug":"animation","name":"Animation","postCount":28843,"metadata":{"postCount":28843,"coverImage":{"id":"1*-eMAiEDlhaz1G4s5GCYqFA.jpeg","originalWidth":4096,"originalHeight":2048,"isFeatured":true,"focusPercentX":32,"focusPercentY":33}},"type":"Tag"},{"slug":"csharp","name":"Csharp","postCount":17033,"metadata":{"postCount":17033,"coverImage":{"id":"0*b1pJ4XPhcYgdcbIZ","originalWidth":6000,"originalHeight":4000,"isFeatured":true,"unsplashPhotoId":"Iq9SaJezkOE"}},"type":"Tag"},{"slug":"mobile-game-development","name":"Mobile Game Development","postCount":1755,"metadata":{"postCount":1755,"coverImage":{"id":"1*0LTP5Guutd-_Y-QeMf-VIw.png","originalWidth":512,"originalHeight":512,"isFeatured":true}},"type":"Tag"},{"slug":"game-development","name":"Game Development","postCount":57755,"metadata":{"postCount":57755,"coverImage":{"id":"1*qzD5569s6dSBjXIstZe9Lg.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://guillaumeblanc.github.io/ozz-animation/documentation/animation_offline/","alts":[],"httpStatus":200},{"url":"https://medium.com/googleplaydev/shrinking-apks-growing-installs-5d3fcba23ce2","alts":[{"type":3,"url":"medium://p/5d3fcba23ce2"},{"type":2,"url":"medium://p/5d3fcba23ce2"}],"httpStatus":200},{"url":"https://outfit7.com/","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Linear_interpolation#Interpolation_of_a_data_set","alts":[],"httpStatus":200},{"url":"https://cmake.org/","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Half-precision_floating-point_format","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Multiplicative_inverse","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Inverse_function","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Quaternion#Conjugation,_the_norm,_and_reciprocal","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Skeletal_animation","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Animations.IAnimationJob.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Unity.Collections.NativeArray_1.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/AnimationClip.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Animator.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Animation.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Playables.PlayableBehaviour.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/AnimationUtility.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Transform.Find.html","alts":[],"httpStatus":200},{"url":"https://play.google.com/store/apps/details?id=com.outfit7.mytalkingangela2","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Animations.AnimationStream.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Unity.Collections.LowLevel.Unsafe.UnsafeUtility.Malloc.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Animations.AnimatorJobExtensions.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Playables.PlayableGraph.html","alts":[],"httpStatus":200},{"url":"https://github.com/facebook/zstd","alts":[],"httpStatus":200},{"url":"https://developer.android.com/guide/app-bundle#size_restrictions","alts":[],"httpStatus":200},{"url":"https://github.com/guillaumeblanc/ozz-animation/blob/1014cb5b80687b4ee99bd1b454aeaf4ba491d4c6/samples/millipede/sample_millipede.cc#L179-L201","alts":[],"httpStatus":200},{"url":"https://github.com/guillaumeblanc/ozz-animation","alts":[],"httpStatus":200},{"url":"https://play.google.com/store/apps/details?id=com.outfit7.mytalkingangelafree","alts":[],"httpStatus":200},{"url":"https://medium.com/outfit7/building-the-ultimate-mobile-game-engine-starlite-14b640e2757b","alts":[{"type":3,"url":"medium://p/14b640e2757b"},{"type":2,"url":"medium://p/14b640e2757b"}],"httpStatus":200},{"url":"https://blog.unity.com/technology/animation-c-jobs","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1688979161163},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":74,"sectionCount":4,"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":"creating-a-custom-animation-system-for-unity","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"creating-a-custom-animation-system-for-unity-ce93b31b61bd","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*TbmS5EonHW_ICYg3","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"0796","type":3,"text":"Creating a custom animation system for Unity","markups":[],"alignment":1},{"name":"598f","type":1,"text":"TL;DR: Making a custom animation system to reduce the size of assets by 50% and…","markups":[{"type":1,"start":0,"end":6}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"TL;DR: Making a custom animation system to reduce the size of assets by 50% and solving all the problems that come with it."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":6,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"0796","type":3,"text":"Creating a custom animation system for Unity","markups":[]},{"name":"ed3a","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*TbmS5EonHW_ICYg3","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"598f","type":1,"text":"TL;DR: Making a custom animation system to reduce the size of assets by 50% and solving all the problems that come with it.","markups":[{"type":1,"start":0,"end":6}]},{"name":"24f5","type":6,"text":"I’m Blaž Tomažič, a Senior Software Engineer at Outfit7. I’ve been developing with the company for five years, working mostly on low-level parts of game development. I…","markups":[{"type":3,"start":48,"end":55,"href":"https://outfit7.com/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"f79e","startIndex":0}]},"isFullContent":false,"subtitle":"TL;DR: Making a custom animation system to reduce the size of assets by 50% and solving all the problems that come with it."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},{"id":"14b640e2757b","versionId":"7ec6219856f6","creatorId":"b9d3e3fbf665","homeCollectionId":"6ec626d5ad62","title":"Building the Ultimate Mobile Game Engine: Starlite","detectedLanguage":"en","latestVersion":"7ec6219856f6","latestPublishedVersion":"7ec6219856f6","hasUnpublishedEdits":false,"latestRev":1868,"createdAt":1685363107668,"updatedAt":1727353485383,"acceptedAt":0,"firstPublishedAt":1685607251723,"latestPublishedAt":1727353477514,"vote":false,"experimentalCss":"","displayAuthor":"","virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*d9Zk7nRSza7P9wnjEbMOXQ.png","filter":"","backgroundSize":"","originalWidth":1920,"originalHeight":1005,"strategy":"resample","height":0,"width":0},"wordCount":52,"imageCount":1,"readingTime":0.39622641509433965,"subtitle":"The making of our game engine, Starlite, why we did it, and the impressive results.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":11,"isBookmarked":false,"tags":[{"slug":"game-engine","name":"Game Engine","postCount":636,"metadata":{"postCount":636,"coverImage":{"id":"1*Zh0j6x3nzIc164HpOB76Kg.jpeg","originalWidth":480,"originalHeight":270,"isFeatured":true}},"type":"Tag"},{"slug":"game-development","name":"Game Development","postCount":57755,"metadata":{"postCount":57755,"coverImage":{"id":"1*qzD5569s6dSBjXIstZe9Lg.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true}},"type":"Tag"},{"slug":"game-engine-and-editor","name":"Game Engine And Editor","postCount":1,"metadata":{"postCount":1,"coverImage":{"id":"1*d9Zk7nRSza7P9wnjEbMOXQ.png","originalWidth":1920,"originalHeight":1005,"isFeatured":true}},"type":"Tag"},{"slug":"development","name":"Development","postCount":120902,"metadata":{"postCount":120902,"coverImage":{"id":"1*Crbh2aUzALtZ4HUXnZp3Vg.png","originalWidth":1850,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"cross-platform","name":"Cross Platform","postCount":4099,"metadata":{"postCount":4099,"coverImage":{"id":"1*_-L782lQGMYz4k1s8R8-vw.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://outfit7.com/blog/tech/building-the-ultimate-mobile-game-engine-starlite?utm_source=social&utm_medium=medium&utm_campaign=starlite","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1727353478069},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":39,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"building-the-ultimate-mobile-game-engine-starlite","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"building-the-ultimate-mobile-game-engine-starlite-14b640e2757b","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*d9Zk7nRSza7P9wnjEbMOXQ.png","originalWidth":1920,"originalHeight":1005,"isFeatured":true}},{"name":"6d84","type":3,"text":"Building the Ultimate Mobile Game Engine: Starlite","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"The making of our game engine, Starlite, why we did it, and the impressive results."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"6d84","type":3,"text":"Building the Ultimate Mobile Game Engine: Starlite","markups":[]},{"name":"ceaf","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*d9Zk7nRSza7P9wnjEbMOXQ.png","originalWidth":1920,"originalHeight":1005,"isFeatured":true}},{"name":"48a7","type":1,"text":"This article is now available on the Outfit7 Tech Blog!","markups":[{"type":1,"start":0,"end":55}]},{"name":"e992","type":1,"text":"We’ve moved this content to our website’s official Outfit7 Tech Blog.\nYou can now find the full article here.","markups":[{"type":3,"start":104,"end":108,"href":"https://outfit7.com/blog/tech/building-the-ultimate-mobile-game-engine-starlite?utm_source=social&utm_medium=medium&utm_campaign=starlite","title":"","rel":"","anchorType":0},{"type":1,"start":51,"end":68}]},{"name":"fe3d","type":1,"text":"Visit our new blog for more tech insights, mobile game development tips, and software engineering stories!","markups":[]}],"sections":[{"name":"5534","startIndex":0}]},"isFullContent":true,"subtitle":"The making of our game engine, Starlite, why we did it, and the impressive results."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":true,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},{"id":"66e045b2da0","versionId":"18ea943a6213","creatorId":"b53717573314","homeCollectionId":"6ec626d5ad62","title":"From Kubernetes to a fully managed, serverless platform","detectedLanguage":"en","latestVersion":"18ea943a6213","latestPublishedVersion":"18ea943a6213","hasUnpublishedEdits":false,"latestRev":166,"createdAt":1680610241100,"updatedAt":1680771189799,"acceptedAt":0,"firstPublishedAt":1680771185891,"latestPublishedAt":1680771185891,"vote":false,"experimentalCss":"","displayAuthor":"","virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*yZS5LliLtWg1rQKR","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":838,"strategy":"resample","height":0,"width":0},"wordCount":1271,"imageCount":6,"readingTime":5.746226415094339,"subtitle":"Find out how we migrated our ad real-time bidding service from a self-managed Kubernetes cluster to a fully managed Google Cloud…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":9,"isBookmarked":false,"tags":[{"slug":"backend","name":"Backend","postCount":16048,"metadata":{"postCount":16048,"coverImage":{"id":"0*D1ZsieC4IlAu9C9l","originalWidth":4507,"originalHeight":3004,"isFeatured":true,"unsplashPhotoId":"PSpf_XgOM5w"}},"type":"Tag"},{"slug":"google-cloud-platform","name":"Google Cloud Platform","postCount":27386,"metadata":{"postCount":27386,"coverImage":{"id":"1*DGQnAbGg4tLJZbsCuUoRSg.png","originalWidth":1200,"originalHeight":627,"isFeatured":true}},"type":"Tag"},{"slug":"knative","name":"Knative","postCount":312,"metadata":{"postCount":312,"coverImage":{"id":"1*qt7RW0eugMhbrw_EfjD3_Q.png","originalWidth":650,"originalHeight":450,"isFeatured":true}},"type":"Tag"},{"slug":"google-cloud-run","name":"Google Cloud Run","postCount":970,"metadata":{"postCount":970,"coverImage":{"id":"1*gOwEziBp2ZqCGWu65G-J4Q.png","originalWidth":1024,"originalHeight":1024}},"type":"Tag"},{"slug":"serverless","name":"Serverless","postCount":18933,"metadata":{"postCount":18933,"coverImage":{"id":"1*atyZE3Dp90tCeapHdrqemg.jpeg","originalWidth":1800,"originalHeight":1013,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_service","alts":[],"httpStatus":200},{"url":"https://circleci.com/developer/orbs/orb/circleci/gcp-cloud-run","alts":[],"httpStatus":200},{"url":"https://cloud.google.com/blog/products/serverless/cloud-run-gets-always-on-cpu-allocation","alts":[],"httpStatus":200},{"url":"https://cloud.google.com/run/cud","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1680771186409},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":18,"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":"from-kubernetes-to-a-fully-managed-serverless-platform","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"from-kubernetes-to-a-fully-managed-serverless-platform-66e045b2da0","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*yZS5LliLtWg1rQKR","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"532c","type":3,"text":"From Kubernetes to a fully managed, serverless platform","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Find out how we migrated our ad real-time bidding service from a self-managed Kubernetes cluster to a fully managed Google Cloud…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"532c","type":3,"text":"From Kubernetes to a fully managed, serverless platform","markups":[]},{"name":"becb","type":1,"text":"TL;DR: Find out how we migrated our ad real-time bidding service from a self-managed Kubernetes cluster to a fully managed Google Cloud Run.","markups":[{"type":1,"start":0,"end":6},{"type":2,"start":7,"end":140}]},{"name":"5a28","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*yZS5LliLtWg1rQKR","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"5472","type":1,"text":"Howdy! My name is Boštjan Lasnik and I’m a member of the Ad Technology backend team at Outfit7. I primarily develop and maintain the tools, services and…","markups":[]}],"sections":[{"name":"0c23","startIndex":0}]},"isFullContent":false,"subtitle":"Find out how we migrated our ad real-time bidding service from a self-managed Kubernetes cluster to a fully managed Google Cloud…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},{"id":"1e5c4a50b6c8","versionId":"cb6d767449b8","creatorId":"1b04d7f0fde6","homeCollectionId":"6ec626d5ad62","title":"Kicking the habit: Jenkins detox in production","detectedLanguage":"en","latestVersion":"cb6d767449b8","latestPublishedVersion":"cb6d767449b8","hasUnpublishedEdits":false,"latestRev":130,"createdAt":1677149676072,"updatedAt":1677749278559,"acceptedAt":0,"firstPublishedAt":1677749275154,"latestPublishedAt":1677749275154,"vote":false,"experimentalCss":"","displayAuthor":"","virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*JQsjnND9Wcgtk2nE","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":838,"strategy":"resample","height":0,"width":0},"wordCount":2451,"imageCount":5,"readingTime":10.08238993710692,"subtitle":"Moving the O7 game build system into the cloud opened up new possibilities for individual game development teams around scaling…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":7,"isBookmarked":false,"tags":[{"slug":"game-development","name":"Game Development","postCount":57755,"metadata":{"postCount":57755,"coverImage":{"id":"1*qzD5569s6dSBjXIstZe9Lg.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true}},"type":"Tag"},{"slug":"gamebuild","name":"Game Build","postCount":13,"metadata":{"postCount":13,"coverImage":{"id":"1*o4f3YGNDEo4MEG2mNLCYTQ.jpeg","originalWidth":2560,"originalHeight":1440,"isFeatured":true}},"type":"Tag"},{"slug":"devops","name":"DevOps","postCount":111172,"metadata":{"postCount":111172,"coverImage":{"id":"0*zgB8rYgEyBwuddAc","originalWidth":2600,"originalHeight":1241,"isFeatured":true}},"type":"Tag"},{"slug":"jenkins","name":"Jenkins","postCount":8451,"metadata":{"postCount":8451,"coverImage":{"id":"1*340DVodpYUzDgYji5eFLBA.jpeg","originalWidth":1000,"originalHeight":320,"isFeatured":true}},"type":"Tag"},{"slug":"ci-cd-pipeline","name":"Ci Cd Pipeline","postCount":9208,"metadata":{"postCount":9208,"coverImage":{"id":"0*5-N2NPBT6Zatzqnc.png","originalWidth":1886,"originalHeight":889,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[],"version":"0.3","generatedAt":1677749275326},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":19,"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":"kicking-the-habit-jenkins-detox-in-production","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"kicking-the-habit-jenkins-detox-in-production-1e5c4a50b6c8","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*JQsjnND9Wcgtk2nE","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"Kicking the habit: Jenkins detox in production","alignment":1},{"name":"previewSubtitle","type":13,"text":"Moving the O7 game build system into the cloud opened…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Moving the O7 game build system into the cloud opened up new possibilities for individual game development teams around scaling…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"52cc","type":3,"text":"Kicking the habit: Jenkins detox in production","markups":[]},{"name":"2636","type":1,"text":"TL;DR: Moving the O7 game build system into the cloud opened up new possibilities for individual game development teams around scaling, testing and fixing bugs. We improved build times, reduced system complexity, increased stability, and most importantly, increased the number of builds, ensuring finer-grained testing and bug tracking. Best of…","markups":[{"type":1,"start":0,"end":7}]}],"sections":[{"name":"213e","startIndex":0}]},"isFullContent":false,"subtitle":"Moving the O7 game build system into the cloud opened up new possibilities for individual game development teams around scaling…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},{"id":"6c94a6271da8","versionId":"ae04dbc543e6","creatorId":"517b13aeff36","homeCollectionId":"6ec626d5ad62","title":"410 trillion permutations: the art of knowing what NOT to test","detectedLanguage":"en","latestVersion":"ae04dbc543e6","latestPublishedVersion":"ae04dbc543e6","hasUnpublishedEdits":false,"latestRev":161,"createdAt":1676280548514,"updatedAt":1676287418952,"acceptedAt":0,"firstPublishedAt":1676287416379,"latestPublishedAt":1676287416379,"vote":false,"experimentalCss":"","displayAuthor":"","virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*bp8V7w2hATa6pwQJ","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":838,"strategy":"resample","height":0,"width":0},"wordCount":2332,"imageCount":5,"readingTime":9.633333333333335,"subtitle":"When there are too many scenarios to test, the question stops being “how can we test every single one?” and becomes “what can we…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":4,"isBookmarked":false,"tags":[{"slug":"mythic-legends","name":"Mythic Legends","postCount":0,"metadata":{"postCount":0,"coverImage":{"id":"0*bp8V7w2hATa6pwQJ","originalWidth":1600,"originalHeight":838,"isFeatured":true}},"type":"Tag"},{"slug":"qa","name":"QA","postCount":11268,"metadata":{"postCount":11268,"coverImage":{"id":"1*xdR5cm9JJhQ6PRJE_g9Bcw.jpeg","originalWidth":974,"originalHeight":968,"isFeatured":true}},"type":"Tag"},{"slug":"games","name":"Games","postCount":148987,"metadata":{"postCount":148987,"coverImage":{"id":"1*NJdo6d6uhLZ5D--wRaC7Pw.png","originalWidth":2170,"originalHeight":1082,"isFeatured":true}},"type":"Tag"},{"slug":"testing","name":"Testing","postCount":45039,"metadata":{"postCount":45039,"coverImage":{"id":"1*syQnsaZSymQzNySXTVlO1w.png","originalWidth":870,"originalHeight":628,"isFeatured":true,"alt":"A photo of a person’s hand from the side, holding their thumb and index finger about one inch apart."}},"type":"Tag"},{"slug":"unity3d","name":"Unity3d","postCount":12447,"metadata":{"postCount":12447,"coverImage":{"id":"1*WXLh05J5QLYll6snCEbHsQ.gif","originalWidth":400,"originalHeight":296,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[],"version":"0.3","generatedAt":1676287416523},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":13,"sectionCount":1,"readingList":0,"topics":[{"topicId":"137f52891b6b","slug":"gaming","createdAt":1527184510547,"deletedAt":0,"image":{"id":"1*3BZYZyK4cVHJanh-pHnZRg@2x.jpeg","originalWidth":4752,"originalHeight":3168},"name":"Gaming","description":"Ready, player one?","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Gaming 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":"410-trillion-permutations-the-art-of-knowing-what-not-to-test","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"410-trillion-permutations-the-art-of-knowing-what-not-to-test-6c94a6271da8","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*bp8V7w2hATa6pwQJ","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"2b89","type":3,"text":"410 trillion permutations: the art of knowing what NOT to test","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"When there are too many scenarios to test, the question stops being “how can we test every single one?” and becomes “what can we…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"2b89","type":3,"text":"410 trillion permutations: the art of knowing what NOT to test","markups":[]},{"name":"aac7","type":1,"text":"TL;DR: When there are too many scenarios to test, the question stops being “how can we test every single one?” and becomes “what can we skip testing without causing an issue?”. With every addition to Mythic Legends, the number of possible formations and battles grew exponentially. Understanding what needed to…","markups":[{"type":1,"start":0,"end":6}]}],"sections":[{"name":"6a84","startIndex":0}]},"isFullContent":false,"subtitle":"When there are too many scenarios to test, the question stops being “how can we test every single one?” and becomes “what can we…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},{"id":"876685f9ed1","versionId":"ec626276cf3f","creatorId":"752fffec2a47","homeCollectionId":"6ec626d5ad62","title":"How we built the Compliance library on a modern web framework","detectedLanguage":"en","latestVersion":"ec626276cf3f","latestPublishedVersion":"ec626276cf3f","hasUnpublishedEdits":false,"latestRev":229,"createdAt":1673439653592,"updatedAt":1727364300160,"acceptedAt":0,"firstPublishedAt":1673442153857,"latestPublishedAt":1727353725417,"vote":false,"experimentalCss":"","displayAuthor":"","virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*ILixSBT_BE2a1oyi","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":838,"strategy":"resample","height":0,"width":0},"wordCount":56,"imageCount":1,"readingTime":0.41132075471698115,"subtitle":"How we built the Compliance library on Vue 2 with full offline autonomy and 100% device compatibility.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":11,"isBookmarked":false,"tags":[{"slug":"web-development","name":"Web Development","postCount":329029,"metadata":{"postCount":329029,"coverImage":{"id":"1*T6h3WOYzY13gLfjwbfL6Xg.png","originalWidth":2824,"originalHeight":1700,"isFeatured":true}},"type":"Tag"},{"slug":"compliance","name":"Compliance","postCount":12300,"metadata":{"postCount":12300,"coverImage":{"id":"0*A-MQqDM_cAzG-8pp","originalWidth":5184,"originalHeight":3456,"isFeatured":true,"unsplashPhotoId":"H424WdcQN4Y"}},"type":"Tag"},{"slug":"programming","name":"Programming","postCount":484964,"metadata":{"postCount":484964,"coverImage":{"id":"1*YsTTTReE4PcR568tUKT1nA.png","originalWidth":1159,"originalHeight":1500,"isFeatured":true}},"type":"Tag"},{"slug":"vuejs","name":"Vuejs","postCount":15850,"metadata":{"postCount":15850,"coverImage":{"id":"0*DzxxY7308kvoikat.jpeg","originalWidth":780,"originalHeight":359,"isFeatured":true}},"type":"Tag"},{"slug":"javascript","name":"JavaScript","postCount":294964,"metadata":{"postCount":294964,"coverImage":{"id":"1*QisgQNb1GYtqet_rg5XbSw.png","originalWidth":1536,"originalHeight":512,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://outfit7.com/blog/tech/how-we-built-the-compliance-library-on-a-modern-web-framework?utm_source=social&utm_medium=medium&utm_campaign=compliance","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1727353726150},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":61,"sectionCount":1,"readingList":0,"topics":[{"topicId":"63c6f1f93ee","slug":"javascript","createdAt":1493945704961,"deletedAt":0,"image":{"id":"1*5UyyDJ1ESD11yQNd1UVAaQ@2x.jpeg","originalWidth":5472,"originalHeight":3648},"name":"Javascript","description":"An ode to code.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Javascript News and Articles — Medium","type":"Topic"},{"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-we-built-the-compliance-library-on-a-modern-web-framework","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"how-we-built-the-compliance-library-on-a-modern-web-framework-876685f9ed1","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*ILixSBT_BE2a1oyi","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"e2c1","type":3,"text":"How we built the Compliance library on a modern web framework","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"How we built the Compliance library on Vue 2 with full offline autonomy and 100% device compatibility."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"e2c1","type":3,"text":"How we built the Compliance library on a modern web framework","markups":[]},{"name":"8938","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*ILixSBT_BE2a1oyi","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"396c","type":1,"text":"This article is now available on the Outfit7 Tech Blog!","markups":[{"type":1,"start":0,"end":55}]},{"name":"b0c0","type":1,"text":"We’ve moved this content to our website’s official Outfit7 Tech Blog. \nYou can now find the full article here.","markups":[{"type":3,"start":105,"end":109,"href":"https://outfit7.com/blog/tech/how-we-built-the-compliance-library-on-a-modern-web-framework?utm_source=social&utm_medium=medium&utm_campaign=compliance","title":"","rel":"","anchorType":0},{"type":1,"start":51,"end":68}]},{"name":"e999","type":1,"text":"Visit our new blog for more tech insights, mobile game development tips, and software engineering stories!","markups":[]}],"sections":[{"name":"7202","startIndex":0}]},"isFullContent":true,"subtitle":"How we built the Compliance library on Vue 2 with full offline autonomy and 100% device compatibility."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":true,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"}],"tagName":null,"writerNames":["jure.gorinsek_80693","tilen.kavcic"]}) // ]]></script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'92db0c79ccf1ce83',t:'MTc0NDIxMjY1OS4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body></html>

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