{"version":3,"sources":["ShrinkingHeader/NavMenu/NavMenu.js","ShrinkingHeader/Header/img/350px-Headshot.jpg","ShrinkingHeader/Header/img/350px-Headshot.jpg.webp","ShrinkingHeader/Header/img/600px-Headshot.jpg","ShrinkingHeader/Header/img/600px-Headshot.jpg.webp","ShrinkingHeader/Header/img/270px-165px-square-PMR-Dev-no-border.jpg","ShrinkingHeader/Header/img/270px-165px-square-PMR-Dev-no-border.jpg.webp","ShrinkingHeader/Header/img/310px-190px-square-PMR-Dev-no-border.jpg","ShrinkingHeader/Header/img/310px-190px-square-PMR-Dev-no-border.jpg.webp","ShrinkingHeader/Header/img/360px-220px-square-PMR-Dev-no-border.jpg","ShrinkingHeader/Header/img/360px-220px-square-PMR-Dev-no-border.jpg.webp","ShrinkingHeader/Header/img/720px-440px-square-PMR-Dev-no-border.jpg","ShrinkingHeader/Header/img/720px-440px-square-PMR-Dev-no-border.jpg.webp","ShrinkingHeader/Header/img/1920px-480px-Scrub-Sky-Turbines-Hero-Large.jpg","ShrinkingHeader/Header/img/1920px-480px-Scrub-Sky-Turbines-Hero-Large.jpg.webp","ShrinkingHeader/Header/img/1440px-360px-Scrub-Sky-Turbines-Hero-Large.jpg","ShrinkingHeader/Header/img/1440px-360px-Scrub-Sky-Turbines-Hero-Large.jpg.webp","ShrinkingHeader/Header/img/960px-240px-Scrub-Sky-Turbines-Hero-Large.jpg","ShrinkingHeader/Header/img/960px-240px-Scrub-Sky-Turbines-Hero-Large.jpg.webp","ShrinkingHeader/Header/img/480px-120px-Scrub-Sky-Turbines-Hero-Large.jpg","ShrinkingHeader/Header/img/480px-120px-Scrub-Sky-Turbines-Hero-Large.jpg.webp","ShrinkingHeader/Header/Header.js","ShrinkingHeader/StickyHeader/StickyHeader.js","ShrinkingHeader/img/70px-Headshot.png","ShrinkingHeader/img/70px-Headshot.webp","ShrinkingHeader/img/130px-Headshot.png","ShrinkingHeader/img/130px-Headshot.webp","ShrinkingHeader/img/260px-Headshot.png","ShrinkingHeader/img/260px-Headshot.webp","ShrinkingHeader/img/180px-Sunset-Title-PMR-light-border.png","ShrinkingHeader/img/180px-Sunset-Title-PMR-light-border.webp","ShrinkingHeader/img/360px-Sunset-Title-PMR-light-border.png","ShrinkingHeader/img/360px-Sunset-Title-PMR-light-border.webp","ShrinkingHeader/img/720px-Sunset-Title-PMR-light-border.png","ShrinkingHeader/img/720px-Sunset-Title-PMR-light-border.webp","ShrinkingHeader/img/if-black-hamburger-icon2.png","ShrinkingHeader/img/if-black-hamburger-icon2.webp","ShrinkingHeader/ShrinkingHeader.js","HeroImage/HeroImage.js","ImageFocusAnimation/img/Kale-Closeup-100px.jpg","ImageFocusAnimation/img/Kale-Closeup-100px.jpg.webp","ImageFocusAnimation/img/Kale-Closeup-200px.jpg","ImageFocusAnimation/img/Kale-Closeup-200px.jpg.webp","ImageFocusAnimation/img/Kale-Closeup-400px.jpg","ImageFocusAnimation/img/Kale-Closeup-400px.jpg.webp","ImageFocusAnimation/img/Kale-Closeup-800px.jpg","ImageFocusAnimation/img/Kale-Closeup-800px.jpg.webp","ImageFocusAnimation/ImageFocusAnimation.js","CallToAction/CallToAction.js","HeroSources/img/Sunset-Edited-480px-147px.jpg","HeroSources/img/Sunset-Edited-480px-147px.jpg.webp","HeroSources/img/Sunset-Edited-960px-294px.jpg","HeroSources/img/Sunset-Edited-960px-294px.jpg.webp","HeroSources/img/Sunset-Edited-1920px-588px.jpg","HeroSources/img/Sunset-Edited-1920px-588px.jpg.webp","HeroSources/img/Sunset-Edited-3840px-1176px.jpg","HeroSources/img/Sunset-Edited-3840px-1176px.jpg.webp","HeroSources/NCSunsetSources.js","HeroSources/img/Sunset-Turbines-Narrow-480px-180px.jpg","HeroSources/img/Sunset-Turbines-Narrow-480px-180px.jpg.webp","HeroSources/img/Sunset-Turbines-Narrow-960px-360px.jpg","HeroSources/img/Sunset-Turbines-Narrow-960px-360px.jpg.webp","HeroSources/img/Sunset-Turbines-Narrow-1920px-720px.jpg","HeroSources/img/Sunset-Turbines-Narrow-1920px-720px.jpg.webp","HeroSources/img/Sunset-Turbines-Narrow-3840px-1440px-web.jpg","HeroSources/img/Sunset-Turbines-Narrow-3840px-1440px-web.jpg.webp","HeroSources/VibrantSkylineTurbinesSources.js","Introduction/img/PMR-Sunset-Round-100px.jpg","Introduction/img/PMR-Sunset-Round-100px.jpg.webp","Introduction/img/PMR-Sunset-Round-200px.jpg","Introduction/img/PMR-Sunset-Round-200px.jpg.webp","Introduction/img/PMR-Sunset-Round-350px.jpg","Introduction/img/PMR-Sunset-Round-350px.jpg.webp","Introduction/img/PMR-Sunset-Round-700px.jpg","Introduction/img/PMR-Sunset-Round-700px.jpg.webp","Introduction/img/HTMLCircularBackground-light-sepia-100px.jpg","Introduction/img/HTMLCircularBackground-light-sepia-100px.jpg.webp","Introduction/img/HTMLCircularBackground-light-sepia-200px.jpg","Introduction/img/HTMLCircularBackground-light-sepia-200px.jpg.webp","Introduction/img/HTMLCircularBackground-light-sepia-350px.jpg","Introduction/img/HTMLCircularBackground-light-sepia-350px.jpg.webp","Introduction/img/HTMLCircularBackground-light-sepia-enlarged-700px.jpg","Introduction/img/HTMLCircularBackground-light-sepia-enlarged-700px.jpg.webp","Introduction/img/JSCircularBackground-light-sepia-100px.jpg","Introduction/img/JSCircularBackground-light-sepia-100px.jpg.webp","Introduction/img/JSCircularBackground-light-sepia-200px.jpg","Introduction/img/JSCircularBackground-light-sepia-200px.jpg.webp","Introduction/img/JSCircularBackground-light-sepia-350px.jpg","Introduction/img/JSCircularBackground-light-sepia-350px.jpg.webp","Introduction/img/JSCircularBackground-light-sepia-enlarged-700px.jpg","Introduction/img/JSCircularBackground-light-sepia-enlarged-700px.jpg.webp","Introduction/img/CSSCircularBackground-light-sepia-100px.jpg","Introduction/img/CSSCircularBackground-light-sepia-100px.jpg.webp","Introduction/img/CSSCircularBackground-light-sepia-200px.jpg","Introduction/img/CSSCircularBackground-light-sepia-200px.jpg.webp","Introduction/img/CSSCircularBackground-light-sepia-350px.jpg","Introduction/img/CSSCircularBackground-light-sepia-350px.jpg.webp","Introduction/img/CSSCircularBackground-light-sepia-enlarged-700px.jpg","Introduction/img/CSSCircularBackground-light-sepia-enlarged-700px.jpg.webp","Introduction/Introduction.js","HeroSources/img/Mirrored-Glass-Truck-Hero-480px-160px.jpg","HeroSources/img/Mirrored-Glass-Truck-Hero-480px-160px.jpg.webp","HeroSources/img/Mirrored-Glass-Truck-Hero-960px-320px.jpg","HeroSources/img/Mirrored-Glass-Truck-Hero-960px-320px.jpg.webp","HeroSources/img/Mirrored-Glass-Truck-Hero-1920px-640px.jpg","HeroSources/img/Mirrored-Glass-Truck-Hero-1920px-640px.jpg.webp","HeroSources/MirroredGlassTruckSources.js","AIML/img/Medium-branded-DeepRacer-GUI-bordered-350px-224px.jpg","AIML/img/Medium-branded-DeepRacer-GUI-bordered-350px-224px.jpg.webp","AIML/img/Medium-branded-DeepRacer-GUI-bordered-450px-288px.jpg","AIML/img/Medium-branded-DeepRacer-GUI-bordered-450px-288px.jpg.webp","AIML/img/Medium-branded-DeepRacer-GUI-bordered-945px-604px.jpg","AIML/img/Medium-branded-DeepRacer-GUI-bordered-945px-604px.jpg.webp","AIML/AIML.js","HeroSources/img/Trillium-480px-180px.jpg","HeroSources/img/Trillium-480px-180px.jpg.webp","HeroSources/img/Trillium-960px-360px.jpg","HeroSources/img/Trillium-960px-360px.jpg.webp","HeroSources/img/Trillium-1920px-720px.jpg","HeroSources/img/Trillium-1920px-720px.jpg.webp","HeroSources/img/Trillium-3840px-1440px.jpg","HeroSources/img/Trillium-3840px-1440px.jpg.webp","HeroSources/TrilliumSources.js","Projects/img/Turtlr-gameplay-screenshot-350px-233px.jpg","Projects/img/Turtlr-gameplay-screenshot-350px-233px.jpg.webp","Projects/img/Turtlr-gameplay-screenshot-450px-300px.jpg","Projects/img/Turtlr-gameplay-screenshot-450px-300px.jpg.webp","Projects/img/Turtlr-gameplay-screenshot-900px-600px.jpg","Projects/img/Turtlr-gameplay-screenshot-900px-600px.jpg.webp","Projects/Projects.js","Footer/img/In-White-72.png","Footer/img/In-White-72.webp","Footer/img/In-White-128.png","Footer/img/In-White-128.webp","Footer/img/GitHub-Mark-Light-64px.png","Footer/img/GitHub-Mark-Light-64px.webp","Footer/img/GitHub-Mark-Light-120px-plus.png","Footer/img/GitHub-Mark-Light-120px-plus.webp","Footer/img/udacity-U-logo-60.png","Footer/img/udacity-U-logo-60.webp","Footer/img/udacity-U-logo-120.png","Footer/img/udacity-U-logo-120.webp","Footer/Footer.js","App.js","serviceWorker.js","index.js"],"names":["NavMenu","scrollWithOffset","el","offset","elementPosition","offsetTop","window","scroll","top","left","behavior","this","props","navIsOpen","handleNavClick","scrollPositionY","bottomOfHome","bottomOfAbout","bottomOfAIML","windowWidth","heightOfStickyHeader","className","smooth","title","to","onClick","innerHeight","pageYOffset","document","body","offsetHeight","Component","Header","handleResize","bottomOfStationaryHeader","ReactDOM","findDOMNode","getBoundingClientRect","height","updateStationaryHeader","hamburgerButton","bottomOfClasses","smallStickyLogo","mediumStickyLogo","largeStickyLogo","smallStickyTitle","mediumStickyTitle","largeStickyTitle","smallStickyLogoWebp","mediumStickyLogoWebp","largeStickyLogoWebp","smallStickyTitleWebp","mediumStickyTitleWebp","largeStickyTitleWebp","heroAltText","id","media","srcSet","xSmallHeroImageWebp","type","smallHeroImageWebp","mediumHeroImageWebp","largeHeroImageWebp","xSmallHeroImage","smallHeroImage","mediumHeroImage","largeHeroImage","src","sizes","alt","activeClassName","highResLogoWebp","logoWebp","highResLogo","logo","smallTitleWebp","highResTitleWebp","largeTitleWebp","mediumTitleWebp","smallTitle","highResTitle","largeTitle","mediumTitle","tabIndex","debounce","addEventListener","removeEventListener","StickyHeader","heightOfHeader","updateHeightOfStickyHeader","bottomOfProjects","ShrinkingHeader","hamburgerButtonWebp","HeroImage","pageName","sectionId","children","ImageFocusAnimation","startAnimation","setTimeout","updateRepeatImageFocusAnimation","bind","state","imageStatus","setState","imagesFromElement","querySelectorAll","i","style","minHeight","innerWidth","kaleImageSrcSet","smallKaleImage","mediumKaleImage","largeKaleImage","highResKaleImage","repeatImageFocusAnimation","highResKaleImageWebp","largeKaleImageWebp","mediumKaleImageWebp","smallKaleImageWebp","onLoad","handleImageLoad","onError","handleImageError","CallToAction","updateHome","Math","round","handleScroll","heightOfHome","href","rel","target","NCSunsetSources","fallback","smallNCSunset","heroImageSrcSet","mediumNCSunset","largeNCSunset","highResNCSunset","heroImageAlt","smallNCSunsetWebp","highResNCSunsetWebp","largeNCSunsetWebp","mediumNCSunsetWebp","VibrantSkylineTurbinesSources","smallVibrantSkylineTurbines","mediumVibrantSkylineTurbines","largeVibrantSkylineTurbines","highResVibrantSkylineTurbines","smallVibrantSkylineTurbinesWebp","highResVibrantSkylineTurbinesWebp","largeVibrantSkylineTurbinesWebp","mediumVibrantSkylineTurbinesWebp","Introduction","topOfAbout","updateAbout","heightOfWindow","topOfFlipCards","getElementsByClassName","heightOfFlipCards","querySelector","triggerHeight","updateTriggerForCardFlipAnimation","widthOfFlipCard","width","updateFlipCardDimensions","triggerForCardFlipAnimation","updateRepeatCardFlipAnimation","bottomAbout","imageCount","repeatCardFlipAnimation","highResPMRLogoWebp","largePMRLogoWebp","mediumPMRLogoWebp","smallPMRLogoWebp","highResPMRLogo","largePMRLogo","mediumPMRLogo","smallPMRLogo","highResRedHTMLWebp","largeRedHTMLWebp","mediumRedHTMLWebp","smallRedHTMLWebp","highResRedHTML","largeRedHTML","mediumRedHTML","smallRedHTML","highResGreenJSWebp","largeGreenJSWebp","mediumGreenJSWebp","smallGreenJSWebp","highResGreenJS","largeGreenJS","mediumGreenJS","smallGreenJS","highResBlueCSSWebp","largeBlueCSSWebp","mediumBlueCSSWebp","smallBlueCSSWebp","highResBlueCSS","largeBlueCSS","mediumBlueCSS","smallBlueCSS","MirroredGlassTruckSources","smallMirroredGlassTruck","mediumMirroredGlassTruck","largeMirroredGlassTruck","smallMirroredGlassTruckWebp","largeMirroredGlassTruckWebp","mediumMirroredGlassTruckWebp","AIML","updateAIML","smallDeepRacerMediumImageWebp","largeDeepRacerMediumImageWebp","mediumDeepRacerMediumImageWebp","smallDeepRacerMediumImage","largeDeepRacerMediumImage","mediumDeepRacerMediumImage","TrilliumSources","smallTrillium","mediumTrillium","largeTrillium","highResTrillium","smallTrilliumWebp","highResTrilliumWebp","largeTrilliumWebp","mediumTrilliumWebp","Projects","updateProjects","smallTurtlrImageWebp","largeTurtlrImageWebp","mediumTurtlrImageWebp","smallTurtlrImage","largeTurtlrImage","mediumTurtlrImage","Footer","Date","getFullYear","showCurrentYear","udacityLogo","udacityLogoLarge","udacityLogoWebp","udacityLogoLargeWebp","linkedInLogo","linkedInLogoLarge","linkedInLogoWebp","linkedInLogoLargeWebp","gitHubLogo","gitHubLogoLarge","gitHubLogoWebp","gitHubLogoLargeWebp","App","func","wait","timeout","args","clearTimeout","apply","scrollY","bottom","updateImageFocusAnimation","trigger_height","triggerForImageFocusAnimation","bool","Boolean","location","hostname","match","render","getElementById","navigator","serviceWorker","ready","then","registration","unregister"],"mappings":"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","file":"static/js/main.6a77ac70.chunk.js","sourcesContent":["import React, { Component } from 'react'\nimport { NavHashLink as NavLink } from 'react-router-hash-link';\n\nimport './NavMenu.scss'\n\nclass NavMenu extends Component {\n\n scrollWithOffset = (el, offset) => {\n const elementPosition = el.offsetTop - offset;\n window.scroll({\n top: elementPosition,\n left: 0,\n behavior: \"smooth\"\n });\n }\n\n render() {\n\n //bottomOfProjects for later\n const {\n navIsOpen, handleNavClick, scrollPositionY, bottomOfHome, bottomOfAbout,\n bottomOfAIML, windowWidth, heightOfStickyHeader\n } = this.props\n\n return (\n
\n \n 600 ? \"page-overlay hide-overlay\"\n : navIsOpen\n ? \"page-overlay show-overlay\"\n : \"page-overlay hide-overlay\"}\n onClick={() => handleNavClick()}>\n
\n \n )\n }\n}\n\nexport default NavMenu\n","export default __webpack_public_path__ + \"static/media/350px-Headshot.f6de0f5b.jpg\";","export default __webpack_public_path__ + \"static/media/350px-Headshot.jpg.9682aee3.webp\";","export default __webpack_public_path__ + \"static/media/600px-Headshot.62e40977.jpg\";","export default __webpack_public_path__ + \"static/media/600px-Headshot.jpg.9424c3e0.webp\";","export default __webpack_public_path__ + \"static/media/270px-165px-square-PMR-Dev-no-border.86ab0e97.jpg\";","export default __webpack_public_path__ + \"static/media/270px-165px-square-PMR-Dev-no-border.jpg.38a7eaad.webp\";","export default __webpack_public_path__ + \"static/media/310px-190px-square-PMR-Dev-no-border.baea9d1a.jpg\";","export default __webpack_public_path__ + \"static/media/310px-190px-square-PMR-Dev-no-border.jpg.e81783ff.webp\";","export default __webpack_public_path__ + \"static/media/360px-220px-square-PMR-Dev-no-border.17fba61d.jpg\";","export default __webpack_public_path__ + \"static/media/360px-220px-square-PMR-Dev-no-border.jpg.194c6613.webp\";","export default __webpack_public_path__ + \"static/media/720px-440px-square-PMR-Dev-no-border.1479d627.jpg\";","export default __webpack_public_path__ + \"static/media/720px-440px-square-PMR-Dev-no-border.jpg.be3f8aea.webp\";","export default __webpack_public_path__ + \"static/media/1920px-480px-Scrub-Sky-Turbines-Hero-Large.a2097174.jpg\";","export default __webpack_public_path__ + \"static/media/1920px-480px-Scrub-Sky-Turbines-Hero-Large.jpg.9fd87dcf.webp\";","export default __webpack_public_path__ + \"static/media/1440px-360px-Scrub-Sky-Turbines-Hero-Large.d79d7093.jpg\";","export default __webpack_public_path__ + \"static/media/1440px-360px-Scrub-Sky-Turbines-Hero-Large.jpg.9813ac12.webp\";","export default __webpack_public_path__ + \"static/media/960px-240px-Scrub-Sky-Turbines-Hero-Large.70442b06.jpg\";","export default __webpack_public_path__ + \"static/media/960px-240px-Scrub-Sky-Turbines-Hero-Large.jpg.e8cd8237.webp\";","export default __webpack_public_path__ + \"static/media/480px-120px-Scrub-Sky-Turbines-Hero-Large.71317c12.jpg\";","export default __webpack_public_path__ + \"static/media/480px-120px-Scrub-Sky-Turbines-Hero-Large.jpg.f447c845.webp\";","import React, { Component } from 'react';\nimport ReactDOM from 'react-dom'\nimport { NavHashLink as NavLink } from 'react-router-hash-link';\n\nimport NavMenu from '../NavMenu/NavMenu'\n\nimport './Header.scss';\n\n/* *\n * Images *\n * */\n//Logo src set\nimport logo from './img/350px-Headshot.jpg'\nimport logoWebp from './img/350px-Headshot.jpg.webp'\nimport highResLogo from './img/600px-Headshot.jpg'\nimport highResLogoWebp from './img/600px-Headshot.jpg.webp'\n\n//Title src set\nimport smallTitle from './img/270px-165px-square-PMR-Dev-no-border.jpg'\nimport smallTitleWebp from './img/270px-165px-square-PMR-Dev-no-border.jpg.webp'\nimport mediumTitle from './img/310px-190px-square-PMR-Dev-no-border.jpg'\nimport mediumTitleWebp from './img/310px-190px-square-PMR-Dev-no-border.jpg.webp'\nimport largeTitle from './img/360px-220px-square-PMR-Dev-no-border.jpg'\nimport largeTitleWebp from './img/360px-220px-square-PMR-Dev-no-border.jpg.webp'\nimport highResTitle from './img/720px-440px-square-PMR-Dev-no-border.jpg'\nimport highResTitleWebp from './img/720px-440px-square-PMR-Dev-no-border.jpg.webp'\n\n//Hero Image src set\nimport largeHeroImage from './img/1920px-480px-Scrub-Sky-Turbines-Hero-Large.jpg'\nimport largeHeroImageWebp from './img/1920px-480px-Scrub-Sky-Turbines-Hero-Large.jpg.webp'\nimport mediumHeroImage from './img/1440px-360px-Scrub-Sky-Turbines-Hero-Large.jpg'\nimport mediumHeroImageWebp from './img/1440px-360px-Scrub-Sky-Turbines-Hero-Large.jpg.webp'\nimport smallHeroImage from './img/960px-240px-Scrub-Sky-Turbines-Hero-Large.jpg'\nimport smallHeroImageWebp from './img/960px-240px-Scrub-Sky-Turbines-Hero-Large.jpg.webp'\nimport xSmallHeroImage from './img/480px-120px-Scrub-Sky-Turbines-Hero-Large.jpg'\nimport xSmallHeroImageWebp from './img/480px-120px-Scrub-Sky-Turbines-Hero-Large.jpg.webp'\n\nclass Header extends Component {\n\n handleResize = () => {\n const topOfStationaryHeader = +ReactDOM.findDOMNode(this).offsetTop\n const heightOfStationaryHeader =\n +ReactDOM.findDOMNode(this).getBoundingClientRect().height\n const bottomOfStationaryHeader = topOfStationaryHeader +\n heightOfStationaryHeader\n this.props.updateStationaryHeader(bottomOfStationaryHeader)\n }\n\n //bottomOfProjects for later\n render() {\n const {\n scrollPositionY, windowWidth, hamburgerButton,\n handleNavClick, navIsOpen, bottomOfStationaryHeader, bottomOfHome,\n bottomOfClasses, bottomOfAbout, bottomOfAIML, heightOfStickyHeader,\n smallStickyLogo, mediumStickyLogo, largeStickyLogo, smallStickyTitle,\n mediumStickyTitle, largeStickyTitle, smallStickyLogoWebp,\n mediumStickyLogoWebp, largeStickyLogoWebp, smallStickyTitleWebp,\n mediumStickyTitleWebp, largeStickyTitleWebp\n } = this.props\n //Alt text for images for D.R.Y.\n const heroAltText = `Wide blue skies with modern wind turbines over earthen western scrublands`\n\n return (\n windowWidth > 600 ? (\n
\n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n\n \n\n
\n
\n
\n\n
\n ) : (\n
\n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n handleNavClick() }\n src={ hamburgerButton }\n alt=\"Navigation menu hamburger button\"\n className=\"hamburger-button\"/>\n
\n
\n\n \n\n
\n )\n );\n }\n\n componentDidMount() {\n const { debounce } = this.props\n window.addEventListener(\"DOMContentLoaded\", this.handleResize)\n window.addEventListener('resize', debounce(this.handleResize, 32))\n }\n\n componentWillUnmount() {\n const { debounce } = this.props\n window.removeEventListener(\"DOMContentLoaded\", this.handleResize)\n window.removeEventListener('resize', debounce(this.handleResize, 32))\n }\n}\n\nexport default Header;\n","import React, { Component } from 'react'\nimport { NavHashLink as NavLink } from 'react-router-hash-link';\nimport ReactDOM from 'react-dom'\n\nimport NavMenu from '../NavMenu/NavMenu'\n\nimport './StickyHeader.scss'\n\nclass StickyHeader extends Component {\n\n handleResize = () => {\n const heightOfHeader =\n +ReactDOM.findDOMNode(this).getBoundingClientRect().height\n if (heightOfHeader > 0) {\n this.props.updateHeightOfStickyHeader(heightOfHeader)\n //console.log(\"HeightHeader:\", heightOfHeader)\n }\n }\n\n render() {\n const {\n scrollPositionY, windowWidth, hamburgerButton,\n handleNavClick, bottomOfStationaryHeader, bottomOfHome, bottomOfClasses,\n bottomOfAbout, bottomOfAIML, bottomOfProjects, navIsOpen,\n heightOfStickyHeader, smallStickyLogo, mediumStickyLogo,\n largeStickyLogo, smallStickyTitle, mediumStickyTitle, largeStickyTitle,\n smallStickyLogoWebp, mediumStickyLogoWebp, largeStickyLogoWebp,\n smallStickyTitleWebp, mediumStickyTitleWebp, largeStickyTitleWebp\n } = this.props\n\n return (\n windowWidth > 600\n ?
= bottomOfStationaryHeader\n ? navIsOpen\n ? (scrollPositionY >= (bottomOfHome - heightOfStickyHeader) &&\n (scrollPositionY < (bottomOfAbout - heightOfStickyHeader)))\n ? \"StickyHeader-container full-height blurred about-border\"\n : (scrollPositionY >= (bottomOfAbout - heightOfStickyHeader) &&\n (scrollPositionY < (bottomOfAIML - heightOfStickyHeader)))\n ? \"StickyHeader-container full-height blurred aiml-border\"\n : (scrollPositionY >= (bottomOfAIML - heightOfStickyHeader - 30) &&\n (scrollPositionY < (bottomOfProjects - heightOfStickyHeader)))\n ? \"StickyHeader-container full-height blurred golden-sand-border\"\n : \"StickyHeader-container full-height blurred\"\n : (scrollPositionY >= (bottomOfHome - heightOfStickyHeader) &&\n (scrollPositionY < (bottomOfAbout - heightOfStickyHeader)))\n ? \"StickyHeader-container full-height about-border\"\n : (scrollPositionY >= (bottomOfAbout - heightOfStickyHeader) &&\n (scrollPositionY < (bottomOfAIML - heightOfStickyHeader)))\n ? \"StickyHeader-container full-height aiml-border\"\n : (scrollPositionY >= (bottomOfAIML - heightOfStickyHeader - 30) &&\n (scrollPositionY < (bottomOfProjects - heightOfStickyHeader)))\n ? \"StickyHeader-container full-height golden-sand-border\"\n : \"StickyHeader-container full-height\"\n : \"StickyHeader-container zero-height\"}>\n
= bottomOfStationaryHeader\n ? \"StickyHeader shown\"\n : \"StickyHeader hidden\"}>\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n\n
\n
\n :\n
= (bottomOfHome - heightOfStickyHeader) &&\n (scrollPositionY < (bottomOfAbout - heightOfStickyHeader)))\n ? \"StickyHeader-container slim blurred about-border\"\n : (scrollPositionY >= (bottomOfAbout - heightOfStickyHeader) &&\n (scrollPositionY < (bottomOfAIML - heightOfStickyHeader)))\n ? \"StickyHeader-container slim blurred aiml-border\"\n : (scrollPositionY >= (bottomOfAIML - heightOfStickyHeader - 30) &&\n (scrollPositionY < (bottomOfProjects - heightOfStickyHeader)))\n ? \"StickyHeader-container slim blurred golden-sand-border\"\n : \"StickyHeader-container slim blurred\"\n : (scrollPositionY >= (bottomOfHome - heightOfStickyHeader) &&\n (scrollPositionY < (bottomOfAbout - heightOfStickyHeader)))\n ? \"StickyHeader-container slim about-border\"\n : (scrollPositionY >= (bottomOfAbout - heightOfStickyHeader) &&\n (scrollPositionY < (bottomOfAIML - heightOfStickyHeader)))\n ? \"StickyHeader-container slim aiml-border\"\n : (scrollPositionY >= (bottomOfAIML - heightOfStickyHeader - 30) &&\n (scrollPositionY < (bottomOfProjects - heightOfStickyHeader)))\n ? \"StickyHeader-container slim golden-sand-border\"\n : \"StickyHeader-container slim\"}>\n
= bottomOfStationaryHeader\n ? \"StickyHeader shown\"\n : \"StickyHeader hidden\"}>\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n handleNavClick() }\n src={ hamburgerButton }\n alt=\"Nav-menu hamburger button\"\n className=\"hamburger-button\"/>\n\n
\n
\n )\n }\n\n componentDidMount() {\n const { debounce } = this.props\n window.addEventListener(\"DOMContentLoaded\", this.handleResize)\n window.addEventListener('resize', debounce(this.handleResize, 32))\n window.addEventListener('scroll', debounce(this.handleResize, 32))\n }\n\n componentWillUnmount() {\n const { debounce } = this.props\n window.removeEventListener(\"DOMContentLoaded\", this.handleResize)\n window.removeEventListener('resize', debounce(this.handleResize, 32))\n window.removeEventListener('scroll', debounce(this.handleResize, 32))\n }\n\n}\n\nexport default StickyHeader\n","export default __webpack_public_path__ + \"static/media/70px-Headshot.190a6569.png\";","export default __webpack_public_path__ + \"static/media/70px-Headshot.dc746f5f.webp\";","export default __webpack_public_path__ + \"static/media/130px-Headshot.fcc4d52c.png\";","export default __webpack_public_path__ + \"static/media/130px-Headshot.2c1a7894.webp\";","export default __webpack_public_path__ + \"static/media/260px-Headshot.8b484684.png\";","export default __webpack_public_path__ + \"static/media/260px-Headshot.1acd1e4a.webp\";","export default __webpack_public_path__ + \"static/media/180px-Sunset-Title-PMR-light-border.389c58fa.png\";","export default __webpack_public_path__ + \"static/media/180px-Sunset-Title-PMR-light-border.a1e793ec.webp\";","export default __webpack_public_path__ + \"static/media/360px-Sunset-Title-PMR-light-border.005d254e.png\";","export default __webpack_public_path__ + \"static/media/360px-Sunset-Title-PMR-light-border.dc9a43e3.webp\";","export default __webpack_public_path__ + \"static/media/720px-Sunset-Title-PMR-light-border.10a8175a.png\";","export default __webpack_public_path__ + \"static/media/720px-Sunset-Title-PMR-light-border.2b24c0d9.webp\";","export default \"data:image/png;base64,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bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgIHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDpkOTVlM2MwOC05MzY4LTQwN2QtYmQ2NS1hMDI0Y2MzN2M5ZmIiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MWI2MDY1ZGMtNmUyOC00MGVhLTg1MzctZGVmZmNhOTZlOGZkIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YWQ1ZjM0MjktNzE1NC00NGU1LWJlMzktZWExOTk0NDZhNjIzIgogICBHSU1QOkFQST0iMi4wIgogICBHSU1QOlBsYXRmb3JtPSJNYWMgT1MiCiAgIEdJTVA6VGltZVN0YW1wPSIxNTk4MzgyODY4OTk5MDgzIgogICBHSU1QOlZlcnNpb249IjIuMTAuMTQiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5nIgogICB4bXA6Q3JlYXRvclRvb2w9IkdJTVAgMi4xMCI+CiAgIDxpcHRjRXh0OkxvY2F0aW9uQ3JlYXRlZD4KICAgIDxyZGY6QmFnLz4KICAgPC9pcHRjRXh0OkxvY2F0aW9uQ3JlYXRlZD4KICAgPGlwdGNFeHQ6TG9jYXRpb25TaG93bj4KICAgIDxyZGY6QmFnLz4KICAgPC9pcHRjRXh0OkxvY2F0aW9uU2hvd24+CiAgIDxpcHRjRXh0OkFydHdvcmtPck9iamVjdD4KICAgIDxyZGY6QmFnLz4KICAgPC9pcHRjRXh0OkFydHdvcmtPck9iamVjdD4KICAgPGlwdGNFeHQ6UmVnaXN0cnlJZD4KICAgIDxyZGY6QmFnLz4KICAgPC9pcHRjRXh0OlJlZ2lzdHJ5SWQ+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmM0Y2YzYTJkLTUxYmQtNGMwMC1hY2ZhLThhMTA5NmZmMGRhYiIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjEwIChNYWMgT1MpIgogICAgICBzdEV2dDp3aGVuPSIyMDIwLTA4LTI1VDE1OjE0OjI5LTA0OjAwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICAgPHBsdXM6SW1hZ2VTdXBwbGllcj4KICAgIDxyZGY6U2VxLz4KICAgPC9wbHVzOkltYWdlU3VwcGxpZXI+CiAgIDxwbHVzOkltYWdlQ3JlYXRvcj4KICAgIDxyZGY6U2VxLz4KICAgPC9wbHVzOkltYWdlQ3JlYXRvcj4KICAgPHBsdXM6Q29weXJpZ2h0T3duZXI+CiAgICA8cmRmOlNlcS8+CiAgIDwvcGx1czpDb3B5cmlnaHRPd25lcj4KICAgPHBsdXM6TGljZW5zb3I+CiAgICA8cmRmOlNlcS8+CiAgIDwvcGx1czpMaWNlbnNvcj4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pt+9rLMAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfkCBkTDhzIgswIAAAApVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAuLi4xMTE0NDTj8CHQAAAAM3RSTlMAAAECAwUGBwgJCgsODxAREhMUFRgZHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojsvvu0HAAAAAWJLR0QzN9V8XgAAA3NJREFUeNrNW9tiokAMDUIVbWHErYJbq7CW6yJIut3//7R9qLaLgtxmJp5XH3IccjmZSQB6QNHnS2e3j9LsWBTHLI32O2fJdAVkYLJY+zlWIvedxViocZWtY2xA7DBVjPXR/DXHVsg2bMTd/NQ+YAcc7ClP64rpYWd4Bi+nVKwQeyGc86CgsJ7mEREDNtj+7BcOgjfMFzSnwIEo7AFRaSbIAYnRN+38RE5weh3CY4TcEM262/9xRI7IF13z7ho5w+6UnTUPucPV2tsfhygAwUPrkh+jEMQtxYL+GwUh0Vv9f2H2EZMWZzCOUSDiRj/QQhSKoCEWRh4Khns7H6xROOyb+Rcl4EZWfjzKIJDXViY1QimIVDoHOOmDGv2D0lCpkbSy/vrzzhUf5YxY9RGcMsl3zmiMxVkhk0BxpdaVS/0vlgC6lwQYyiWA5sUBhLIJBOW+0ULZBHB++wDEEygdQUUOEk6glI08CgL/BcIUKQjgt0S1aQisvnTYgYZAelZn86qC9cHX/t8qG+cLnFckwuYkhHIqAplaXQbkwZSrxOq0WUxHIAIAmCAhxgCwoCRg0brApxP4lATeAJSckkCmgI6kmFQXAnlgsKQl8HzZEMmGDbuaX4T2ht/Ywr7mFwmCBBFxDxEtgRBSWgIpZLQEMjjSEjhCQUugoCdA/gnInZA8DMkTEXkqritGMnpDRNzSl2NyQcJoCTB6UUouy8kbE9owcO6hOR1Tt+fkFxSUTmDfxyWVmpFlgdNV6YaKwEvde5Gs3pDdy2U1+XU9/YMF+ZMNGBQEnu7p2a7irkw4gfK8qxLIJuArxI/XV0MUnlwC7vXwOPEAw1U6FEtgVTVFlMjrDePKSSJDXh2uGXV25CoxulGusHbQeialTctvDNxLaVKsWwOFDp0DnNSZK9r+rmHEWwvE2vcbJ/0fhHZqUYvx7nEizn7SarhbF8YgmdAOt0etN+EehHii33q8H0ATEI27TpsuI5t7/um6gLfgWhdyq8eSF8faGPZa+FK5FYbe214Gl4wQ9131AgDVHr7sthq2gjoduPHgDl/9NAdkJd8ADlDmPSkEjNvWqdHjQ7hPXDex9VXaxXq60oE3RmzT8kYzexGw+PwZlabTmB4j2xRk/SyYLOetpkxkb44ldvn9yykn7Nne7sPz+n+439rPbNLL6f4BDwXdrZNUcHQAAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/if-black-hamburger-icon2.ed57d301.webp\";","import React, { Component } from 'react';\n\nimport Header from './Header/Header'\nimport StickyHeader from './StickyHeader/StickyHeader'\n\n\n\n/* *\n * Images *\n * */\n//Import shared images and pass them as props to children\n//add srcSets\nimport smallStickyLogo from './img/70px-Headshot.png'\nimport smallStickyLogoWebp from './img/70px-Headshot.webp'\nimport mediumStickyLogo from './img/130px-Headshot.png'\nimport mediumStickyLogoWebp from './img/130px-Headshot.webp'\nimport largeStickyLogo from './img/260px-Headshot.png'\nimport largeStickyLogoWebp from './img/260px-Headshot.webp'\n\nimport smallStickyTitle from './img/180px-Sunset-Title-PMR-light-border.png'\nimport smallStickyTitleWebp from './img/180px-Sunset-Title-PMR-light-border.webp'\nimport mediumStickyTitle from './img/360px-Sunset-Title-PMR-light-border.png'\nimport mediumStickyTitleWebp from './img/360px-Sunset-Title-PMR-light-border.webp'\nimport largeStickyTitle from './img/720px-Sunset-Title-PMR-light-border.png'\nimport largeStickyTitleWebp from './img/720px-Sunset-Title-PMR-light-border.webp'\n\nimport hamburgerButton from './img/if-black-hamburger-icon2.png'\nimport hamburgerButtonWebp from './img/if-black-hamburger-icon2.webp'\n\nclass ShrinkingHeader extends Component {\n\n render() {\n\n const {\n scrollPositionY, windowWidth, bottomOfStationaryHeader, navIsOpen,\n bottomOfHome, debounce, updateStationaryHeader, handleNavClick,\n updateHeightOfStickyHeader, heightOfStickyHeader, bottomOfAbout,\n bottomOfAIML, bottomOfProjects\n } = this.props\n\n return (\n
\n \n \n
\n )\n }\n}\n\nexport default ShrinkingHeader;\n","import React, { Component } from 'react';\nimport './HeroImage.scss';\n\n\nclass HeroImage extends Component {\n\n render() {\n const { pageName, navIsOpen, sectionId } = this.props\n return (\n \n {this.props.children}\n
\n {pageName\n ?

{ pageName }

\n : null}\n
\n \n );\n }\n}\n\nexport default HeroImage;\n","export default __webpack_public_path__ + \"static/media/Kale-Closeup-100px.21c684a4.jpg\";","export default __webpack_public_path__ + \"static/media/Kale-Closeup-100px.jpg.095b8189.webp\";","export default __webpack_public_path__ + \"static/media/Kale-Closeup-200px.7d650d81.jpg\";","export default __webpack_public_path__ + \"static/media/Kale-Closeup-200px.jpg.469a9832.webp\";","export default __webpack_public_path__ + \"static/media/Kale-Closeup-400px.ad402e70.jpg\";","export default __webpack_public_path__ + \"static/media/Kale-Closeup-400px.jpg.1539f73a.webp\";","export default __webpack_public_path__ + \"static/media/Kale-Closeup-800px.77deb5fb.jpg\";","export default __webpack_public_path__ + \"static/media/Kale-Closeup-800px.jpg.bcabf64e.webp\";","import React, { Component } from 'react';\n\nimport './ImageFocusAnimation.scss';\nimport smallKaleImage from './img/Kale-Closeup-100px.jpg'\nimport smallKaleImageWebp from './img/Kale-Closeup-100px.jpg.webp'\nimport mediumKaleImage from './img/Kale-Closeup-200px.jpg'\nimport mediumKaleImageWebp from './img/Kale-Closeup-200px.jpg.webp'\nimport largeKaleImage from './img/Kale-Closeup-400px.jpg'\nimport largeKaleImageWebp from './img/Kale-Closeup-400px.jpg.webp'\nimport highResKaleImage from './img/Kale-Closeup-800px.jpg'\nimport highResKaleImageWebp from './img/Kale-Closeup-800px.jpg.webp'\n\n\n\n//This Component represents the Kale image set\n\nclass ImageFocusAnimation extends Component {\n\n handleImageLoad() {\n this.setState({ imageStatus: \"success\" });\n this.startAnimation()\n }\n\n handleImageError() {\n this.setState({ imageStatus: \"error\" });\n\n const imagesFromElement = document.querySelectorAll('.ImageFocusAnimation-image')\n for (let i in imagesFromElement) {\n i.style = {minHeight: i.innerWidth}\n }\n this.startAnimation()\n }\n\n startAnimation = () => {\n setTimeout(function() {this.props.updateRepeatImageFocusAnimation(false)}.bind(this), 500)\n }\n\n state = {\n imageStatus: \"loading\"\n }\n\n render() {\n const kaleImageSrcSet = smallKaleImage + ' 100w, ' +\n mediumKaleImage + ' 200w, ' + largeKaleImage +\n ' 400w, ' + highResKaleImage + ' 2x'\n\n const {\n navIsOpen, repeatImageFocusAnimation\n } = this.props\n return (\n
\n
\n
\n \n \n \n \n \n\n \n \n \n \n\n \n \n
\n
\n
\n
\n \n \n \n \n \n\n \n \n \n \n\n \n \n
\n
\n
\n
\n \n \n \n \n \n\n \n \n \n \n\n \n \n
\n
\n
\n
\n \n \n \n \n \n\n \n \n \n \n\n \n \n
\n
\n
\n
\n \n \n \n \n \n\n \n \n \n \n\n \n \n
\n
\n
\n
\n \n \n \n \n \n\n \n \n \n \n\n \n \n
\n
\n
\n
\n \n \n \n \n \n\n \n \n \n \n\n \n \n
\n
\n
\n
\n
\n );\n }\n}\n\nexport default ImageFocusAnimation;\n","import React, { Component } from 'react';\nimport ReactDOM from 'react-dom'\nimport './CallToAction.scss';\n\n\nclass CallToAction extends Component {\n\n handleResize = () => {\n const topOfHome = +ReactDOM.findDOMNode(this).offsetTop\n const heightOfHome =\n +ReactDOM.findDOMNode(this).getBoundingClientRect().height\n const bottomOfHome = topOfHome + heightOfHome\n this.props.updateHome(Math.round(bottomOfHome))\n }\n\n handleScroll = () => {\n const heightOfHome =\n +ReactDOM.findDOMNode(this).getBoundingClientRect().height\n if (this.props.bottomOfHome !== heightOfHome) {\n this.handleResize()\n }\n }\n\n render() {\n const { navIsOpen } = this.props\n return (\n
\n

\n Want to bring your ideas into focus?\n

\n

\n ...into the Cloud?\n

\n
\n \n Let me help, today!\n
\n
\n
\n
\n
\n
\n
\n
\n );\n }\n\n componentDidMount() {\n const { debounce } = this.props\n window.addEventListener(\"DOMContentLoaded\", this.handleResize)\n window.addEventListener('resize', debounce(this.handleResize, 32))\n window.addEventListener('scroll', debounce(this.handleScroll, 32))\n }\n\n componentWillUnmount() {\n const { debounce } = this.props\n window.removeEventListener(\"DOMContentLoaded\", this.handleResize)\n window.removeEventListener('resize', debounce(this.handleResize, 32))\n window.removeEventListener('scroll', debounce(this.handleScroll, 32))\n }\n}\n\nexport default CallToAction;\n","export default __webpack_public_path__ + \"static/media/Sunset-Edited-480px-147px.24e67fdf.jpg\";","export default __webpack_public_path__ + \"static/media/Sunset-Edited-480px-147px.jpg.d4d0a132.webp\";","export default __webpack_public_path__ + \"static/media/Sunset-Edited-960px-294px.49efd9b4.jpg\";","export default __webpack_public_path__ + \"static/media/Sunset-Edited-960px-294px.jpg.33060aa2.webp\";","export default __webpack_public_path__ + \"static/media/Sunset-Edited-1920px-588px.e657ad8a.jpg\";","export default __webpack_public_path__ + \"static/media/Sunset-Edited-1920px-588px.jpg.999476e3.webp\";","export default __webpack_public_path__ + \"static/media/Sunset-Edited-3840px-1176px.d7a2f15d.jpg\";","export default __webpack_public_path__ + \"static/media/Sunset-Edited-3840px-1176px.jpg.e03b29a1.webp\";","import React, { Component } from 'react';\n\nimport smallNCSunset from './img/Sunset-Edited-480px-147px.jpg'\nimport smallNCSunsetWebp from './img/Sunset-Edited-480px-147px.jpg.webp'\nimport mediumNCSunset from './img/Sunset-Edited-960px-294px.jpg'\nimport mediumNCSunsetWebp from './img/Sunset-Edited-960px-294px.jpg.webp'\nimport largeNCSunset from './img/Sunset-Edited-1920px-588px.jpg'\nimport largeNCSunsetWebp from './img/Sunset-Edited-1920px-588px.jpg.webp'\nimport highResNCSunset from './img/Sunset-Edited-3840px-1176px.jpg'\nimport highResNCSunsetWebp from './img/Sunset-Edited-3840px-1176px.jpg.webp'\n\nclass NCSunsetSources extends Component {\n\n fallback = smallNCSunset\n\n heroImageSrcSet = smallNCSunset + ' 480w, ' +\n mediumNCSunset + ' 960w, ' + largeNCSunset +\n ' 1920w, ' + highResNCSunset + ' 2x'\n\n heroImageAlt = \"A colorful sunset skyline featuring the woods and \" +\n \"mountains of Western North Carolina\"\n\n render () {\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport default NCSunsetSources;\n","export default __webpack_public_path__ + \"static/media/Sunset-Turbines-Narrow-480px-180px.eac086c3.jpg\";","export default __webpack_public_path__ + \"static/media/Sunset-Turbines-Narrow-480px-180px.jpg.1b504855.webp\";","export default __webpack_public_path__ + \"static/media/Sunset-Turbines-Narrow-960px-360px.00acd785.jpg\";","export default __webpack_public_path__ + \"static/media/Sunset-Turbines-Narrow-960px-360px.jpg.5fbe54ce.webp\";","export default __webpack_public_path__ + \"static/media/Sunset-Turbines-Narrow-1920px-720px.14fdde5e.jpg\";","export default __webpack_public_path__ + \"static/media/Sunset-Turbines-Narrow-1920px-720px.jpg.c541ca04.webp\";","export default __webpack_public_path__ + \"static/media/Sunset-Turbines-Narrow-3840px-1440px-web.9639c35c.jpg\";","export default __webpack_public_path__ + \"static/media/Sunset-Turbines-Narrow-3840px-1440px-web.jpg.ef88e67e.webp\";","import React, { Component } from 'react';\n\nimport smallVibrantSkylineTurbines from './img/Sunset-Turbines-Narrow-480px-180px.jpg'\nimport smallVibrantSkylineTurbinesWebp from './img/Sunset-Turbines-Narrow-480px-180px.jpg.webp'\nimport mediumVibrantSkylineTurbines from './img/Sunset-Turbines-Narrow-960px-360px.jpg'\nimport mediumVibrantSkylineTurbinesWebp from './img/Sunset-Turbines-Narrow-960px-360px.jpg.webp'\nimport largeVibrantSkylineTurbines from './img/Sunset-Turbines-Narrow-1920px-720px.jpg'\nimport largeVibrantSkylineTurbinesWebp from './img/Sunset-Turbines-Narrow-1920px-720px.jpg.webp'\nimport highResVibrantSkylineTurbines from './img/Sunset-Turbines-Narrow-3840px-1440px-web.jpg'\nimport highResVibrantSkylineTurbinesWebp from './img/Sunset-Turbines-Narrow-3840px-1440px-web.jpg.webp'\n\nclass VibrantSkylineTurbinesSources extends Component {\n\n fallback = smallVibrantSkylineTurbines\n\n heroImageSrcSet = smallVibrantSkylineTurbines + ' 480w, ' +\n mediumVibrantSkylineTurbines + ' 960w, ' + largeVibrantSkylineTurbines +\n ' 1920w, ' + highResVibrantSkylineTurbines + ' 2x'\n\n heroImageAlt = \"A vibrant Midwestern American skyline featuring turbines \" +\n \"in the distance as the sun sets\"\n\n render () {\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport default VibrantSkylineTurbinesSources;\n","export default __webpack_public_path__ + \"static/media/PMR-Sunset-Round-100px.dc067d3d.jpg\";","export default __webpack_public_path__ + \"static/media/PMR-Sunset-Round-100px.jpg.6fdb013b.webp\";","export default __webpack_public_path__ + \"static/media/PMR-Sunset-Round-200px.19a4f74a.jpg\";","export default __webpack_public_path__ + \"static/media/PMR-Sunset-Round-200px.jpg.3c9abb20.webp\";","export default __webpack_public_path__ + \"static/media/PMR-Sunset-Round-350px.62538be1.jpg\";","export default __webpack_public_path__ + \"static/media/PMR-Sunset-Round-350px.jpg.87d50f9c.webp\";","export default __webpack_public_path__ + \"static/media/PMR-Sunset-Round-700px.f83432ab.jpg\";","export default __webpack_public_path__ + \"static/media/PMR-Sunset-Round-700px.jpg.cde8b045.webp\";","export default __webpack_public_path__ + \"static/media/HTMLCircularBackground-light-sepia-100px.4a7b2018.jpg\";","export default __webpack_public_path__ + \"static/media/HTMLCircularBackground-light-sepia-100px.jpg.e44928a2.webp\";","export default __webpack_public_path__ + \"static/media/HTMLCircularBackground-light-sepia-200px.8eda1e83.jpg\";","export default __webpack_public_path__ + \"static/media/HTMLCircularBackground-light-sepia-200px.jpg.3667bcef.webp\";","export default __webpack_public_path__ + \"static/media/HTMLCircularBackground-light-sepia-350px.2c70d442.jpg\";","export default __webpack_public_path__ + \"static/media/HTMLCircularBackground-light-sepia-350px.jpg.821d7555.webp\";","export default __webpack_public_path__ + \"static/media/HTMLCircularBackground-light-sepia-enlarged-700px.37e3907d.jpg\";","export default __webpack_public_path__ + \"static/media/HTMLCircularBackground-light-sepia-enlarged-700px.jpg.eac960bb.webp\";","export default __webpack_public_path__ + \"static/media/JSCircularBackground-light-sepia-100px.ead757b1.jpg\";","export default __webpack_public_path__ + \"static/media/JSCircularBackground-light-sepia-100px.jpg.39d1412b.webp\";","export default __webpack_public_path__ + \"static/media/JSCircularBackground-light-sepia-200px.76eb2012.jpg\";","export default __webpack_public_path__ + \"static/media/JSCircularBackground-light-sepia-200px.jpg.806a3c55.webp\";","export default __webpack_public_path__ + \"static/media/JSCircularBackground-light-sepia-350px.d419c5d6.jpg\";","export default __webpack_public_path__ + \"static/media/JSCircularBackground-light-sepia-350px.jpg.64a857e8.webp\";","export default __webpack_public_path__ + \"static/media/JSCircularBackground-light-sepia-enlarged-700px.6f54936c.jpg\";","export default __webpack_public_path__ + \"static/media/JSCircularBackground-light-sepia-enlarged-700px.jpg.dad03ffa.webp\";","export default __webpack_public_path__ + \"static/media/CSSCircularBackground-light-sepia-100px.049c6153.jpg\";","export default __webpack_public_path__ + \"static/media/CSSCircularBackground-light-sepia-100px.jpg.b14f5505.webp\";","export default __webpack_public_path__ + \"static/media/CSSCircularBackground-light-sepia-200px.8cc556aa.jpg\";","export default __webpack_public_path__ + \"static/media/CSSCircularBackground-light-sepia-200px.jpg.b54f8575.webp\";","export default __webpack_public_path__ + \"static/media/CSSCircularBackground-light-sepia-350px.31dc692f.jpg\";","export default __webpack_public_path__ + \"static/media/CSSCircularBackground-light-sepia-350px.jpg.02e0ebd6.webp\";","export default __webpack_public_path__ + \"static/media/CSSCircularBackground-light-sepia-enlarged-700px.740ac7cd.jpg\";","export default __webpack_public_path__ + \"static/media/CSSCircularBackground-light-sepia-enlarged-700px.jpg.50a46840.webp\";","import React, { Component } from 'react';\nimport ReactDOM from 'react-dom'\n\nimport './Introduction.scss';\nimport smallPMRLogo from './img/PMR-Sunset-Round-100px.jpg'\nimport smallPMRLogoWebp from './img/PMR-Sunset-Round-100px.jpg.webp'\nimport mediumPMRLogo from './img/PMR-Sunset-Round-200px.jpg'\nimport mediumPMRLogoWebp from './img/PMR-Sunset-Round-200px.jpg.webp'\nimport largePMRLogo from './img/PMR-Sunset-Round-350px.jpg'\nimport largePMRLogoWebp from './img/PMR-Sunset-Round-350px.jpg.webp'\nimport highResPMRLogo from './img/PMR-Sunset-Round-700px.jpg'\nimport highResPMRLogoWebp from './img/PMR-Sunset-Round-700px.jpg.webp'\n\nimport smallRedHTML from './img/HTMLCircularBackground-light-sepia-100px.jpg'\nimport smallRedHTMLWebp from './img/HTMLCircularBackground-light-sepia-100px.jpg.webp'\nimport mediumRedHTML from './img/HTMLCircularBackground-light-sepia-200px.jpg'\nimport mediumRedHTMLWebp from './img/HTMLCircularBackground-light-sepia-200px.jpg.webp'\nimport largeRedHTML from './img/HTMLCircularBackground-light-sepia-350px.jpg'\nimport largeRedHTMLWebp from './img/HTMLCircularBackground-light-sepia-350px.jpg.webp'\nimport highResRedHTML from './img/HTMLCircularBackground-light-sepia-enlarged-700px.jpg'\nimport highResRedHTMLWebp from './img/HTMLCircularBackground-light-sepia-enlarged-700px.jpg.webp'\n\nimport smallGreenJS from './img/JSCircularBackground-light-sepia-100px.jpg'\nimport smallGreenJSWebp from './img/JSCircularBackground-light-sepia-100px.jpg.webp'\nimport mediumGreenJS from './img/JSCircularBackground-light-sepia-200px.jpg'\nimport mediumGreenJSWebp from './img/JSCircularBackground-light-sepia-200px.jpg.webp'\nimport largeGreenJS from './img/JSCircularBackground-light-sepia-350px.jpg'\nimport largeGreenJSWebp from './img/JSCircularBackground-light-sepia-350px.jpg.webp'\nimport highResGreenJS from './img/JSCircularBackground-light-sepia-enlarged-700px.jpg'\nimport highResGreenJSWebp from './img/JSCircularBackground-light-sepia-enlarged-700px.jpg.webp'\n\nimport smallBlueCSS from './img/CSSCircularBackground-light-sepia-100px.jpg'\nimport smallBlueCSSWebp from './img/CSSCircularBackground-light-sepia-100px.jpg.webp'\nimport mediumBlueCSS from './img/CSSCircularBackground-light-sepia-200px.jpg'\nimport mediumBlueCSSWebp from './img/CSSCircularBackground-light-sepia-200px.jpg.webp'\nimport largeBlueCSS from './img/CSSCircularBackground-light-sepia-350px.jpg'\nimport largeBlueCSSWebp from './img/CSSCircularBackground-light-sepia-350px.jpg.webp'\nimport highResBlueCSS from './img/CSSCircularBackground-light-sepia-enlarged-700px.jpg'\nimport highResBlueCSSWebp from './img/CSSCircularBackground-light-sepia-enlarged-700px.jpg.webp'\n\nclass Introduction extends Component {\n\n handleImageLoad() {\n if (this.state.imageCount >= 5) {\n this.setState({ imageStatus: \"success\" });\n }\n this.setState({ imageCount: this.state.imageCount + 1 })\n }\n\n handleImageError() {\n if (this.state.imageCount >= 5) {\n this.setState({ imageStatus: \"error\" });\n }\n this.setState({ imageCount: this.state.imageCount + 1 })\n }\n\n handleResize = () => {\n const topOfAbout = +ReactDOM.findDOMNode(this).offsetTop\n const heightOfAbout =\n +ReactDOM.findDOMNode(this).getBoundingClientRect().height\n const bottomOfAbout = topOfAbout + heightOfAbout\n //console.log(\"bottomAbout: \", bottomOfAbout)\n this.props.updateAbout(bottomOfAbout)\n\n //Set animation trigger height\n const heightOfWindow = window.innerHeight\n const widthOfWindow = window.innerWidth\n //console.log(\"Height of Window: \", heightOfWindow)\n //const distanceFromTop = bottomOfAbout - (0.45 * heightOfWindow)\n const topOfFlipCards =\n +ReactDOM.findDOMNode(this).getElementsByClassName('card')[0].offsetTop\n const heightOfFlipCards =\n +ReactDOM.findDOMNode(this).querySelector('.card').getBoundingClientRect().height\n const bottomOfFlipCards = topOfAbout + topOfFlipCards + heightOfFlipCards\n //console.log(\"bottomOfFlipCards: \", bottomOfFlipCards)\n\n /*\n This version uses the center of the cards as a trigger point, which will\n still be debounced. This will at least be more consistent\n */\n let triggerHeight = bottomOfFlipCards + (heightOfFlipCards/2)\n if (triggerHeight < heightOfWindow) {\n triggerHeight = 0\n }\n\n /*\n //Original Trigger Logic\n let triggerHeight\n if (widthOfWindow < 600) { //likely mobile\n triggerHeight = bottomOfFlipCards - (0.5 * heightOfWindow)\n } else if (widthOfWindow < 800) {\n triggerHeight = bottomOfFlipCards - (0.3 * heightOfWindow)\n } else {\n triggerHeight = bottomOfFlipCards\n }\n */\n\n //console.log(\"triggerHeight: \", triggerHeight)\n this.props.updateTriggerForCardFlipAnimation( Math.round(triggerHeight) )\n\n //dynamically set height of flip cards, they require a hard-coded height.\n const widthOfFlipCard =\n +ReactDOM.findDOMNode(this).getElementsByClassName('card')[0].getBoundingClientRect().width\n //console.log(\"Flip Card Width:\", widthOfFlipCard)\n this.props.updateFlipCardDimensions( Math.round(widthOfFlipCard) )\n }\n\n handleScroll = () => {\n if ((this.props.scrollPositionY + window.innerHeight) >= this.props.triggerForCardFlipAnimation) {\n this.props.updateRepeatCardFlipAnimation(false)\n }\n\n\n const topOfAbout = +ReactDOM.findDOMNode(this).offsetTop\n const heightOfAbout =\n +ReactDOM.findDOMNode(this).getBoundingClientRect().height\n const bottomOfAbout = topOfAbout + heightOfAbout\n\n if (this.props.bottomAbout !== bottomOfAbout) {\n this.props.updateAbout(bottomOfAbout)\n }\n }\n\n state = {\n imageStatus: \"loading\",\n imageCount: 0\n }\n\n\n render() {\n const {\n navIsOpen, widthOfFlipCard, repeatCardFlipAnimation\n } = this.props\n return (\n
\n\n
\n\n

\n By combining HTML, JavaScript,\n and CSS together with modern extensions\n like Sass and JSX, I create\n bespoke web applications that are functional, beautiful, and\n responsive.\n

\n\n
\n
\n
\n
\n
\n\n \n \n \n \n \n\n \n \n \n \n\n \n \n
\n
\n
\n
\n\n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n
\n
\n
\n\n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n
\n
\n
\n\n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n
\n
\n
\n
\n
\n
\n

\n Tailor-made web apps come together with modern cloud architecture\n techniques to create resilient\n , highly-available, and \n affordable solutions that leverage the inherent\n advantages of cloud computing.\n

\n
\n
\n );\n }\n\n componentDidMount() {\n const { debounce } = this.props\n window.addEventListener(\"DOMContentLoaded\", this.handleResize)\n window.addEventListener('resize', debounce(this.handleResize, 32))\n window.addEventListener('scroll', debounce(this.handleScroll, 32))\n }\n\n componentWillUnmount() {\n const { debounce } = this.props\n window.removeEventListener(\"DOMContentLoaded\", this.handleResize)\n window.removeEventListener('resize', debounce(this.handleResize, 32))\n window.removeEventListener('scroll', debounce(this.handleScroll, 32))\n }\n}\n\nexport default Introduction;\n","export default __webpack_public_path__ + \"static/media/Mirrored-Glass-Truck-Hero-480px-160px.acb93a43.jpg\";","export default __webpack_public_path__ + \"static/media/Mirrored-Glass-Truck-Hero-480px-160px.jpg.ff5c8d5b.webp\";","export default __webpack_public_path__ + \"static/media/Mirrored-Glass-Truck-Hero-960px-320px.22470946.jpg\";","export default __webpack_public_path__ + \"static/media/Mirrored-Glass-Truck-Hero-960px-320px.jpg.c0c85fbf.webp\";","export default __webpack_public_path__ + \"static/media/Mirrored-Glass-Truck-Hero-1920px-640px.99f677d3.jpg\";","export default __webpack_public_path__ + \"static/media/Mirrored-Glass-Truck-Hero-1920px-640px.jpg.b8197f3d.webp\";","import React, { Component } from 'react';\n\nimport smallMirroredGlassTruck from './img/Mirrored-Glass-Truck-Hero-480px-160px.jpg'\nimport smallMirroredGlassTruckWebp from './img/Mirrored-Glass-Truck-Hero-480px-160px.jpg.webp'\nimport mediumMirroredGlassTruck from './img/Mirrored-Glass-Truck-Hero-960px-320px.jpg'\nimport mediumMirroredGlassTruckWebp from './img/Mirrored-Glass-Truck-Hero-960px-320px.jpg.webp'\nimport largeMirroredGlassTruck from './img/Mirrored-Glass-Truck-Hero-1920px-640px.jpg'\nimport largeMirroredGlassTruckWebp from './img/Mirrored-Glass-Truck-Hero-1920px-640px.jpg.webp'\n\nclass MirroredGlassTruckSources extends Component {\n\n fallback = smallMirroredGlassTruck\n\n heroImageSrcSet = smallMirroredGlassTruck + ' 480w, ' +\n mediumMirroredGlassTruck + ' 960w, ' + largeMirroredGlassTruck + ' 1920w'\n\n heroImageAlt = \"Mirrored glass reflecting a truck grille\"\n\n render () {\n return (\n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport default MirroredGlassTruckSources;\n","export default __webpack_public_path__ + \"static/media/Medium-branded-DeepRacer-GUI-bordered-350px-224px.441a1b36.jpg\";","export default __webpack_public_path__ + \"static/media/Medium-branded-DeepRacer-GUI-bordered-350px-224px.jpg.3a701d21.webp\";","export default __webpack_public_path__ + \"static/media/Medium-branded-DeepRacer-GUI-bordered-450px-288px.d3cce364.jpg\";","export default __webpack_public_path__ + \"static/media/Medium-branded-DeepRacer-GUI-bordered-450px-288px.jpg.2c9b8acc.webp\";","export default __webpack_public_path__ + \"static/media/Medium-branded-DeepRacer-GUI-bordered-945px-604px.ee0789a1.jpg\";","export default __webpack_public_path__ + \"static/media/Medium-branded-DeepRacer-GUI-bordered-945px-604px.jpg.b624a82f.webp\";","import React, { Component } from 'react';\nimport ReactDOM from 'react-dom'\n\nimport './AIML.scss';\nimport MirroredGlassTruckSources from '../HeroSources/MirroredGlassTruckSources'\nimport HeroImage from '../HeroImage/HeroImage';\n\nimport smallDeepRacerMediumImage from './img/Medium-branded-DeepRacer-GUI-bordered-350px-224px.jpg';\nimport smallDeepRacerMediumImageWebp from './img/Medium-branded-DeepRacer-GUI-bordered-350px-224px.jpg.webp';\nimport mediumDeepRacerMediumImage from './img/Medium-branded-DeepRacer-GUI-bordered-450px-288px.jpg';\nimport mediumDeepRacerMediumImageWebp from './img/Medium-branded-DeepRacer-GUI-bordered-450px-288px.jpg.webp';\nimport largeDeepRacerMediumImage from './img/Medium-branded-DeepRacer-GUI-bordered-945px-604px.jpg';\nimport largeDeepRacerMediumImageWebp from './img/Medium-branded-DeepRacer-GUI-bordered-945px-604px.jpg.webp';\n\nclass AIML extends Component {\n\n handleResize = () => {\n const topOfAIML = +ReactDOM.findDOMNode(this).offsetTop\n const heightOfAIML =\n +ReactDOM.findDOMNode(this).getBoundingClientRect().height\n const bottomOfAIML = topOfAIML + heightOfAIML\n this.props.updateAIML(Math.round(bottomOfAIML-5))\n }\n\n handleScroll = () => {\n const topOfAIML = +ReactDOM.findDOMNode(this).offsetTop\n const heightOfAIML =\n +ReactDOM.findDOMNode(this).getBoundingClientRect().height\n const bottomOfAIML = topOfAIML + heightOfAIML\n\n if (this.props.bottomOfAIML !== bottomOfAIML) {\n this.props.updateAIML(Math.round(bottomOfAIML-5))\n }\n }\n\n render() {\n const { navIsOpen } = this.props\n return (\n\n
\n
\n \n \n \n
\n
\n

\n A car that can reflect on its performance? Using Reinforcement Learning(a form of\n Machine Learning), an agent gradually learns to\n navigate a new course through rewards for good decision-making on a\n moment-to-moment basis.\n

\n
\n \n \n \n \n \n \n \n \n \n \n
\n Read my article on Medium to learn how to train your AWS DeepRacer\n on GCP infrastructure!\n
\n \n
\n

\n \n AWS DeepRacer Competitors\n train their model in a simulated virtual environment.\n Then, they can upload this pre-trained model into physical\n model-scale cars to compare their AI driving ability.\n

\n

\n By using both \n Google Cloud Platform(GCP) and \n Amazon Web Services(AWS) in conjunction, racers(and many\n others) can realize significant cost savings!\n

\n
\n
\n );\n }\n\n componentDidMount() {\n const { debounce } = this.props\n window.addEventListener(\"DOMContentLoaded\", this.handleResize)\n window.addEventListener('resize', debounce(this.handleResize, 32))\n window.addEventListener('scroll', debounce(this.handleScroll, 32))\n }\n\n componentWillUnmount() {\n const { debounce } = this.props\n window.removeEventListener(\"DOMContentLoaded\", this.handleResize)\n window.removeEventListener('resize', debounce(this.handleResize, 32))\n window.removeEventListener('scroll', debounce(this.handleScroll, 32))\n }\n}\n\nexport default AIML;\n","export default __webpack_public_path__ + \"static/media/Trillium-480px-180px.ba389f4e.jpg\";","export default __webpack_public_path__ + \"static/media/Trillium-480px-180px.jpg.233d85bd.webp\";","export default __webpack_public_path__ + \"static/media/Trillium-960px-360px.44cdf448.jpg\";","export default __webpack_public_path__ + \"static/media/Trillium-960px-360px.jpg.80dbda2a.webp\";","export default __webpack_public_path__ + \"static/media/Trillium-1920px-720px.ffd3fdda.jpg\";","export default __webpack_public_path__ + \"static/media/Trillium-1920px-720px.jpg.bf8ee247.webp\";","export default __webpack_public_path__ + \"static/media/Trillium-3840px-1440px.82d12134.jpg\";","export default __webpack_public_path__ + \"static/media/Trillium-3840px-1440px.jpg.03d17a76.webp\";","import React, { Component } from 'react';\n\nimport smallTrillium from './img/Trillium-480px-180px.jpg'\nimport smallTrilliumWebp from './img/Trillium-480px-180px.jpg.webp'\nimport mediumTrillium from './img/Trillium-960px-360px.jpg'\nimport mediumTrilliumWebp from './img/Trillium-960px-360px.jpg.webp'\nimport largeTrillium from './img/Trillium-1920px-720px.jpg'\nimport largeTrilliumWebp from './img/Trillium-1920px-720px.jpg.webp'\nimport highResTrillium from './img/Trillium-3840px-1440px.jpg'\nimport highResTrilliumWebp from './img/Trillium-3840px-1440px.jpg.webp'\n\nclass TrilliumSources extends Component {\n\n fallback = smallTrillium\n\n heroImageSrcSet = smallTrillium + ' 480w, ' +\n mediumTrillium + ' 960w, ' + largeTrillium +\n ' 1920w, ' + highResTrillium + ' 2x'\n\n heroImageAlt = \"A patch of painted Trillium with pink and white flowers \" +\n \"in verdant North Carolina woods\"\n\n render () {\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport default TrilliumSources;\n","export default __webpack_public_path__ + \"static/media/Turtlr-gameplay-screenshot-350px-233px.1cee0a82.jpg\";","export default __webpack_public_path__ + \"static/media/Turtlr-gameplay-screenshot-350px-233px.jpg.5ff05b92.webp\";","export default __webpack_public_path__ + \"static/media/Turtlr-gameplay-screenshot-450px-300px.4e693f29.jpg\";","export default __webpack_public_path__ + \"static/media/Turtlr-gameplay-screenshot-450px-300px.jpg.e7cbd0c1.webp\";","export default __webpack_public_path__ + \"static/media/Turtlr-gameplay-screenshot-900px-600px.42741f91.jpg\";","export default __webpack_public_path__ + \"static/media/Turtlr-gameplay-screenshot-900px-600px.jpg.bd5c27ca.webp\";","import React, { Component } from 'react';\nimport ReactDOM from 'react-dom'\n\nimport './Projects.scss';\nimport TrilliumSources from '../HeroSources/TrilliumSources'\nimport HeroImage from '../HeroImage/HeroImage';\n\nimport smallTurtlrImage from './img/Turtlr-gameplay-screenshot-350px-233px.jpg';\nimport smallTurtlrImageWebp from './img/Turtlr-gameplay-screenshot-350px-233px.jpg.webp';\nimport mediumTurtlrImage from './img/Turtlr-gameplay-screenshot-450px-300px.jpg';\nimport mediumTurtlrImageWebp from './img/Turtlr-gameplay-screenshot-450px-300px.jpg.webp';\nimport largeTurtlrImage from './img/Turtlr-gameplay-screenshot-900px-600px.jpg';\nimport largeTurtlrImageWebp from './img/Turtlr-gameplay-screenshot-900px-600px.jpg.webp';\n\nclass Projects extends Component {\n\n handleResize = () => {\n const topOfProjects = +ReactDOM.findDOMNode(this).offsetTop\n const heightOfProjects =\n +ReactDOM.findDOMNode(this).getBoundingClientRect().height\n const bottomOfProjects = topOfProjects + heightOfProjects\n this.props.updateProjects(Math.round(bottomOfProjects))\n }\n\n handleScroll = () => {\n const topOfProjects = +ReactDOM.findDOMNode(this).offsetTop\n const heightOfProjects =\n +ReactDOM.findDOMNode(this).getBoundingClientRect().height\n const bottomOfProjects = topOfProjects + heightOfProjects\n\n if (this.props.bottomOfProjects !== bottomOfProjects) {\n this.props.updateProjects(Math.round(bottomOfProjects))\n }\n }\n\n render() {\n const { navIsOpen } = this.props\n\n return (\n\n
\n
\n \n \n \n
\n
\n\n

\n I believe that some of the biggest strides in knowledge come from its\n application to interesting problems, especially when applied with\n pure curiosity.\n

\n\n
\n \n\n \n \n \n \n \n \n \n \n \n
\n Help Turtlr, the loggerhead sea turtle, escape to the sea!\n
\n
\n
\n

\n Turtlr is a JavaScript game using the HTML canvas and custom sprites to\n create a clone of the classic game Frogger, featuring Turtlr,\n the loggerhead sea turtle! Help Turtlr escape the dangers of\n plastic litter and natural predators, to the safety of the open\n ocean.

\n

\n In addition to the HTML, JavaScript, and CSS required to\n create the game engine, 3D transformations and graphical\n flourishes improve the user experience.\n

\n

\n Play Turtlr | View Turtlr Source\n

\n
\n
\n );\n }\n\n componentDidMount() {\n const { debounce } = this.props\n window.addEventListener(\"DOMContentLoaded\", this.handleResize)\n window.addEventListener('resize', debounce(this.handleResize, 32))\n window.addEventListener('scroll', debounce(this.handleScroll, 32))\n }\n\n componentWillUnmount() {\n const { debounce } = this.props\n window.removeEventListener(\"DOMContentLoaded\", this.handleResize)\n window.removeEventListener('resize', debounce(this.handleResize, 32))\n window.removeEventListener('scroll', debounce(this.handleScroll, 32))\n }\n}\n\nexport default Projects;\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAQAAAD/5HvMAAABm0lEQVR42u3aoU9CURTH8SMELQ5nUIMBpchMWpyzmPgDGEX+AEwGm9FAtWiQGShszuRszmRhVBO6udmsGgQ2HMLXAHMq9wnquPco91fv2dlnb/fd+/Z2RESEKHnKNHGVJmXyRKUdUlTQkAqp9tPRwWmTokIeTckLZVWgsjjcysbtLSiLB/0rUJ0CGZJkKFB3DyoRl7cQp+QWVCQsH0KYojtQlZh0hRhVV6CcGEPOFSgdAEq7AiUCQAn/hDo51LaH1L1lUCSk6RxSeFIrvMv858eQgSockWaRKSLMsco2Zzz/AhRwMH65zmZn8ZFdJg3rM2Sp2QedE5HAsMCVXdD+5w+7rqpRLu2BctJHmODaDmidMekrLNGyAPpOONEGilsHMdJj/dYaiGWOuaHBHaesBVYdWAERIkvjXaMXNgIqk3ZAW4ZLZNpYuWIBxCxPhmY7xtp5G6A9Y7MLY+24DZD5nrrv1W1woAdjs5o7UOtn3QYHwoM8yIM8yIM8yIM8yIOGBeR/enrQXwapG0ZRN66jbqBJ28iXuqE4bWODr92fHe9Ng9cTAAAAAElFTkSuQmCC\"","export default __webpack_public_path__ + \"static/media/In-White-72.36e6f711.webp\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAQAAABpN6lAAAADCklEQVR42u3dwUuUQRzG8UkxF7IoCoNwI+sUUeSlAgO1S4qXiM5Fda9T8GYXJfCwl0AI8tIpr17UootLLOSlCBTqDzBWNMwOWhuo3w5GLbarM7sL7cw8z3nfYd7PvvvuzG9f9mfMn5AmIUeedULNOnlyJKTN9tBMhgKxpECG5uLTb2WG2DJD6993P77T3yLYugrIEGsyW7e+QrQABdKGhJiTGHJRA+QM+agB8ibgZY/V0sgQeQQgAAEIQAACcMsaWcYYYYwsa7EBZOknVVRJSNFPNhaAJfpMydDHUvgAsyUqacX1xNmwAfK0mR1Dm5/bKluAHrNr6AkXYNJYhclQAbotAbrDBFim0RKgkeUQASaMdZgIEWDUAWA0RIBhB4DhEAGexX4FRH8PiP5bALosAbpCXQhNhPoB0F5Au0HVAxxeu0hvmdPvZTGGkhjAdIma4DQeR1VhIo8ABCAAAQigjrPCFA+5SgdpUrTQzgX6ecArVkMHWOU5l9lTdvHdRCcj1a9DLAEst8MVHvnPQUvcp8XqyCMMVVeEqT+AHwyx3ziEfTwNB+A9p00F4QbfQgB4QpOpMJzknd8AG9wzVYWDfPQZ4I6pOpxwr0vUC8CgqUm4yHcfAd7SYGoUbvoIcNzUMG4VqroAqG04w0bUAMYwHjvApcgBjOFT7ACDQQDQxGHbn+a3HXnOawAOcJdxFtkENvnMC66XrwyUHKGBFU8BSJGU3OHP0ek0zksvAWjnQ9lJ/OSWw0iPPQTgPF93nMYGV6zHuu0dAMeY33UiCxyq7eM69QTwxmoqA5ajnfIMgGuW31sL7LUa76hvAPbVHKtn1mjxCoCzDjvYR5YrAa8ABhwApiqfTf0CvHYAmA0RYM4BYD5EgC8OAGshAmw61fECBEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAH8b4BwIwABCEAAAhCAAGIGiL7ZWvTt9qJvuBh9y83Ym65G33ZXjZfVetuo+fpvhDQJOfIBL43WyZMjKf6T8F8a8v0TcgvzDgAAAABJRU5ErkJggg==\"","export default __webpack_public_path__ + \"static/media/In-White-128.3832219d.webp\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzlFQkFERkU4NkJCMTFFM0FBNTJFRTMzNTJEMUJDNDYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzlFQkFERkQ4NkJCMTFFM0FBNTJFRTMzNTJEMUJDNDYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU1MTc4QTJFOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU1MTc4QTJGOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Kk5lQwAABYxJREFUeNrkm29oVXUYx3+7bM3V1FnbqlltrtXWtYRa1nqxooY5E7EhKWGuaTDBagol9SIMDCKICASj+cISw/DPi16ZBakrUBnoC7nNoTMWy6I1c+LmVq6t78N9jpyu555znt855+536IHPi939/jzP95zznN+/kzc1NaUitirwJJgPasF94DZQDG7hMqNgBFwEZ5kU+AH0R+lcXgQCJMBT4EXwLKgM2N7P4FvwJegCk6YKUA5eB23grogu2C/gc7AN/GGKABTsZtAOZqjc2DjYAT5kUfSNBNCkAGwGo1PTZ6PsQ4FuHLp3QD3YDR5QZtgZsAac1ElYokcGbATHDApesS/kUwf7GEkOKAK7wAvKbNsPXgZjYQowG3wNnlDxsONgCbgchgAU/GHwiIqXUT5o8hLBKwfcDA7FMHgrUR/iGLQEoGTyBWhQ8bUGjiFPR4A3QIuKv7VwLKIcQMnue5Dv0fjT/IwtAM3g+RyMBmkU+BXf3qc5Rx3xqDPBE7LjfkaCheCcj1HYKYe6JeBt8GcEo75L3HaJQ7+nfNQ/x7H9p67TFX4L1Pi4EocdfhsGH4BPwVbwqu0xGwI/8vT2N/77Gv+vAJSCO3n6PJ//Vjz72w62cPtORnfAwx7+1nBsW93ugGow7vOKtPkYa9eDl0Clxji9kuvW+yjb5tPncY7xet3MhjoFt2RzgIlU2DQL/O6017W/Be4BawXJqMCgTH+ToOxajvWG1+AmYVBlBglQKrxwmzIFoB9XCzt91CABpL6sti62JcBiXtKS2GMGCSD1pZxjvi7AKmED9PraYJAAG2yvVL+2yi7AImHl90C3QQJ03/B+97ZF1lCYVlN6BBV/BffykNQkoyF4H5grqJOkO6BR2NF2A4O35gifCOs0JjTW9vYaPPPbJ11LJAFqBRVoDf68wQLQI3BBUL424XPiY1lvDOb/ZwRla0iAOYIKv8dAgEFB2VtJgJmCChMxEEAyHigmAQoFFWbFQIDZgrKF0p2hmTEQQOQjCTAmKD8vBgJUCcqOkQBXBBXosEORwcEXKdmBjCskwICgQr5h0+BMW6i8V7LtNkAC9As7WWqwAM8Jy/cnhBMhspVKvq2eC0uwbxLrSWhMa+dpdJQLW6mRpLtpOlyuMcL7CTwErhoSPG2ApjQEuD3BQ0fp0ZJqlT6pZYpt0wieYh60nuWDGp2+At4xIPgt7IvU0jHzBkFdgD27HWDGNGyGFHHfulaXuTN0IkBjZ8EykJeDwKmPFtAXwN8TTltjrVkKfwcawXJW3G3v8DTYCKoiCLwGvAl6QthpbnU6J5jP2f1uh1Wgxbbxwv0qvT/vtZRGA6wuzs50+Pkb8JdgQtPMq1VJld7bnxtSzhjgJD5hzwEW611OZK6xlSvzeYbAsl3Cx4PK7ozodOl6t93hfJByqbzOVnYh+MdHhxfBLI1bnuoMhRx8imPMKgDR5LG/nrSVfddHpx8HeO4/ClmApsw+snXsdk7gYMat+r5Hp0sDCLAkxOA7nfrI1nGxx2tmQUb5x8FuzgvD4Dw4wNm2MIAA1SEF38cx+RaAeBCMZGlwb44GOyUhBD/CsTj24TatpddXq3L+RIVmXnE4QzjJMaSylvBxFdqzKHsVrDD8Dmj36sOvIx0unewHDRENg4MI0BH2FyP0RcZOlzW3Ib7VLvPqDK0z1PEq7bDmLVwCLgnr0AhvnUp/0eJp0k9m6HO4fUp2nGZODgUY5PzUJVlHkxg1TEfnjxqY8I6yb12SSjqLm7T9/Ax4TaW/+JxuIx862KcL4toBk1QFT1omXZLRHQHaL3Npl/r8jH3QjiGsbJ3kGd/fDo6WBWi31KG9a9xXMgzfw35tVfCR9l52dk8Ibe7htnq57YowfY7i4+lYWUL9z+1fAQYACqstE4NCc18AAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/GitHub-Mark-Light-64px.c9a5f25d.webp\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RERCMUIwQTM4NkNFMTFFM0FBNTJFRTMzNTJEMUJDNDYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RERCMUIwQTI4NkNFMTFFM0FBNTJFRTMzNTJEMUJDNDYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU1MTc4QTMyOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBNDE0QUJDOTlBMTExRTI5QTE1QkMxMDQ2QTg5MDREIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+8kSqyAAAAqBQTFRF////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////LcEXBQAAAN90Uk5TAAECAwQFBgcICQoLDA0OEBETFBUWFxgZGhscHR4fICEiIyQlJicoKSorLi8wMTIzNDU2Nzg5Ojs8Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdXZ3eHl6e3x+f4CBgoOEhoeJioyNjpCRkpOUl5qbnJ6foKKjpKWmp6qrrK2usLKztLW2t7m6u7zAwcLDxMbHyMnKy8zNzs/Q0dLT1dbX2Nna29zd3uDh4+Tn6Onq6+zt7u/w8fL09fb3+Pn6+/z9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\"","export default __webpack_public_path__ + \"static/media/GitHub-Mark-Light-120px-plus.e25eef4c.webp\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAAACXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH4wUHDzgBYve/FQAAAkNQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////o1yoNQAAAMF0Uk5TAAABAgMEBQYHCAkKCwwNDg8QERIVFhcYGRobHB0gISIjJSYnKSorLC0uLzAxMjM3ODk6Ozw9Pj9AQUNERUdJSktNTk9QUVNUVldYWltcXV9gYWJjZWZnaGlrbG5vcXJ1dnd5ent8fn+DhIWGh4iJiouMjY6PkpOUlZeZmpucnZ6foKGlpqeoqaqsrrKztLW2uLm6u7y9vr/BwsPExsjJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq7cn4g9sAAAABYktHRAH/Ai3eAAAEiklEQVRIx+2X+XMUVRDHv+/tBvAIIiABFJXggRgVRQS8UAkiIodRQRQQREAEkUNRQCByyRFQIqeIcuxO95uZveeeDfin+UM2m9nsbNAqqyyqfD9N9ZtPdU93z+vvAwYsAUzuACQaLgGJoR2t9a8IYMimXHh+amNcCOC1Szeza+pRLGJHsdmz655GboFHjt3QWbnXp0c3EsDUi75JGrFy2+LZJEZ8Y1vEaaaeLf12CbR0egZTxjFY6ZMbuF1OlsbKKhA766t2iWGrHYtZc6+/uSsXCwtg1m+BSZSxNsz3+2EJvHHFTjHZ3sZmHMjGwBIYf8RWGmXLXZMwJ+iDBdB2MjSY9RsHWgF01sMCuHOjk1esvMtzAbRXYJnEmG/9InHaOz8DkIkYWAALjUBxqqivBiArsACwwixqrKzSB4AE4mA57IxHTLmePS2QgKh6fvWaZzCZ3rbhvfmMg3HfzetM5Z+e7W2SPnj8UVcRZcMTj0PIxvBoN6V4MZCEQD/c8Sczu1faK2UcBDa7e91G4AUBs1olqmhj2DgTyV8Vdj5FQkS79J/A7uqaXyiBzqwy/ja85l+G9f8Mvk3D1v/P9m0B/3BreE7AzoZYeF9WmVMgBp4kUXhewO66WHhHURWfqT+GzkQGwPsB+ytjYIk1Lgev13mOhJ3A5xaH82NggbkBO+trB3QtnMTPSpWei4GBJ7OKz6GpISzkXU5KvzYuFpYXjJQ/sSbuWhgdNpknEAcL7Chw6ctBSoWuPLlLEXN6QuDhHtJz90ddR2GB2SGr0nCBtwJ21g4MGwctzh+Omsa6KfN0NV/M7G6GwOyAS5uRGDDJp4YahYsgq74f8lJmV9+03WmzZrcAmGYp80ckB6qAnRYpf3p/RC/Y6Wxn5fnjHiJvBSTQqulaurYsAHD31RxzbmZlhAkst6jwGQQEsNzVyD7ZG/+vRsqbUNtOgMCjLjEHy/qG5/4SlWdAANjao7HBI3vN+7JkraqDE3jRIVbBqceAZBKj06YqNSeBWVcdIkPvE4/tIeW74nTTLCdPlLH3vgRgXpmtTjQtOB4oJptbK6mUQzM6l58f6BpCYNLvtsaq6JoHll5SnDt0sOQUmDXv1Mi+Mghs91g/HaP3Erhjq28zp9NZX2emXCalMdn2SkRKONHVKIjWNKKfntgTWKbi6sqUvxsXERGQ+LrERumBGBoSaFn7yx8VkjS3u22glh6lTM5cGBqrsCWADUVmZtJt4+06GS4wu5ymYvcQiFhV/46nMTPli+ubUP9KEl+EpBXPja3bExL4xCXFlA+OPohEvPr/3ifKFuahqrT65PWowyEx697FmTVbtWndG6bZCI+3AbIpIaWUMtkENK/K2cQpm5Y0QnvXlh6TKeMfWdxcNT391TVfYy562+6FHISVQHumoDEXbOfs9hXvLlq27pDulUxi9o9NHPSm1Ju1Mbs9VzGlVNELAt/JpNNM+fDKK6g7KmI/fMpuy83olYZSupG/2b0EMeVpEPvwjqOXM34Y+EFopc5umoxbRlx7Wxvx1MsLP/zovbnTJtyS/As248ftlAnpwAAAAABJRU5ErkJggg==\"","export default __webpack_public_path__ + \"static/media/udacity-U-logo-60.b52de701.webp\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAACXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH4wUHDzcl2WxHCwAAArtQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+RhsnAAAAOl0Uk5TAAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Oz0+P0BBQkNERUZHSElKS0xNTk9QUVJVV1hZW1xdXl9gYWJkZWZnaGlrbG1ub3Bx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\"","export default __webpack_public_path__ + \"static/media/udacity-U-logo-120.df7aa1bd.webp\";","import React, { Component } from 'react';\n\nimport './Footer.scss';\n\nimport linkedInLogo from './img/In-White-72.png'\nimport linkedInLogoWebp from './img/In-White-72.webp'\nimport linkedInLogoLarge from './img/In-White-128.png'\nimport linkedInLogoLargeWebp from './img/In-White-128.webp'\n\nimport gitHubLogo from './img/GitHub-Mark-Light-64px.png'\nimport gitHubLogoWebp from './img/GitHub-Mark-Light-64px.webp'\nimport gitHubLogoLarge from './img/GitHub-Mark-Light-120px-plus.png'\nimport gitHubLogoLargeWebp from './img/GitHub-Mark-Light-120px-plus.webp'\n\nimport udacityLogo from './img/udacity-U-logo-60.png'\nimport udacityLogoWebp from './img/udacity-U-logo-60.webp'\nimport udacityLogoLarge from './img/udacity-U-logo-120.png'\nimport udacityLogoLargeWebp from './img/udacity-U-logo-120.webp'\n\nclass Footer extends Component {\n\n showCurrentYear() {\n return new Date().getFullYear();\n }\n\n render() {\n\n return (\n
\n \n
\n\n );\n }\n}\n\nexport default Footer;\n","import React, { Component } from 'react';\n\nimport './App.css';\n\nimport ShrinkingHeader from './ShrinkingHeader/ShrinkingHeader'\nimport HeroImage from './HeroImage/HeroImage'\n\nimport ImageFocusAnimation from './ImageFocusAnimation/ImageFocusAnimation'\n\nimport CallToAction from './CallToAction/CallToAction'\n\nimport NCSunsetSources from './HeroSources/NCSunsetSources'\n\nimport VibrantSkylineTurbinesSources from './HeroSources/VibrantSkylineTurbinesSources'\n\nimport Introduction from './Introduction/Introduction'\n\nimport AIML from './AIML/AIML'\n\nimport Projects from './Projects/Projects'\n\nimport Footer from './Footer/Footer'\n\nclass App extends Component {\n\n //Thanks to agm1984\n //https://gist.github.com/agm1984/092ce379180e94bd13301bb33dbcd29f\n /**\n * This utility function allows function calls to be debounced.\n * @param {Function} func Function that requires debouncing\n * @param {Number} wait Wait time in milliseconds between successive invocations\n */\n debounce = (func, wait) => {\n let timeout\n return (...args) => {\n clearTimeout(timeout)\n timeout = setTimeout(() => func.apply(this, args), wait)\n }\n }\n\n handleNavClick = () => {\n this.state.navIsOpen\n ? this.setState({ navIsOpen : false })\n : this.setState({ navIsOpen : true })\n }\n\n handleResize = () => {\n const windowWidth = +window.innerWidth\n //const windowOrientation = window.orientation\n //const devicePixelRatio = window.devicePixelRatio\n //console.log(\"window width: \" + windowWidth)\n //console.log(\"window orientation: \" + windowOrientation)\n //console.log(\"device pixel ratio: \" + devicePixelRatio)\n\n\n //console.log(\"Y\" + typeof this.state.scrollPositionY + \" bottoms:\" + typeof this.state.bottomOfHome)\n if (this.state.navIsOpen && windowWidth > 600) {this.handleNavClick()}\n return this.setState({ windowWidth })\n }\n\n handleScroll = () => {\n // + is unary operator, same as Number(scrollPositionY)\n const scrollPositionY = +window.scrollY\n //console.log(scrollPositionY)\n return this.setState({ scrollPositionY })\n }\n\n updateHome = (bottom) => {\n this.setState({ bottomOfHome : bottom })\n }\n\n updateAbout = (bottom) => {\n this.setState({ bottomOfAbout : bottom })\n }\n\n updateAIML = (bottom) => {\n this.setState({ bottomOfAIML : bottom })\n }\n\n updateProjects = (bottom) => {\n this.setState({ bottomOfProjects : bottom })\n }\n\n updateImageFocusAnimation = (trigger_height) => {\n this.setState({ triggerForImageFocusAnimation: trigger_height })\n }\n\n updateRepeatImageFocusAnimation = (bool) => {\n this.setState ({ repeatImageFocusAnimation: bool })\n }\n\n updateRepeatCardFlipAnimation = (bool) => {\n this.setState ({ repeatCardFlipAnimation: bool})\n }\n\n updateTriggerForCardFlipAnimation = (trigger_height) => {\n this.setState({ triggerForCardFlipAnimation: trigger_height })\n }\n\n updateFlipCardDimensions = (width) => {\n this.setState({ widthOfFlipCard: width})\n }\n\n updateStationaryHeader = (bottom) => {\n this.setState({ bottomOfStationaryHeader : bottom })\n //console.log(this.state.bottomOfStationaryHeader)\n }\n\n updateHeightOfStickyHeader = (bottom) => {\n this.setState({ heightOfStickyHeader : bottom})\n }\n\n state = {\n scrollPositionY : 0,\n windowWidth : 0,\n bottomOfStationaryHeader : 80,\n heightOfStickyHeader : 80,\n navIsOpen : false,\n bottomOfHome : 300,\n bottomOfAbout: 600,\n bottomOfAIML : 900,\n bottomOfProjects : 3000,\n triggerForImageFocusAnimation: 150,\n repeatImageFocusAnimation: true,\n repeatCardFlipAnimation: true,\n triggerForCardFlipAnimation: 550,\n widthOfFlipCard: 250\n }\n\n render() {\n\n return (\n
\n \n\n \n\n \n\n \n \n \n\n \n\n \n\n \n\n \n \n \n\n \n\n
\n );\n }\n\n componentDidMount() {\n // 32 is the number of milliseconds to debounce\n // Picked because it's approx 2 frames (ie: 16.7 * 2)\n window.addEventListener('scroll', this.debounce(this.handleScroll, 32))\n window.addEventListener('resize', this.debounce(this.handleResize, 32))\n window.addEventListener(\n \"DOMContentLoaded\", this.debounce(this.handleResize, 32))\n }\n\n componentWillUnmount() {\n window.removeEventListener('scroll', this.debounce(this.handleScroll, 32))\n window.removeEventListener('resize', this.debounce(this.handleResize, 32))\n window.removeEventListener(\n \"DOMContentLoaded\", this.debounce(this.handleResize, 32))\n }\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}