CINXE.COM

ITHAKA Tech - Medium

<!DOCTYPE html><html xmlns:cc="http://creativecommons.org/ns#"><head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# medium-com: http://ogp.me/ns/fb/medium-com#"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=contain"><title>ITHAKA Tech - Medium</title><link rel="canonical" href="https://medium.com/ithaka-tech"><link id="feedLink" rel="alternate" type="application/rss+xml" title="RSS" href="https://medium.com/feed/ithaka-tech"><meta name="robots" content="index,follow"><meta name="title" content="ITHAKA Tech - Medium"><meta name="referrer" content="unsafe-url"><meta name="description" content="How we create services and tools to inspire and support learning today and for the future."><meta name="keywords" content="TECHNOLOGY, SOFTWARE DEVELOPMENT, INNOVATION, PRODUCT DEVELOPMENT, WOMEN IN TECH"><meta name="theme-color" content="#000000"><meta property="og:title" content="ITHAKA Tech – Medium"><meta property="twitter:title" content="ITHAKA Tech – Medium"><meta property="og:url" content="https://medium.com/ithaka-tech"><meta property="og:image" content="https://cdn-images-1.medium.com/max/1200/1*JUL5st-N0tn2jw8as1MBcw.png"><meta property="fb:app_id" content="542599432471018"><meta property="og:description" content="How we create services and tools to inspire and support learning today and for the future."><meta name="twitter:description" content="How we create services and tools to inspire and support learning today and for the future."><meta name="twitter:image:src" content="https://cdn-images-1.medium.com/max/1200/1*JUL5st-N0tn2jw8as1MBcw.png"><meta property="og:type" content="medium-com:collection"><meta name="twitter:card" content="summary_large_image"><meta property="medium-com:creator" content="https://medium.com/@heidi.mcgregor"><meta name="twitter:site" content="@Medium"><meta property="og:site_name" content="Medium"><meta name="twitter:app:name:iphone" content="Medium"><meta name="twitter:app:id:iphone" content="828256236"><meta name="twitter:app:url:iphone" content="medium://ithaka-tech"><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://ithaka-tech"><meta property="al:android:url" content="medium://ithaka-tech"><meta property="al:web:url" content="https://medium.com/ithaka-tech"><link rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml" /><link rel="alternate" href="android-app://com.medium.reader/https/medium.com/ithaka-tech" /><script type="application/ld+json">{"@context": "http://schema.org", "@graph": [{"@type": "WebSite", "url": "https:\/\/medium.com", "name": "Medium", "alternateName": "Medium is a community of readers and writers offering unique perspectives on ideas large and small."},{"@type": "Organization", "url": "https:\/\/medium.com\/ithaka-tech", "name": "ITHAKA Tech"}]}</script><link rel="stylesheet" href="https://cdn-static-1.medium.com/_/fp/css/main-branding-base.ouwh4uMviI3QQWIjxRhkHA.12.css"><script>!function(n,e){var t,o,i,c=[],f={passive:!0,capture:!0},r=new Date,a="pointerup",u="pointercancel";function p(n,c){t||(t=c,o=n,i=new Date,w(e),s())}function s(){o>=0&&o<i-r&&(c.forEach(function(n){n(o,t)}),c=[])}function l(t){if(t.cancelable){var o=(t.timeStamp>1e12?new Date:performance.now())-t.timeStamp;"pointerdown"==t.type?function(t,o){function i(){p(t,o),r()}function c(){r()}function r(){e(a,i,f),e(u,c,f)}n(a,i,f),n(u,c,f)}(o,t):p(o,t)}}function w(n){["click","mousedown","keydown","touchstart","pointerdown"].forEach(function(e){n(e,l,f)})}w(n),self.perfMetrics=self.perfMetrics||{},self.perfMetrics.onFirstInputDelay=function(n){c.push(n),s()}}(addEventListener,removeEventListener);</script><script>document.domain = document.domain;</script><script>if (window.top !== window.self) window.location = 'about:blank';var OB_startTime = new Date().getTime(); var OB_loadErrors = []; function _onerror(e) { OB_loadErrors.push(e) }; if (document.addEventListener) document.addEventListener("error", _onerror, true); else if (document.attachEvent) document.attachEvent("onerror", _onerror); function _asyncScript(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("script"); s.type = "text/javascript"; s.async = true; s.src = u; f.parentNode.insertBefore(s, f);}function _asyncStyles(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("link"); s.rel = "stylesheet"; s.href = u; f.parentNode.insertBefore(s, f); return s}(new Image()).src = "/_/stat?event=pixel.load&origin=" + encodeURIComponent(location.origin);</script><script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga("create", "G-7JY7T788PK", "auto", {"allowLinker": true, "legacyCookieDomain": window.location.hostname});ga("send", "pageview");</script><script async src="https://www.google-analytics.com/analytics.js"></script><script>(function () {var height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; document.write("<style>section.section-image--fullBleed.is-backgrounded {padding-top: " + Math.round(1.1 * height) + "px;}section.section-image--fullScreen.is-backgrounded, section.section-image--coverFade.is-backgrounded {min-height: " + height + "px; padding-top: " + Math.round(0.5 * height) + "px;}.u-height100vh {height: " + height + "px !important;}.u-height110vh {height: " + Math.round(1.1 * height) + "px !important;}.u-minHeight100vh {min-height: " + height + "px !important;}.u-maxHeight100vh {max-height: " + height + "px !important;}section.section-image--coverFade {height: " + height + "px;}.section-aspectRatioViewportPlaceholder, .section-aspectRatioViewportCropPlaceholder {max-height: " + height + "px;}.section-aspectRatioViewportBottomSpacer, .section-aspectRatioViewportBottomPlaceholder {max-height: " + Math.round(0.5 * height) + "px;}.zoomable:before {top: " + (-1 * height) + "px; left: " + (-1 * width) + "px; padding: " + height + "px " + width + "px;}</style>");})()</script><!--[if lt IE 9]><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.12.js"></script><![endif]--><link rel="icon" href="https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19" class="js-favicon"><link rel="apple-touch-icon" sizes="152x152" href="https://cdn-images-1.medium.com/fit/c/304/304/1*JUL5st-N0tn2jw8as1MBcw.png"><link rel="apple-touch-icon" sizes="120x120" href="https://cdn-images-1.medium.com/fit/c/240/240/1*JUL5st-N0tn2jw8as1MBcw.png"><link rel="apple-touch-icon" sizes="76x76" href="https://cdn-images-1.medium.com/fit/c/152/152/1*JUL5st-N0tn2jw8as1MBcw.png"><link rel="apple-touch-icon" sizes="60x60" href="https://cdn-images-1.medium.com/fit/c/120/120/1*JUL5st-N0tn2jw8as1MBcw.png"><link rel="mask-icon" href="https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg" color="#171717"></head><body itemscope class=" browser-ie os-windows v-unbound v-glyph v-glyph--m2-unbound-source-serif-pro is-noJs"><script>document.body.className = document.body.className.replace(/(^|\s)is-noJs(\s|$)/, "$1is-js$2")</script><div class="site-main" id="container"><div class="butterBar butterBar--error"></div><div class="surface"><div id="prerendered" class="screenContent"><div class="metabar u-clearfix js-metabar"><div class="branch-journeys-top"></div><div class="js-metabarMiddle metabar-inner u-marginAuto u-maxWidth1032 u-flexCenter u-justifyContentSpaceBetween u-height65 u-xs-height56 u-paddingHorizontal20"><div class="metabar-block u-flex1 u-flexCenter"><div class="js-metabarLogoLeft"><a href="https://medium.com/" data-log-event="home" class="siteNav-logo u-fillBlack u-flex0 u-flexCenter u-paddingTop0"><span class="svgIcon svgIcon--wordmarkMedium svgIcon--120x26px u-flex"><svg class="svgIcon-use" width="120" height="26" ><path d="M29.57 1.404l.036-.008V1.12h-7.27l-6.75 15.979-6.75-15.98H1.003v.278l.035.008c1.327.302 2 .752 2 2.374v18.993c0 1.623-.676 2.073-2.003 2.374L1 25.153v.279h5.315v-.278l-.035-.008c-1.327-.302-2-.751-2-2.374V4.88l8.67 20.552h.492l8.924-21.125V23.24c-.114 1.282-.782 1.677-1.983 1.95l-.036.009v.275h9.259V25.2l-.036-.008c-1.203-.274-1.886-.67-2-1.95l-.006-19.464h.006c0-1.622.674-2.072 2-2.374zm4.23 12.582c.15-3.412 1.367-5.875 3.41-5.918.629.01 1.157.219 1.568.62.872.852 1.282 2.634 1.219 5.298h-6.198zm-.092.962h10.85v-.046c-.03-2.61-.78-4.64-2.228-6.033-1.25-1.204-3.103-1.867-5.048-1.867h-.043c-1.01 0-2.248.246-3.13.693a7.316 7.316 0 00-2.623 2.086c-1.185 1.479-1.903 3.477-2.078 5.724a13.717 13.717 0 00-.04.755c-.004.195-.005.39-.001.587.117 5.087 2.846 9.153 7.692 9.153 4.254 0 6.73-3.132 7.348-7.336l-.312-.11c-1.085 2.259-3.034 3.628-5.252 3.461-3.028-.228-5.347-3.32-5.137-7.066m23.122 6.893c-.356.85-1.099 1.319-2.094 1.319-.995 0-1.905-.689-2.552-1.939-.694-1.342-1.06-3.24-1.06-5.487 0-4.678 1.445-7.704 3.68-7.704.937 0 1.674.468 2.026 1.284v12.527zm7.198 3.335c-1.327-.316-2-.787-2-2.492V0l-8.062 2.392v.293l.05-.004c1.111-.09 1.866.064 2.304.472.343.32.51.809.51 1.498v3.11C56.033 7.25 55.088 7 53.94 7c-2.326 0-4.453.987-5.986 2.779-1.599 1.867-2.444 4.42-2.444 7.38 0 5.287 2.584 8.84 6.43 8.84 2.25 0 4.06-1.242 4.888-3.336v2.811h7.233v-.29l-.035-.008zM70.94 3.085c0-1.65-1.236-2.896-2.875-2.896-1.632 0-2.908 1.272-2.908 2.896 0 1.624 1.278 2.896 2.908 2.896 1.64 0 2.875-1.245 2.875-2.896zm1.903 22.092c-1.327-.316-2-.787-2-2.492h-.006V7.055l-7.234 2.092v.284l.043.004c1.566.14 1.994.683 1.994 2.525v13.515h7.24v-.29l-.037-.008zm18.536 0c-1.327-.316-2-.787-2-2.492V7.055L82.49 9.078v.285l.04.004c1.28.136 1.65.71 1.65 2.56v9.88c-.426.85-1.227 1.356-2.196 1.39-1.573 0-2.439-1.07-2.439-3.012V7.055l-7.234 2.092v.284l.044.004c1.565.14 1.994.683 1.994 2.525v8.362a9.443 9.443 0 00.15 1.741l.13.57C75.243 24.845 76.848 26 79.362 26c2.129 0 3.996-1.328 4.818-3.405v2.885h7.233v-.291l-.034-.012zm28.102.298v-.291l-.035-.009c-1.44-.334-2.001-.964-2.001-2.248V12.295C117.445 8.98 115.597 7 112.5 7c-2.257 0-4.16 1.314-4.893 3.36-.582-2.168-2.257-3.36-4.734-3.36-2.175 0-3.88 1.156-4.612 3.11V7.056l-7.233 2.006v.286l.043.004c1.547.138 1.994.697 1.994 2.492v13.631h6.75v-.29l-.037-.01c-1.148-.271-1.519-.767-1.519-2.04V10.95c.304-.715.917-1.562 2.127-1.562 1.504 0 2.266 1.05 2.266 3.116v12.972h6.751v-.29l-.035-.01c-1.149-.271-1.52-.767-1.52-2.04V12.294a7.107 7.107 0 00-.095-1.21c.322-.777.97-1.696 2.23-1.696 1.524 0 2.265 1.02 2.265 3.116v12.972h7.233z"/></svg></span><span class="u-textScreenReader">Homepage</span></a></div><div class="u-paddingLeft10 u-sm-show r-paddingRight10"><a href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com/ithaka-tech%3F~feature=LoMobileNavBar&~channel=ShowCollectionHome&~stage=m2">Open in app</a></div></div><div class="metabar-block u-flex0 u-flexCenter"><div class="u-flexCenter u-height65 u-xs-height56"><div class="buttonSet buttonSet--wide u-lineHeightInherit"><a class="button button--primary button--chromeless u-accentColor--buttonNormal is-inSiteNavBar u-xs-hide js-signInButton" href="https://medium.com/m/signin?redirect=https%3A%2F%2Fmedium.com%2Fithaka-tech&amp;source=--------------------------nav_reg&amp;operation=login" data-action="sign-in-prompt" data-redirect="https://medium.com/ithaka-tech" data-action-source="--------------------------nav_reg">Sign in</a><a class="button button--primary button--withChrome u-accentColor--buttonNormal is-inSiteNavBar js-signUpButton" href="https://medium.com/m/signin?redirect=https%3A%2F%2Fmedium.com%2Fithaka-tech&amp;source=--------------------------nav_reg&amp;operation=register" data-action="sign-up-prompt" data-redirect="https://medium.com/ithaka-tech" data-action-source="--------------------------nav_reg">Get started</a></div></div></div></div></div><div class="metabar metabar--spacer js-metabarSpacer u-height65 u-xs-height56"></div><div class="collectionHeader js-collectionHeaderContainer u-relative collectionHeader--layoutMedium collectionHeader--alignmentLeft collectionHeader--withoutLogo collectionHeader--withBackground collectionHeader--colorBehaviorSubtle collectionHeader--withNavigation collectionHeader--editorLayoutTitle is-modeView"><div class="collectionHeader-aspectRatioTable"><div class="collectionHeader-aspectRatioContent u-backgroundSizeCover js-collectionHeaderBackground" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/2400/1*6URRFEzVNGb72IEbXsyv5w.png&quot;); background-position: 50% 50% !important;"><div class="collectionHeader-overlayBackground u-height100vh"></div><header class="collectionHeader-heroAndInlineNav u-borderBox u-maxWidth1072 u-paddingLeft20 u-paddingRight20 u-marginAuto u-foreground js-collectionHeader"><div class="collectionHeader-hero js-collectionHeaderHero u-clearfix u-imageSpectrum"><div class="collectionHeader-heroInner"><div class="collectionHeader-logo js-collectionHeaderLogo" style=""><a class="link u-baseColor--link" href="https://medium.com/ithaka-tech" title="Go to ITHAKA Tech" aria-label="Go to ITHAKA Tech"><div class="u-relative u-marginAuto"><div style="padding-bottom: 75%"></div><img class="collectionHeader-logoImage js-collectionHeaderLogoImage" /></div></a></div><div class="collectionHeader-nameAndDescription"><a class="link link--noUnderline u-baseColor--link" href="https://medium.com/ithaka-tech" title="Go to ITHAKA Tech" aria-label="Go to ITHAKA Tech"><h1 class="collectionHeader-name js-collectionName u-foreground u-baseColor--textDark u-paddingBottom4 u-lineHeightTightest u-contentSansBold u-fontSize40 u-xs-fontSize32">ITHAKA Tech</h1></a><h2 class="collectionHeader-description js-collectionDescription u-foreground u-baseColor--textNormal u-contentSansRegular u-fontSize24 u-xs-fontSize18">Improving access to knowledge and education</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"><div class="buttonSet u-flex1 u-noWrap u-overflowX u-paddingBottom100 u-xs-marginRight15"><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/ithaka-tech/tagged/software-development">Software Development</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/ithaka-tech/tagged/agile">Agile</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 ITHAKA Tech"><span class="svgIcon svgIcon--search svgIcon--25px u-baseColor--iconLight"><svg class="svgIcon-use" width="25" height="25" ><path d="M20.067 18.933l-4.157-4.157a6 6 0 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 ITHAKA Tech" required="true" data-collection-id="ccdac8851d0b" /></label><a class="button button--chromeless is-touchIconBlackPulse u-baseColor--buttonNormal button--withIcon button--withSvgIcon button--chromeless u-verticalAlignMiddle" href="https://twitter.com/ITHAKA_org" title="Visit “ITHAKA Tech” on X" aria-label="Visit “ITHAKA Tech” 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 js-relationshipButton is-smallPill" data-action="sign-up-prompt" data-sign-in-action="toggle-follow-collection" data-requires-token="true" data-redirect="https://medium.com/_/subscribe/collection/ithaka-tech" data-action-source="pub_header----ccdac8851d0b----------------------follow_pub" data-collection-id="ccdac8851d0b"><span class="button-label js-buttonLabel">Follow</span></button></div></nav></div></div></div><div class="u-marginBottom40 js-collectionStream"><div class="streamItem streamItem--section js-streamItem"><section class="u-marginTop30 u-xs-margin0 u-marginBottom15 u-maxWidth1032 u-sm-paddingLeft20 u-sm-paddingRight20 u-borderBox u-marginAuto"><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight15 u-size8of12" data-source="collection_home---4------0-----------------------" data-post-id="d6c2ecb3f887" data-index="0"><div class="u-lineHeightBase postItem u-marginRight3"><a href="https://medium.com/ithaka-tech/choose-boring-releases-d6c2ecb3f887?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://medium.com/ithaka-tech/choose-boring-releases-d6c2ecb3f887?source=collection_home---4------0-----------------------" class="u-block u-xs-height170 u-height350 u-width100pct u-floatLeft u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/2000/1*lu8id_9u4R0GaRFM_MlIOA.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Choose Boring Releases</span></a></div></div><div class="col u-xs-marginBottom10 u-paddingLeft9 u-paddingRight12 u-paddingTop0 u-sm-paddingTop20 u-paddingBottom25 u-size4of12 u-xs-size12of12 u-marginBottom30"><a class="" href="https://medium.com/ithaka-tech/choose-boring-releases-d6c2ecb3f887?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="d6c2ecb3f887"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp4 u-fontSize30 u-size12of12 u-xs-size12of12 u-xs-fontSize24">Choose Boring Releases</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">Academic research increasingly relies on diverse content types, including gray literature and primary source materials, alongside…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@danehillard" data-action="show-user-card" data-action-value="98e683e1a582" data-action-type="hover" data-user-id="98e683e1a582" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*z4bkwyZ2vBXYDunTWm08YA.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Dane Hillard"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@danehillard" data-action="show-user-card" data-action-value="98e683e1a582" data-action-type="hover" data-user-id="98e683e1a582" dir="auto">Dane Hillard</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-09-26T16:52:04.790Z">Sep 26</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="8 min read"></span></div></div></div></div></div></div></section></div><div class="streamItem streamItem--section js-streamItem"><div class="u-marginTop30 u-xs-marginTop0 u-marginBottom15 u-maxWidth1032 u-marginAuto"><div class="u-paddingTop35 u-paddingBottom20 u-paddingLeft20 u-paddingRight20 u-maxWidth1000 u-marginAuto u-textAlignCenter js-trackedPromo" style="background-color: #F9F8F6;"data-action="open-promo-link" data-promo-id="aa3146cddb87" data-collection-id="ccdac8851d0b"><a class="link u-baseColor--link" href="https://www.ithaka.org/careers/?utm_source=medium_blog&amp;utm_medium=display&amp;utm_campaign=recruiting_8_2022" rel="nofollow noopener" target="_blank" data-action-source="collection_home---2------0-----------------------"><div class="u-marginAuto u-marginBottom20" style="max-width: 450px;"><div class="u-relative u-marginAuto"><div style="padding-bottom: 20.40726954236917%"></div><img class="collectionHeader-logoImage js-collectionHeaderLogoImage" src="https://cdn-images-1.medium.com/max/900/1*B9YMwHnN71YsgL03LiJBiQ@2x.png" alt="Do you love edtech, humanities and laptop stickers? You’d love it here" data-image-id="1*B9YMwHnN71YsgL03LiJBiQ@2x.png" data-width="4567" data-height="932" /></div></div></a><div class="u-textColorNormal u-contentSansRegular u-fontSize28 u-xs-fontSize24 u-lineHeightBaseSans u-marginBottom20 u-maxWidth700 u-marginAuto">Do you love edtech, humanities and laptop stickers? You’d love it here</div><div class="u-marginBottom20"><a class="button button--large button--withChrome u-baseColor--buttonNormal u-borderNormal" href="https://www.ithaka.org/careers/?utm_source=medium_blog&amp;utm_medium=display&amp;utm_campaign=recruiting_8_2022" rel="nofollow noopener" target="_blank" data-action-source="collection_home---2------0-----------------------">Join our team</a></div></div></div></div><div class="streamItem streamItem--section js-streamItem"><section class="u-marginTop30 u-xs-margin0 u-marginBottom15 u-maxWidth1032 u-sm-paddingLeft20 u-sm-paddingRight20 u-borderBox u-marginAuto"><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight15 u-size8of12" data-source="collection_home---4------0-----------------------" data-post-id="e85cf75abd1c" data-index="0"><div class="u-lineHeightBase postItem u-marginRight3"><a href="https://medium.com/ithaka-tech/using-lambdas-to-integrate-new-services-e85cf75abd1c?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://medium.com/ithaka-tech/using-lambdas-to-integrate-new-services-e85cf75abd1c?source=collection_home---4------0-----------------------" class="u-block u-xs-height170 u-height350 u-width100pct u-floatLeft u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/2000/0*LcpG3IjxuBp3fFiN&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Using lambdas to integrate new services</span></a></div></div><div class="col u-xs-marginBottom10 u-paddingLeft9 u-paddingRight12 u-paddingTop0 u-sm-paddingTop20 u-paddingBottom25 u-size4of12 u-xs-size12of12 u-marginBottom30"><a class="" href="https://medium.com/ithaka-tech/using-lambdas-to-integrate-new-services-e85cf75abd1c?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="e85cf75abd1c"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp4 u-fontSize30 u-size12of12 u-xs-size12of12 u-xs-fontSize24">Using lambdas to integrate new services</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">ITHAKA developers saved time, money, and effort by developing a suite of lambdas to integrate new AWS services with existing services.</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@kyle.zurawski" data-action="show-user-card" data-action-value="373b7d0f8e4c" data-action-type="hover" data-user-id="373b7d0f8e4c" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*x6H9obs28Y8QNPpJ" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Kyle Zurawski"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@kyle.zurawski" data-action="show-user-card" data-action-value="373b7d0f8e4c" data-action-type="hover" data-user-id="373b7d0f8e4c" dir="auto">Kyle Zurawski</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-08-08T21:48:43.555Z">Aug 8</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="4 min read"></span></div></div></div></div></div></div><div class="row u-marginTop15 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------1-----------------------" data-post-id="600f906c1bd7" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://medium.com/ithaka-tech/a-day-in-the-life-of-a-delivery-lead-600f906c1bd7?source=collection_home---4------1-----------------------" data-action="open-post" data-action-value="https://medium.com/ithaka-tech/a-day-in-the-life-of-a-delivery-lead-600f906c1bd7?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*Xkl3T4Y8Rb8ndvwsMQxXRQ.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">A Day in the Life of a Delivery Lead</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/ithaka-tech/a-day-in-the-life-of-a-delivery-lead-600f906c1bd7?source=collection_home---4------1-----------------------" data-action-source="collection_home---4------1-----------------------" data-post-id="600f906c1bd7"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">A Day in the Life of a Delivery Lead</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 peek at my typical workday as a full-time remote employee at ITHAKA</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@aparna.bankston" data-action="show-user-card" data-action-value="2453c0045a81" data-action-type="hover" data-user-id="2453c0045a81" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*gf1i7UwdYuV7fPCs" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Aparna Bankston"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@aparna.bankston" data-action="show-user-card" data-action-value="2453c0045a81" data-action-type="hover" data-user-id="2453c0045a81" dir="auto">Aparna Bankston</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-07-18T22:19:54.720Z">Jul 18</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------2-----------------------" data-post-id="537369c68250" data-index="2"><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-marginBottom60"><a class="" href="https://medium.com/ithaka-tech/the-power-of-early-validation-and-zod-537369c68250?source=collection_home---4------2-----------------------" data-action-source="collection_home---4------2-----------------------" data-post-id="537369c68250"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">The Power of Early Validation (and Zod)</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">At ITHAKA, engineers have freedom to look into new libraries and tools. Sure, we have core technologies that probably won’t change for a…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@drewgingerich" data-action="show-user-card" data-action-value="3fdb9d1fb823" data-action-type="hover" data-user-id="3fdb9d1fb823" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*LSe3iwGB1vodmpKvzMBs_g.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Drew Gingerich"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@drewgingerich" data-action="show-user-card" data-action-value="3fdb9d1fb823" data-action-type="hover" data-user-id="3fdb9d1fb823" dir="auto">Drew Gingerich</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-03-28T19:46:24.565Z">Mar 28</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="9 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------3-----------------------" data-post-id="4e92e6b6dbbd" data-index="3"><div class="u-lineHeightBase postItem"><a href="https://medium.com/ithaka-tech/one-giant-leap-upgrading-eks-v1-25-to-v1-28-in-a-single-bound-4e92e6b6dbbd?source=collection_home---4------3-----------------------" data-action="open-post" data-action-value="https://medium.com/ithaka-tech/one-giant-leap-upgrading-eks-v1-25-to-v1-28-in-a-single-bound-4e92e6b6dbbd?source=collection_home---4------3-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*Fh1lOCIhzvvs6VZm6pe47Q.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">One Giant Leap: Upgrading EKS v1.25 to v1.28 in a single bound</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/ithaka-tech/one-giant-leap-upgrading-eks-v1-25-to-v1-28-in-a-single-bound-4e92e6b6dbbd?source=collection_home---4------3-----------------------" data-action-source="collection_home---4------3-----------------------" data-post-id="4e92e6b6dbbd"><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">One Giant Leap: Upgrading EKS v1.25 to v1.28 in a single bound</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">At ITHAKA, we use kubernetes as a container orchestration platform to deploy microservices to serve our JSTOR users. We started our…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@bboppana" data-action="show-user-card" data-action-value="293e5115117e" data-action-type="hover" data-user-id="293e5115117e" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*by5l_xRt9Ikm-MVYqTtilQ.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Balarama Boppana"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@bboppana" data-action="show-user-card" data-action-value="293e5115117e" data-action-type="hover" data-user-id="293e5115117e" dir="auto">Balarama Boppana</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-03-01T01:58:16.525Z">Feb 29</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="4 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop15 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------4-----------------------" data-post-id="7c2767794ba5" data-index="4"><div class="u-lineHeightBase postItem"><a href="https://medium.com/ithaka-tech/accessibility-improvements-to-upgrade-an-existing-feature-7c2767794ba5?source=collection_home---4------4-----------------------" data-action="open-post" data-action-value="https://medium.com/ithaka-tech/accessibility-improvements-to-upgrade-an-existing-feature-7c2767794ba5?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/1*FgzDy2NTThegiaNO4ysA6w.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Accessibility improvements to upgrade an existing feature</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/ithaka-tech/accessibility-improvements-to-upgrade-an-existing-feature-7c2767794ba5?source=collection_home---4------4-----------------------" data-action-source="collection_home---4------4-----------------------" data-post-id="7c2767794ba5"><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">Accessibility improvements to upgrade an existing feature</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">Custom ordering in the JSTOR Workspace</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@lorilundy711" data-action="show-user-card" data-action-value="82e108df73a8" data-action-type="hover" data-user-id="82e108df73a8" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/2*0PMDKqFNMJqUVAHJ_4fF2g.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Lori Lundy"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@lorilundy711" data-action="show-user-card" data-action-value="82e108df73a8" data-action-type="hover" data-user-id="82e108df73a8" dir="auto">Lori Lundy</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-01-23T18:45:39.293Z">Jan 23</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------5-----------------------" data-post-id="22499d75484" data-index="5"><div class="u-lineHeightBase postItem"><a href="https://medium.com/ithaka-tech/pals-workshop-the-value-of-in-person-collaboration-22499d75484?source=collection_home---4------5-----------------------" data-action="open-post" data-action-value="https://medium.com/ithaka-tech/pals-workshop-the-value-of-in-person-collaboration-22499d75484?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*Q9d23KPbDESbQ0dS&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">PALS Workshop: The Value of In-Person Collaboration</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/ithaka-tech/pals-workshop-the-value-of-in-person-collaboration-22499d75484?source=collection_home---4------5-----------------------" data-action-source="collection_home---4------5-----------------------" data-post-id="22499d75484"><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">PALS Workshop: The Value of In-Person Collaboration</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">By David Corneail</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@laura.cowan.contractor" data-action="show-user-card" data-action-value="46a217aa0bb9" data-action-type="hover" data-user-id="46a217aa0bb9" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*GD05SfhMGRn7wUfUKTB-fw.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of ITHAKA Tech Staff"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@laura.cowan.contractor" data-action="show-user-card" data-action-value="46a217aa0bb9" data-action-type="hover" data-user-id="46a217aa0bb9" dir="auto">ITHAKA Tech Staff</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-08-28T13:29:21.824Z">Aug 28, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="8 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------6-----------------------" data-post-id="dd3808fe4fa9" data-index="6"><div class="u-lineHeightBase postItem"><a href="https://medium.com/ithaka-tech/thoughts-on-my-first-year-as-a-remote-software-engineer-at-ithaka-dd3808fe4fa9?source=collection_home---4------6-----------------------" data-action="open-post" data-action-value="https://medium.com/ithaka-tech/thoughts-on-my-first-year-as-a-remote-software-engineer-at-ithaka-dd3808fe4fa9?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*VTikzbAq_dAG2DbvsntcVA.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Thoughts on My First Year as a Remote Software Engineer at ITHAKA</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/ithaka-tech/thoughts-on-my-first-year-as-a-remote-software-engineer-at-ithaka-dd3808fe4fa9?source=collection_home---4------6-----------------------" data-action-source="collection_home---4------6-----------------------" data-post-id="dd3808fe4fa9"><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">Thoughts on My First Year as a Remote Software Engineer at ITHAKA</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">By Brent Swisher</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@laura.cowan.contractor" data-action="show-user-card" data-action-value="46a217aa0bb9" data-action-type="hover" data-user-id="46a217aa0bb9" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*GD05SfhMGRn7wUfUKTB-fw.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of ITHAKA Tech Staff"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@laura.cowan.contractor" data-action="show-user-card" data-action-value="46a217aa0bb9" data-action-type="hover" data-user-id="46a217aa0bb9" dir="auto">ITHAKA Tech Staff</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-08-18T20:43:30.669Z">Aug 18, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div></div></section></div></div><style class="js-collectionStyle"> .u-accentColor--borderLight {border-color: #848585 !important;} .u-accentColor--borderNormal {border-color: #848585 !important;} .u-accentColor--borderDark {border-color: #717272 !important;} .u-accentColor--iconLight .svgIcon,.u-accentColor--iconLight.svgIcon {fill: #848585 !important;} .u-accentColor--iconNormal .svgIcon,.u-accentColor--iconNormal.svgIcon {fill: #848585 !important;} .u-accentColor--iconDark .svgIcon,.u-accentColor--iconDark.svgIcon {fill: #717272 !important;} .u-accentColor--textNormal {color: #717272 !important;} .u-accentColor--hoverTextNormal:hover {color: #717272 !important;} .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #686868 !important;} .u-accentColor--textDark {color: #686868 !important;} .u-accentColor--backgroundLight {background-color: #848585 !important;} .u-accentColor--backgroundNormal {background-color: #848585 !important;} .u-accentColor--backgroundDark {background-color: #717272 !important;} .u-accentColor--buttonDark {border-color: #717272 !important; color: #686868 !important;} .u-accentColor--buttonDark:hover {border-color: #686868 !important;} .u-accentColor--buttonDark .icon:before,.u-accentColor--buttonDark .svgIcon{color: #717272 !important; fill: #717272 !important;} .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #848585 !important; color: #717272 !important;} .u-accentColor--buttonNormal:hover {border-color: #717272 !important;} .u-accentColor--buttonNormal .icon:before,.u-accentColor--buttonNormal .svgIcon{color: #848585 !important; fill: #848585 !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: #717272 !important; border-color: #717272 !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: #848585 !important; border-color: #848585 !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: #717272 !important;}.u-tintBgColor {background-color: rgba(255, 255, 255, 1) !important;}.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-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 100%) !important;} .u-tintSpectrum .u-baseColor--borderLight {border-color: #9C9D9D !important;} .u-tintSpectrum .u-baseColor--borderNormal {border-color: #6F7071 !important;} .u-tintSpectrum .u-baseColor--borderDark {border-color: #3D3F3F !important;} .u-tintSpectrum .u-baseColor--iconLight .svgIcon,.u-tintSpectrum .u-baseColor--iconLight.svgIcon {fill: #9C9D9D !important;} .u-tintSpectrum .u-baseColor--iconNormal .svgIcon,.u-tintSpectrum .u-baseColor--iconNormal.svgIcon {fill: #6F7071 !important;} .u-tintSpectrum .u-baseColor--iconDark .svgIcon,.u-tintSpectrum .u-baseColor--iconDark.svgIcon {fill: #3D3F3F !important;} .u-tintSpectrum .u-baseColor--textNormal {color: #6F7071 !important;} .u-tintSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: #202122 !important;} .u-tintSpectrum .u-baseColor--textDark {color: #202122 !important;} .u-tintSpectrum .u-baseColor--textDarker {color: #202122 !important;} .u-tintSpectrum .u-baseColor--backgroundLight {background-color: #9C9D9D !important;} .u-tintSpectrum .u-baseColor--backgroundNormal {background-color: #6F7071 !important;} .u-tintSpectrum .u-baseColor--backgroundDark {background-color: #3D3F3F !important;} .u-tintSpectrum .u-baseColor--buttonLight {border-color: #9C9D9D !important; color: #9C9D9D !important;} .u-tintSpectrum .u-baseColor--buttonLight:hover {border-color: #9C9D9D !important;} .u-tintSpectrum .u-baseColor--buttonLight .icon:before,.u-tintSpectrum .u-baseColor--buttonLight .svgIcon {color: #9C9D9D !important; fill: #9C9D9D !important;} .u-tintSpectrum .u-baseColor--buttonDark {border-color: #3D3F3F !important; color: #202122 !important;} .u-tintSpectrum .u-baseColor--buttonDark:hover {border-color: #202122 !important;} .u-tintSpectrum .u-baseColor--buttonDark .icon:before,.u-tintSpectrum .u-baseColor--buttonDark .svgIcon {color: #3D3F3F !important; fill: #3D3F3F !important;} .u-tintSpectrum .u-baseColor--buttonNormal {border-color: #6F7071 !important; color: #6F7071 !important;} .u-tintSpectrum .u-baseColor--buttonNormal:hover {border-color: #3D3F3F !important;} .u-tintSpectrum .u-baseColor--buttonNormal .icon:before,.u-tintSpectrum .u-baseColor--buttonNormal .svgIcon {color: #6F7071 !important; fill: #6F7071 !important;} .u-tintSpectrum .u-baseColor--buttonDark.button--filled,.u-tintSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: #3D3F3F !important; border-color: #3D3F3F !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-tintSpectrum .u-baseColor--buttonNormal.button--filled,.u-tintSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: #6F7071 !important; border-color: #6F7071 !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-tintSpectrum .u-baseColor--link {color: #6F7071 !important;} .u-tintSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: #202122 !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: #202122 !important;} .u-tintSpectrum .u-baseColor--link.link--dark {color: #202122 !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: #202122 !important;} .u-tintSpectrum .u-baseColor--link.link--darker {color: #202122 !important;} .u-tintSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: #9C9D9D;} .u-tintSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: #9C9D9D;} .u-tintSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: #9C9D9D;} .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: #202122 !important; fill: #202122 !important;} .u-tintSpectrum .ui-body,.u-tintSpectrum .ui-caps {color: #202122 !important; fill: #202122 !important;} .u-tintSpectrum .ui-summary,.u-tintSpectrum .ui-caption {color: #9C9D9D !important; fill: #9C9D9D !important;} .u-tintSpectrum .u-accentColor--borderLight {border-color: #9C9D9D !important;} .u-tintSpectrum .u-accentColor--borderNormal {border-color: #6F7071 !important;} .u-tintSpectrum .u-accentColor--borderDark {border-color: #3D3F3F !important;} .u-tintSpectrum .u-accentColor--iconLight .svgIcon,.u-tintSpectrum .u-accentColor--iconLight.svgIcon {fill: #9C9D9D !important;} .u-tintSpectrum .u-accentColor--iconNormal .svgIcon,.u-tintSpectrum .u-accentColor--iconNormal.svgIcon {fill: #6F7071 !important;} .u-tintSpectrum .u-accentColor--iconDark .svgIcon,.u-tintSpectrum .u-accentColor--iconDark.svgIcon {fill: #3D3F3F !important;} .u-tintSpectrum .u-accentColor--textNormal {color: #6F7071 !important;} .u-tintSpectrum .u-accentColor--hoverTextNormal:hover {color: #6F7071 !important;} .u-tintSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #202122 !important;} .u-tintSpectrum .u-accentColor--textDark {color: #202122 !important;} .u-tintSpectrum .u-accentColor--backgroundLight {background-color: #9C9D9D !important;} .u-tintSpectrum .u-accentColor--backgroundNormal {background-color: #6F7071 !important;} .u-tintSpectrum .u-accentColor--backgroundDark {background-color: #3D3F3F !important;} .u-tintSpectrum .u-accentColor--buttonDark {border-color: #3D3F3F !important; color: #202122 !important;} .u-tintSpectrum .u-accentColor--buttonDark:hover {border-color: #202122 !important;} .u-tintSpectrum .u-accentColor--buttonDark .icon:before,.u-tintSpectrum .u-accentColor--buttonDark .svgIcon{color: #3D3F3F !important; fill: #3D3F3F !important;} .u-tintSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #6F7071 !important; color: #6F7071 !important;} .u-tintSpectrum .u-accentColor--buttonNormal:hover {border-color: #3D3F3F !important;} .u-tintSpectrum .u-accentColor--buttonNormal .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal .svgIcon{color: #6F7071 !important; fill: #6F7071 !important;} .u-tintSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 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: #3D3F3F !important; border-color: #3D3F3F !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 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: #6F7071 !important; border-color: #6F7071 !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-tintSpectrum .postArticle.is-withAccentColors .markup--user,.u-tintSpectrum .postArticle.is-withAccentColors .markup--query {color: #6F7071 !important;} .u-accentColor--highlightFaint {background-color: rgba(242, 240, 240, 1) !important;} .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(224, 223, 223, 1) !important;} .postArticle.is-withAccentColors .markup--quote.is-other {background-color: rgba(242, 240, 240, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(242, 240, 240, 1), rgba(242, 240, 240, 1));} .postArticle.is-withAccentColors .markup--quote.is-me {background-color: rgba(232, 231, 231, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(232, 231, 231, 1), rgba(232, 231, 231, 1));} .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: rgba(224, 223, 223, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(224, 223, 223, 1), rgba(224, 223, 223, 1));} .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: rgba(224, 223, 223, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(224, 223, 223, 1), rgba(224, 223, 223, 1));} .postArticle.is-withAccentColors .markup--highlight {background-color: rgba(224, 223, 223, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(224, 223, 223, 1), rgba(224, 223, 223, 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-hide"><div class="container u-maxWidth1040"><div class="u-marginTop10 u-paddingTop10 u-paddingBottom30 u-borderTopLighter"><div class="linkSet u-clearfix"><div class="u-floatRight u-textColorNormal u-baseColor--textNormal u-xs-floatLeft"><a class="button button--chromeless u-baseColor--buttonNormal u-marginLeft15 u-lineHeight35 u-xs-block u-xs-marginLeft0" href="https://medium.com/ithaka-tech/about" title="About ITHAKA Tech" aria-label="About ITHAKA Tech">About ITHAKA Tech</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/ithaka-tech/latest" title="Latest Stories for ITHAKA Tech" aria-label="Latest Stories for ITHAKA Tech">Latest Stories</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/ithaka-tech/archive" title="Archive for ITHAKA Tech" aria-label="Archive for ITHAKA Tech">Archive</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://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://medium.com","buildLabel":"20241126-1740-root","currentUser":{"userId":"lo_5341d3f2e8d7","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.95z8xpkUEidhPbIWsh2BVw.12.js","common-async":"https://cdn-static-1.medium.com/_/fp/gen-js/main-common-async.bundle.zqOu8dxaQRtqDyChHdOWlQ.12.js","hightower":"https://cdn-static-1.medium.com/_/fp/gen-js/main-hightower.bundle.y0UkxCxPBUbLlduk5XbwLQ.12.js","home-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-home-screens.bundle.eZhPgaD8AglnbC5Rzxqvhg.12.js","misc-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-misc-screens.bundle.XeRjm4FlHTBOsUvoOQ6Ppg.12.js","notes":"https://cdn-static-1.medium.com/_/fp/gen-js/main-notes.bundle.r9MSvtAmj0CMkyIC0CCCbA.12.js","payments":"https://cdn-static-1.medium.com/_/fp/gen-js/main-payments.bundle.AiXyuYj3AvxRA1-7HEyP9Q.12.js","posters":"https://cdn-static-1.medium.com/_/fp/gen-js/main-posters.bundle.fsLyLvZO4VZXL_zb4RXgeg.12.js","power-readers":"https://cdn-static-1.medium.com/_/fp/gen-js/main-power-readers.bundle.6Dyc-nVN2MDV_AM9XDAZug.12.js","pubs":"https://cdn-static-1.medium.com/_/fp/gen-js/main-pubs.bundle.rUyrVjlTpUj61voxnZosQw.12.js","stats":"https://cdn-static-1.medium.com/_/fp/gen-js/main-stats.bundle.2I2tXSo7-rbez_WYXfga0Q.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":"1732681717543:918f13a08900","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":"control","enable_boost_nia_v01":true,"enable_braintree_apple_pay":true,"enable_braintree_client":true,"enable_braintree_google_pay":true,"enable_braintree_integration":true,"enable_braintree_paypal":true,"enable_braintree_trial_membership":true,"enable_braintree_webhook":true,"enable_branch_io":true,"enable_cache_less_following_feed":true,"enable_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_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":true,"algoliaApiEndpoint":"https://MQ57UUUQZ2-dsn.algolia.net","algoliaAppId":"MQ57UUUQZ2","algoliaSearchOnlyApiKey":"394474ced050e3911ae2249ecc774921","iosAppStoreUrl":"https://itunes.apple.com/app/medium-everyones-stories/id828256236?pt=698524&mt=8","iosAppLinkBaseUrl":"medium:","algoliaIndexPrefix":"medium_","androidPlayStoreUrl":"https://play.google.com/store/apps/details?id=com.medium.reader","googleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","androidPackage":"com.medium.reader","androidPlayStoreMarketScheme":"market://details?id=com.medium.reader","googleAuthUri":"https://accounts.google.com/o/oauth2/auth","androidScheme":"medium","layoutData":{"useDynamicScripts":false,"googleAnalyticsTrackingCode":"G-7JY7T788PK","jsShivUrl":"https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.12.js","useDynamicCss":false,"faviconUrl":"https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19","faviconImageId":"5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19","fontSets":[{"id":8,"url":"https://glyph.medium.com/css/e/sr/latin/e/ssr/latin/e/ssb/latin/m2-unbound-source-serif-pro.css"},{"id":11,"url":"https://glyph.medium.com/css/m2-unbound-source-serif-pro.css"},{"id":9,"url":"https://glyph.medium.com/css/mkt.css"}],"glyphUrl":"https://glyph.medium.com"},"authBaseUrlRev":"moc.muidem//:sptth","stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","archiveUploadSizeMb":100,"previewConfig2":{"weightThreshold":1,"weightImageParagraph":0.05,"raiseImage":true,"enforceHeaderHierarchy":true,"isImageInsetRight":true},"isAmp":false,"iosScheme":"medium","facebook":{"key":"542599432471018","namespace":"medium-com","scope":{"default":["public_profile","email"],"connect":["public_profile","email"],"login":["public_profile","email"],"share":["public_profile","email"]}},"memberContentTopicId":"13d7efd82fb2","audioContentTopicId":"3792abbd134","isDoNotAuth":false,"buggle":{"videoUrl":"https://cdn-videos-1.medium.com","audioUrl":"https://cdn-audio-1.medium.com"},"referrerType":5,"partnerProgramEmail":"partnerprogram@medium.com","recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","countryCode":"SG","bypassMeter":false,"branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","paypal":{"clientMode":"production","oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com/redeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"}},"collectionConfig":{"mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"]},"bypassMeterWithShareKey":false,"recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","cdcMessaging":[{"text":"For more information on the novel coronavirus and Covid-19, visit ","href":"","type":"text","start":0,"end":0},{"text":"cdc.gov","href":"https://www.cdc.gov/coronavirus/2019-nCoV","type":"link","start":66,"end":73},{"text":".","href":"","type":"text","start":0,"end":0}],"braintree":{"merchantId":"m56f8fqpf7ngnrd4"},"diagnostics":{},"domain":"medium.com"} // ]]></script><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.95z8xpkUEidhPbIWsh2BVw.12.js" async></script><script>// <![CDATA[ window["obvInit"]({"references":{"CollectionPromo":{"aa3146cddb87":{"promoId":"aa3146cddb87","collectionId":"ccdac8851d0b","createdAt":1553728147522,"linkWithContentItem":{"url":"https://www.ithaka.org/careers/?utm_source=medium_blog&utm_medium=display&utm_campaign=recruiting_8_2022","image":{"id":"1*B9YMwHnN71YsgL03LiJBiQ@2x.png","originalWidth":4567,"originalHeight":932},"description":"Do you love edtech, humanities and laptop stickers? You’d love it here","buttonText":"Join our team","tintColor":"#FFF9F8F6","colorSpectrum":{"colorPoints":[{"color":"#FFF9F8F6","point":0},{"color":"#FFE7E6E4","point":0.1},{"color":"#FFD4D3D1","point":0.2},{"color":"#FFC1C0BE","point":0.3},{"color":"#FFADADAB","point":0.4},{"color":"#FF999997","point":0.5},{"color":"#FF848482","point":0.6},{"color":"#FF6E6E6C","point":0.7},{"color":"#FF565755","point":0.8},{"color":"#FF3D3E3C","point":0.9},{"color":"#FF212120","point":1}],"backgroundColor":"#FFF9F8F6"},"isLightText":false},"itemType":"linkWithContentItem","type":"CollectionPromo"}},"Collection":{"ccdac8851d0b":{"id":"ccdac8851d0b","name":"ITHAKA Tech","slug":"ithaka-tech","tags":["TECHNOLOGY","SOFTWARE DEVELOPMENT","INNOVATION","PRODUCT DEVELOPMENT","WOMEN IN TECH"],"creatorId":"189f2f4b2a6b","description":"How we create services and tools to inspire and support learning today and for the future","shortDescription":"How we create services and tools to inspire and support…","image":{"imageId":"1*JUL5st-N0tn2jw8as1MBcw.png","filter":"","backgroundSize":"","originalWidth":1000,"originalHeight":1000,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":307,"activeAt":1727369524868},"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*oRNIg_5aAvcFZeZG8okFTw.png","filter":"","backgroundSize":"","originalWidth":600,"originalHeight":72,"strategy":"resample","height":0,"width":0},"twitterUsername":"ITHAKA_org","publicEmail":"hello@ithaka.org","collectionMastheadId":"616da1b9a011","sections":[{"type":2,"collectionHeaderMetadata":{"title":"ITHAKA Tech","description":"Improving access to knowledge and education","backgroundImage":{"id":"1*6URRFEzVNGb72IEbXsyv5w.png","originalWidth":3373,"originalHeight":411},"logoImage":{},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":1,"postIds":[]}},{"type":3,"promoMetadata":{"sectionHeader":"","promoId":"aa3146cddb87"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":7,"postIds":[]}}],"tintColor":"#FFFFFFFF","lightText":false,"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF848585","point":0},{"color":"#FF7B7B7B","point":0.1},{"color":"#FF717272","point":0.2},{"color":"#FF686868","point":0.3},{"color":"#FF5E5E5E","point":0.4},{"color":"#FF545454","point":0.5},{"color":"#FF494A4A","point":0.6},{"color":"#FF3F3F3F","point":0.7},{"color":"#FF333333","point":0.8},{"color":"#FF272727","point":0.9},{"color":"#FF1A1A1A","point":1}],"backgroundColor":"#FFFFFFFF"},"tintBackgroundSpectrum":{"colorPoints":[{"color":"#FFFFFFFF","point":0},{"color":"#FFECECEC","point":0.1},{"color":"#FFD9D9D9","point":0.2},{"color":"#FFC5C6C6","point":0.3},{"color":"#FFB1B1B1","point":0.4},{"color":"#FF9C9D9D","point":0.5},{"color":"#FF868787","point":0.6},{"color":"#FF6F7071","point":0.7},{"color":"#FF575959","point":0.8},{"color":"#FF3D3F3F","point":0.9},{"color":"#FF202122","point":1}],"backgroundColor":"#FFFFFFFF"},"highlightSpectrum":{"colorPoints":[{"color":"#FFF4F2F2","point":0},{"color":"#FFF2F0F0","point":0.1},{"color":"#FFF0EEEE","point":0.2},{"color":"#FFEEECEC","point":0.3},{"color":"#FFECEBEA","point":0.4},{"color":"#FFEAE9E8","point":0.5},{"color":"#FFE8E7E7","point":0.6},{"color":"#FFE6E5E5","point":0.7},{"color":"#FFE4E3E3","point":0.8},{"color":"#FFE2E1E1","point":0.9},{"color":"#FFE0DFDF","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FF9C9D9D","point":0},{"color":"#FFA5A5A5","point":0.1},{"color":"#FFADAEAE","point":0.2},{"color":"#FFB6B6B6","point":0.3},{"color":"#FFBFBEBE","point":0.4},{"color":"#FFC7C6C6","point":0.5},{"color":"#FFCFCECE","point":0.6},{"color":"#FFD8D6D6","point":0.7},{"color":"#FFE0DEDE","point":0.8},{"color":"#FFE8E6E6","point":0.9},{"color":"#FFF0EEED","point":1}],"backgroundColor":"#FF000000"}},"navItems":[{"type":1,"title":"Software Development","tagSlug":"software-development","url":"https://medium.com/ithaka-tech/tagged/software-development","source":"tagSlug"},{"type":1,"title":"Agile","tagSlug":"agile","url":"https://medium.com/ithaka-tech/tagged/agile","source":"tagSlug"}],"colorBehavior":1,"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"title":"ITHAKA Tech","description":"Improving access to knowledge and education","backgroundImage":{"id":"1*6URRFEzVNGb72IEbXsyv5w.png","originalWidth":3373,"originalHeight":411},"logoImage":{},"alignment":2,"layout":5},"subscriberCount":307,"tagline":"Improving access to knowledge and education","isOptedIntoAurora":false,"isCurationAllowedByDefault":false,"polarisCoverImage":{"imageId":"1*6URRFEzVNGb72IEbXsyv5w.png","filter":"","backgroundSize":"","originalWidth":3373,"originalHeight":411,"strategy":"resample","height":0,"width":0},"ptsQualifiedAt":1625480808193,"type":"Collection"}},"User":{"98e683e1a582":{"userId":"98e683e1a582","name":"Dane Hillard","username":"danehillard","createdAt":1443626216287,"imageId":"1*z4bkwyZ2vBXYDunTWm08YA.jpeg","backgroundImageId":"","bio":"Publishing Python Packages 🐍📦 ⬆️ Practices of the Python Pro 🐍📘 Technical architect at ITHAKA","twitterScreenName":"easyaspython","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"isCreatorPartnerProgramEnrolled":true,"userDismissableFlags":[29,12,11,9,8,6,5,3,2,1,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"373b7d0f8e4c":{"userId":"373b7d0f8e4c","name":"Kyle Zurawski","username":"kyle.zurawski","createdAt":1723130149345,"imageId":"0*x6H9obs28Y8QNPpJ","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[29],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"2453c0045a81":{"userId":"2453c0045a81","name":"Aparna Bankston","username":"aparna.bankston","createdAt":1721158813470,"imageId":"0*gf1i7UwdYuV7fPCs","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[29],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"3fdb9d1fb823":{"userId":"3fdb9d1fb823","name":"Drew Gingerich","username":"drewgingerich","createdAt":1692396182932,"imageId":"1*LSe3iwGB1vodmpKvzMBs_g.jpeg","backgroundImageId":"","bio":"I'm a professional programmer, but my interests are infinte! Being a squishy mortal I sadly don't have time to do everything. It doesn't stop me from trying.","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"293e5115117e":{"userId":"293e5115117e","name":"Balarama Boppana","username":"bboppana","createdAt":1517605357975,"imageId":"1*by5l_xRt9Ikm-MVYqTtilQ.png","backgroundImageId":"","bio":"Sr. Software Engineer at ITHAKA","twitterScreenName":"","allowNotes":1,"mediumMemberAt":1593865977000,"isWriterProgramEnrolled":true,"isSuspended":false,"firstOpenedIosApp":1593651124031,"isMembershipTrialEligible":false,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[29,44,2,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"82e108df73a8":{"userId":"82e108df73a8","name":"Lori Lundy","username":"lorilundy711","createdAt":1487024334342,"imageId":"2*0PMDKqFNMJqUVAHJ_4fF2g.jpeg","backgroundImageId":"","bio":"Product Designer @ ITHAKA","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[48,50],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"46a217aa0bb9":{"userId":"46a217aa0bb9","name":"ITHAKA Tech Staff","username":"laura.cowan.contractor","createdAt":1668720670164,"imageId":"1*GD05SfhMGRn7wUfUKTB-fw.png","backgroundImageId":"","bio":"Insights from the ITHAKA engineering team and beyond.","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[2,29,33],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"}},"Post":{"d6c2ecb3f887":{"id":"d6c2ecb3f887","versionId":"6f1ac3ba67cd","creatorId":"98e683e1a582","homeCollectionId":"ccdac8851d0b","title":"Choose Boring Releases","detectedLanguage":"en","latestVersion":"6f1ac3ba67cd","latestPublishedVersion":"6f1ac3ba67cd","hasUnpublishedEdits":false,"latestRev":288,"createdAt":1726865013391,"updatedAt":1731730000154,"acceptedAt":0,"firstPublishedAt":1727369524790,"latestPublishedAt":1729273379974,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Academic research increasingly relies on diverse content types, including gray literature and primary source materials, alongside…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*lu8id_9u4R0GaRFM_MlIOA.jpeg","filter":"","backgroundSize":"","originalWidth":1940,"originalHeight":1480,"strategy":"resample","height":0,"width":0},"wordCount":1888,"imageCount":1,"readingTime":7.324528301886793,"subtitle":"Academic research increasingly relies on diverse content types, including gray literature and primary source materials, alongside…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":2,"isBookmarked":false,"tags":[{"slug":"release-management","name":"Release Management","postCount":662,"metadata":{"postCount":662,"coverImage":{"id":"1*HSCYX6trLKxEPfx2T0k7BQ.jpeg","originalWidth":603,"originalHeight":603,"backgroundSize":"","filter":"","isFeatured":false,"externalSrc":"","focusPercentX":-1,"focusPercentY":-1,"alt":"","repairedAt":0,"unsplashPhotoId":""}},"type":"Tag"},{"slug":"integration-testing","name":"Integration Testing","postCount":1327,"metadata":{"postCount":1327,"coverImage":{"id":"1*rJWwVAO2Gum1Amc0ctOqdw.png","originalWidth":2117,"originalHeight":1580,"isFeatured":true}},"type":"Tag"},{"slug":"migration","name":"Migration","postCount":15623,"metadata":{"postCount":15623,"coverImage":{"id":"0*81E9hUBRtqUZ9cbC","originalWidth":3648,"originalHeight":5472,"isFeatured":true,"alt":"A huge tree with very large roots, and the sun shining through the branches","unsplashPhotoId":"EwKXn5CapA4"}},"type":"Tag"},{"slug":"agile-development","name":"Agile Development","postCount":5283,"metadata":{"postCount":5283,"coverImage":{"id":"1*drn_JkrrVMoi1IOgmnbg2A.png","originalWidth":2500,"originalHeight":1250,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://www.ithaka.org/careers/?gh_src=1ba9e9eb5us","alts":[],"httpStatus":200},{"url":"https://jstor.org/stable/community.34718827","alts":[],"httpStatus":403},{"url":"https://www.jstor.org/","alts":[],"httpStatus":200},{"url":"https://groups.niso.org/higherlogic/ws/public/download/26321","alts":[],"httpStatus":200},{"url":"https://www.about.jstor.org/whats-in-jstor/infrastructure/","alts":[],"httpStatus":200},{"url":"https://www.about.jstor.org/news/jstor-announces-artstor-on-jstor/","alts":[],"httpStatus":200},{"url":"https://medium.com/ithaka-tech/deploying-features-under-cover-of-darkness-f112ce444bba","alts":[{"type":3,"url":"medium://p/f112ce444bba"},{"type":2,"url":"medium://p/f112ce444bba"}],"httpStatus":200},{"url":"https://medium.com/ithaka-tech/find-bugs-before-your-users-do-closing-the-software-development-risk-exposure-gap-cace5dbd19d2","alts":[{"type":3,"url":"medium://p/cace5dbd19d2"},{"type":2,"url":"medium://p/cace5dbd19d2"}],"httpStatus":200}],"version":"0.3","generatedAt":1729273380637},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":51,"sectionCount":4,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"choose-boring-releases","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"choose-boring-releases-d6c2ecb3f887","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*lu8id_9u4R0GaRFM_MlIOA.jpeg","originalWidth":1940,"originalHeight":1480,"isFeatured":true}},{"name":"9d4c","type":3,"text":"Choose Boring Releases","markups":[],"alignment":1},{"name":"290e","type":1,"text":"Academic research increasingly relies on diverse content types, including gray literature and primary source materials…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Academic research increasingly relies on diverse content types, including gray literature and primary source materials, alongside…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ccdac8851d0b","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"9d4c","type":3,"text":"Choose Boring Releases","markups":[]},{"name":"290e","type":1,"text":"Academic research increasingly relies on diverse content types, including gray literature and primary source materials, alongside traditional peer-reviewed works. ITHAKA supports this evolving research landscape through initiatives that foster cross-content connections on JSTOR, our digital library that supports research, teaching, and learning. These include infrastructure services that enable institutions to…","markups":[{"type":3,"start":273,"end":278,"href":"https://www.jstor.org/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":362,"end":385,"href":"https://www.about.jstor.org/whats-in-jstor/infrastructure/","title":"","rel":"noopener","anchorType":0}]}],"sections":[{"name":"9711","startIndex":0}]},"isFullContent":false,"subtitle":"Academic research increasingly relies on diverse content types, including gray literature and primary source materials, alongside…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"e85cf75abd1c":{"id":"e85cf75abd1c","versionId":"2a9e1b396639","creatorId":"373b7d0f8e4c","homeCollectionId":"ccdac8851d0b","title":"Using lambdas to integrate new services","detectedLanguage":"en","latestVersion":"2a9e1b396639","latestPublishedVersion":"2a9e1b396639","hasUnpublishedEdits":false,"latestRev":114,"createdAt":1723133011424,"updatedAt":1731970689920,"acceptedAt":0,"firstPublishedAt":1723153723555,"latestPublishedAt":1723153723555,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"ITHAKA developers saved time, money, and effort by developing a suite of lambdas to integrate new AWS services with existing services.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*LcpG3IjxuBp3fFiN","filter":"","backgroundSize":"","originalWidth":944,"originalHeight":716,"strategy":"resample","height":0,"width":0},"wordCount":862,"imageCount":1,"readingTime":3.4528301886792456,"subtitle":"ITHAKA developers saved time, money, and effort by developing a suite of lambdas to integrate new AWS services with existing services.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":3,"isBookmarked":false,"tags":[{"slug":"integration","name":"Integration","postCount":12483,"metadata":{"postCount":12483,"coverImage":{"id":"0*8Zv9BoGx8LV10hei","originalWidth":770,"originalHeight":385,"isFeatured":true}},"type":"Tag"},{"slug":"legacy-systems","name":"Legacy Systems","postCount":985,"metadata":{"postCount":985,"coverImage":{"id":"1*GprXHilPSjvNrdEPv5CfPw.png","originalWidth":1156,"originalHeight":730,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":326502,"metadata":{"postCount":326502,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"},{"slug":"lambda","name":"Lambda","postCount":6235,"metadata":{"postCount":6235,"coverImage":{"id":"1*_FyQR8mrLDnhoimNZPTFZQ.png","originalWidth":708,"originalHeight":389,"isFeatured":true,"alt":"Lambda Expression"}},"type":"Tag"},{"slug":"aws","name":"AWS","postCount":117341,"metadata":{"postCount":117341,"coverImage":{"id":"0*YtQ_KpwZohYm77nR","originalWidth":1600,"originalHeight":698}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://www.ithaka.org/careers/?gh_src=1ba9e9eb5us","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1723153724488},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":46,"sectionCount":2,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"using-lambdas-to-integrate-new-services","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"using-lambdas-to-integrate-new-services-e85cf75abd1c","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*LcpG3IjxuBp3fFiN","originalWidth":944,"originalHeight":716,"isFeatured":true,"alt":"Diagram depicting the system described in the article: services progressing from internal systems to lambdas, AWS services, and finally back to internal systems."}},{"name":"previewTitle","type":3,"text":"Using lambdas to integrate new services","alignment":1},{"name":"previewSubtitle","type":13,"text":"ITHAKA developers saved time, money, and effort by developing…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"ITHAKA developers saved time, money, and effort by developing a suite of lambdas to integrate new AWS services with existing services."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ccdac8851d0b","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"4d57","type":3,"text":"Using lambdas to integrate new services","markups":[]},{"name":"87df","type":1,"text":"Over the last few years, JSTOR content has expanded far beyond text-only journal scans. One of our first ventures in this area was the 2023 addition of audio content to support a richer collection of primary sources and the integration of Artstor content.","markups":[]},{"name":"7980","type":1,"text":"Audio offers users a more immersive and…","markups":[]}],"sections":[{"name":"505d","startIndex":0}]},"isFullContent":false,"subtitle":"ITHAKA developers saved time, money, and effort by developing a suite of lambdas to integrate new AWS services with existing services."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"600f906c1bd7":{"id":"600f906c1bd7","versionId":"de04e4724c2b","creatorId":"2453c0045a81","homeCollectionId":"ccdac8851d0b","title":"A Day in the Life of a Delivery Lead","detectedLanguage":"en","latestVersion":"de04e4724c2b","latestPublishedVersion":"de04e4724c2b","hasUnpublishedEdits":false,"latestRev":245,"createdAt":1721322420393,"updatedAt":1732113543260,"acceptedAt":0,"firstPublishedAt":1721341194720,"latestPublishedAt":1721341642088,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"A peek at my typical workday as a full-time remote employee at ITHAKA","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*Xkl3T4Y8Rb8ndvwsMQxXRQ.jpeg","filter":"","backgroundSize":"","originalWidth":280,"originalHeight":374,"strategy":"resample","height":0,"width":0},"wordCount":1313,"imageCount":4,"readingTime":5.654716981132076,"subtitle":"A peek at my typical workday as a full-time remote employee at ITHAKA","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":1,"isBookmarked":false,"tags":[{"slug":"working-from-home","name":"Working From Home","postCount":6016,"metadata":{"postCount":6016,"coverImage":{"id":"0*07K9pRH3oBz_c9hk","originalWidth":2000,"originalHeight":1500,"isFeatured":true}},"type":"Tag"},{"slug":"remote-working","name":"Remote Working","postCount":46198,"metadata":{"postCount":46198,"coverImage":{"id":"1*q4OjFQZ_CZAqqwErhwjr2w.jpeg","originalWidth":981,"originalHeight":939}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://www.ithaka.org/careers/?gh_src=1ba9e9eb5us","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/company/ithaka/life/3f7d81ac-b9a5-40ae-959a-609a562f8123/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1721341642544},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":1,"sectionCount":4,"readingList":0,"topics":[{"topicId":"af49579e220a","slug":"work","createdAt":1487918186996,"deletedAt":0,"image":{"id":"1*knbAt5qCQCelKx0BDkzZpQ@2x.jpeg","originalWidth":5018,"originalHeight":3049},"name":"Work","description":"The meaning behind the meetings.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Work Life: Articles and News — Medium","type":"Topic"}]},"coverless":true,"slug":"a-day-in-the-life-of-a-delivery-lead","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"a-day-in-the-life-of-a-delivery-lead-600f906c1bd7","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*Xkl3T4Y8Rb8ndvwsMQxXRQ.jpeg","originalWidth":280,"originalHeight":374,"isFeatured":true,"alt":"Aparna Bankston at her standing desk in her home office."}},{"name":"1237","type":3,"text":"A Day in the Life of a Delivery Lead","markups":[],"alignment":1},{"name":"0260","type":13,"text":"A peek at my typical workday as a full-time remote employee at…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"A peek at my typical workday as a full-time remote employee at ITHAKA"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ccdac8851d0b","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"1237","type":3,"text":"A Day in the Life of a Delivery Lead","markups":[]},{"name":"0260","type":13,"text":"A peek at my typical workday as a full-time remote employee at ITHAKA","markups":[]},{"name":"79fe","type":1,"text":"A couple years ago we had to shift to working — and working effectively — remotely. I developed a good routine and now treat each day as simply a workday, not a work-from-home day. It has been a shift, and part of that shift was building in the right kinds…","markups":[]}],"sections":[{"name":"44eb","startIndex":0}]},"isFullContent":false,"subtitle":"A peek at my typical workday as a full-time remote employee at ITHAKA"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"537369c68250":{"id":"537369c68250","versionId":"2c023d5ea9c0","creatorId":"3fdb9d1fb823","homeCollectionId":"ccdac8851d0b","title":"The Power of Early Validation (and Zod)","detectedLanguage":"en","latestVersion":"2c023d5ea9c0","latestPublishedVersion":"2c023d5ea9c0","hasUnpublishedEdits":false,"latestRev":747,"createdAt":1711141490872,"updatedAt":1711655189666,"acceptedAt":0,"firstPublishedAt":1711655184565,"latestPublishedAt":1711655184565,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"At ITHAKA, engineers have freedom to look into new libraries and tools. Sure, we have core technologies that probably won’t change for a…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"wordCount":2367,"imageCount":0,"readingTime":8.932075471698113,"subtitle":"At ITHAKA, engineers have freedom to look into new libraries and tools. Sure, we have core technologies that probably won’t change for a…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":2,"isBookmarked":false,"tags":[{"slug":"javascript","name":"JavaScript","postCount":285856,"metadata":{"postCount":285856,"coverImage":{"id":"0*BTaIEoMZlgOipidp","originalWidth":6016,"originalHeight":4016,"isFeatured":true,"unsplashPhotoId":"qDY9ahp0Mto"}},"type":"Tag"},{"slug":"validation","name":"Validation","postCount":4787,"metadata":{"postCount":4787,"coverImage":{"id":"1*WOJp2T8_Wakkv7KpieDa2A.jpeg","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"zod","name":"Zod","postCount":160,"metadata":{"postCount":160,"coverImage":{"id":"1*jaJxkUAHkegYAjuO6h7XmA.jpeg","originalWidth":300,"originalHeight":238,"isFeatured":true}},"type":"Tag"},{"slug":"typescript","name":"Typescript","postCount":39520,"metadata":{"postCount":39520,"coverImage":{"id":"1*IKZuN_kzUYPl37lBXQkymQ.png","originalWidth":2560,"originalHeight":1440,"isFeatured":true,"alt":"Banner with the Angular logo saying “v19 is now available”"}},"type":"Tag"},{"slug":"code-architecture","name":"Code Architecture","postCount":104,"metadata":{"postCount":104,"coverImage":{"id":"1*DYGhQN74SgthLOuXcCGuIw.png","originalWidth":1926,"originalHeight":1098,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/","alts":[],"httpStatus":200},{"url":"https://zod.dev/","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Race_condition#In_software","alts":[],"httpStatus":200},{"url":"https://www.typescriptlang.org/docs/handbook/unions-and-intersections.html","alts":[],"httpStatus":200},{"url":"https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Single-event_upset","alts":[],"httpStatus":200},{"url":"https://developer.mozilla.org/en-US/docs/Glossary/Immutable","alts":[],"httpStatus":200},{"url":"https://www.ithaka.org/careers/?gh_src=1ba9e9eb5us","alts":[],"httpStatus":200},{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set","alts":[],"httpStatus":200},{"url":"https://github.com/hapijs/joi","alts":[],"httpStatus":200},{"url":"https://github.com/jquense/yup","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1711655185317},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":3,"sectionCount":2,"readingList":0,"topics":[{"topicId":"63c6f1f93ee","slug":"javascript","createdAt":1493945704961,"deletedAt":0,"image":{"id":"1*5UyyDJ1ESD11yQNd1UVAaQ@2x.jpeg","originalWidth":5472,"originalHeight":3648},"name":"Javascript","description":"An ode to code.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Javascript News and Articles — Medium","type":"Topic"},{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"the-power-of-early-validation-and-zod","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"the-power-of-early-validation-and-zod-537369c68250","previewContent":{"bodyModel":{"paragraphs":[{"name":"5575","type":3,"text":"The Power of Early Validation (and Zod)","markups":[],"alignment":1},{"name":"fb80","type":1,"text":"At ITHAKA, engineers have freedom to look into new libraries and tools. Sure, we have core technologies that probably won’t change for a long time, such as Django and Webpack, but there is a lot of space to find new things.","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"At ITHAKA, engineers have freedom to look into new libraries and tools. Sure, we have core technologies that probably won’t change for a…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ccdac8851d0b","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"5575","type":3,"text":"The Power of Early Validation (and Zod)","markups":[]},{"name":"fb80","type":1,"text":"At ITHAKA, engineers have freedom to look into new libraries and tools. Sure, we have core technologies that probably won’t change for a long time, such as Django and Webpack, but there is a lot of space to find new things.","markups":[]},{"name":"2ddc","type":1,"text":"The obvious benefit to this freedom is finding technologies…","markups":[]}],"sections":[{"name":"217d","startIndex":0}]},"isFullContent":false,"subtitle":"At ITHAKA, engineers have freedom to look into new libraries and tools. Sure, we have core technologies that probably won’t change for a…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"4e92e6b6dbbd":{"id":"4e92e6b6dbbd","versionId":"ff402079840b","creatorId":"293e5115117e","homeCollectionId":"ccdac8851d0b","title":"One Giant Leap: Upgrading EKS v1.25 to v1.28 in a single bound","detectedLanguage":"en","latestVersion":"ff402079840b","latestPublishedVersion":"ff402079840b","hasUnpublishedEdits":false,"latestRev":53,"createdAt":1709246459488,"updatedAt":1709353189529,"acceptedAt":0,"firstPublishedAt":1709258296525,"latestPublishedAt":1709324375206,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"At ITHAKA, we use kubernetes as a container orchestration platform to deploy microservices to serve our JSTOR users. We started our…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*Fh1lOCIhzvvs6VZm6pe47Q.png","filter":"","backgroundSize":"","originalWidth":503,"originalHeight":423,"strategy":"resample","height":0,"width":0},"wordCount":788,"imageCount":2,"readingTime":3.3569182389937104,"subtitle":"At ITHAKA, we use kubernetes as a container orchestration platform to deploy microservices to serve our JSTOR users. We started our…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":7,"isBookmarked":false,"tags":[{"slug":"kubernetes-cluster","name":"Kubernetes Cluster","postCount":3607,"metadata":{"postCount":3607,"coverImage":{"id":"0*rrAU-iCu5Y-yute_.png","originalWidth":1101,"originalHeight":751,"isFeatured":true}},"type":"Tag"},{"slug":"upgrades-and-migrations","name":"Upgrades And Migrations","postCount":99,"metadata":{"postCount":99,"coverImage":{"id":"1*vY8cPuZO6b3jYqnNojv96A.png","originalWidth":1760,"originalHeight":361,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://aws.amazon.com/blogs/containers/amazon-eks-extended-support-for-kubernetes-versions-pricing/","alts":[],"httpStatus":200},{"url":"https://kubernetes.io/","alts":[],"httpStatus":200},{"url":"https://www.jstor.org/","alts":[],"httpStatus":200},{"url":"https://kubernetes.io/releases/version-skew-policy/","alts":[],"httpStatus":200},{"url":"https://www.ithaka.org/careers/?gh_src=1ba9e9eb5us","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1709375560581},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":18,"sectionCount":2,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"one-giant-leap-upgrading-eks-v1-25-to-v1-28-in-a-single-bound","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"one-giant-leap-upgrading-eks-v1-25-to-v1-28-in-a-single-bound-4e92e6b6dbbd","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*Fh1lOCIhzvvs6VZm6pe47Q.png","originalWidth":503,"originalHeight":423,"isFeatured":true}},{"name":"9bdc","type":13,"text":"One Giant Leap: Upgrading EKS v1.25 to v1.28 in a single bound","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"At ITHAKA, we use kubernetes as a container orchestration platform to deploy microservices to serve our JSTOR users. We started our…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ccdac8851d0b","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"9bdc","type":13,"text":"One Giant Leap: Upgrading EKS v1.25 to v1.28 in a single bound","markups":[]},{"name":"28e5","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*Fh1lOCIhzvvs6VZm6pe47Q.png","originalWidth":503,"originalHeight":423,"isFeatured":true}},{"name":"a422","type":1,"text":"At ITHAKA, we use kubernetes as a container orchestration platform to deploy microservices to serve our JSTOR users. We started our kubernetes journey in 2018 after AWS released it as a managed service (EKS) by creating our first cluster with v1.10. Since then our cluster footprint has increased to 11…","markups":[{"type":3,"start":18,"end":28,"href":"https://kubernetes.io/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":104,"end":109,"href":"https://www.jstor.org/","title":"","rel":"noopener","anchorType":0}]}],"sections":[{"name":"41a0","startIndex":0}]},"isFullContent":false,"subtitle":"At ITHAKA, we use kubernetes as a container orchestration platform to deploy microservices to serve our JSTOR users. We started our…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"7c2767794ba5":{"id":"7c2767794ba5","versionId":"e573dea575a2","creatorId":"82e108df73a8","homeCollectionId":"ccdac8851d0b","title":"Accessibility improvements to upgrade an existing feature","detectedLanguage":"en","latestVersion":"e573dea575a2","latestPublishedVersion":"e573dea575a2","hasUnpublishedEdits":false,"latestRev":193,"createdAt":1706030209944,"updatedAt":1706290527498,"acceptedAt":0,"firstPublishedAt":1706035539293,"latestPublishedAt":1706290497957,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Custom ordering in the JSTOR Workspace","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*FgzDy2NTThegiaNO4ysA6w.png","filter":"","backgroundSize":"","originalWidth":3456,"originalHeight":2160,"strategy":"resample","height":0,"width":0},"wordCount":1079,"imageCount":2,"readingTime":4.455031446540881,"subtitle":"Custom ordering in the JSTOR Workspace","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":2,"isBookmarked":false,"tags":[{"slug":"accessibility","name":"Accessibility","postCount":19458,"metadata":{"postCount":19458,"coverImage":{"id":"1*LKXwiNzwmHawDl0mCZsImQ.jpeg","originalWidth":2560,"originalHeight":1440,"isFeatured":true}},"type":"Tag"},{"slug":"user-experience","name":"User Experience","postCount":71474,"metadata":{"postCount":71474,"coverImage":{"id":"1*bAGe6RSF-UgyR7q06Fl53g.png","originalWidth":3369,"originalHeight":2381,"isFeatured":true}},"type":"Tag"},{"slug":"product-design","name":"Product Design","postCount":65970,"metadata":{"postCount":65970,"coverImage":{"id":"1*nBHTtiF40iOi4FckMkckXw.jpeg","originalWidth":1200,"originalHeight":549,"isFeatured":true,"alt":"A sketch in blue ink of a robotic finger touching a human finger"}},"type":"Tag"},{"slug":"front-end-development","name":"Front End Development","postCount":50210,"metadata":{"postCount":50210,"coverImage":{"id":"0*BTaIEoMZlgOipidp","originalWidth":6016,"originalHeight":4016,"isFeatured":true,"unsplashPhotoId":"qDY9ahp0Mto"}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":326502,"metadata":{"postCount":326502,"coverImage":{"id":"1*t5dwn8IabnCdEpoO-6Toog.png","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"alt":"Kubernetes"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":2,"sectionCount":4,"readingList":0,"topics":[{"topicId":"55321ac40456","slug":"design","createdAt":1536181929758,"deletedAt":0,"image":{"id":"1*1aLu20aptPeUTDg_E8KtmA@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Design","description":"Below the surface.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Design Articles and News — Medium","type":"Topic"}]},"coverless":true,"slug":"accessibility-improvements-to-upgrade-an-existing-feature","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"accessibility-improvements-to-upgrade-an-existing-feature-7c2767794ba5","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*FgzDy2NTThegiaNO4ysA6w.png","originalWidth":3456,"originalHeight":2160,"isFeatured":true,"alt":"A screenshot of a Workspace folder on JSTOR. The folder is sorted with a custom order and has “reorder item” icon buttons on each item in the folder."}},{"name":"88a4","type":3,"text":"Accessibility improvements to upgrade an existing feature","markups":[],"alignment":1},{"name":"c21d","type":13,"text":"Custom ordering in the JSTOR Workspace","markups":[{"type":1,"start":0,"end":38}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Custom ordering in the JSTOR Workspace"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ccdac8851d0b","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"88a4","type":3,"text":"Accessibility improvements to upgrade an existing feature","markups":[]},{"name":"c21d","type":13,"text":"Custom ordering in the JSTOR Workspace","markups":[{"type":1,"start":0,"end":38}]},{"name":"419b","type":4,"text":"Improved, accessible custom ordering experience in the JSTOR Workspace","markups":[],"layout":1,"metadata":{"id":"1*FgzDy2NTThegiaNO4ysA6w.png","originalWidth":3456,"originalHeight":2160,"isFeatured":true,"alt":"A screenshot of a Workspace folder on JSTOR. The folder is sorted with a custom order and has “reorder item” icon buttons on each item in the folder."}},{"name":"315b","type":1,"text":"On JSTOR, a cloud-based digital library with millions of texts and images, the Workspace is a place where users can save and organize content into folders for later review, among other things. As a senior product designer, my goal is to make the Workspace and other aspects of the JSTOR…","markups":[]}],"sections":[{"name":"7285","startIndex":0}]},"isFullContent":false,"subtitle":"Custom ordering in the JSTOR Workspace"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"22499d75484":{"id":"22499d75484","versionId":"920c7e861f72","creatorId":"46a217aa0bb9","homeCollectionId":"ccdac8851d0b","title":"PALS Workshop: The Value of In-Person Collaboration","detectedLanguage":"en","latestVersion":"920c7e861f72","latestPublishedVersion":"920c7e861f72","hasUnpublishedEdits":false,"latestRev":308,"createdAt":1693228865682,"updatedAt":1693286497798,"acceptedAt":0,"firstPublishedAt":1693229361824,"latestPublishedAt":1693229361824,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"By David Corneail","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*Q9d23KPbDESbQ0dS","filter":"","backgroundSize":"","originalWidth":800,"originalHeight":600,"strategy":"resample","height":0,"width":0},"wordCount":1751,"imageCount":3,"readingTime":7.157547169811321,"subtitle":"By David Corneail","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":4,"isBookmarked":false,"tags":[{"slug":"teamwork","name":"Teamwork","postCount":32673,"metadata":{"postCount":32673,"coverImage":{"id":"1*zSSdjaFinA3dTjzZIirC4A.jpeg","originalWidth":519,"originalHeight":519}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":2703903,"metadata":{"postCount":2703903,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"},{"slug":"management","name":"Management","postCount":94190,"metadata":{"postCount":94190,"coverImage":{"id":"1*iA2gos6-vtBzDWtSNX16PQ.jpeg","originalWidth":2250,"originalHeight":1617,"isFeatured":true,"alt":"Staying or gowing away"}},"type":"Tag"},{"slug":"collaboration","name":"Collaboration","postCount":30800,"metadata":{"postCount":30800,"coverImage":{"id":"0*k7-B2AZ3OS-nFKW9","originalWidth":6000,"originalHeight":4000,"isFeatured":true,"alt":"A group of people in discussion","unsplashPhotoId":"e6n7uoEnYbA"}},"type":"Tag"},{"slug":"engineering","name":"Engineering","postCount":56422,"metadata":{"postCount":56422,"coverImage":{"id":"1*Ztjsdd4j4skhPERiV-NB8w.jpeg","originalWidth":1000,"originalHeight":532,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"http://www.ithaka.org","alts":[],"httpStatus":200},{"url":"https://www.ithaka.org/working-here/","alts":[],"httpStatus":200},{"url":"https://getdx.com/","alts":[],"httpStatus":200},{"url":"https://www.ithaka.org/careers/?gh_src=1ba9e9eb5us","alts":[],"httpStatus":200},{"url":"https://designthinking.ideo.com/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1693229362474},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":6,"sectionCount":1,"readingList":0,"topics":[{"topicId":"55321ac40456","slug":"design","createdAt":1536181929758,"deletedAt":0,"image":{"id":"1*1aLu20aptPeUTDg_E8KtmA@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Design","description":"Below the surface.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Design Articles and News — Medium","type":"Topic"},{"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":"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":"pals-workshop-the-value-of-in-person-collaboration","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"pals-workshop-the-value-of-in-person-collaboration-22499d75484","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*Q9d23KPbDESbQ0dS","originalWidth":800,"originalHeight":600,"isFeatured":true}},{"name":"8825","type":3,"text":"PALS Workshop: The Value of In-Person Collaboration","markups":[],"alignment":1},{"name":"fbab","type":1,"text":"By David Corneail","markups":[],"alignment":1},{"name":"4bc6","type":3,"text":"How remote product…","markups":[{"type":1,"start":0,"end":18}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"By David Corneail"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ccdac8851d0b","isNewsletter":false,"newsletterId":"5c52fdf41787","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"8825","type":3,"text":"PALS Workshop: The Value of In-Person Collaboration","markups":[]},{"name":"fbab","type":1,"text":"By David Corneail","markups":[]},{"name":"4bc6","type":3,"text":"How remote product teams can leverage in-person workshops to quickly rally around a new problem space","markups":[{"type":1,"start":0,"end":101}]},{"name":"da50","type":4,"text":"A few members of the PALS team in our dedicated workshop space","markups":[],"layout":1,"metadata":{"id":"0*Q9d23KPbDESbQ0dS","originalWidth":800,"originalHeight":600,"isFeatured":true}},{"name":"e868","type":1,"text":"Like many organizations, ITHAKA transitioned to a remote-first work culture during the pandemic. Many of our new hires since then have been remote, and while we still hold physical offices in New York and Ann Arbor, teams are generally spread out across the country to varying degrees…","markups":[]}],"sections":[{"name":"d9c7","startIndex":0}]},"isFullContent":false,"subtitle":"By David Corneail"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"dd3808fe4fa9":{"id":"dd3808fe4fa9","versionId":"4d69a02957f0","creatorId":"46a217aa0bb9","homeCollectionId":"ccdac8851d0b","title":"Thoughts on My First Year as a Remote Software Engineer at ITHAKA","detectedLanguage":"en","latestVersion":"4d69a02957f0","latestPublishedVersion":"4d69a02957f0","hasUnpublishedEdits":false,"latestRev":57,"createdAt":1692391196767,"updatedAt":1692418630488,"acceptedAt":0,"firstPublishedAt":1692391410669,"latestPublishedAt":1692391410669,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"By Brent Swisher","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*VTikzbAq_dAG2DbvsntcVA.jpeg","filter":"","backgroundSize":"","originalWidth":5760,"originalHeight":3840,"strategy":"resample","height":0,"width":0},"wordCount":1228,"imageCount":2,"readingTime":5.017295597484277,"subtitle":"By Brent Swisher","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":6,"isBookmarked":false,"tags":[{"slug":"remote-working","name":"Remote Working","postCount":46198,"metadata":{"postCount":46198,"coverImage":{"id":"1*q4OjFQZ_CZAqqwErhwjr2w.jpeg","originalWidth":981,"originalHeight":939}},"type":"Tag"},{"slug":"engineering-culture","name":"Engineering Culture","postCount":1164,"metadata":{"postCount":1164,"coverImage":{"id":"1*jgTWGCMvPv24tsoPi-nMfg.png","originalWidth":870,"originalHeight":461,"isFeatured":true}},"type":"Tag"},{"slug":"engineering","name":"Engineering","postCount":56422,"metadata":{"postCount":56422,"coverImage":{"id":"1*Ztjsdd4j4skhPERiV-NB8w.jpeg","originalWidth":1000,"originalHeight":532,"isFeatured":true}},"type":"Tag"},{"slug":"engineering-mangement","name":"Engineering Mangement","postCount":4882,"metadata":{"postCount":4882,"coverImage":{"id":"1*hrjJ3SqpTiGLQxHHzsaBUQ.jpeg","originalWidth":1800,"originalHeight":1169,"isFeatured":true}},"type":"Tag"},{"slug":"tech-jobs","name":"Tech Jobs","postCount":1148,"metadata":{"postCount":1148,"coverImage":{"id":"1*lAuIpLVBA2Ynlj2GPvbTjw.jpeg","originalWidth":832,"originalHeight":448,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://imgs.xkcd.com/comics/compiling.png","alts":[],"httpStatus":200},{"url":"https://www.ithaka.org/careers/?gh_src=1ba9e9eb5us","alts":[],"httpStatus":200},{"url":"https://www.donut.com/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1692391412508},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":9,"sectionCount":1,"readingList":0,"topics":[{"topicId":"af49579e220a","slug":"work","createdAt":1487918186996,"deletedAt":0,"image":{"id":"1*knbAt5qCQCelKx0BDkzZpQ@2x.jpeg","originalWidth":5018,"originalHeight":3049},"name":"Work","description":"The meaning behind the meetings.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Work Life: Articles and News — Medium","type":"Topic"}]},"coverless":true,"slug":"thoughts-on-my-first-year-as-a-remote-software-engineer-at-ithaka","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"thoughts-on-my-first-year-as-a-remote-software-engineer-at-ithaka-dd3808fe4fa9","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*VTikzbAq_dAG2DbvsntcVA.jpeg","originalWidth":5760,"originalHeight":3840,"isFeatured":true}},{"name":"3080","type":3,"text":"Thoughts on My First Year as a Remote Software Engineer at ITHAKA","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"By Brent Swisher"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"ccdac8851d0b","isNewsletter":false,"newsletterId":"3cb59ee25fe4","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"3080","type":3,"text":"Thoughts on My First Year as a Remote Software Engineer at ITHAKA","markups":[]},{"name":"9296","type":1,"text":"By Brent Swisher","markups":[]},{"name":"d694","type":4,"text":"Much of ITHAKA’s workforce has remained hybrid or remote. Interested in what it might be…","markups":[],"layout":1,"metadata":{"id":"1*VTikzbAq_dAG2DbvsntcVA.jpeg","originalWidth":5760,"originalHeight":3840,"isFeatured":true}},{"name":"ce9e","type":1,"text":"As I went to bed the night of September 18, 2022, I had a weird realization. In the morning I would be getting up at the same time, eating my usual breakfast, and then walking downstairs to my office — just like any other day. But at…","markups":[]}],"sections":[{"name":"b953","startIndex":0}]},"isFullContent":false,"subtitle":"By Brent Swisher"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"}}},"paging":{"path":"/_/api/collections/ccdac8851d0b/stream","next":{"to":"1692391410669","ignoredIds":[],"page":4}},"collection":{"id":"ccdac8851d0b","name":"ITHAKA Tech","slug":"ithaka-tech","tags":["TECHNOLOGY","SOFTWARE DEVELOPMENT","INNOVATION","PRODUCT DEVELOPMENT","WOMEN IN TECH"],"creatorId":"189f2f4b2a6b","description":"How we create services and tools to inspire and support learning today and for the future","shortDescription":"How we create services and tools to inspire and support…","image":{"imageId":"1*JUL5st-N0tn2jw8as1MBcw.png","filter":"","backgroundSize":"","originalWidth":1000,"originalHeight":1000,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":307,"activeAt":1727369524868},"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*oRNIg_5aAvcFZeZG8okFTw.png","filter":"","backgroundSize":"","originalWidth":600,"originalHeight":72,"strategy":"resample","height":0,"width":0},"twitterUsername":"ITHAKA_org","publicEmail":"hello@ithaka.org","collectionMastheadId":"616da1b9a011","sections":[{"type":2,"collectionHeaderMetadata":{"title":"ITHAKA Tech","description":"Improving access to knowledge and education","backgroundImage":{"id":"1*6URRFEzVNGb72IEbXsyv5w.png","originalWidth":3373,"originalHeight":411},"logoImage":{},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":1,"postIds":["d6c2ecb3f887"]}},{"type":3,"promoMetadata":{"sectionHeader":"","promoId":"aa3146cddb87"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":7,"postIds":["e85cf75abd1c","600f906c1bd7","537369c68250","4e92e6b6dbbd","7c2767794ba5","22499d75484","dd3808fe4fa9"]}}],"tintColor":"#FFFFFFFF","lightText":false,"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF848585","point":0},{"color":"#FF7B7B7B","point":0.1},{"color":"#FF717272","point":0.2},{"color":"#FF686868","point":0.3},{"color":"#FF5E5E5E","point":0.4},{"color":"#FF545454","point":0.5},{"color":"#FF494A4A","point":0.6},{"color":"#FF3F3F3F","point":0.7},{"color":"#FF333333","point":0.8},{"color":"#FF272727","point":0.9},{"color":"#FF1A1A1A","point":1}],"backgroundColor":"#FFFFFFFF"},"tintBackgroundSpectrum":{"colorPoints":[{"color":"#FFFFFFFF","point":0},{"color":"#FFECECEC","point":0.1},{"color":"#FFD9D9D9","point":0.2},{"color":"#FFC5C6C6","point":0.3},{"color":"#FFB1B1B1","point":0.4},{"color":"#FF9C9D9D","point":0.5},{"color":"#FF868787","point":0.6},{"color":"#FF6F7071","point":0.7},{"color":"#FF575959","point":0.8},{"color":"#FF3D3F3F","point":0.9},{"color":"#FF202122","point":1}],"backgroundColor":"#FFFFFFFF"},"highlightSpectrum":{"colorPoints":[{"color":"#FFF4F2F2","point":0},{"color":"#FFF2F0F0","point":0.1},{"color":"#FFF0EEEE","point":0.2},{"color":"#FFEEECEC","point":0.3},{"color":"#FFECEBEA","point":0.4},{"color":"#FFEAE9E8","point":0.5},{"color":"#FFE8E7E7","point":0.6},{"color":"#FFE6E5E5","point":0.7},{"color":"#FFE4E3E3","point":0.8},{"color":"#FFE2E1E1","point":0.9},{"color":"#FFE0DFDF","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FF9C9D9D","point":0},{"color":"#FFA5A5A5","point":0.1},{"color":"#FFADAEAE","point":0.2},{"color":"#FFB6B6B6","point":0.3},{"color":"#FFBFBEBE","point":0.4},{"color":"#FFC7C6C6","point":0.5},{"color":"#FFCFCECE","point":0.6},{"color":"#FFD8D6D6","point":0.7},{"color":"#FFE0DEDE","point":0.8},{"color":"#FFE8E6E6","point":0.9},{"color":"#FFF0EEED","point":1}],"backgroundColor":"#FF000000"}},"navItems":[{"type":1,"title":"Software Development","tagSlug":"software-development","url":"https://medium.com/ithaka-tech/tagged/software-development","source":"tagSlug"},{"type":1,"title":"Agile","tagSlug":"agile","url":"https://medium.com/ithaka-tech/tagged/agile","source":"tagSlug"}],"colorBehavior":1,"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"title":"ITHAKA Tech","description":"Improving access to knowledge and education","backgroundImage":{"id":"1*6URRFEzVNGb72IEbXsyv5w.png","originalWidth":3373,"originalHeight":411},"logoImage":{},"alignment":2,"layout":5},"subscriberCount":307,"tagline":"Improving access to knowledge and education","isOptedIntoAurora":false,"isCurationAllowedByDefault":false,"polarisCoverImage":{"imageId":"1*6URRFEzVNGb72IEbXsyv5w.png","filter":"","backgroundSize":"","originalWidth":3373,"originalHeight":411,"strategy":"resample","height":0,"width":0},"ptsQualifiedAt":1625480808193,"type":"Collection"},"header":{"title":"ITHAKA Tech","description":"Improving access to knowledge and education","backgroundImage":{"id":"1*6URRFEzVNGb72IEbXsyv5w.png","originalWidth":3373,"originalHeight":411},"logoImage":{},"alignment":2,"layout":5},"streamItems":[{"createdAt":1732681717666,"randomId":"a5c4aac88be3","section":{"items":[{"post":{"postId":"d6c2ecb3f887"},"itemType":"post"}],"layout":4},"itemType":"section","type":"StreamItem"},{"createdAt":1732681717666,"randomId":"9532a44d1721","section":{"items":[{"promo":{"promoId":"aa3146cddb87"},"itemType":"promo"}],"layout":2},"itemType":"section","type":"StreamItem"},{"createdAt":1732681717666,"randomId":"a51a8c0c1262","section":{"items":[{"post":{"postId":"e85cf75abd1c"},"itemType":"post"},{"post":{"postId":"600f906c1bd7"},"itemType":"post"},{"post":{"postId":"537369c68250"},"itemType":"post"},{"post":{"postId":"4e92e6b6dbbd"},"itemType":"post"},{"post":{"postId":"7c2767794ba5"},"itemType":"post"},{"post":{"postId":"22499d75484"},"itemType":"post"},{"post":{"postId":"dd3808fe4fa9"},"itemType":"post"}],"layout":4},"itemType":"section","type":"StreamItem"}]}) // ]]></script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8e8f5f5d8de95fe6',t:'MTczMjY4MTcxNy4wMDAwMDA='};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