CINXE.COM

Towards Data Science

<!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>Towards Data Science</title><link rel="canonical" href="https://towardsdatascience.com"><link id="feedLink" rel="alternate" type="application/rss+xml" title="RSS" href="https://towardsdatascience.com/feed"><meta name="robots" content="index,follow"><meta name="title" content="Towards Data Science"><meta name="referrer" content="unsafe-url"><meta name="description" content="Your home for data science. A publication sharing concepts, ideas and codes."><meta name="keywords" content="DATA SCIENCE, MACHINE LEARNING, ARTIFICIAL INTELLIGENCE, DATA ENGINEERING, DATA"><meta name="theme-color" content="#000000"><meta property="og:title" content="Towards Data Science"><meta property="twitter:title" content="Towards Data Science"><meta property="og:url" content="https://towardsdatascience.com/"><meta property="og:image" content="https://cdn-images-1.medium.com/max/1200/1*CJe3891yB1A1mzMdqemkdg.jpeg"><meta property="fb:app_id" content="542599432471018"><meta property="og:description" content="Your home for data science. A publication sharing concepts, ideas and codes."><meta name="twitter:description" content="Your home for data science. A publication sharing concepts, ideas and codes."><meta name="twitter:image:src" content="https://cdn-images-1.medium.com/max/1200/1*CJe3891yB1A1mzMdqemkdg.jpeg"><meta property="og:type" content="medium-com:collection"><meta name="twitter:card" content="summary_large_image"><meta property="medium-com:creator" content="https://towardsdatascience.com/@engineering_48478"><meta name="twitter:site" content="@TDataScience"><meta property="og:site_name" content="Towards Data Science"><meta name="twitter:app:name:iphone" content="Medium"><meta name="twitter:app:id:iphone" content="828256236"><meta name="twitter:app:url:iphone" content="medium://towards-data-science"><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://towards-data-science"><meta property="al:android:url" content="medium://towards-data-science"><meta property="al:web:url" content="https://towardsdatascience.com/"><link rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml" /><link rel="alternate" href="android-app://com.medium.reader/https/medium.com/towards-data-science" /><script type="application/ld+json">{"@context": "http://schema.org", "@graph": [{"@type": "WebSite", "url": "https:\/\/towardsdatascience.com", "name": "Towards Data Science", "alternateName": "Your home for data science. A publication sharing concepts, ideas and codes."},{"@type": "Organization", "url": "https:\/\/towardsdatascience.com", "name": "Towards Data Science"}]}</script><link rel="stylesheet" href="https://cdn-static-1.medium.com/_/fp/css/main-branding-base.W9J-2zkF03j8TkriAGn1Tg.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://cdn-images-1.medium.com/fit/c/256/256/1*VzTUkfeGymHP4Bvav-T-lA.png" class="js-favicon"><link rel="apple-touch-icon" sizes="152x152" href="https://cdn-images-1.medium.com/fit/c/304/304/1*CJe3891yB1A1mzMdqemkdg.jpeg"><link rel="apple-touch-icon" sizes="120x120" href="https://cdn-images-1.medium.com/fit/c/240/240/1*CJe3891yB1A1mzMdqemkdg.jpeg"><link rel="apple-touch-icon" sizes="76x76" href="https://cdn-images-1.medium.com/fit/c/152/152/1*CJe3891yB1A1mzMdqemkdg.jpeg"><link rel="apple-touch-icon" sizes="60x60" href="https://cdn-images-1.medium.com/fit/c/120/120/1*CJe3891yB1A1mzMdqemkdg.jpeg"><link rel="mask-icon" href="https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg" color="#171717"></head><body itemscope class=" browser-ie os-windows v-unbound v-glyph v-glyph--m2-unbound-source-serif-pro is-noJs"><script>document.body.className = document.body.className.replace(/(^|\s)is-noJs(\s|$)/, "$1is-js$2")</script><div class="site-main" id="container"><div class="butterBar butterBar--error"></div><div class="surface"><div id="prerendered" class="screenContent"><div class="metabar u-clearfix u-textColorTransparentWhiteDarker u-tintBgColor u-tintSpectrum js-metabar"><div class="branch-journeys-top"></div><div class="js-metabarMiddle metabar-inner u-marginAuto u-maxWidth1032 u-flexCenter u-justifyContentSpaceBetween u-height65 u-xs-height56 u-paddingHorizontal20"><div class="metabar-block u-flex1 u-flexCenter"><div class="js-metabarLogoLeft"><a href="https://medium.com/" data-log-event="home" class="siteNav-logo u-fillWhite 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/towards-data-science%3F~feature=LoMobileNavBar&~channel=ShowCollectionHome&~stage=m2">Open in app</a></div></div><div class="metabar-block u-flex0 u-flexCenter"><div class="u-flexCenter u-height65 u-xs-height56"><div class="buttonSet buttonSet--wide u-lineHeightInherit"><a class="button button--primary button--light button--chromeless u-accentColor--buttonNormal is-inSiteNavBar u-xs-hide js-signInButton" href="https://medium.com/m/signin?redirect=https%3A%2F%2Ftowardsdatascience.com%2F%3Fsource%3Duser_profile_page---------0-------------1e4dc39fa7e0---------------&amp;source=--------------------------nav_reg&amp;operation=login" data-action="sign-in-prompt" data-redirect="https://towardsdatascience.com/?source=user_profile_page---------0-------------1e4dc39fa7e0---------------" data-action-source="--------------------------nav_reg">Sign in</a><a class="button button--primary button--light button--withChrome u-accentColor--buttonNormal is-inSiteNavBar js-signUpButton" href="https://medium.com/m/signin?redirect=https%3A%2F%2Ftowardsdatascience.com%2F%3Fsource%3Duser_profile_page---------0-------------1e4dc39fa7e0---------------&amp;source=--------------------------nav_reg&amp;operation=register" data-action="sign-up-prompt" data-redirect="https://towardsdatascience.com/?source=user_profile_page---------0-------------1e4dc39fa7e0---------------" data-action-source="--------------------------nav_reg">Get started</a></div></div></div></div></div><div class="metabar metabar--spacer js-metabarSpacer u-tintBgColor u-height65 u-xs-height56"></div><div class="collectionHeader js-collectionHeaderContainer u-relative collectionHeader--layoutMedium collectionHeader--alignmentLeft collectionHeader--withLogo collectionHeader--withoutBackground collectionHeader--colorBehaviorBold collectionHeader--withNavigation collectionHeader--editorLayoutLogo is-modeView is-whiteLabel u-tintBgColor"><div class="collectionHeader-aspectRatioTable"><div class="collectionHeader-aspectRatioContent u-backgroundSizeCover js-collectionHeaderBackground"><div class="collectionHeader-overlayBackground u-height100vh"></div><header class="collectionHeader-heroAndInlineNav u-borderBox u-maxWidth1072 u-paddingLeft20 u-paddingRight20 u-marginAuto u-foreground js-collectionHeader"><div class="collectionHeader-hero js-collectionHeaderHero u-clearfix u-tintSpectrum"><div class="collectionHeader-heroInner"><div class="collectionHeader-logo js-collectionHeaderLogo" style="max-width: 314px;"><a class="link u-baseColor--link" href="https://towardsdatascience.com" title="Go to Towards Data Science" aria-label="Go to Towards Data Science" data-collection-slug="towards-data-science"><div class="u-relative u-marginAuto"><div style="padding-bottom: 29.26483110984956%"></div><img class="collectionHeader-logoImage js-collectionHeaderLogoImage" src="https://cdn-images-1.medium.com/max/628/1*0Ih6WUzKYC41g-cmVD4n7w@2x.png" data-image-id="1*0Ih6WUzKYC41g-cmVD4n7w@2x.png" data-width="3523" data-height="1031" /></div></a></div><div class="collectionHeader-nameAndDescription u-hide"><a class="link u-baseColor--link" href="https://towardsdatascience.com" title="Go to Towards Data Science" aria-label="Go to Towards Data Science" data-collection-slug="towards-data-science"><h1 class="collectionHeader-name js-collectionName">Towards Data Science</h1></a><h2 class="collectionHeader-description js-collectionDescription">Your home for data science. A publication sharing concepts, ideas and codes.</h2></div></div></div></header></div><div class="collectionHeader-aspectRatioCell"><div class="collectionHeader-aspectRatioFullWidth"></div></div></div><div class="collectionHeader-blockNav"><div class="u-borderBox u-maxWidth1072 u-paddingLeft20 u-paddingRight20 u-marginAuto"><nav class="collectionHeader-nav u-clearfix js-collectionHeaderNav u-lineHeight40 u-overflowHiddenY u-tintSpectrum"><div class="buttonSet u-flex1 u-noWrap u-overflowX u-paddingBottom100 u-xs-marginRight15"><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://towardsdatascience.com/latest">Latest</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://towardsdatascience.com/editors-picks/home">Editors&#39; Picks</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://towardsdatascience.com/deep-dives/home">Deep Dives</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://towardsdatascience.com/about-us/home">About</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://towardsdatascience.com/questions-96667b06af5">Contribute</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://medium.com/towards-data-science/newsletter" rel="nofollow noopener" target="_blank">Newsletter</a></li></div><div class="buttonSet u-textAlignRight u-marginLeft18 u-flex0 u-noWrap"><label class="button button--small button--chromeless button--withIcon button--withSvgIcon inputGroup u-sm-hide metabar-predictiveSearch u-baseColor--buttonNormal u-baseColor--placeholderNormal" title="Search"><span class="svgIcon svgIcon--search svgIcon--25px u-baseColor--iconLight"><svg class="svgIcon-use" width="25" height="25" ><path d="M20.067 18.933l-4.157-4.157a6 6 0 10-.884.884l4.157 4.157a.624.624 0 10.884-.884zM6.5 11c0-2.62 2.13-4.75 4.75-4.75S16 8.38 16 11s-2.13 4.75-4.75 4.75S6.5 13.62 6.5 11z"/></svg></span><input class="js-predictiveSearchInput textInput textInput--rounded textInput--darkText u-baseColor--textNormal textInput--transparent" type="search" placeholder="Search" required="true" data-collection-id="7f60cf5620c9" /></label><a class="button button--light button--chromeless is-touchIconBlackPulse u-baseColor--buttonLight button--withIcon button--withSvgIcon button--chromeless u-verticalAlignMiddle" href="https://twitter.com/TDataScience" title="Visit “Towards Data Science” on X" aria-label="Visit “Towards Data Science” on X" rel="me" target="_blank"><span class="button-defaultState"><span class="svgIcon svgIcon--twitter svgIcon--25px"><svg class="svgIcon-use" width="25" height="25" fill="none" ><path d="M14.215 11.3l5.764-6.7h-1.366l-5.005 5.818L9.611 4.6H5l6.045 8.798L5 20.424h1.366l5.286-6.144 4.221 6.144h4.61L14.216 11.3zm-1.871 2.175l-.612-.876-4.874-6.97h2.098l3.933 5.625.613.876 5.112 7.312h-2.098l-4.172-5.966z" fill="#242424"/></svg></span></span></a><button class="button button--primary button--smallest u-noUserSelect button--withChrome u-accentColor--buttonNormal button--followCollection js-followCollectionButton" data-action="sign-up-prompt" data-sign-in-action="toggle-subscribe-collection" data-requires-token="true" data-redirect="https://medium.com/_/subscribe/collection/towards-data-science" data-action-source="header----7f60cf5620c9----------------------follow_pub"><span class="button-label button-defaultState js-buttonLabel">Follow</span><span class="button-label button-activeState">Following</span></button></div></nav></div></div></div><div class="u-marginBottom40 js-collectionStream"><div class="streamItem streamItem--section js-streamItem"><section class="u-marginTop30 u-xs-margin0 u-marginBottom15 u-maxWidth1032 u-sm-paddingLeft20 u-sm-paddingRight20 u-borderBox u-marginAuto"><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size6of12" data-source="collection_home---4------0-----------------------" data-post-id="54507944e731" data-index="0"><div class="u-lineHeightBase postItem"><a href="https://towardsdatascience.com/building-sustainable-algorithms-energy-efficient-python-programming-54507944e731?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://towardsdatascience.com/building-sustainable-algorithms-energy-efficient-python-programming-54507944e731?source=collection_home---4------0-----------------------" class="u-block u-xs-height170 u-width600 u-height272 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/1200/0*A4Bc49wv6lAVBZzX.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Building Sustainable Algorithms: Energy-Efficient Python Programming</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://towardsdatascience.com/building-sustainable-algorithms-energy-efficient-python-programming-54507944e731?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="54507944e731"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Building Sustainable Algorithms: Energy-Efficient Python Programming</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">6 techniques for reducing the computational cost of Python algorithms</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://towardsdatascience.com/@arijoury" data-action="show-user-card" data-action-value="593908e0206" data-action-type="hover" data-user-id="593908e0206" data-collection-slug="towards-data-science" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*KlXLJKcjqwyXD_lsvaFJ9g.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Ari Joury, PhD"></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://towardsdatascience.com/@arijoury" data-action="show-user-card" data-action-value="593908e0206" data-action-type="hover" data-user-id="593908e0206" data-collection-slug="towards-data-science" dir="auto">Ari Joury, PhD</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-23T15:34:41.647Z">Nov 23</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="9 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size6of12" data-source="collection_home---4------1-----------------------" data-post-id="3fbedac654ad" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://towardsdatascience.com/data-science-in-marketing-hands-on-propensity-modelling-with-python-3fbedac654ad?source=collection_home---4------1-----------------------" data-action="open-post" data-action-value="https://towardsdatascience.com/data-science-in-marketing-hands-on-propensity-modelling-with-python-3fbedac654ad?source=collection_home---4------1-----------------------" class="u-block u-xs-height170 u-width600 u-height272 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/1200/1*VowutvnX-8NaTApZ716I3Q.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Data Science in Marketing: Hands-on Propensity Modelling with Python</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://towardsdatascience.com/data-science-in-marketing-hands-on-propensity-modelling-with-python-3fbedac654ad?source=collection_home---4------1-----------------------" data-action-source="collection_home---4------1-----------------------" data-post-id="3fbedac654ad"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Data Science in Marketing: Hands-on Propensity Modelling with Python</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">All the code you need to predict the likelihood of a customer purchasing your product</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://towardsdatascience.com/@rebeccalvickery" data-action="show-user-card" data-action-value="8b7aca3e5b1c" data-action-type="hover" data-user-id="8b7aca3e5b1c" data-collection-slug="towards-data-science" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*rhvwW5suGypWKG_iJqFWcA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Rebecca Vickery"></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://towardsdatascience.com/@rebeccalvickery" data-action="show-user-card" data-action-value="8b7aca3e5b1c" data-action-type="hover" data-user-id="8b7aca3e5b1c" data-collection-slug="towards-data-science" dir="auto">Rebecca Vickery</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-23T14:02:07.299Z">Nov 23</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="8 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div></div></section></div><div class="streamItem streamItem--section js-streamItem"><section class="u-marginTop30 u-xs-margin0 u-marginBottom15 u-maxWidth1032 u-sm-paddingLeft20 u-sm-paddingRight20 u-borderBox u-marginAuto"><header class="heading heading--borderedBottom u-fontSize18 u-contentSansThin" ><div class="u-clearfix"><div class="heading-content u-floatLeft"><span class="heading-title heading-title--dark heading-title--lineHeightTight u-fontSize18 u-contentSansThin">Latest</span></div></div></header><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------0-----------------------" data-post-id="2aa46b262150" data-index="0"><div class="u-lineHeightBase postItem"><a href="https://towardsdatascience.com/engineering-the-future-common-threads-in-data-software-and-artificial-intelligence-2aa46b262150?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://towardsdatascience.com/engineering-the-future-common-threads-in-data-software-and-artificial-intelligence-2aa46b262150?source=collection_home---4------0-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*wJurAMzy5rcdibdSdeD7gg.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Engineering the Future: Common Threads in Data, Software, and Artificial Intelligence</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://towardsdatascience.com/engineering-the-future-common-threads-in-data-software-and-artificial-intelligence-2aa46b262150?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="2aa46b262150"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Engineering the Future: Common Threads in Data, Software, and Artificial Intelligence</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">How recognizing cross-discipline commonalities not only enhances recruitment strategies but also supports adaptable IT architectures.</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://towardsdatascience.com/@bernd.wessely" data-action="show-user-card" data-action-value="9acc249a5ae7" data-action-type="hover" data-user-id="9acc249a5ae7" data-collection-slug="towards-data-science" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*Sisgd3ha5GoFZHqnwFk-0Q@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Bernd Wessely"></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://towardsdatascience.com/@bernd.wessely" data-action="show-user-card" data-action-value="9acc249a5ae7" data-action-type="hover" data-user-id="9acc249a5ae7" data-collection-slug="towards-data-science" dir="auto">Bernd Wessely</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-23T12:02:06.201Z">Nov 23</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="7 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------1-----------------------" data-post-id="60e26b64380e" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://towardsdatascience.com/documenting-python-projects-with-mkdocs-60e26b64380e?source=collection_home---4------1-----------------------" data-action="open-post" data-action-value="https://towardsdatascience.com/documenting-python-projects-with-mkdocs-60e26b64380e?source=collection_home---4------1-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*xBmKmGglhsLafmM7tfTTPQ.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Documenting Python Projects with MkDocs</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://towardsdatascience.com/documenting-python-projects-with-mkdocs-60e26b64380e?source=collection_home---4------1-----------------------" data-action-source="collection_home---4------1-----------------------" data-post-id="60e26b64380e"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Documenting Python Projects with MkDocs</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Use Markdown to quickly create a beautiful documentation page for your projects</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://towardsdatascience.com/@gustavorsantos" data-action="show-user-card" data-action-value="4429d99b1245" data-action-type="hover" data-user-id="4429d99b1245" data-collection-slug="towards-data-science" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*rCTvITbng0JCyscxHHCh4g@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Gustavo Santos"></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://towardsdatascience.com/@gustavorsantos" data-action="show-user-card" data-action-value="4429d99b1245" data-action-type="hover" data-user-id="4429d99b1245" data-collection-slug="towards-data-science" dir="auto">Gustavo Santos</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-22T18:58:11.843Z">Nov 22</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="8 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------2-----------------------" data-post-id="f668065e69bd" data-index="2"><div class="u-lineHeightBase postItem"><a href="https://towardsdatascience.com/productionising-genai-agents-evaluating-tool-selection-with-automated-testing-f668065e69bd?source=collection_home---4------2-----------------------" data-action="open-post" data-action-value="https://towardsdatascience.com/productionising-genai-agents-evaluating-tool-selection-with-automated-testing-f668065e69bd?source=collection_home---4------2-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*y85sJJUcIu1MYjOZTYP-hg.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Productionising GenAI Agents: Evaluating Tool Selection with Automated Testing</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://towardsdatascience.com/productionising-genai-agents-evaluating-tool-selection-with-automated-testing-f668065e69bd?source=collection_home---4------2-----------------------" data-action-source="collection_home---4------2-----------------------" data-post-id="f668065e69bd"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Productionising GenAI Agents: Evaluating Tool Selection with Automated Testing</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">How to create reliable and scalable GenAI Agents for real-world applications</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://towardsdatascience.com/@heiko-hotz" data-action="show-user-card" data-action-value="993c21f1b30f" data-action-type="hover" data-user-id="993c21f1b30f" data-collection-slug="towards-data-science" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*5VifPxEG2ZkTxCK2m4JcLQ.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Heiko Hotz"></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://towardsdatascience.com/@heiko-hotz" data-action="show-user-card" data-action-value="993c21f1b30f" data-action-type="hover" data-user-id="993c21f1b30f" data-collection-slug="towards-data-science" dir="auto">Heiko Hotz</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-22T18:56:10.565Z">Nov 22</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="17 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------3-----------------------" data-post-id="8488fc175253" data-index="3"><div class="u-lineHeightBase postItem"><a href="https://towardsdatascience.com/dont-be-afraid-to-use-machine-learning-for-simple-tasks-8488fc175253?source=collection_home---4------3-----------------------" data-action="open-post" data-action-value="https://towardsdatascience.com/dont-be-afraid-to-use-machine-learning-for-simple-tasks-8488fc175253?source=collection_home---4------3-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*fUiIsQ_E-NURa4qN&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Don’t Be Afraid to Use Machine Learning for Simple Tasks</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://towardsdatascience.com/dont-be-afraid-to-use-machine-learning-for-simple-tasks-8488fc175253?source=collection_home---4------3-----------------------" data-action-source="collection_home---4------3-----------------------" data-post-id="8488fc175253"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Don’t Be Afraid to Use Machine Learning for Simple Tasks</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">A common misconception across industries</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://towardsdatascience.com/@oscarleo" data-action="show-user-card" data-action-value="d7e5c1ca65b7" data-action-type="hover" data-user-id="d7e5c1ca65b7" data-collection-slug="towards-data-science" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*mmj0a_PJzP_z8O5KZDOxGQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Oscar Leo"></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://towardsdatascience.com/@oscarleo" data-action="show-user-card" data-action-value="d7e5c1ca65b7" data-action-type="hover" data-user-id="d7e5c1ca65b7" data-collection-slug="towards-data-science" dir="auto">Oscar Leo</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-22T18:47:45.513Z">Nov 22</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------4-----------------------" data-post-id="09386a93ace2" data-index="4"><div class="u-lineHeightBase postItem"><a href="https://towardsdatascience.com/how-spotify-implemented-personalized-audiobook-recommendations-09386a93ace2?source=collection_home---4------4-----------------------" data-action="open-post" data-action-value="https://towardsdatascience.com/how-spotify-implemented-personalized-audiobook-recommendations-09386a93ace2?source=collection_home---4------4-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*6CFyV68KdPZMO3Cs&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">How Spotify Implemented Personalized Audiobook Recommendations</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://towardsdatascience.com/how-spotify-implemented-personalized-audiobook-recommendations-09386a93ace2?source=collection_home---4------4-----------------------" data-action-source="collection_home---4------4-----------------------" data-post-id="09386a93ace2"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">How Spotify Implemented Personalized Audiobook Recommendations</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Personalized audiobook recommendations using graph neural networks</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://towardsdatascience.com/@saankhya" data-action="show-user-card" data-action-value="59f51d8e0df4" data-action-type="hover" data-user-id="59f51d8e0df4" data-collection-slug="towards-data-science" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*TADxXNj_Fq5BqXipXvp1QQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Saankhya Mondal"></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://towardsdatascience.com/@saankhya" data-action="show-user-card" data-action-value="59f51d8e0df4" data-action-type="hover" data-user-id="59f51d8e0df4" data-collection-slug="towards-data-science" dir="auto">Saankhya Mondal</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-22T18:45:14.199Z">Nov 22</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="8 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------5-----------------------" data-post-id="a96e6980becd" data-index="5"><div class="u-lineHeightBase postItem"><a href="https://towardsdatascience.com/dynamic-lazy-dependency-injection-in-python-a96e6980becd?source=collection_home---4------5-----------------------" data-action="open-post" data-action-value="https://towardsdatascience.com/dynamic-lazy-dependency-injection-in-python-a96e6980becd?source=collection_home---4------5-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*Px4-HTPq4UCLCRiL&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Dynamic, Lazy Dependency Injection in Python</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://towardsdatascience.com/dynamic-lazy-dependency-injection-in-python-a96e6980becd?source=collection_home---4------5-----------------------" data-action-source="collection_home---4------5-----------------------" data-post-id="a96e6980becd"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Dynamic, Lazy Dependency Injection in Python</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Automatic Python dependency injection to make your code more testable, decoupled, uncomplicated and readable</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://towardsdatascience.com/@mikehuls" data-action="show-user-card" data-action-value="7ffb62c607ee" data-action-type="hover" data-user-id="7ffb62c607ee" data-collection-slug="towards-data-science" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*kDfA06taH4WcpV3oZbHatQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Mike Huls"></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://towardsdatascience.com/@mikehuls" data-action="show-user-card" data-action-value="7ffb62c607ee" data-action-type="hover" data-user-id="7ffb62c607ee" data-collection-slug="towards-data-science" dir="auto">Mike Huls</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-22T18:42:14.076Z">Nov 22</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------6-----------------------" data-post-id="5b0789fe27aa" data-index="6"><div class="u-lineHeightBase postItem"><a href="https://towardsdatascience.com/llm-routing-intuitively-and-exhaustively-explained-5b0789fe27aa?source=collection_home---4------6-----------------------" data-action="open-post" data-action-value="https://towardsdatascience.com/llm-routing-intuitively-and-exhaustively-explained-5b0789fe27aa?source=collection_home---4------6-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*Aja1M1MtLsRmsFCTdPeoJg.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">LLM Routing — Intuitively and Exhaustively Explained</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://towardsdatascience.com/llm-routing-intuitively-and-exhaustively-explained-5b0789fe27aa?source=collection_home---4------6-----------------------" data-action-source="collection_home---4------6-----------------------" data-post-id="5b0789fe27aa"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">LLM Routing — Intuitively and Exhaustively Explained</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Dynamically Choosing the Right LLM</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://towardsdatascience.com/@danielwarfield1" data-action="show-user-card" data-action-value="bdc4072cbfdc" data-action-type="hover" data-user-id="bdc4072cbfdc" data-collection-slug="towards-data-science" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*YaEyucgUXLb6TwSFW-ucXg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Daniel Warfield"></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://towardsdatascience.com/@danielwarfield1" data-action="show-user-card" data-action-value="bdc4072cbfdc" data-action-type="hover" data-user-id="bdc4072cbfdc" data-collection-slug="towards-data-science" dir="auto">Daniel Warfield</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-22T17:38:50.694Z">Nov 22</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="49 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------7-----------------------" data-post-id="dc4ec62ec8dd" data-index="7"><div class="u-lineHeightBase postItem"><a href="https://towardsdatascience.com/another-hike-up-everest-dc4ec62ec8dd?source=collection_home---4------7-----------------------" data-action="open-post" data-action-value="https://towardsdatascience.com/another-hike-up-everest-dc4ec62ec8dd?source=collection_home---4------7-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*p_DcoiYTwMfOuDw_.jpg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Another Hike Up Everest</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://towardsdatascience.com/another-hike-up-everest-dc4ec62ec8dd?source=collection_home---4------7-----------------------" data-action-source="collection_home---4------7-----------------------" data-post-id="dc4ec62ec8dd"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Another Hike Up Everest</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">How to make progress on hard problems in AI</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://towardsdatascience.com/@jamesbarney71" data-action="show-user-card" data-action-value="b7c226dc9b8e" data-action-type="hover" data-user-id="b7c226dc9b8e" data-collection-slug="towards-data-science" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*cnIbCvO9N7Qt0_R_ukwd8A@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of James Barney"></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://towardsdatascience.com/@jamesbarney71" data-action="show-user-card" data-action-value="b7c226dc9b8e" data-action-type="hover" data-user-id="b7c226dc9b8e" data-collection-slug="towards-data-science" dir="auto">James Barney</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-22T17:35:24.688Z">Nov 22</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="8 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------8-----------------------" data-post-id="89fb4f64baaa" data-index="8"><div class="u-lineHeightBase postItem"><a href="https://towardsdatascience.com/are-you-sure-you-want-to-become-a-data-science-manager-89fb4f64baaa?source=collection_home---4------8-----------------------" data-action="open-post" data-action-value="https://towardsdatascience.com/are-you-sure-you-want-to-become-a-data-science-manager-89fb4f64baaa?source=collection_home---4------8-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*NSCdUN2Idn0mARmw.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Are You Sure You Want to Become a Data Science Manager?</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://towardsdatascience.com/are-you-sure-you-want-to-become-a-data-science-manager-89fb4f64baaa?source=collection_home---4------8-----------------------" data-action-source="collection_home---4------8-----------------------" data-post-id="89fb4f64baaa"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Are You Sure You Want to Become a Data Science Manager?</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Don’t rush into the fancy title until you have read this.</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://towardsdatascience.com/@joparga3" data-action="show-user-card" data-action-value="8572724a5d2c" data-action-type="hover" data-user-id="8572724a5d2c" data-collection-slug="towards-data-science" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*muI5QEd6YqFGJDIrf4h2Mg@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Jose Parreño"></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://towardsdatascience.com/@joparga3" data-action="show-user-card" data-action-value="8572724a5d2c" data-action-type="hover" data-user-id="8572724a5d2c" data-collection-slug="towards-data-science" dir="auto">Jose Parreño</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-22T14:02:14.134Z">Nov 22</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="15 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div></div></section></div></div><style class="js-collectionStyle"> .u-accentColor--borderLight {border-color: #668AAA !important;} .u-accentColor--borderNormal {border-color: #668AAA !important;} .u-accentColor--borderDark {border-color: #5A7690 !important;} .u-accentColor--iconLight .svgIcon,.u-accentColor--iconLight.svgIcon {fill: #668AAA !important;} .u-accentColor--iconNormal .svgIcon,.u-accentColor--iconNormal.svgIcon {fill: #668AAA !important;} .u-accentColor--iconDark .svgIcon,.u-accentColor--iconDark.svgIcon {fill: #5A7690 !important;} .u-accentColor--textNormal {color: #5A7690 !important;} .u-accentColor--hoverTextNormal:hover {color: #5A7690 !important;} .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #546C83 !important;} .u-accentColor--textDark {color: #546C83 !important;} .u-accentColor--backgroundLight {background-color: #668AAA !important;} .u-accentColor--backgroundNormal {background-color: #668AAA !important;} .u-accentColor--backgroundDark {background-color: #5A7690 !important;} .u-accentColor--buttonDark {border-color: #5A7690 !important; color: #546C83 !important;} .u-accentColor--buttonDark:hover {border-color: #546C83 !important;} .u-accentColor--buttonDark .icon:before,.u-accentColor--buttonDark .svgIcon{color: #5A7690 !important; fill: #5A7690 !important;} .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #668AAA !important; color: #5A7690 !important;} .u-accentColor--buttonNormal:hover {border-color: #5A7690 !important;} .u-accentColor--buttonNormal .icon:before,.u-accentColor--buttonNormal .svgIcon{color: #668AAA !important; fill: #668AAA !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: #5A7690 !important; border-color: #5A7690 !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: #668AAA !important; border-color: #668AAA !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: #5A7690 !important;}.u-tintBgColor {background-color: rgba(53, 88, 118, 1) !important;}.u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(53, 88, 118, 1) 0%, rgba(53, 88, 118, 0) 100%) !important;}.u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(53, 88, 118, 0) 0%, rgba(53, 88, 118, 1) 100%) !important;} .u-tintSpectrum .u-baseColor--borderLight {border-color: #9FB3C6 !important;} .u-tintSpectrum .u-baseColor--borderNormal {border-color: #C5D2E1 !important;} .u-tintSpectrum .u-baseColor--borderDark {border-color: #E9F1FA !important;} .u-tintSpectrum .u-baseColor--iconLight .svgIcon,.u-tintSpectrum .u-baseColor--iconLight.svgIcon {fill: #9FB3C6 !important;} .u-tintSpectrum .u-baseColor--iconNormal .svgIcon,.u-tintSpectrum .u-baseColor--iconNormal.svgIcon {fill: #C5D2E1 !important;} .u-tintSpectrum .u-baseColor--iconDark .svgIcon,.u-tintSpectrum .u-baseColor--iconDark.svgIcon {fill: #E9F1FA !important;} .u-tintSpectrum .u-baseColor--textNormal {color: #C5D2E1 !important;} .u-tintSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: #FBFFFF !important;} .u-tintSpectrum .u-baseColor--textDark {color: #FBFFFF !important;} .u-tintSpectrum .u-baseColor--textDarker {color: #FBFFFF !important;} .u-tintSpectrum .u-baseColor--backgroundLight {background-color: #9FB3C6 !important;} .u-tintSpectrum .u-baseColor--backgroundNormal {background-color: #C5D2E1 !important;} .u-tintSpectrum .u-baseColor--backgroundDark {background-color: #E9F1FA !important;} .u-tintSpectrum .u-baseColor--buttonLight {border-color: #9FB3C6 !important; color: #9FB3C6 !important;} .u-tintSpectrum .u-baseColor--buttonLight:hover {border-color: #9FB3C6 !important;} .u-tintSpectrum .u-baseColor--buttonLight .icon:before,.u-tintSpectrum .u-baseColor--buttonLight .svgIcon {color: #9FB3C6 !important; fill: #9FB3C6 !important;} .u-tintSpectrum .u-baseColor--buttonDark {border-color: #E9F1FA !important; color: #FBFFFF !important;} .u-tintSpectrum .u-baseColor--buttonDark:hover {border-color: #FBFFFF !important;} .u-tintSpectrum .u-baseColor--buttonDark .icon:before,.u-tintSpectrum .u-baseColor--buttonDark .svgIcon {color: #E9F1FA !important; fill: #E9F1FA !important;} .u-tintSpectrum .u-baseColor--buttonNormal {border-color: #C5D2E1 !important; color: #C5D2E1 !important;} .u-tintSpectrum .u-baseColor--buttonNormal:hover {border-color: #E9F1FA !important;} .u-tintSpectrum .u-baseColor--buttonNormal .icon:before,.u-tintSpectrum .u-baseColor--buttonNormal .svgIcon {color: #C5D2E1 !important; fill: #C5D2E1 !important;} .u-tintSpectrum .u-baseColor--buttonDark.button--filled,.u-tintSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: #E9F1FA !important; border-color: #E9F1FA !important; color: rgba(53, 88, 118, 1) !important; fill: rgba(53, 88, 118, 1) !important;} .u-tintSpectrum .u-baseColor--buttonNormal.button--filled,.u-tintSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: #C5D2E1 !important; border-color: #C5D2E1 !important; color: rgba(53, 88, 118, 1) !important; fill: rgba(53, 88, 118, 1) !important;} .u-tintSpectrum .u-baseColor--link {color: #C5D2E1 !important;} .u-tintSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: #FBFFFF !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: #FBFFFF !important;} .u-tintSpectrum .u-baseColor--link.link--dark {color: #FBFFFF !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: #FBFFFF !important;} .u-tintSpectrum .u-baseColor--link.link--darker {color: #FBFFFF !important;} .u-tintSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: #9FB3C6;} .u-tintSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: #9FB3C6;} .u-tintSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: #9FB3C6;} .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: #FBFFFF !important; fill: #FBFFFF !important;} .u-tintSpectrum .ui-body,.u-tintSpectrum .ui-caps {color: #FBFFFF !important; fill: #FBFFFF !important;} .u-tintSpectrum .ui-summary,.u-tintSpectrum .ui-caption {color: #9FB3C6 !important; fill: #9FB3C6 !important;} .u-tintSpectrum .u-accentColor--borderLight {border-color: #9FB3C6 !important;} .u-tintSpectrum .u-accentColor--borderNormal {border-color: #C5D2E1 !important;} .u-tintSpectrum .u-accentColor--borderDark {border-color: #E9F1FA !important;} .u-tintSpectrum .u-accentColor--iconLight .svgIcon,.u-tintSpectrum .u-accentColor--iconLight.svgIcon {fill: #9FB3C6 !important;} .u-tintSpectrum .u-accentColor--iconNormal .svgIcon,.u-tintSpectrum .u-accentColor--iconNormal.svgIcon {fill: #C5D2E1 !important;} .u-tintSpectrum .u-accentColor--iconDark .svgIcon,.u-tintSpectrum .u-accentColor--iconDark.svgIcon {fill: #E9F1FA !important;} .u-tintSpectrum .u-accentColor--textNormal {color: #C5D2E1 !important;} .u-tintSpectrum .u-accentColor--hoverTextNormal:hover {color: #C5D2E1 !important;} .u-tintSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #FBFFFF !important;} .u-tintSpectrum .u-accentColor--textDark {color: #FBFFFF !important;} .u-tintSpectrum .u-accentColor--backgroundLight {background-color: #9FB3C6 !important;} .u-tintSpectrum .u-accentColor--backgroundNormal {background-color: #C5D2E1 !important;} .u-tintSpectrum .u-accentColor--backgroundDark {background-color: #E9F1FA !important;} .u-tintSpectrum .u-accentColor--buttonDark {border-color: #E9F1FA !important; color: #FBFFFF !important;} .u-tintSpectrum .u-accentColor--buttonDark:hover {border-color: #FBFFFF !important;} .u-tintSpectrum .u-accentColor--buttonDark .icon:before,.u-tintSpectrum .u-accentColor--buttonDark .svgIcon{color: #E9F1FA !important; fill: #E9F1FA !important;} .u-tintSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #C5D2E1 !important; color: #C5D2E1 !important;} .u-tintSpectrum .u-accentColor--buttonNormal:hover {border-color: #E9F1FA !important;} .u-tintSpectrum .u-accentColor--buttonNormal .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal .svgIcon{color: #C5D2E1 !important; fill: #C5D2E1 !important;} .u-tintSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(53, 88, 118, 1) !important; fill: rgba(53, 88, 118, 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: #E9F1FA !important; border-color: #E9F1FA !important; color: rgba(53, 88, 118, 1) !important; fill: rgba(53, 88, 118, 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: #C5D2E1 !important; border-color: #C5D2E1 !important; color: rgba(53, 88, 118, 1) !important; fill: rgba(53, 88, 118, 1) !important;} .u-tintSpectrum .postArticle.is-withAccentColors .markup--user,.u-tintSpectrum .postArticle.is-withAccentColors .markup--query {color: #C5D2E1 !important;} .u-accentColor--highlightFaint {background-color: rgba(233, 242, 253, 1) !important;} .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(200, 228, 255, 1) !important;} .postArticle.is-withAccentColors .markup--quote.is-other {background-color: rgba(233, 242, 253, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(233, 242, 253, 1), rgba(233, 242, 253, 1));} .postArticle.is-withAccentColors .markup--quote.is-me {background-color: rgba(215, 235, 254, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(215, 235, 254, 1), rgba(215, 235, 254, 1));} .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: rgba(200, 228, 255, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(200, 228, 255, 1), rgba(200, 228, 255, 1));} .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: rgba(200, 228, 255, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(200, 228, 255, 1), rgba(200, 228, 255, 1));} .postArticle.is-withAccentColors .markup--highlight {background-color: rgba(200, 228, 255, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(200, 228, 255, 1), rgba(200, 228, 255, 1));}</style><style class="js-collectionStyleConstant">.u-imageBgColor {background-color: rgba(0, 0, 0, 0.24705882352941178);} .u-imageSpectrum .u-baseColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-baseColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-baseColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--iconLight .svgIcon,.u-imageSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--iconNormal .svgIcon,.u-imageSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--iconDark .svgIcon,.u-imageSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textDark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textDarker {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-baseColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important; color: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-baseColor--buttonLight .icon:before,.u-imageSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonDark .icon:before,.u-imageSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonNormal .icon:before,.u-imageSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonDark.button--filled,.u-imageSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-baseColor--buttonNormal.button--filled,.u-imageSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-baseColor--link {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--darken:active {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--dark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--darker {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .ui-h1,.u-imageSpectrum .ui-h2,.u-imageSpectrum .ui-h3,.u-imageSpectrum .ui-h4,.u-imageSpectrum .ui-brand1,.u-imageSpectrum .ui-brand2,.u-imageSpectrum .ui-captionStrong {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .ui-body,.u-imageSpectrum .ui-caps {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .ui-summary,.u-imageSpectrum .ui-caption {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-accentColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-accentColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-accentColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--iconLight .svgIcon,.u-imageSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-accentColor--iconNormal .svgIcon,.u-imageSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--iconDark .svgIcon,.u-imageSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--textDark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-accentColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark .icon:before,.u-imageSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-accentColor--buttonDark.button--filled,.u-imageSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-imageSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-imageSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .postArticle.is-withAccentColors .markup--user,.u-imageSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--highlightFaint {background-color: rgba(255, 255, 255, 0.2) !important;} .u-imageSpectrum .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(255, 255, 255, 0.6) !important;} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: rgba(255, 255, 255, 0.2) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: rgba(255, 255, 255, 0.4) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.4));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));}.u-resetSpectrum .u-tintBgColor {background-color: rgba(255, 255, 255, 1) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 100%) !important;} .u-resetSpectrum .u-baseColor--borderLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--borderNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--borderDark {border-color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--iconLight .svgIcon,.u-resetSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--iconNormal .svgIcon,.u-resetSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--iconDark .svgIcon,.u-resetSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textNormal {color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textDark {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textDarker {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--backgroundLight {background-color: rgba(0, 0, 0, 0.09803921568627451) !important;} .u-resetSpectrum .u-baseColor--backgroundNormal {background-color: rgba(0, 0, 0, 0.2) !important;} .u-resetSpectrum .u-baseColor--backgroundDark {background-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight .icon:before,.u-resetSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonDark {border-color: rgba(0, 0, 0, 0.6) !important; color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--buttonDark .icon:before,.u-resetSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important; color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonNormal .icon:before,.u-resetSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(0, 0, 0, 0.4980392156862745) !important; fill: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonDark.button--filled,.u-resetSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2980392156862745) !important; border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-baseColor--buttonNormal.button--filled,.u-resetSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2) !important; border-color: rgba(0, 0, 0, 0.2) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-baseColor--link {color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--darken:active {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--dark {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--link.link--darker {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .ui-h1,.u-resetSpectrum .ui-h2,.u-resetSpectrum .ui-h3,.u-resetSpectrum .ui-h4,.u-resetSpectrum .ui-brand1,.u-resetSpectrum .ui-brand2,.u-resetSpectrum .ui-captionStrong {color: rgba(0, 0, 0, 0.8) !important; fill: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .ui-body,.u-resetSpectrum .ui-caps {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .ui-summary,.u-resetSpectrum .ui-caption {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-accentColor--borderLight {border-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--borderNormal {border-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--borderDark {border-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--iconLight .svgIcon,.u-resetSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--iconNormal .svgIcon,.u-resetSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--iconDark .svgIcon,.u-resetSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--textNormal {color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--textDark {color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundLight {background-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundNormal {background-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundDark {background-color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark {border-color: rgba(17, 128, 14, 1) !important; color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark .icon:before,.u-resetSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(15, 115, 12, 1) !important; fill: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(26, 137, 23, 1) !important; color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(17, 128, 14, 1) !important; fill: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark.button--filled,.u-resetSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-resetSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(15, 115, 12, 1) !important; border-color: rgba(15, 115, 12, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-resetSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: rgba(17, 128, 14, 1) !important; border-color: rgba(17, 128, 14, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .postArticle.is-withAccentColors .markup--user,.u-resetSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(17, 128, 14, 1) !important;}</style><div class="js-collectionFooter u-tintBgColor u-hide"><div class="container u-maxWidth1040"><div class="u-marginTop10 u-paddingTop10 u-paddingBottom30 u-tintSpectrum"><div class="linkSet u-clearfix"><div class="u-floatRight u-textColorNormal u-baseColor--textNormal u-xs-floatLeft"><a class="button button--chromeless u-baseColor--buttonNormal u-marginLeft15 u-lineHeight35 u-xs-block u-xs-marginLeft0" href="https://towardsdatascience.com/about" title="About Towards Data Science" aria-label="About Towards Data Science" data-collection-slug="towards-data-science">About Towards Data Science</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://towardsdatascience.com/latest" title="Latest Stories for Towards Data Science" aria-label="Latest Stories for Towards Data Science" data-collection-slug="towards-data-science">Latest Stories</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://towardsdatascience.com/archive" title="Archive for Towards Data Science" aria-label="Archive for Towards Data Science" data-collection-slug="towards-data-science">Archive</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/about">About Medium</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f">Terms</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9">Privacy</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/business">Teams</a></div></div></div></div></div></div></div></div><div class="loadingBar"></div><script>// <![CDATA[ window["obvInit"] = function (opt_embedded) {window["obvInit"]["embedded"] = opt_embedded; window["obvInit"]["ready"] = true;} // ]]></script><script>// <![CDATA[ var GLOBALS = {"audioUrl":"https://d1fcbxp97j4nb2.cloudfront.net","baseUrl":"https://towardsdatascience.com","buildLabel":"20241122-2326-root","currentUser":{"userId":"lo_d6c0ac138df8","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.jgL7zdhxfcJMjkJjEjB6xg.12.js","common-async":"https://cdn-static-1.medium.com/_/fp/gen-js/main-common-async.bundle.fULbttUzdHyewyAazMUYXw.12.js","hightower":"https://cdn-static-1.medium.com/_/fp/gen-js/main-hightower.bundle.NQoDXJuDHPBqR63_AdMDaA.12.js","home-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-home-screens.bundle.m76-07Q1DcEMKgEwzJjhDA.12.js","misc-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-misc-screens.bundle.2CLT5j6rDReEhG2bjr3NdA.12.js","notes":"https://cdn-static-1.medium.com/_/fp/gen-js/main-notes.bundle.yrGWoeoBrJB7GBGv--gr1g.12.js","payments":"https://cdn-static-1.medium.com/_/fp/gen-js/main-payments.bundle.Cc_nfCICljMx7aW6-Pr_9w.12.js","posters":"https://cdn-static-1.medium.com/_/fp/gen-js/main-posters.bundle.QCX6B3q-KqcSv8hiUNsQ9Q.12.js","power-readers":"https://cdn-static-1.medium.com/_/fp/gen-js/main-power-readers.bundle.nxgYPC9-BrhdicIoMMuzoA.12.js","pubs":"https://cdn-static-1.medium.com/_/fp/gen-js/main-pubs.bundle.SOwTEi0SkdYAS9MQpioQXw.12.js","stats":"https://cdn-static-1.medium.com/_/fp/gen-js/main-stats.bundle.hA1c7rerc_dk3N05UG54qQ.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":"1732401405240:4382f98a0f05","useragent":{"browser":"ie","family":"ie","os":"windows","version":7,"supportsDesktopEdit":false,"supportsInteract":false,"supportsView":true,"isMobile":false,"isTablet":false,"isNative":false,"supportsFileAPI":false,"isTier1":false,"clientVersion":"","clientChannel":"","supportsRealScrollEvents":false,"supportsVhUnits":false,"ruinsViewportSections":false,"supportsHtml5Video":false,"supportsMagicUnderlines":false,"isWebView":false,"isFacebookWebView":false,"supportsProgressiveMedia":false,"supportsPromotedPosts":true,"isBot":false,"isNativeIphone":false,"supportsCssVariables":false,"supportsVideoSections":true,"emojiSupportLevel":1,"isSearchBot":false,"isSyndicationBot":false,"isNativeAndroid":false,"isNativeIos":false,"isSeoAuditBot":false,"isInternalApp":false,"supportsApplePay":false,"supportsScrollableMetabar":false},"variants":{"allow_access":true,"allow_signup":true,"allow_test_auth":"disallow","android_enable_editor_new_publishing_flow":true,"android_enable_friend_links_creation":true,"android_enable_friend_links_postpage_banners":true,"android_enable_image_sharer":true,"android_enable_lists_v2":true,"android_enable_syntax_highlight":true,"android_enable_topic_portals":true,"android_rating_prompt_stories_read_threshold":2,"android_two_hour_refresh":true,"available_annual_plan":"2c754bcc2995","available_annual_premium_plan":"4a442ace1476","available_monthly_plan":"60e220181034","available_monthly_premium_plan":"12a660186432","browsable_stream_config_bucket":"curated-topics","can_receive_tips_v0":true,"can_send_tips_v0":true,"coronavirus_topic_recirc":true,"disable_partner_program_enrollment":true,"enable_abandoned_cart_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_bayesian_average_pub_search":true,"enable_bg_post_post":true,"enable_billing_frequency_on_step2":"group_1","enable_boost_nia_v01":true,"enable_braintree_apple_pay":true,"enable_braintree_client":true,"enable_braintree_google_pay":true,"enable_braintree_integration":true,"enable_braintree_paypal":true,"enable_braintree_trial_membership":true,"enable_braintree_webhook":true,"enable_branch_io":true,"enable_cache_less_following_feed":true,"enable_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_diversification_rex":true,"enable_entities_to_follow_v2":true,"enable_eventstats_event_processing":true,"enable_explicit_signals":true,"enable_explicit_signals_updated_post_previews":true,"enable_footer_app_buttons":true,"enable_google_one_tap":true,"enable_google_webhook":true,"enable_group_gifting":true,"enable_iceland_forced_android":true,"enable_import":true,"enable_intrinsic_automatic_actions":true,"enable_ios_autorefresh":true,"enable_ios_dynamic_paywall_aspiriational":true,"enable_ios_dynamic_paywall_programming":true,"enable_ios_easy_resubscribe":true,"enable_ios_offline_reading":true,"enable_legacy_feed_in_iceland":true,"enable_lite_archive_page":true,"enable_lite_continue_this_thread":true,"enable_lite_homepage":true,"enable_lite_response_markup":true,"enable_lite_server_upstream_deadlines":true,"enable_lo_homepage":"control","enable_maim_the_meter":true,"enable_marketing_emails":true,"enable_mastodon_avatar_upload":true,"enable_mastodon_for_members":true,"enable_mastodon_for_members_username_selection":true,"enable_medium2_kbfd":true,"enable_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_pp_country_expansion":true,"enable_pp_v4":true,"enable_pre_pp_v4":true,"enable_premium_tier":true,"enable_premium_tier_badge":true,"enable_publication_hierarchy_web":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_update_explore_wtf":true,"enable_update_topic_portals_wtf":true,"enable_updated_pub_recs_ui":true,"enable_verifications_service":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":"1","onboarding_tags_from_top_views":true,"reader_fair_distribution_non_qp":true,"redefined_top_posts":true,"reengagement_notification_duration":3,"rex_generator_max_candidates":1000,"signin_services":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple","signup_services":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple","skip_fs_cache_user_vals":true},"xsrfToken":"","iosAppId":"828256236","supportEmail":"yourfriends@medium.com","fp":{"/icons/monogram-mask.svg":"https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg","/icons/favicon-medium-editor.ico":"https://cdn-static-1.medium.com/_/fp/icons/favicon-medium-editor.PiakrZWB7Yb80quUVQWM6g.12.ico"},"authBaseUrl":"https://medium.com","imageUploadSizeMb":25,"isAuthDomainRequest":false,"domainCollectionSlug":"towards-data-science","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.jgL7zdhxfcJMjkJjEjB6xg.12.js" async></script><script>// <![CDATA[ window["obvInit"]({"references":{"Collection":{"7f60cf5620c9":{"id":"7f60cf5620c9","name":"Towards Data Science","slug":"towards-data-science","tags":["DATA SCIENCE","MACHINE LEARNING","ARTIFICIAL INTELLIGENCE","DATA ENGINEERING","DATA"],"creatorId":"9c70285657bb","description":"Your home for data science. A publication sharing concepts, ideas and codes.","shortDescription":"Your home for data science.","image":{"imageId":"1*CJe3891yB1A1mzMdqemkdg.jpeg","filter":"","backgroundSize":"","originalWidth":2861,"originalHeight":2861,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":767037,"activeAt":1732376081740},"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*cFFKn8rFH4ZndmaYeAs6iQ.png","filter":"","backgroundSize":"","originalWidth":2381,"originalHeight":743,"strategy":"resample","height":0,"width":0},"twitterUsername":"TDataScience","collectionMastheadId":"8b6aceffde6","domain":"towardsdatascience.com","sections":[{"type":2,"collectionHeaderMetadata":{"backgroundImage":{},"logoImage":{"id":"1*0Ih6WUzKYC41g-cmVD4n7w@2x.png","originalWidth":3523,"originalHeight":1031,"alt":"Towards Data Science"},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":2,"postIds":[]}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":9,"postIds":[],"sectionHeader":"Latest"}},{"type":3,"promoMetadata":{"sectionHeader":"","promoId":"f9f3fdba6ebf"}},{"type":1,"postListMetadata":{"source":4,"layout":4,"number":6,"postIds":[],"tagSlug":"Editors Pick","sectionHeader":"Editors' Picks"}},{"type":1,"postListMetadata":{"source":4,"layout":4,"number":2,"postIds":[],"tagSlug":"Tds Features","sectionHeader":"Features"}},{"type":3,"promoMetadata":{"sectionHeader":"","promoId":"efaedc412a41"}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["60bb69a22759","c57724e9c461","69019493b259"],"sectionHeader":"Trending articles"}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["182a5ef6588c","e24b50e1d292","68b2303cc9c5"],"sectionHeader":"Popular from our archive"}},{"type":1,"postListMetadata":{"source":4,"layout":4,"number":6,"postIds":[],"tagSlug":"Deep Dives","sectionHeader":"Deep Dives"}},{"type":1,"postListMetadata":{"source":3,"layout":5,"number":3,"postIds":["d691af11cc2f","c2c8e712c971","3bf37f75a345"],"sectionHeader":"About"}},{"type":1,"postListMetadata":{"source":1,"layout":5,"number":16,"postIds":[],"sectionHeader":"Latest"}}],"tintColor":"#FF355876","lightText":true,"favicon":{"imageId":"1*VzTUkfeGymHP4Bvav-T-lA.png","filter":"","backgroundSize":"","originalWidth":207,"originalHeight":206,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF668AAA","point":0},{"color":"#FF61809D","point":0.1},{"color":"#FF5A7690","point":0.2},{"color":"#FF546C83","point":0.3},{"color":"#FF4D6275","point":0.4},{"color":"#FF455768","point":0.5},{"color":"#FF3D4C5A","point":0.6},{"color":"#FF34414C","point":0.7},{"color":"#FF2B353E","point":0.8},{"color":"#FF21282F","point":0.9},{"color":"#FF161B1F","point":1}],"backgroundColor":"#FFFFFFFF"},"tintBackgroundSpectrum":{"colorPoints":[{"color":"#FF355876","point":0},{"color":"#FF4D6C88","point":0.1},{"color":"#FF637F99","point":0.2},{"color":"#FF7791A8","point":0.3},{"color":"#FF8CA2B7","point":0.4},{"color":"#FF9FB3C6","point":0.5},{"color":"#FFB2C3D4","point":0.6},{"color":"#FFC5D2E1","point":0.7},{"color":"#FFD7E2EE","point":0.8},{"color":"#FFE9F1FA","point":0.9},{"color":"#FFFBFFFF","point":1}],"backgroundColor":"#FF355876"},"highlightSpectrum":{"colorPoints":[{"color":"#FFEDF4FC","point":0},{"color":"#FFE9F2FD","point":0.1},{"color":"#FFE6F1FD","point":0.2},{"color":"#FFE2EFFD","point":0.3},{"color":"#FFDFEEFD","point":0.4},{"color":"#FFDBECFE","point":0.5},{"color":"#FFD7EBFE","point":0.6},{"color":"#FFD4E9FE","point":0.7},{"color":"#FFD0E7FF","point":0.8},{"color":"#FFCCE6FF","point":0.9},{"color":"#FFC8E4FF","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FF7EA2C3","point":0},{"color":"#FF8AAAC9","point":0.1},{"color":"#FF95B2CE","point":0.2},{"color":"#FFA0BAD3","point":0.3},{"color":"#FFABC2D9","point":0.4},{"color":"#FFB6CADE","point":0.5},{"color":"#FFC1D2E3","point":0.6},{"color":"#FFCBD9E8","point":0.7},{"color":"#FFD6E1EC","point":0.8},{"color":"#FFE0E8F1","point":0.9},{"color":"#FFEAEFF6","point":1}],"backgroundColor":"#FF000000"}},"navItems":[{"type":8,"title":"Latest","url":"https://towardsdatascience.com/latest"},{"type":4,"title":"Editors' Picks","url":"https://towardsdatascience.com/editors-picks/home","topicId":"20b4f3e27fbe","source":"topicId"},{"type":4,"title":"Deep Dives","url":"https://towardsdatascience.com/deep-dives/home","topicId":"8ad314313527","source":"topicId"},{"type":4,"title":"About","url":"https://towardsdatascience.com/about-us/home","topicId":"e4bc46bb3ab0","source":"topicId"},{"type":2,"title":"Contribute","postId":"96667b06af5","url":"https://towardsdatascience.com/questions-96667b06af5","source":"postId"},{"type":3,"title":"Newsletter","url":"https://medium.com/towards-data-science/newsletter"}],"colorBehavior":2,"collectionFeatures":[29,30,27,25],"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"backgroundImage":{},"logoImage":{"id":"1*0Ih6WUzKYC41g-cmVD4n7w@2x.png","originalWidth":3523,"originalHeight":1031,"alt":"Towards Data Science"},"alignment":2,"layout":5},"paidForDomainAt":1509037374118,"subscriberCount":767037,"tagline":"A Medium publication sharing concepts, ideas and codes.","isOptedIntoAurora":false,"newsletterV3":{"newsletterV3Id":"d6fe9076899","type":1,"name":"The Variable","description":"Every Thursday, the Variable delivers the very best of Towards Data Science: from hands-on tutorials and cutting-edge research to the latest on data science and machine learning tools.","collectionId":"7f60cf5620c9","newsletterSlug":"the-variable","isSubscribed":false,"showPromo":true,"avatarImageId":"","creatorId":"895063a310f4","showNewsletterPostsInCollectionHome":true,"exportableSubscribersCount":52134,"subscribersCount":132261,"promoHeadline":"","promoBody":"","replyToEmail":""},"isCurationAllowedByDefault":false,"polarisCoverImage":{"imageId":"1*CJe3891yB1A1mzMdqemkdg.jpeg","filter":"","backgroundSize":"","originalWidth":2861,"originalHeight":2861,"strategy":"resample","height":0,"width":0},"ptsQualifiedAt":1616092952992,"type":"Collection"}},"User":{"593908e0206":{"userId":"593908e0206","name":"Ari Joury, PhD","username":"arijoury","createdAt":1518355625411,"imageId":"1*KlXLJKcjqwyXD_lsvaFJ9g.png","backgroundImageId":"","bio":"Founder of Wangari. Sustainable finance & ESG-financial modeling. Get all articles 3 days in advance: https://wangari.substack.com","twitterScreenName":"ari_joury","allowNotes":1,"mediumMemberAt":1536302451000,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"subdomainCreatedAt":1635855516093,"hasCompletedProfile":false,"isCreatorPartnerProgramEnrolled":true,"userDismissableFlags":[32,29,21,19,18,12,11,9,8,5,36,3,2,1,33],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"8b7aca3e5b1c":{"userId":"8b7aca3e5b1c","name":"Rebecca Vickery","username":"rebeccalvickery","createdAt":1481205901662,"imageId":"1*rhvwW5suGypWKG_iJqFWcA.jpeg","backgroundImageId":"","bio":"Data Scientist | Writer | Speaker","twitterScreenName":"vickdata","allowNotes":1,"mediumMemberAt":1557749269000,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"subdomainCreatedAt":1678566203222,"hasCompletedProfile":false,"isCreatorPartnerProgramEnrolled":true,"userDismissableFlags":[32,29,22,21,19,47,12,11,9,8,5,3,2,1,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-gb","type":"User"},"9acc249a5ae7":{"userId":"9acc249a5ae7","name":"Bernd Wessely","username":"bernd.wessely","createdAt":1711287612995,"imageId":"1*Sisgd3ha5GoFZHqnwFk-0Q@2x.jpeg","backgroundImageId":"","bio":"Data Engineer, Architect, Consultant and Entrepreneur","twitterScreenName":"","allowNotes":1,"mediumMemberAt":1712240964000,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedIosApp":1711570445941,"isMembershipTrialEligible":false,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":true,"isCreatorPartnerProgramEnrolled":true,"userDismissableFlags":[47,29,37,19],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"de-de","type":"User"},"4429d99b1245":{"userId":"4429d99b1245","name":"Gustavo Santos","username":"gustavorsantos","createdAt":1594845210645,"imageId":"1*rCTvITbng0JCyscxHHCh4g@2x.jpeg","backgroundImageId":"","bio":"Data Scientist. I extract insights from data to help people and companies to make better and data driven decisions. | In: https://www.linkedin.com/in/gurezende/","twitterScreenName":"gurezende","allowNotes":1,"mediumMemberAt":1609456481000,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedIosApp":1594991170362,"firstOpenedAndroidApp":1609369570924,"isMembershipTrialEligible":false,"facebookDisplayName":"Gustavo Santos","optInToIceland":true,"subdomainCreatedAt":1604273947775,"hasCompletedProfile":true,"isCreatorPartnerProgramEnrolled":true,"userDismissableFlags":[32,29,21,19,18,16,47,12,44,11,9,8,5,3,2,1,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"993c21f1b30f":{"userId":"993c21f1b30f","name":"Heiko Hotz","username":"heiko-hotz","createdAt":1609950340147,"imageId":"1*5VifPxEG2ZkTxCK2m4JcLQ.png","backgroundImageId":"","bio":"Generative AI Blackbelt @ Google — All opinions are my own","twitterScreenName":"HeikoHotz","allowNotes":1,"mediumMemberAt":1690055043000,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedIosApp":1616306567293,"firstOpenedAndroidApp":1706102661326,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"userFlags":[3],"subdomainCreatedAt":1617694420853,"hasCompletedProfile":false,"isCreatorPartnerProgramEnrolled":true,"userDismissableFlags":[32,29,21,18,47,12,8,50,5,30,3,2,1,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-gb","type":"User"},"d7e5c1ca65b7":{"userId":"d7e5c1ca65b7","name":"Oscar Leo","username":"oscarleo","createdAt":1618396598020,"imageId":"1*mmj0a_PJzP_z8O5KZDOxGQ.jpeg","backgroundImageId":"","bio":"I ❤️ to analyze, refine, and visualize the internet's most exciting datasets.","twitterScreenName":"oscarl3o","allowNotes":1,"mediumMemberAt":1641312226000,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedIosApp":1641494601268,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"userFlags":[3],"hasCompletedProfile":true,"isCreatorPartnerProgramEnrolled":true,"userDismissableFlags":[29,12,44,8,21,37,3,19,2,1,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-gb","type":"User"},"59f51d8e0df4":{"userId":"59f51d8e0df4","name":"Saankhya Mondal","username":"saankhya","createdAt":1569052186584,"imageId":"1*TADxXNj_Fq5BqXipXvp1QQ.jpeg","backgroundImageId":"","bio":"Data Scientist @ Meesho, M. Tech in AI, IISc, Bengaluru.","twitterScreenName":"SM823zw_","allowNotes":1,"mediumMemberAt":1670345448208,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedAndroidApp":1570776619407,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"subdomainCreatedAt":1674542444312,"hasCompletedProfile":true,"isCreatorPartnerProgramEnrolled":true,"userDismissableFlags":[29,19,18,49,48,47,12,8,50,37,3,2,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"7ffb62c607ee":{"userId":"7ffb62c607ee","name":"Mike Huls","username":"mikehuls","createdAt":1620556507980,"imageId":"1*kDfA06taH4WcpV3oZbHatQ.jpeg","backgroundImageId":"","bio":"I write about interesting programming-related things: techniques, system architecture, software design and how to apply them in the best way. — mikehuls.com —","twitterScreenName":"Mike_Huls","allowNotes":1,"mediumMemberAt":1692284466366,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedAndroidApp":1620582705173,"isMembershipTrialEligible":false,"facebookDisplayName":"","optInToIceland":true,"subdomainCreatedAt":1620572005875,"hasCompletedProfile":true,"isCreatorPartnerProgramEnrolled":true,"userDismissableFlags":[32,29,22,21,19,18,49,48,12,11,9,8,50,5,30,2,1,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"bdc4072cbfdc":{"userId":"bdc4072cbfdc","name":"Daniel Warfield","username":"danielwarfield1","createdAt":1683386100402,"imageId":"1*YaEyucgUXLb6TwSFW-ucXg.jpeg","backgroundImageId":"","bio":"Data Scientist and Educator, teaching machine learning Intuitively and Exhaustively:https://iaee.substack.com/ | contact: https://danielwarfield.dev/","twitterScreenName":"daniel_war50501","allowNotes":1,"mediumMemberAt":1683386175000,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedAndroidApp":1686191274510,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":true,"isCreatorPartnerProgramEnrolled":true,"userDismissableFlags":[48,47,29,44,50,37,19,10,49],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"b7c226dc9b8e":{"userId":"b7c226dc9b8e","name":"James Barney","username":"jamesbarney71","createdAt":1538161434829,"imageId":"1*cnIbCvO9N7Qt0_R_ukwd8A@2x.jpeg","backgroundImageId":"","bio":"A passionate technologist with a strong background in cloud engineering, platform engineering, and data engineering. https://www.linkedin.com/in/james-barney/","twitterScreenName":"","allowNotes":1,"mediumMemberAt":1720184260000,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedIosApp":1718132820741,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":true,"userDismissableFlags":[8,47,29,12,2],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"8572724a5d2c":{"userId":"8572724a5d2c","name":"Jose Parreño","username":"joparga3","createdAt":1580644646150,"imageId":"1*muI5QEd6YqFGJDIrf4h2Mg@2x.jpeg","backgroundImageId":"","bio":"Sr. Data Science manager at Skyscanner. Data Science leadership, data storytelling and niche machine learning.","twitterScreenName":"","allowNotes":1,"mediumMemberAt":1720599223000,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedIosApp":1695475039008,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":true,"isCreatorPartnerProgramEnrolled":true,"userDismissableFlags":[47,29],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en","type":"User"}},"Post":{"54507944e731":{"id":"54507944e731","versionId":"133b6f6e1a71","creatorId":"593908e0206","homeCollectionId":"7f60cf5620c9","title":"Building Sustainable Algorithms: Energy-Efficient Python Programming","detectedLanguage":"en","latestVersion":"133b6f6e1a71","latestPublishedVersion":"133b6f6e1a71","hasUnpublishedEdits":false,"latestRev":366,"createdAt":1732299973197,"updatedAt":1732379995242,"acceptedAt":0,"firstPublishedAt":1732376081647,"latestPublishedAt":1732376081647,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"6 techniques for reducing the computational cost of Python algorithms","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*A4Bc49wv6lAVBZzX.jpeg","filter":"","backgroundSize":"","originalWidth":1200,"originalHeight":600,"strategy":"resample","height":0,"width":0},"wordCount":2289,"imageCount":1,"readingTime":8.837735849056603,"subtitle":"6 techniques for reducing the computational cost of Python algorithms","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":9,"isBookmarked":false,"tags":[{"slug":"towards-data-science","name":"Towards Data Science","postCount":7526,"metadata":{"postCount":7526,"coverImage":{"id":"0*etaxBjVzGP-kZZNE","originalWidth":4032,"originalHeight":3024,"isFeatured":true,"unsplashPhotoId":"cNtMy74-mnI"}},"type":"Tag"},{"slug":"programming","name":"Programming","postCount":446511,"metadata":{"postCount":446511,"coverImage":{"id":"1*YUIhHmZyuEn92w2azqpfXg.jpeg","originalWidth":1280,"originalHeight":1280}},"type":"Tag"},{"slug":"python","name":"Python","postCount":259026,"metadata":{"postCount":259026,"coverImage":{"id":"1*uiA0nCufUQs-K64ebSUhew.jpeg","originalWidth":1280,"originalHeight":800,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":325611,"metadata":{"postCount":325611,"coverImage":{"id":"1*BqVsCBa2mLv1UWQrdhjX5w.png","originalWidth":1500,"originalHeight":750,"isFeatured":true,"alt":"How I Am Using a Lifetime 100% Free Server"}},"type":"Tag"},{"slug":"sustainability","name":"Sustainability","postCount":96383,"metadata":{"postCount":96383,"coverImage":{"id":"1*WOhIv-khJmIcywFEKC-ssA.jpeg"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/Hash_table","alts":[],"httpStatus":200},{"url":"https://docs.python.org/3/howto/functional.html#generator-expressions-and-list-comprehensions","alts":[],"httpStatus":200},{"url":"https://www.geekwire.com/2024/microsofts-carbon-footprint-keeps-growing-as-ai-drives-data-center-expansions/","alts":[],"httpStatus":403},{"url":"https://wangari.substack.com/p/building-sustainable-algorithms-energy","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1732376082031},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":57,"sectionCount":2,"readingList":0,"topics":[{"topicId":"55f1c20aba7a","slug":"software-engineering","createdAt":1491949272237,"deletedAt":0,"image":{"id":"1*U8FboK4lz1wqwQC6IcqxKw@2x.jpeg","originalWidth":5507,"originalHeight":3098},"name":"Software Engineering","description":"Back-end to front-end.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Software Engineering News and Articles — Medium","type":"Topic"},{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"},{"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-sustainable-algorithms-energy-efficient-python-programming","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"https://wangari.substack.com/p/building-sustainable-algorithms-energy","importedPublishedAt":0,"visibility":2,"uniqueSlug":"building-sustainable-algorithms-energy-efficient-python-programming-54507944e731","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*A4Bc49wv6lAVBZzX.jpeg","originalWidth":1200,"originalHeight":600,"isFeatured":true}},{"name":"0f98","type":3,"text":"Building Sustainable Algorithms: Energy-Efficient Python Programming","markups":[],"alignment":1},{"name":"6144","type":13,"text":"6 techniques for reducing the…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"6 techniques for reducing the computational cost of Python algorithms"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7f60cf5620c9","isNewsletter":false,"newsletterId":"29e58786860e","webCanonicalUrl":"https://wangari.substack.com/p/building-sustainable-algorithms-energy","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":true,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":true,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":1,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1732300378010,"primaryTopicId":"ae5d4995e225","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"0f98","type":3,"text":"Building Sustainable Algorithms: Energy-Efficient Python Programming","markups":[]},{"name":"6144","type":13,"text":"6 techniques for reducing the computational cost of Python algorithms","markups":[]},{"name":"b373","type":4,"text":"You can get your Python performing better by using these techniques. Image generated with Leonardo…","markups":[],"layout":1,"metadata":{"id":"0*A4Bc49wv6lAVBZzX.jpeg","originalWidth":1200,"originalHeight":600,"isFeatured":true}},{"name":"99ad","type":1,"text":"A junior software developer shall be forgiven for being happy when their code works. If that’s you, I do not judge you.","markups":[]},{"name":"8387","type":1,"text":"However, if you are ready to get to the next level of building software with Python, your code should not just run and pass some tests. It should…","markups":[]}],"sections":[{"name":"593e","startIndex":0}]},"isFullContent":false,"subtitle":"6 techniques for reducing the computational cost of Python algorithms"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"3fbedac654ad":{"id":"3fbedac654ad","versionId":"15234f6f57c4","creatorId":"8b7aca3e5b1c","homeCollectionId":"7f60cf5620c9","title":"Data Science in Marketing: Hands-on Propensity Modelling with Python","detectedLanguage":"en","latestVersion":"15234f6f57c4","latestPublishedVersion":"15234f6f57c4","hasUnpublishedEdits":false,"latestRev":1253,"createdAt":1731082379601,"updatedAt":1732375828367,"acceptedAt":0,"firstPublishedAt":1732370527299,"latestPublishedAt":1732370527299,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"All the code you need to predict the likelihood of a customer purchasing your product","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*VowutvnX-8NaTApZ716I3Q.jpeg","filter":"","backgroundSize":"","originalWidth":4608,"originalHeight":3072,"strategy":"resample","height":0,"width":0},"wordCount":1601,"imageCount":9,"readingTime":7.241509433962264,"subtitle":"All the code you need to predict the likelihood of a customer purchasing your product","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":12,"isBookmarked":false,"tags":[{"slug":"data-science","name":"Data Science","postCount":346371,"metadata":{"postCount":346371,"coverImage":{"id":"1*YUIhHmZyuEn92w2azqpfXg.jpeg","originalWidth":1280,"originalHeight":1280}},"type":"Tag"},{"slug":"marketing","name":"Marketing","postCount":525134,"metadata":{"postCount":525134,"coverImage":{"id":"1*_e5HjS1Rzsl60ptS4XbP8A.png","originalWidth":1324,"originalHeight":716,"isFeatured":true}},"type":"Tag"},{"slug":"programming","name":"Programming","postCount":446511,"metadata":{"postCount":446511,"coverImage":{"id":"1*YUIhHmZyuEn92w2azqpfXg.jpeg","originalWidth":1280,"originalHeight":1280}},"type":"Tag"},{"slug":"machine-learning","name":"Machine Learning","postCount":353579,"metadata":{"postCount":353579,"coverImage":{"id":"1*8yJrgGPFwHBY8lpIFg7ERQ.png","originalWidth":940,"originalHeight":788,"isFeatured":true}},"type":"Tag"},{"slug":"hands-on-tutorials","name":"Hands On Tutorials","postCount":1856,"metadata":{"postCount":1856,"coverImage":{"id":"1*d2sHQh31o-dMaX4GNyzzvw.png","originalWidth":2412,"originalHeight":997,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://creativecommons.org/public-domain/cc0/","alts":[],"httpStatus":200},{"url":"https://scikit-learn.org/stable/install.html","alts":[],"httpStatus":200},{"url":"https://scikit-learn.org/stable/modules/ensemble.html","alts":[],"httpStatus":200},{"url":"https://pandas.pydata.org/docs/getting_started/install.html","alts":[],"httpStatus":200},{"url":"https://unsplash.com/photos/white-printing-paper-with-marketing-strategy-text-yktK2qaiVHI?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash","alts":[],"httpStatus":200},{"url":"https://www.kaggle.com/","alts":[],"httpStatus":200},{"url":"https://unsplash.com/@campaign_creators?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash","alts":[],"httpStatus":200},{"url":"https://www.kaggle.com/datasets/benpowis/customer-propensity-to-purchase-data","alts":[],"httpStatus":200},{"url":"https://seaborn.pydata.org/installing.html","alts":[],"httpStatus":200},{"url":"https://towardsdatascience.com/understanding-the-confusion-matrix-and-its-business-applications-c4e8aaf37f42","alts":[{"type":3,"url":"medium://p/c4e8aaf37f42"},{"type":2,"url":"medium://p/c4e8aaf37f42"}],"httpStatus":200}],"version":"0.3","generatedAt":1732370528542},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":83,"sectionCount":7,"readingList":0,"topics":[{"topicId":"1eca0103fff3","slug":"machine-learning","createdAt":1534449726145,"deletedAt":0,"image":{"id":"1*gFJS3amhZEg_z39D5EErVg@2x.png","originalWidth":2800,"originalHeight":1750},"name":"Machine Learning","description":"Teaching the learners.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Machine Learning News and Articles — Medium","type":"Topic"},{"topicId":"4861fee224fd","slug":"marketing","createdAt":1493928453626,"deletedAt":0,"image":{"id":"1*3blpwADxHq_9ksV-SXek-g@2x.jpeg","originalWidth":4000,"originalHeight":2250},"name":"Marketing","description":"Always be branding.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Marketing Articles and News — Medium","type":"Topic"},{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"},{"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":"data-science-in-marketing-hands-on-propensity-modelling-with-python","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":2,"uniqueSlug":"data-science-in-marketing-hands-on-propensity-modelling-with-python-3fbedac654ad","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*VowutvnX-8NaTApZ716I3Q.jpeg","originalWidth":4608,"originalHeight":3072,"isFeatured":true}},{"name":"898f","type":3,"text":"Data Science in Marketing: Hands-on Propensity Modelling with Python","markups":[],"alignment":1},{"name":"a4fb","type":13,"text":"All the code you need to predict…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"All the code you need to predict the likelihood of a customer purchasing your product"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7f60cf5620c9","isNewsletter":false,"newsletterId":"49b8ed437197","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":true,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":true,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":1,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1732291786793,"primaryTopicId":"ae5d4995e225","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"898f","type":3,"text":"Data Science in Marketing: Hands-on Propensity Modelling with Python","markups":[]},{"name":"a4fb","type":13,"text":"All the code you need to predict the likelihood of a customer purchasing your product","markups":[]},{"name":"a83d","type":4,"text":"Photo by Campaign Creators on Unsplash","markups":[{"type":3,"start":9,"end":26,"href":"https://unsplash.com/@campaign_creators?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash","title":"","rel":"","anchorType":0},{"type":3,"start":30,"end":38,"href":"https://unsplash.com/photos/white-printing-paper-with-marketing-strategy-text-yktK2qaiVHI?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash","title":"","rel":"","anchorType":0}],"layout":1,"metadata":{"id":"1*VowutvnX-8NaTApZ716I3Q.jpeg","originalWidth":4608,"originalHeight":3072,"isFeatured":true}},{"name":"341f","type":1,"text":"Propensity models are a powerful application of machine learning in marketing. These models use historical examples of customer behaviour to make predictions about future behaviour. The predictions generated by the propensity model are commonly used to understand the likelihood of a customer purchasing a particular product or taking up a…","markups":[]}],"sections":[{"name":"5f0a","startIndex":0}]},"isFullContent":false,"subtitle":"All the code you need to predict the likelihood of a customer purchasing your product"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"2aa46b262150":{"id":"2aa46b262150","versionId":"280436acdb38","creatorId":"9acc249a5ae7","homeCollectionId":"7f60cf5620c9","title":"Engineering the Future: Common Threads in Data, Software, and Artificial Intelligence","detectedLanguage":"en","latestVersion":"280436acdb38","latestPublishedVersion":"280436acdb38","hasUnpublishedEdits":false,"latestRev":1402,"createdAt":1730366679845,"updatedAt":1732370037788,"acceptedAt":0,"firstPublishedAt":1732363326201,"latestPublishedAt":1732363326201,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"How recognizing cross-discipline commonalities not only enhances recruitment strategies but also supports adaptable IT architectures.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*wJurAMzy5rcdibdSdeD7gg.png","filter":"","backgroundSize":"","originalWidth":1024,"originalHeight":1024,"strategy":"resample","height":0,"width":0},"wordCount":1607,"imageCount":1,"readingTime":6.264150943396227,"subtitle":"How recognizing cross-discipline commonalities not only enhances recruitment strategies but also supports adaptable IT architectures.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":8,"isBookmarked":false,"tags":[{"slug":"data-engineering","name":"Data Engineering","postCount":38299,"metadata":{"postCount":38299,"coverImage":{"id":"1*3qMVRdadOQK6OaG7pA42aw.jpeg","originalWidth":1280,"originalHeight":1130}},"type":"Tag"},{"slug":"software-engineering","name":"Software Engineering","postCount":115509,"metadata":{"postCount":115509,"coverImage":{"id":"1*Ldt1EqOOy39VAiMKQJYzjQ@2x.jpeg","originalWidth":1280,"originalHeight":1280,"focusPercentX":-1,"focusPercentY":-1,"alt":""}},"type":"Tag"},{"slug":"machine-learning","name":"Machine Learning","postCount":353579,"metadata":{"postCount":353579,"coverImage":{"id":"1*8yJrgGPFwHBY8lpIFg7ERQ.png","originalWidth":940,"originalHeight":788,"isFeatured":true}},"type":"Tag"},{"slug":"enterprise-architecture","name":"Enterprise Architecture","postCount":2286,"metadata":{"postCount":2286,"coverImage":{"id":"1*wJurAMzy5rcdibdSdeD7gg.png","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"artificial-intelligence","name":"Artificial Intelligence","postCount":457519,"metadata":{"postCount":457519,"coverImage":{"id":"1*gAn_BSffVBcwCIR6bDgK1g.jpeg"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://medium.com/@bernd.wessely/data-engineering-is-software-engineering-a4c5df052492","alts":[{"type":3,"url":"medium://p/a4c5df052492"},{"type":2,"url":"medium://p/a4c5df052492"}],"httpStatus":200},{"url":"https://proceedings.neurips.cc/paper_files/paper/2015/file/86df7dcfd896fcaf2674f757a2463eba-Paper.pdf","alts":[],"httpStatus":200},{"url":"https://medium.com/towards-data-science/data-architecture-lessons-learned-3589b152a8a6","alts":[{"type":3,"url":"medium://p/3589b152a8a6"},{"type":2,"url":"medium://p/3589b152a8a6"}],"httpStatus":200},{"url":"https://medium.com/towards-data-science/avoid-building-a-data-platform-in-2024-56f0ee95da42","alts":[{"type":3,"url":"medium://p/56f0ee95da42"},{"type":2,"url":"medium://p/56f0ee95da42"}],"httpStatus":200},{"url":"https://medium.com/towards-data-science/batch-and-streaming-demystified-for-unification-dee0b48f921d","alts":[{"type":3,"url":"medium://p/dee0b48f921d"},{"type":2,"url":"medium://p/dee0b48f921d"}],"httpStatus":200}],"version":"0.3","generatedAt":1732363327801},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":110,"sectionCount":1,"readingList":0,"topics":[{"topicId":"1af65db9c2f8","slug":"artificial-intelligence","createdAt":1487916832419,"deletedAt":0,"image":{"id":"1*A28aHchbaA8zNVXraBq0Ug@2x.jpeg","originalWidth":4866,"originalHeight":3244},"name":"Artificial Intelligence","description":"Born to be bot.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"AI News and Artificial Intelligence Articles — Medium","type":"Topic"},{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"},{"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"},{"topicId":"f862bfc84e38","slug":"technology","createdAt":1487918016768,"deletedAt":0,"image":{"id":"1*XxQLrxqHUlIHg5j-eIQrPQ@2x.png","originalWidth":640,"originalHeight":384},"name":"Technology","description":"The download.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Technology News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"engineering-the-future-common-threads-in-data-software-and-artificial-intelligence","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":2,"uniqueSlug":"engineering-the-future-common-threads-in-data-software-and-artificial-intelligence-2aa46b262150","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*wJurAMzy5rcdibdSdeD7gg.png","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},{"name":"a50e","type":3,"text":"Engineering the Future: Common Threads in Data, Software, and Artificial Intelligence","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"How recognizing cross-discipline commonalities not only enhances recruitment strategies but also supports adaptable IT architectures."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7f60cf5620c9","isNewsletter":false,"newsletterId":"0f0d5389fcc1","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":true,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":true,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":1,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1731779773028,"primaryTopicId":"ae5d4995e225","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"a50e","type":3,"text":"Engineering the Future: Common Threads in Data, Software, and Artificial Intelligence","markups":[]},{"name":"55c6","type":13,"text":"How recognizing cross-discipline commonalities not only enhances recruitment strategies but also supports adaptable IT architectures.","markups":[]},{"name":"8254","type":4,"text":"DALL-E generated","markups":[],"layout":1,"metadata":{"id":"1*wJurAMzy5rcdibdSdeD7gg.png","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},{"name":"82d1","type":1,"text":"I’ve noticed an ongoing trend toward over-specialization in IT departments. However, one of my key lessons learned over the years is the negative impact of this siloed specialization.","markups":[{"type":3,"start":137,"end":182,"href":"https://medium.com/towards-data-science/data-architecture-lessons-learned-3589b152a8a6","title":"","rel":"","anchorType":0}]},{"name":"5114","type":1,"text":"While it’s primarily an organizational issue, the trend towards the mindless embrace of specialized platform offerings from vendors has also led to…","markups":[{"type":3,"start":141,"end":212,"href":"https://medium.com/towards-data-science/avoid-building-a-data-platform-in-2024-56f0ee95da42","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"30ed","startIndex":0}]},"isFullContent":false,"subtitle":"How recognizing cross-discipline commonalities not only enhances recruitment strategies but also supports adaptable IT architectures."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"60e26b64380e":{"id":"60e26b64380e","versionId":"f842906cb160","creatorId":"4429d99b1245","homeCollectionId":"7f60cf5620c9","title":"Documenting Python Projects with MkDocs","detectedLanguage":"en","latestVersion":"f842906cb160","latestPublishedVersion":"f842906cb160","hasUnpublishedEdits":false,"latestRev":1213,"createdAt":1732124064033,"updatedAt":1732330875811,"acceptedAt":0,"firstPublishedAt":1732301891843,"latestPublishedAt":1732301891843,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Use Markdown to quickly create a beautiful documentation page for your projects","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*xBmKmGglhsLafmM7tfTTPQ.jpeg","filter":"","backgroundSize":"","originalWidth":1792,"originalHeight":1024,"strategy":"resample","height":0,"width":0},"wordCount":1680,"imageCount":10,"readingTime":7.589622641509434,"subtitle":"Use Markdown to quickly create a beautiful documentation page for your projects","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":38,"isBookmarked":false,"tags":[{"slug":"documentation","name":"Documentation","postCount":7066,"metadata":{"postCount":7066,"coverImage":{"id":"1*xBmKmGglhsLafmM7tfTTPQ.jpeg","originalWidth":1792,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"python","name":"Python","postCount":259026,"metadata":{"postCount":259026,"coverImage":{"id":"1*uiA0nCufUQs-K64ebSUhew.jpeg","originalWidth":1280,"originalHeight":800,"isFeatured":true}},"type":"Tag"},{"slug":"mkdocs","name":"Mkdocs","postCount":90,"metadata":{"postCount":90,"coverImage":{"id":"1*xBmKmGglhsLafmM7tfTTPQ.jpeg","originalWidth":1792,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"project-management","name":"Project Management","postCount":53948,"metadata":{"postCount":53948,"coverImage":{"id":"0*qbQTuVlzhFYSkCjL","originalWidth":4896,"originalHeight":3220,"isFeatured":true,"unsplashPhotoId":"KYxXMTpTzek"}},"type":"Tag"},{"slug":"tips-and-tricks","name":"Tips And Tricks","postCount":24910,"metadata":{"postCount":24910,"coverImage":{"id":"0*jrOt6sJucS-m5Yce","originalWidth":4300,"originalHeight":2867,"isFeatured":true,"unsplashPhotoId":"7Th8BkMwxu4"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://openai.com.","alts":[],"httpStatus":403},{"url":"https://gurezende.github.io/MkDocs-Example/","alts":[],"httpStatus":200},{"url":"https://pawamoy.github.io/mkdocs-gallery/","alts":[],"httpStatus":200},{"url":"https://www.mkdocs.org/","alts":[],"httpStatus":200},{"url":"https://www.mkdocs.org/user-guide/choosing-your-theme/","alts":[],"httpStatus":200},{"url":"https://github.com/adam-p/markdown-here/wiki/Markdown-Here-Cheatsheet","alts":[],"httpStatus":200},{"url":"https://github.com/gurezende/MkDocs-Example","alts":[],"httpStatus":200},{"url":"https://laxfed.dev/python-project-documentation-with-mkdocs-and-python-a4fc83bf29d4","alts":[{"type":3,"url":"medium://p/a4fc83bf29d4"},{"type":2,"url":"medium://p/a4fc83bf29d4"}],"httpStatus":200},{"url":"https://gustavorsantos.medium.com/","alts":[{"type":2,"url":"medium://@gustavorsantos"},{"type":3,"url":"medium://@gustavorsantos"}],"httpStatus":200}],"version":"0.3","generatedAt":1732301892904},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":145,"sectionCount":2,"readingList":0,"topics":[{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"},{"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":"documenting-python-projects-with-mkdocs","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":2,"uniqueSlug":"documenting-python-projects-with-mkdocs-60e26b64380e","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*xBmKmGglhsLafmM7tfTTPQ.jpeg","originalWidth":1792,"originalHeight":1024,"isFeatured":true}},{"name":"2f85","type":3,"text":"Documenting Python Projects with MkDocs","markups":[],"alignment":1},{"name":"8902","type":13,"text":"Use Markdown to quickly create a beautiful documentation page…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Use Markdown to quickly create a beautiful documentation page for your projects"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7f60cf5620c9","isNewsletter":false,"newsletterId":"31b8198b4e33","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":true,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":true,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":1,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":6,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1732142726747,"primaryTopicId":"decb52b64abf","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"2f85","type":3,"text":"Documenting Python Projects with MkDocs","markups":[]},{"name":"8902","type":13,"text":"Use Markdown to quickly create a beautiful documentation page for your projects","markups":[]},{"name":"63c9","type":4,"text":"Image created with DALL·E by OpenAI. https://openai.com. MkDocs in Python.","markups":[{"type":3,"start":37,"end":56,"href":"https://openai.com.","title":"","rel":"","anchorType":0}],"layout":1,"metadata":{"id":"1*xBmKmGglhsLafmM7tfTTPQ.jpeg","originalWidth":1792,"originalHeight":1024,"isFeatured":true}},{"name":"a81f","type":3,"text":"Introduction","markups":[]},{"name":"0b83","type":1,"text":"Project documentation is necessary. Very necessary, I would emphasize.","markups":[{"type":1,"start":36,"end":70}]},{"name":"e859","type":1,"text":"At the beginning of my career, I learned the hard way that a project must be documented.","markups":[]},{"name":"1179","type":1,"text":"Let’s go back in time — to the 2000s — when I was working as a Customer Representative for large US companies. I was…","markups":[]}],"sections":[{"name":"5f8b","startIndex":0},{"name":"b58f","startIndex":3}]},"isFullContent":false,"subtitle":"Use Markdown to quickly create a beautiful documentation page for your projects"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"f668065e69bd":{"id":"f668065e69bd","versionId":"01a87207c868","creatorId":"993c21f1b30f","homeCollectionId":"7f60cf5620c9","title":"Productionising GenAI Agents: Evaluating Tool Selection with Automated Testing","detectedLanguage":"en","latestVersion":"01a87207c868","latestPublishedVersion":"01a87207c868","hasUnpublishedEdits":false,"latestRev":2703,"createdAt":1732084977811,"updatedAt":1732330682411,"acceptedAt":0,"firstPublishedAt":1732301770565,"latestPublishedAt":1732301770565,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"How to create reliable and scalable GenAI Agents for real-world applications","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*y85sJJUcIu1MYjOZTYP-hg.png","filter":"","backgroundSize":"","originalWidth":1626,"originalHeight":1626,"strategy":"resample","height":0,"width":0},"wordCount":4106,"imageCount":7,"readingTime":16.54433962264151,"subtitle":"How to create reliable and scalable GenAI Agents for real-world applications","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":20,"isBookmarked":false,"tags":[{"slug":"agents","name":"Agents","postCount":3903,"metadata":{"postCount":3903,"coverImage":{"id":"1*yxe_RLxn4nSjp3KGMhT5_g.png","originalWidth":2400,"originalHeight":1350,"isFeatured":true}},"type":"Tag"},{"slug":"genai","name":"Genai","postCount":7649,"metadata":{"postCount":7649,"coverImage":{"id":"1*fu8NuRfPmVLZvAWgzD4Ddg.png","originalWidth":1280,"originalHeight":720,"isFeatured":true}},"type":"Tag"},{"slug":"testing","name":"Testing","postCount":42664,"metadata":{"postCount":42664,"coverImage":{"id":"1*JZHO5lsnXJ3BvUdHHbN8xA.png","originalWidth":8418,"originalHeight":2506,"isFeatured":true}},"type":"Tag"},{"slug":"machine-learning","name":"Machine Learning","postCount":353579,"metadata":{"postCount":353579,"coverImage":{"id":"1*8yJrgGPFwHBY8lpIFg7ERQ.png","originalWidth":940,"originalHeight":788,"isFeatured":true}},"type":"Tag"},{"slug":"hands-on-tutorials","name":"Hands On Tutorials","postCount":1856,"metadata":{"postCount":1856,"coverImage":{"id":"1*d2sHQh31o-dMaX4GNyzzvw.png","originalWidth":2412,"originalHeight":997,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://cloud.google.com/transform/101-real-world-generative-ai-use-cases-from-industry-leaders","alts":[],"httpStatus":200},{"url":"https://github.com/heiko-hotz/genai-agent-tool-selection-testing","alts":[],"httpStatus":200},{"url":"https://www.meetup.com/nlp_london/","alts":[{"type":3,"url":"meetup:"},{"type":2,"url":"meetup:"}],"httpStatus":200},{"url":"https://heiko-hotz.medium.com/","alts":[{"type":2,"url":"medium://@heiko-hotz"},{"type":3,"url":"medium://@heiko-hotz"}],"httpStatus":200},{"url":"https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/control-generated-output","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/heikohotz/","alts":[],"httpStatus":999}],"version":"0.3","generatedAt":1732301771821},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":141,"sectionCount":5,"readingList":0,"topics":[{"topicId":"1af65db9c2f8","slug":"artificial-intelligence","createdAt":1487916832419,"deletedAt":0,"image":{"id":"1*A28aHchbaA8zNVXraBq0Ug@2x.jpeg","originalWidth":4866,"originalHeight":3244},"name":"Artificial Intelligence","description":"Born to be bot.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"AI News and Artificial Intelligence Articles — Medium","type":"Topic"},{"topicId":"1eca0103fff3","slug":"machine-learning","createdAt":1534449726145,"deletedAt":0,"image":{"id":"1*gFJS3amhZEg_z39D5EErVg@2x.png","originalWidth":2800,"originalHeight":1750},"name":"Machine Learning","description":"Teaching the learners.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Machine Learning News and Articles — Medium","type":"Topic"},{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"productionising-genai-agents-evaluating-tool-selection-with-automated-testing","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":2,"uniqueSlug":"productionising-genai-agents-evaluating-tool-selection-with-automated-testing-f668065e69bd","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*y85sJJUcIu1MYjOZTYP-hg.png","originalWidth":1626,"originalHeight":1626,"isFeatured":true}},{"name":"7298","type":3,"text":"Productionising GenAI Agents: Evaluating Tool Selection with Automated Testing","markups":[],"alignment":1},{"name":"b772","type":13,"text":"How to create reliable…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"How to create reliable and scalable GenAI Agents for real-world applications"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7f60cf5620c9","isNewsletter":false,"newsletterId":"35d0ce72b63c","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":true,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":true,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":1,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1732113061588,"primaryTopicId":"1eca0103fff3","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"7298","type":3,"text":"Productionising GenAI Agents: Evaluating Tool Selection with Automated Testing","markups":[]},{"name":"b772","type":13,"text":"How to create reliable and scalable GenAI Agents for real-world applications","markups":[]},{"name":"dfa7","type":4,"text":"Image by author — created with Flux 1.1 Pro","markups":[],"layout":1,"metadata":{"id":"1*y85sJJUcIu1MYjOZTYP-hg.png","originalWidth":1626,"originalHeight":1626,"isFeatured":true}},{"name":"3138","type":3,"text":"Introduction","markups":[]},{"name":"c16e","type":1,"text":"Generative AI agents are changing the landscape of how businesses interact with their users and customers. From personalised travel search experiences to virtual assistants that simplify troubleshooting, these intelligent systems help companies deliver faster, smarter, and more engaging interactions. Whether it’s Alaska Airlines reimagining customer bookings or ScottsMiracle-Gro offering tailored…","markups":[]}],"sections":[{"name":"b29e","startIndex":0}]},"isFullContent":false,"subtitle":"How to create reliable and scalable GenAI Agents for real-world applications"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"8488fc175253":{"id":"8488fc175253","versionId":"46ada5d9d1de","creatorId":"d7e5c1ca65b7","homeCollectionId":"7f60cf5620c9","title":"Don’t Be Afraid to Use Machine Learning for Simple Tasks","detectedLanguage":"en","latestVersion":"46ada5d9d1de","latestPublishedVersion":"46ada5d9d1de","hasUnpublishedEdits":false,"latestRev":261,"createdAt":1731922910198,"updatedAt":1732330532268,"acceptedAt":0,"firstPublishedAt":1732301265513,"latestPublishedAt":1732301265513,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"A common misconception across industries","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*fUiIsQ_E-NURa4qN","filter":"","backgroundSize":"","originalWidth":3176,"originalHeight":3176,"strategy":"resample","height":0,"width":0},"wordCount":1329,"imageCount":4,"readingTime":5.715094339622642,"subtitle":"A common misconception across industries","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":13,"isBookmarked":false,"tags":[{"slug":"machine-learning","name":"Machine Learning","postCount":353579,"metadata":{"postCount":353579,"coverImage":{"id":"1*8yJrgGPFwHBY8lpIFg7ERQ.png","originalWidth":940,"originalHeight":788,"isFeatured":true}},"type":"Tag"},{"slug":"programming","name":"Programming","postCount":446511,"metadata":{"postCount":446511,"coverImage":{"id":"1*YUIhHmZyuEn92w2azqpfXg.jpeg","originalWidth":1280,"originalHeight":1280}},"type":"Tag"},{"slug":"data-science","name":"Data Science","postCount":346371,"metadata":{"postCount":346371,"coverImage":{"id":"1*YUIhHmZyuEn92w2azqpfXg.jpeg","originalWidth":1280,"originalHeight":1280}},"type":"Tag"},{"slug":"problem-solving","name":"Problem Solving","postCount":22709,"metadata":{"postCount":22709,"coverImage":{"id":"1*ywzVlrsxOR04Css68H_iqw.png","originalWidth":878,"originalHeight":584,"isFeatured":true,"alt":"A strategy consultant discussing with a robot advisor"}},"type":"Tag"},{"slug":"ai-use-cases","name":"Ai Use Cases","postCount":264,"metadata":{"postCount":264,"coverImage":{"id":"1*Na9Wc3PuYCxWOCSBWc4HtQ.png","originalWidth":1077,"originalHeight":615,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://unsplash.com?utm_source=medium&utm_medium=referral","alts":[],"httpStatus":200},{"url":"https://oscarleo.substack.com/","alts":[],"httpStatus":200},{"url":"https://unsplash.com/@rhox?utm_source=medium&utm_medium=referral","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1732301266389},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":84,"sectionCount":6,"readingList":0,"topics":[{"topicId":"1eca0103fff3","slug":"machine-learning","createdAt":1534449726145,"deletedAt":0,"image":{"id":"1*gFJS3amhZEg_z39D5EErVg@2x.png","originalWidth":2800,"originalHeight":1750},"name":"Machine Learning","description":"Teaching the learners.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Machine Learning News and Articles — Medium","type":"Topic"},{"topicId":"7b2438b07d33","slug":"business","createdAt":1493947240506,"deletedAt":0,"image":{"id":"1*K-IspU8zRzU2GEh1dmJ4VQ@2x.jpeg","originalWidth":4745,"originalHeight":3029},"name":"Business","description":"From Airbnb to Zappos.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Business News and Articles — Medium","type":"Topic"},{"topicId":"96f161863a28","slug":"product-management","createdAt":1545072594068,"deletedAt":0,"image":{"id":"1*FrDceIp-Kg1_gi8QKNYvYA@2x.jpeg","originalWidth":4000,"originalHeight":2666},"name":"Product Management","description":"Bridging the gaps.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Product Management: Articles and News — Medium","type":"Topic"},{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"dont-be-afraid-to-use-machine-learning-for-simple-tasks","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":2,"uniqueSlug":"dont-be-afraid-to-use-machine-learning-for-simple-tasks-8488fc175253","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*fUiIsQ_E-NURa4qN","originalWidth":3176,"originalHeight":3176,"isFeatured":true,"unsplashPhotoId":"Nh4rV0ParHw"}},{"name":"e25e","type":13,"text":"ML Lessons for Managers","markups":[],"alignment":1},{"name":"539f","type":3,"text":"Don’t Be Afraid to Use Machine Learning for Simple Tasks","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"A common misconception across industries"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7f60cf5620c9","isNewsletter":false,"newsletterId":"cdfbb5a8b443","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":true,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":true,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":1,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1732109275677,"primaryTopicId":"1eca0103fff3","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"e25e","type":13,"text":"ML Lessons for Managers","markups":[]},{"name":"539f","type":3,"text":"Don’t Be Afraid to Use Machine Learning for Simple Tasks","markups":[]},{"name":"d092","type":13,"text":"A common misconception across industries","markups":[]},{"name":"876a","type":4,"text":"Photo by Rocco Dipoppa on Unsplash","markups":[{"type":3,"start":9,"end":22,"href":"https://unsplash.com/@rhox?utm_source=medium&utm_medium=referral","title":"","rel":"photo-creator","anchorType":0},{"type":3,"start":26,"end":34,"href":"https://unsplash.com?utm_source=medium&utm_medium=referral","title":"","rel":"photo-source","anchorType":0}],"layout":1,"metadata":{"id":"0*fUiIsQ_E-NURa4qN","originalWidth":3176,"originalHeight":3176,"isFeatured":true,"unsplashPhotoId":"Nh4rV0ParHw"}},{"name":"5049","type":1,"text":"Hi, and welcome to a new series where I share common machine learning mistakes that most businesses make. I aim to provide simple but original lessons based on misconceptions that have survived for years and never seem to disappear.","markups":[]},{"name":"42e8","type":1,"text":"Here’s lesson number 1.","markups":[]},{"name":"2c0c","type":1,"text":"Many professionals view machine learning as advanced…","markups":[{"type":1,"start":0,"end":108}]}],"sections":[{"name":"15e8","startIndex":0},{"name":"bfd8","startIndex":6}]},"isFullContent":false,"subtitle":"A common misconception across industries"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"09386a93ace2":{"id":"09386a93ace2","versionId":"b145740c831b","creatorId":"59f51d8e0df4","homeCollectionId":"7f60cf5620c9","title":"How Spotify Implemented Personalized Audiobook Recommendations","detectedLanguage":"en","latestVersion":"b145740c831b","latestPublishedVersion":"b145740c831b","hasUnpublishedEdits":false,"latestRev":1682,"createdAt":1730181526445,"updatedAt":1732330447942,"acceptedAt":0,"firstPublishedAt":1732301114199,"latestPublishedAt":1732301417658,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Personalized audiobook recommendations using graph neural networks","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*6CFyV68KdPZMO3Cs","filter":"","backgroundSize":"","originalWidth":4160,"originalHeight":4160,"strategy":"resample","height":0,"width":0},"wordCount":1759,"imageCount":5,"readingTime":7.471069182389937,"subtitle":"Personalized audiobook recommendations using graph neural networks","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":3,"isBookmarked":false,"tags":[{"slug":"data-science","name":"Data Science","postCount":346371,"metadata":{"postCount":346371,"coverImage":{"id":"1*YUIhHmZyuEn92w2azqpfXg.jpeg","originalWidth":1280,"originalHeight":1280}},"type":"Tag"},{"slug":"deep-learning","name":"Deep Learning","postCount":100917,"metadata":{"postCount":100917,"coverImage":{"id":"1*iRBV2_7RegJhlUeObOLDxQ.jpeg","originalWidth":626,"originalHeight":418}},"type":"Tag"},{"slug":"recommendation-system","name":"Recommendation System","postCount":3925,"metadata":{"postCount":3925,"coverImage":{"id":"1*dLTQ4F5KOXjo1cxyNLZFvg.jpeg","originalWidth":5001,"originalHeight":3334}},"type":"Tag"},{"slug":"machine-learning","name":"Machine Learning","postCount":353579,"metadata":{"postCount":353579,"coverImage":{"id":"1*8yJrgGPFwHBY8lpIFg7ERQ.png","originalWidth":940,"originalHeight":788,"isFeatured":true}},"type":"Tag"},{"slug":"artificial-intelligence","name":"Artificial Intelligence","postCount":457519,"metadata":{"postCount":457519,"coverImage":{"id":"1*gAn_BSffVBcwCIR6bDgK1g.jpeg"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://unsplash.com?utm_source=medium&utm_medium=referral","alts":[],"httpStatus":200},{"url":"https://unsplash.com/@jukkaaalho?utm_source=medium&utm_medium=referral","alts":[],"httpStatus":200},{"url":"https://research.atspotify.com/2024/05/personalizing-audiobooks-and-podcasts-with-graph-based-models/","alts":[],"httpStatus":200},{"url":"https://dl.acm.org/doi/pdf/10.1145/3589335.3648339","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1732301419794},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":24,"sectionCount":1,"readingList":0,"topics":[{"topicId":"1eca0103fff3","slug":"machine-learning","createdAt":1534449726145,"deletedAt":0,"image":{"id":"1*gFJS3amhZEg_z39D5EErVg@2x.png","originalWidth":2800,"originalHeight":1750},"name":"Machine Learning","description":"Teaching the learners.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Machine Learning News and Articles — Medium","type":"Topic"},{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"how-spotify-implemented-personalized-audiobook-recommendations","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":2,"uniqueSlug":"how-spotify-implemented-personalized-audiobook-recommendations-09386a93ace2","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*6CFyV68KdPZMO3Cs","originalWidth":4160,"originalHeight":4160,"isFeatured":true}},{"name":"94ad","type":3,"text":"How Spotify Implemented Personalized Audiobook Recommendations?","markups":[],"alignment":1},{"name":"b2de","type":13,"text":"Personalized audiobook recommendations…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Personalized audiobook recommendations using graph neural networks"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7f60cf5620c9","isNewsletter":false,"newsletterId":"e7eaca691ad7","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":true,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":true,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":1,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1732044674219,"primaryTopicId":"1eca0103fff3","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"94ad","type":3,"text":"How Spotify Implemented Personalized Audiobook Recommendations?","markups":[]},{"name":"b2de","type":13,"text":"Personalized audiobook recommendations using graph neural networks","markups":[]},{"name":"6939","type":3,"text":"Introduction","markups":[]},{"name":"4d1c","type":1,"text":"Spotify is the most popular music-streaming app in the world. In addition to songs and albums, Spotify has a great collection of podcasts and talk shows. They have recently introduced audiobooks in their app. Like any other offering, Spotify wanted to ensure that its audiobook recommendations catered to user’s preferences…","markups":[]}],"sections":[{"name":"be74","startIndex":0}]},"isFullContent":false,"subtitle":"Personalized audiobook recommendations using graph neural networks"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"a96e6980becd":{"id":"a96e6980becd","versionId":"5439cd9485e2","creatorId":"7ffb62c607ee","homeCollectionId":"7f60cf5620c9","title":"Dynamic, Lazy Dependency Injection in Python","detectedLanguage":"en","latestVersion":"5439cd9485e2","latestPublishedVersion":"5439cd9485e2","hasUnpublishedEdits":false,"latestRev":592,"createdAt":1732031041548,"updatedAt":1732330856404,"acceptedAt":0,"firstPublishedAt":1732300934076,"latestPublishedAt":1732300934076,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Automatic Python dependency injection to make your code more testable, decoupled, uncomplicated and readable","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*Px4-HTPq4UCLCRiL","filter":"","backgroundSize":"","originalWidth":1200,"originalHeight":800,"strategy":"resample","height":0,"width":0},"wordCount":1404,"imageCount":1,"readingTime":5.49811320754717,"subtitle":"Automatic Python dependency injection to make your code more testable, decoupled, uncomplicated and readable","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":5,"isBookmarked":false,"tags":[{"slug":"data-science","name":"Data Science","postCount":346371,"metadata":{"postCount":346371,"coverImage":{"id":"1*YUIhHmZyuEn92w2azqpfXg.jpeg","originalWidth":1280,"originalHeight":1280}},"type":"Tag"},{"slug":"programming","name":"Programming","postCount":446511,"metadata":{"postCount":446511,"coverImage":{"id":"1*YUIhHmZyuEn92w2azqpfXg.jpeg","originalWidth":1280,"originalHeight":1280}},"type":"Tag"},{"slug":"software-engineering","name":"Software Engineering","postCount":115509,"metadata":{"postCount":115509,"coverImage":{"id":"1*Ldt1EqOOy39VAiMKQJYzjQ@2x.jpeg","originalWidth":1280,"originalHeight":1280,"focusPercentX":-1,"focusPercentY":-1,"alt":""}},"type":"Tag"},{"slug":"coding","name":"Coding","postCount":146442,"metadata":{"postCount":146442,"coverImage":{"id":"1*Ldt1EqOOy39VAiMKQJYzjQ@2x.jpeg","originalWidth":1280,"originalHeight":1280,"focusPercentX":-1,"focusPercentY":-1,"alt":""}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":325611,"metadata":{"postCount":325611,"coverImage":{"id":"1*BqVsCBa2mLv1UWQrdhjX5w.png","originalWidth":1500,"originalHeight":750,"isFeatured":true,"alt":"How I Am Using a Lifetime 100% Free Server"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://unsplash.com/?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit","alts":[],"httpStatus":200},{"url":"https://pypi.org/project/fastinject","alts":[],"httpStatus":200},{"url":"https://github.com/mike-huls/fastinject/blob/master/demo/demo8_register_multiple_instances_of_the_same_type.py","alts":[],"httpStatus":200},{"url":"https://github.com/mike-huls/fastinject/blob/master/demo/demo9_eagerly_validate.py","alts":[],"httpStatus":200},{"url":"https://github.com/mike-huls/fastinject/blob/master/demo/demo7_multiple_registries.py","alts":[],"httpStatus":200},{"url":"https://github.com/mike-huls/fastinject/blob/master/demo/demo2_inject_single_service_singleton.py","alts":[],"httpStatus":200},{"url":"https://github.com/mike-huls/fastinject/blob/master/demo/demo6_add_and_get_service_config_imperatively.py","alts":[],"httpStatus":200},{"url":"https://github.com/mike-huls/fastinject/blob/master/demo/demo5_add_and_get_services_from_registry.py","alts":[],"httpStatus":200},{"url":"https://github.com/mike-huls/fastinject/?tab=readme-ov-file#How-to","alts":[],"httpStatus":200},{"url":"https://mikehuls.com","alts":[],"httpStatus":200},{"url":"https://towardsdatascience.com/python-init-is-not-a-constructor-a-deep-dive-in-python-object-creation-9134d971e334","alts":[{"type":3,"url":"medium://p/9134d971e334"},{"type":2,"url":"medium://p/9134d971e334"}],"httpStatus":200},{"url":"https://towardsdatascience.com/cython-for-absolute-beginners-30x-faster-code-in-two-simple-steps-bbb6c10d06ad","alts":[{"type":3,"url":"medium://p/bbb6c10d06ad"},{"type":2,"url":"medium://p/bbb6c10d06ad"}],"httpStatus":200},{"url":"https://towardsdatascience.com/turn-your-python-function-into-a-decorator-with-one-line-of-code-1ebd738f31c0","alts":[{"type":3,"url":"medium://p/1ebd738f31c0"},{"type":2,"url":"medium://p/1ebd738f31c0"}],"httpStatus":200},{"url":"https://towardsdatascience.com/applying-python-multiprocessing-in-2-lines-of-code-3ced521bac8f","alts":[{"type":2,"url":"medium://p/3ced521bac8f"},{"type":3,"url":"medium://p/3ced521bac8f"}],"httpStatus":200},{"url":"https://towardsdatascience.com/args-vs-kwargs-which-is-the-fastest-way-to-call-a-function-in-python-afb2e817120","alts":[{"type":2,"url":"medium://p/afb2e817120"},{"type":3,"url":"medium://p/afb2e817120"}],"httpStatus":200},{"url":"http://mikehuls.medium.com","alts":[{"type":2,"url":"medium://@mikehuls"},{"type":3,"url":"medium://@mikehuls"}],"httpStatus":200},{"url":"https://unsplash.com/@veloradio?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1732300936376},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":24,"sectionCount":11,"readingList":0,"topics":[{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"},{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"dynamic-lazy-dependency-injection-in-python","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":2,"uniqueSlug":"dynamic-lazy-dependency-injection-in-python-a96e6980becd","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*Px4-HTPq4UCLCRiL","originalWidth":1200,"originalHeight":800,"isFeatured":true}},{"name":"45b3","type":3,"text":"Dynamic, Lazy Dependency Injection in Python","markups":[],"alignment":1},{"name":"daf3","type":13,"text":"Automatic Python dependency injection to make your code…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Automatic Python dependency injection to make your code more testable, decoupled, uncomplicated and readable"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7f60cf5620c9","isNewsletter":false,"newsletterId":"17a09b7c5ccf","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":true,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":true,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":1,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1732031614936,"primaryTopicId":"ae5d4995e225","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"45b3","type":3,"text":"Dynamic, Lazy Dependency Injection in Python","markups":[]},{"name":"daf3","type":13,"text":"Automatic Python dependency injection to make your code more testable, decoupled, uncomplicated and readable","markups":[]},{"name":"e4f3","type":4,"text":"Photo by Rapha Wilde / Unsplash","markups":[{"type":3,"start":9,"end":20,"href":"https://unsplash.com/@veloradio?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit","title":"","rel":"","anchorType":0},{"type":3,"start":23,"end":31,"href":"https://unsplash.com/?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit","title":"","rel":"","anchorType":0}],"layout":1,"metadata":{"id":"0*Px4-HTPq4UCLCRiL","originalWidth":1200,"originalHeight":800,"isFeatured":true}},{"name":"85e8","type":1,"text":"Dependency Injection (DI) solves many problems by improving testability, decoupling, maintainability and readability. However, managing dependencies can sometimes introduce new problems. When do we initialize them? How do we initialize? Can they be reused effectively?","markups":[]},{"name":"e4eb","type":1,"text":"In order to take DI to the next level I’ve created FastInject: a Python package…","markups":[{"type":3,"start":51,"end":61,"href":"https://pypi.org/project/fastinject","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"9366","startIndex":0}]},"isFullContent":false,"subtitle":"Automatic Python dependency injection to make your code more testable, decoupled, uncomplicated and readable"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"5b0789fe27aa":{"id":"5b0789fe27aa","versionId":"eb8bb286e870","creatorId":"bdc4072cbfdc","homeCollectionId":"7f60cf5620c9","title":"LLM Routing — Intuitively and Exhaustively Explained","detectedLanguage":"en","latestVersion":"eb8bb286e870","latestPublishedVersion":"eb8bb286e870","hasUnpublishedEdits":false,"latestRev":7716,"createdAt":1724371437982,"updatedAt":1732330836439,"acceptedAt":0,"firstPublishedAt":1732297130694,"latestPublishedAt":1732297130694,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Dynamically Choosing the Right LLM","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*Aja1M1MtLsRmsFCTdPeoJg.png","filter":"","backgroundSize":"","originalWidth":951,"originalHeight":828,"strategy":"resample","height":0,"width":0},"wordCount":11636,"imageCount":82,"readingTime":48.759433962264154,"subtitle":"Dynamically Choosing the Right LLM","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":58,"isBookmarked":false,"tags":[{"slug":"artificial-intelligence","name":"Artificial Intelligence","postCount":457519,"metadata":{"postCount":457519,"coverImage":{"id":"1*gAn_BSffVBcwCIR6bDgK1g.jpeg"}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":325611,"metadata":{"postCount":325611,"coverImage":{"id":"1*BqVsCBa2mLv1UWQrdhjX5w.png","originalWidth":1500,"originalHeight":750,"isFeatured":true,"alt":"How I Am Using a Lifetime 100% Free Server"}},"type":"Tag"},{"slug":"machine-learning","name":"Machine Learning","postCount":353579,"metadata":{"postCount":353579,"coverImage":{"id":"1*8yJrgGPFwHBY8lpIFg7ERQ.png","originalWidth":940,"originalHeight":788,"isFeatured":true}},"type":"Tag"},{"slug":"deep-dives","name":"Deep Dives","postCount":2290,"metadata":{"postCount":2290,"coverImage":{"id":"1*Aja1M1MtLsRmsFCTdPeoJg.png","originalWidth":951,"originalHeight":828,"isFeatured":true}},"type":"Tag"},{"slug":"llm","name":"Llm","postCount":27501,"metadata":{"postCount":27501,"coverImage":{"id":"1*8yJrgGPFwHBY8lpIFg7ERQ.png","originalWidth":940,"originalHeight":788,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":6,"links":{"entries":[{"url":"https://medium.com/towards-data-science/retrieval-augmented-generation-intuitively-and-exhaustively-explain-6a39d6fe6fc9","alts":[],"httpStatus":429},{"url":"https://medium.com/towards-data-science/bert-intuitively-and-exhaustively-explained-48a24ecc1c8a","alts":[],"httpStatus":429},{"url":"https://towardsdatascience.com/bert-intuitively-and-exhaustively-explained-48a24ecc1c8a","alts":[],"httpStatus":429},{"url":"https://towardsdatascience.com/lora-intuitively-and-exhaustively-explained-e944a6bff46b","alts":[],"httpStatus":429},{"url":"https://medium.com/towards-data-science/clip-intuitively-and-exhaustively-explained-1d02c07dbf40","alts":[],"httpStatus":429},{"url":"https://towardsdatascience.com/clip-intuitively-and-exhaustively-explained-1d02c07dbf40","alts":[],"httpStatus":429},{"url":"https://lmsys.org/blog/2023-07-20-dataset/","alts":[],"httpStatus":200},{"url":"https://arxiv.org/pdf/2305.05176","alts":[],"httpStatus":200},{"url":"https://arxiv.org/pdf/2310.12963","alts":[],"httpStatus":200},{"url":"https://arxiv.org/pdf/2406.18665","alts":[],"httpStatus":200},{"url":"https://www-cdn.anthropic.com/de8ba9b01c9ab7cbabf5c33b80b7bbc618857627/Model_Card_Claude_3.pdf","alts":[],"httpStatus":200},{"url":"https://huggingface.co/datasets/berkeley-nest/Nectar","alts":[],"httpStatus":200},{"url":"https://iaee.substack.com/","alts":[],"httpStatus":200},{"url":"https://huggingface.co/datasets/lmsys/lmsys-arena-human-preference-55k","alts":[],"httpStatus":200},{"url":"https://huggingface.co/datasets/teknium/OpenHermes-2.5","alts":[],"httpStatus":200},{"url":"https://paperswithcode.com/dataset/mmlu","alts":[],"httpStatus":200},{"url":"https://github.com/DanielWarfield1/MLWritingAndResearch/blob/main/RouteLLM_BT.ipynb","alts":[],"httpStatus":200},{"url":"https://lmarena.ai/","alts":[],"httpStatus":403},{"url":"https://unify.ai/","alts":[],"httpStatus":200},{"url":"https://huggingface.co/models?pipeline_tag=text-generation","alts":[],"httpStatus":200},{"url":"https://github.com/DanielWarfield1/MLWritingAndResearch/blob/main/AutoMix.ipynb","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1732297131698},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":389,"sectionCount":4,"readingList":0,"topics":[{"topicId":"1af65db9c2f8","slug":"artificial-intelligence","createdAt":1487916832419,"deletedAt":0,"image":{"id":"1*A28aHchbaA8zNVXraBq0Ug@2x.jpeg","originalWidth":4866,"originalHeight":3244},"name":"Artificial Intelligence","description":"Born to be bot.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"AI News and Artificial Intelligence Articles — Medium","type":"Topic"},{"topicId":"1eca0103fff3","slug":"machine-learning","createdAt":1534449726145,"deletedAt":0,"image":{"id":"1*gFJS3amhZEg_z39D5EErVg@2x.png","originalWidth":2800,"originalHeight":1750},"name":"Machine Learning","description":"Teaching the learners.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Machine Learning News and Articles — Medium","type":"Topic"},{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"llm-routing-intuitively-and-exhaustively-explained","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":2,"uniqueSlug":"llm-routing-intuitively-and-exhaustively-explained-5b0789fe27aa","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*Aja1M1MtLsRmsFCTdPeoJg.png","originalWidth":951,"originalHeight":828,"isFeatured":true}},{"name":"6542","type":3,"text":"LLM Routing — Intuitively and Exhaustively Explained","markups":[],"alignment":1},{"name":"bf20","type":13,"text":"Dynamically Choosing the Right Language Model on…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Dynamically Choosing the Right LLM"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7f60cf5620c9","isNewsletter":false,"newsletterId":"0043454f138d","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":true,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":true,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":1,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1731982812471,"primaryTopicId":"1eca0103fff3","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"6542","type":3,"text":"LLM Routing — Intuitively and Exhaustively Explained","markups":[]},{"name":"bf20","type":13,"text":"Dynamically Choosing the Right Language Model on Every Query","markups":[]},{"name":"a12b","type":4,"text":"“Harmony” by Daniel Warfield using Midjourney. All images by the author unless otherwise specified. Article…","markups":[{"type":3,"start":137,"end":175,"href":"https://iaee.substack.com/","title":"","rel":"noopener ugc nofollow noopener","anchorType":0}],"layout":1,"metadata":{"id":"1*Aja1M1MtLsRmsFCTdPeoJg.png","originalWidth":951,"originalHeight":828,"isFeatured":true}},{"name":"4bc3","type":1,"text":"In this article we’ll discuss “LLM routing”, an advanced inferencing technique which can automatically choose the right language model, out of a selection of language models, for a given prompt; improving the performance, speed, and cost in LLM-powered systems.","markups":[]},{"name":"ab25","type":1,"text":"We’ll explore four approaches to LLM routing: three from academia and…","markups":[]}],"sections":[{"name":"3370","startIndex":0}]},"isFullContent":false,"subtitle":"Dynamically Choosing the Right LLM"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"dc4ec62ec8dd":{"id":"dc4ec62ec8dd","versionId":"33ff76e04ac1","creatorId":"b7c226dc9b8e","homeCollectionId":"7f60cf5620c9","title":"Another Hike Up Everest","detectedLanguage":"en","latestVersion":"33ff76e04ac1","latestPublishedVersion":"33ff76e04ac1","hasUnpublishedEdits":false,"latestRev":1240,"createdAt":1732110105739,"updatedAt":1732366638218,"acceptedAt":0,"firstPublishedAt":1732296924688,"latestPublishedAt":1732296924688,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"How to make progress on hard problems in AI","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*p_DcoiYTwMfOuDw_.jpg","filter":"","backgroundSize":"","originalWidth":2560,"originalHeight":1920,"strategy":"resample","height":0,"width":0},"wordCount":1828,"imageCount":4,"readingTime":7.59811320754717,"subtitle":"How to make progress on hard problems in AI","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":12,"isBookmarked":false,"tags":[{"slug":"ai","name":"AI","postCount":428141,"metadata":{"postCount":428141,"coverImage":{"id":"0*Zs_B6zDXGdgkK2jv","originalWidth":5120,"originalHeight":2880,"isFeatured":true,"unsplashPhotoId":"_nWaeTF6qo0"}},"type":"Tag"},{"slug":"problem-solving","name":"Problem Solving","postCount":22709,"metadata":{"postCount":22709,"coverImage":{"id":"1*ywzVlrsxOR04Css68H_iqw.png","originalWidth":878,"originalHeight":584,"isFeatured":true,"alt":"A strategy consultant discussing with a robot advisor"}},"type":"Tag"},{"slug":"scalability","name":"Scalability","postCount":66195,"metadata":{"postCount":66195,"coverImage":{"id":"0*p_DcoiYTwMfOuDw_.jpg","originalWidth":2560,"originalHeight":1920,"isFeatured":true}},"type":"Tag"},{"slug":"human-in-the-loop","name":"Human In The Loop","postCount":217,"metadata":{"postCount":217,"coverImage":{"id":"0*p_DcoiYTwMfOuDw_.jpg","originalWidth":2560,"originalHeight":1920,"isFeatured":true}},"type":"Tag"},{"slug":"editors-pick","name":"Editors Pick","postCount":4795,"metadata":{"postCount":4795,"coverImage":{"id":"0*x2yONxpFFkJFk6b8","originalWidth":6000,"originalHeight":4000,"isFeatured":true,"unsplashPhotoId":"7iq4VEHLNGU"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":5,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/Gartner_hype_cycle","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Mount_Everest","alts":[],"httpStatus":200},{"url":"https://python.langchain.com/docs/how_to/#output-parsers","alts":[],"httpStatus":200},{"url":"https://www.investopedia.com/terms/b/big-hairy-audacious-goal-bhag.asp","alts":[],"httpStatus":200},{"url":"https://docs.pydantic.dev/latest/","alts":[],"httpStatus":200},{"url":"https://commons.wikimedia.org/wiki/File:Inside_Khumbu-Icefall.jpg","alts":[],"httpStatus":200},{"url":"https://commons.m.wikimedia.org/wiki/File:1963_American_Everest_expedition.svg","alts":[],"httpStatus":200},{"url":"https://www.nytimes.com/2018/09/24/business/walmart-blockchain-lettuce.html","alts":[{"type":3,"url":"nyt://article/2155bc6a-2e22-5f11-8dde-acd4cdaf9caa"},{"type":2,"url":"nytimes://www.nytimes.com/2018/09/24/business/walmart-blockchain-lettuce.html"}],"httpStatus":200},{"url":"https://www.nytimes.com/2012/02/12/sunday-review/big-datas-impact-in-the-world.html","alts":[{"type":3,"url":"nyt://article/358bf54c-e4ba-5a4e-b974-3341517805b1"},{"type":2,"url":"nytimes://www.nytimes.com/2012/02/12/sunday-review/big-datas-impact-in-the-world.html"}],"httpStatus":200}],"version":"0.3","generatedAt":1732296925205},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":174,"sectionCount":1,"readingList":0,"topics":[{"topicId":"1af65db9c2f8","slug":"artificial-intelligence","createdAt":1487916832419,"deletedAt":0,"image":{"id":"1*A28aHchbaA8zNVXraBq0Ug@2x.jpeg","originalWidth":4866,"originalHeight":3244},"name":"Artificial Intelligence","description":"Born to be bot.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"AI News and Artificial Intelligence Articles — Medium","type":"Topic"},{"topicId":"f862bfc84e38","slug":"technology","createdAt":1487918016768,"deletedAt":0,"image":{"id":"1*XxQLrxqHUlIHg5j-eIQrPQ@2x.png","originalWidth":640,"originalHeight":384},"name":"Technology","description":"The download.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Technology News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"another-hike-up-everest","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"another-hike-up-everest-dc4ec62ec8dd","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*p_DcoiYTwMfOuDw_.jpg","originalWidth":2560,"originalHeight":1920,"isFeatured":true}},{"name":"168f","type":2,"text":"Another Hike Up Everest","markups":[],"alignment":1},{"name":"29ac","type":13,"text":"How to make progress on hard problems in AI","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"How to make progress on hard problems in AI"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7f60cf5620c9","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"1af65db9c2f8","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"168f","type":2,"text":"Another Hike Up Everest","markups":[]},{"name":"29ac","type":13,"text":"How to make progress on hard problems in AI","markups":[]},{"name":"2bb9","type":4,"text":"Mount Everest, known locally as Sagarmatha or Chomolangma (Wikipedia)","markups":[{"type":3,"start":59,"end":68,"href":"https://en.wikipedia.org/wiki/Mount_Everest","title":"","rel":"noopener","anchorType":0},{"type":1,"start":32,"end":42},{"type":1,"start":46,"end":58}],"layout":1,"metadata":{"id":"0*p_DcoiYTwMfOuDw_.jpg","originalWidth":2560,"originalHeight":1920,"isFeatured":true}},{"name":"ebd4","type":1,"text":"New technology is born, matured, and eventually replaced. AI is no different and will follow this curve. Many news articles are already proclaiming that Generative AI (Gen AI) has arrived at the Trough of Disillusionment: the point in adoption where the early adopters are realizing the promises of the new…","markups":[]}],"sections":[{"name":"3cc9","startIndex":0,"textLayout":1,"imageLayout":1,"backgroundColor":1,"type":0,"videoLayout":1}]},"isFullContent":false,"subtitle":"How to make progress on hard problems in AI"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"89fb4f64baaa":{"id":"89fb4f64baaa","versionId":"d77a78d222c9","creatorId":"8572724a5d2c","homeCollectionId":"7f60cf5620c9","title":"Are You Sure You Want to Become a Data Science Manager?","detectedLanguage":"en","latestVersion":"d77a78d222c9","latestPublishedVersion":"d77a78d222c9","hasUnpublishedEdits":false,"latestRev":386,"createdAt":1732179015767,"updatedAt":1732330632178,"acceptedAt":0,"firstPublishedAt":1732284134134,"latestPublishedAt":1732284134134,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Don’t rush into the fancy title until you have read this.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*NSCdUN2Idn0mARmw.jpeg","filter":"","backgroundSize":"","originalWidth":1456,"originalHeight":1091,"strategy":"resample","height":0,"width":0},"wordCount":3549,"imageCount":7,"readingTime":14.44245283018868,"subtitle":"Don’t rush into the fancy title until you have read this.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":12,"isBookmarked":false,"tags":[{"slug":"data-science","name":"Data Science","postCount":346371,"metadata":{"postCount":346371,"coverImage":{"id":"1*YUIhHmZyuEn92w2azqpfXg.jpeg","originalWidth":1280,"originalHeight":1280}},"type":"Tag"},{"slug":"management","name":"Management","postCount":94084,"metadata":{"postCount":94084,"coverImage":{"id":"1*BygtbwxZTRaBfcZGzcSOLw@2x.jpeg","originalWidth":2316,"originalHeight":3088,"isFeatured":true}},"type":"Tag"},{"slug":"leadership","name":"Leadership","postCount":293172,"metadata":{"postCount":293172,"coverImage":{"id":"1*x3eOBvKInrpkalYofhODIQ.jpeg"}},"type":"Tag"},{"slug":"editors-pick","name":"Editors Pick","postCount":4795,"metadata":{"postCount":4795,"coverImage":{"id":"0*x2yONxpFFkJFk6b8","originalWidth":6000,"originalHeight":4000,"isFeatured":true,"unsplashPhotoId":"7iq4VEHLNGU"}},"type":"Tag"},{"slug":"data-science-careers","name":"Data Science Careers","postCount":1014,"metadata":{"postCount":1014,"coverImage":{"id":"0*NSCdUN2Idn0mARmw.jpeg","originalWidth":1456,"originalHeight":1091,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"www.linkedin.com/in/joseparrenogarcia","alts":[],"httpStatus":0},{"url":"https://unsplash.com/photos/a-group-of-people-working-in-a-factory-7YUvAUbfSV0?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash","alts":[],"httpStatus":200},{"url":"https://unsplash.com/@benjaminelliott?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash","alts":[],"httpStatus":200},{"url":"https://unsplash.com/photos/green-and-white-maze-illustration-vc9u77c0LO4?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash","alts":[],"httpStatus":200},{"url":"https://unsplash.com/@museumsvictoria?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash","alts":[],"httpStatus":200},{"url":"https://open.substack.com/pub/joseparreogarcia/p/are-you-sure-you-want-to-become-a?r=48950f&utm_campaign=post&utm_medium=web&showWelcomeOnShare=true","alts":[],"httpStatus":200},{"url":"https://unsplash.com/photos/green-grass-field-under-white-sky-during-daytime-_J8IRsA4hG0?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash","alts":[],"httpStatus":200},{"url":"https://joseparreogarcia.substack.com/?r=48950f&utm_campaign=pub-share-checklist","alts":[],"httpStatus":200},{"url":"https://medium.com/@joparga3/subscribe","alts":[],"httpStatus":200},{"url":"https://medium.com/@joparga3/all-my-written-articles-in-one-place-24ccd6689f72","alts":[{"type":3,"url":"medium://p/24ccd6689f72"},{"type":2,"url":"medium://p/24ccd6689f72"}],"httpStatus":200},{"url":"https://medium.com/towards-data-science/my-weekly-calendar-as-a-senior-data-science-manager-d57112ae372d","alts":[{"type":3,"url":"medium://p/d57112ae372d"},{"type":2,"url":"medium://p/d57112ae372d"}],"httpStatus":200},{"url":"https://unsplash.com/@rowanfreeman?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1732284136669},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":109,"sectionCount":2,"readingList":0,"topics":[{"topicId":"6846c2fd686b","slug":"leadership","createdAt":1487665048760,"deletedAt":0,"image":{"id":"1*vzWzeHIePfOxPdexHmrjVg@2x.jpeg","originalWidth":6000,"originalHeight":4000},"name":"Leadership","description":"Go forth and manage.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Leadership Articles, News and Stories — Medium","type":"Topic"},{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"},{"topicId":"af49579e220a","slug":"work","createdAt":1487918186996,"deletedAt":0,"image":{"id":"1*knbAt5qCQCelKx0BDkzZpQ@2x.jpeg","originalWidth":5018,"originalHeight":3049},"name":"Work","description":"The meaning behind the meetings.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Work Life: Articles and News — Medium","type":"Topic"}]},"coverless":true,"slug":"are-you-sure-you-want-to-become-a-data-science-manager","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":2,"uniqueSlug":"are-you-sure-you-want-to-become-a-data-science-manager-89fb4f64baaa","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*NSCdUN2Idn0mARmw.jpeg","originalWidth":1456,"originalHeight":1091,"isFeatured":true}},{"name":"4c6e","type":3,"text":"Are You Sure You Want to Become a Data Science Manager?","markups":[],"alignment":1},{"name":"4175","type":13,"text":"Don’t rush into the fancy title until you have…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Don’t rush into the fancy title until you have read this."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"7f60cf5620c9","isNewsletter":false,"newsletterId":"dcc864473038","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":true,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":true,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":1,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1732179613448,"primaryTopicId":"ae5d4995e225","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"4c6e","type":3,"text":"Are You Sure You Want to Become a Data Science Manager?","markups":[]},{"name":"4175","type":13,"text":"Don’t rush into the fancy title until you have read this.","markups":[]},{"name":"7831","type":4,"text":"Photo by Benjamin Elliott on Unsplash","markups":[{"type":3,"start":9,"end":25,"href":"https://unsplash.com/@benjaminelliott?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash","title":"","rel":"nofollow ugc noopener","anchorType":0},{"type":3,"start":29,"end":37,"href":"https://unsplash.com/photos/green-and-white-maze-illustration-vc9u77c0LO4?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash","title":"","rel":"nofollow ugc noopener","anchorType":0}],"layout":1,"metadata":{"id":"0*NSCdUN2Idn0mARmw.jpeg","originalWidth":1456,"originalHeight":1091,"isFeatured":true}},{"name":"6868","type":1,"text":"Picture this. You have just delivered a killer project, your team’s buzzing, and then — bam! You are asked, ‘Have you ever thought about leading the team?’ Sounds tempting, right? But hold on — do you really know what you’re signing up for?","markups":[{"type":1,"start":0,"end":13},{"type":1,"start":194,"end":240},{"type":2,"start":108,"end":155},{"type":2,"start":194,"end":240}]},{"name":"b6f2","type":1,"text":"As a data science manager, I have…","markups":[{"type":1,"start":337,"end":406}]}],"sections":[{"name":"0338","startIndex":0}]},"isFullContent":false,"subtitle":"Don’t rush into the fancy title until you have read this."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"}}},"paging":{"path":"/_/api/collections/7f60cf5620c9/stream","next":{"to":"1732284134134","ignoredIds":[],"page":3}},"collection":{"id":"7f60cf5620c9","name":"Towards Data Science","slug":"towards-data-science","tags":["DATA SCIENCE","MACHINE LEARNING","ARTIFICIAL INTELLIGENCE","DATA ENGINEERING","DATA"],"creatorId":"9c70285657bb","description":"Your home for data science. A publication sharing concepts, ideas and codes.","shortDescription":"Your home for data science.","image":{"imageId":"1*CJe3891yB1A1mzMdqemkdg.jpeg","filter":"","backgroundSize":"","originalWidth":2861,"originalHeight":2861,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":767037,"activeAt":1732376081740},"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*cFFKn8rFH4ZndmaYeAs6iQ.png","filter":"","backgroundSize":"","originalWidth":2381,"originalHeight":743,"strategy":"resample","height":0,"width":0},"twitterUsername":"TDataScience","collectionMastheadId":"8b6aceffde6","domain":"towardsdatascience.com","sections":[{"type":2,"collectionHeaderMetadata":{"backgroundImage":{},"logoImage":{"id":"1*0Ih6WUzKYC41g-cmVD4n7w@2x.png","originalWidth":3523,"originalHeight":1031,"alt":"Towards Data Science"},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":2,"postIds":["54507944e731","3fbedac654ad"]}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":9,"postIds":["2aa46b262150","60e26b64380e","f668065e69bd","8488fc175253","09386a93ace2","a96e6980becd","5b0789fe27aa","dc4ec62ec8dd","89fb4f64baaa"],"sectionHeader":"Latest"}},{"type":3,"promoMetadata":{"sectionHeader":"","promoId":"f9f3fdba6ebf"}},{"type":1,"postListMetadata":{"source":4,"layout":4,"number":6,"postIds":[],"tagSlug":"Editors Pick","tagName":"Editors Pick","sectionHeader":"Editors' Picks"}},{"type":1,"postListMetadata":{"source":4,"layout":4,"number":2,"postIds":[],"tagSlug":"Tds Features","tagName":"Tds Features","sectionHeader":"Features"}},{"type":3,"promoMetadata":{"sectionHeader":"","promoId":"efaedc412a41"}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["60bb69a22759","c57724e9c461","69019493b259"],"sectionHeader":"Trending articles"}},{"type":1,"postListMetadata":{"source":3,"layout":4,"number":3,"postIds":["182a5ef6588c","e24b50e1d292","68b2303cc9c5"],"sectionHeader":"Popular from our archive"}},{"type":1,"postListMetadata":{"source":4,"layout":4,"number":6,"postIds":[],"tagSlug":"Deep Dives","tagName":"Deep Dives","sectionHeader":"Deep Dives"}},{"type":1,"postListMetadata":{"source":3,"layout":5,"number":3,"postIds":["d691af11cc2f","c2c8e712c971","3bf37f75a345"],"sectionHeader":"About"}},{"type":1,"postListMetadata":{"source":1,"layout":5,"number":16,"postIds":[],"sectionHeader":"Latest"}}],"tintColor":"#FF355876","lightText":true,"favicon":{"imageId":"1*VzTUkfeGymHP4Bvav-T-lA.png","filter":"","backgroundSize":"","originalWidth":207,"originalHeight":206,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF668AAA","point":0},{"color":"#FF61809D","point":0.1},{"color":"#FF5A7690","point":0.2},{"color":"#FF546C83","point":0.3},{"color":"#FF4D6275","point":0.4},{"color":"#FF455768","point":0.5},{"color":"#FF3D4C5A","point":0.6},{"color":"#FF34414C","point":0.7},{"color":"#FF2B353E","point":0.8},{"color":"#FF21282F","point":0.9},{"color":"#FF161B1F","point":1}],"backgroundColor":"#FFFFFFFF"},"tintBackgroundSpectrum":{"colorPoints":[{"color":"#FF355876","point":0},{"color":"#FF4D6C88","point":0.1},{"color":"#FF637F99","point":0.2},{"color":"#FF7791A8","point":0.3},{"color":"#FF8CA2B7","point":0.4},{"color":"#FF9FB3C6","point":0.5},{"color":"#FFB2C3D4","point":0.6},{"color":"#FFC5D2E1","point":0.7},{"color":"#FFD7E2EE","point":0.8},{"color":"#FFE9F1FA","point":0.9},{"color":"#FFFBFFFF","point":1}],"backgroundColor":"#FF355876"},"highlightSpectrum":{"colorPoints":[{"color":"#FFEDF4FC","point":0},{"color":"#FFE9F2FD","point":0.1},{"color":"#FFE6F1FD","point":0.2},{"color":"#FFE2EFFD","point":0.3},{"color":"#FFDFEEFD","point":0.4},{"color":"#FFDBECFE","point":0.5},{"color":"#FFD7EBFE","point":0.6},{"color":"#FFD4E9FE","point":0.7},{"color":"#FFD0E7FF","point":0.8},{"color":"#FFCCE6FF","point":0.9},{"color":"#FFC8E4FF","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FF7EA2C3","point":0},{"color":"#FF8AAAC9","point":0.1},{"color":"#FF95B2CE","point":0.2},{"color":"#FFA0BAD3","point":0.3},{"color":"#FFABC2D9","point":0.4},{"color":"#FFB6CADE","point":0.5},{"color":"#FFC1D2E3","point":0.6},{"color":"#FFCBD9E8","point":0.7},{"color":"#FFD6E1EC","point":0.8},{"color":"#FFE0E8F1","point":0.9},{"color":"#FFEAEFF6","point":1}],"backgroundColor":"#FF000000"}},"navItems":[{"type":8,"title":"Latest","url":"https://towardsdatascience.com/latest"},{"type":4,"title":"Editors' Picks","url":"https://towardsdatascience.com/editors-picks/home","topicId":"20b4f3e27fbe","source":"topicId"},{"type":4,"title":"Deep Dives","url":"https://towardsdatascience.com/deep-dives/home","topicId":"8ad314313527","source":"topicId"},{"type":4,"title":"About","url":"https://towardsdatascience.com/about-us/home","topicId":"e4bc46bb3ab0","source":"topicId"},{"type":2,"title":"Contribute","postId":"96667b06af5","url":"https://towardsdatascience.com/questions-96667b06af5","source":"postId"},{"type":3,"title":"Newsletter","url":"https://medium.com/towards-data-science/newsletter"}],"colorBehavior":2,"collectionFeatures":[29,30,27,25],"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"backgroundImage":{},"logoImage":{"id":"1*0Ih6WUzKYC41g-cmVD4n7w@2x.png","originalWidth":3523,"originalHeight":1031,"alt":"Towards Data Science"},"alignment":2,"layout":5},"paidForDomainAt":1509037374118,"subscriberCount":767037,"tagline":"A Medium publication sharing concepts, ideas and codes.","isOptedIntoAurora":false,"newsletterV3":{"newsletterV3Id":"d6fe9076899","type":1,"name":"The Variable","description":"Every Thursday, the Variable delivers the very best of Towards Data Science: from hands-on tutorials and cutting-edge research to the latest on data science and machine learning tools.","collectionId":"7f60cf5620c9","newsletterSlug":"the-variable","isSubscribed":false,"showPromo":true,"avatarImageId":"","creatorId":"895063a310f4","showNewsletterPostsInCollectionHome":true,"exportableSubscribersCount":52134,"subscribersCount":132261,"promoHeadline":"","promoBody":"","replyToEmail":""},"isCurationAllowedByDefault":false,"polarisCoverImage":{"imageId":"1*CJe3891yB1A1mzMdqemkdg.jpeg","filter":"","backgroundSize":"","originalWidth":2861,"originalHeight":2861,"strategy":"resample","height":0,"width":0},"ptsQualifiedAt":1616092952992,"type":"Collection"},"header":{"backgroundImage":{},"logoImage":{"id":"1*0Ih6WUzKYC41g-cmVD4n7w@2x.png","originalWidth":3523,"originalHeight":1031,"alt":"Towards Data Science"},"alignment":2,"layout":5},"streamItems":[{"createdAt":1732400986522,"randomId":"2812212d4170","section":{"items":[{"post":{"postId":"54507944e731"},"itemType":"post"},{"post":{"postId":"3fbedac654ad"},"itemType":"post"}],"layout":4},"itemType":"section","type":"StreamItem"},{"createdAt":1732400986522,"randomId":"f035e9da08ed","section":{"items":[{"post":{"postId":"2aa46b262150"},"itemType":"post"},{"post":{"postId":"60e26b64380e"},"itemType":"post"},{"post":{"postId":"f668065e69bd"},"itemType":"post"},{"post":{"postId":"8488fc175253"},"itemType":"post"},{"post":{"postId":"09386a93ace2"},"itemType":"post"},{"post":{"postId":"a96e6980becd"},"itemType":"post"},{"post":{"postId":"5b0789fe27aa"},"itemType":"post"},{"post":{"postId":"dc4ec62ec8dd"},"itemType":"post"},{"post":{"postId":"89fb4f64baaa"},"itemType":"post"}],"layout":4,"heading":{"fallbackTitle":"Latest","headingBasic":{"title":"Latest"},"headingType":"headingBasic"}},"itemType":"section","type":"StreamItem"}]}) // ]]></script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8e74a3cdc8c69fad',t:'MTczMjQwMTQwNS4wMDAwMDA='};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