html body { margin-top: 50px !important; } .jsdfjhdsgjfhdgshf{ position:fixed; width:30px; height:30px; bottom:20px; right:20px; background-color:#0C9; color:#FFF; border-radius:50px; text-align:center; box-shadow: 2px 2px 3px #999; } .my-float{ margin-top:22px; } #top_form { position: fixed; top:0; left:0; width: 100%; margin:0; z-index: 2100000000; -moz-user-select: none; -khtml-user-select: none; -webkit-user-select: none; -o-user-select: none; border-bottom:1px solid #151515; background:#369eab; height:45px; line-height:45px; background-color:#369eab; } #top_form input[name=url] { width: 550px; height: 20px; padding: 5px; font: 13px "Helvetica Neue",Helvetica,Arial,sans-serif; border: 0px none; background: none repeat scroll 0% 0% #FFF; }

Thanks to visit codestin.com
Credit goes to erick.fi

{ const newHash = window.location.hash || ''; this.showPhotos = newHash === '#photos' || newHash.startsWith('#photo='); }); }, goHome() { const wasShowingAbout = !this.showPhotos; // Synchronously hide photos before any state changes // so the gallery cannot flash during the transition // (e.g. IntersectionObserver firing loadMore). if (!wasShowingAbout && this.$refs.photosView) { this.$refs.photosView.style.display = 'none'; } this.showPhotos = false; if (window.history && window.history.replaceState) { const oldURL = window.location.href; window.history.replaceState(null, document.title, window.location.pathname + window.location.search); // Manually dispatch hashchange event to clear photo selection window.dispatchEvent(new HashChangeEvent('hashchange', { oldURL: oldURL, newURL: window.location.href })); } else { window.location.hash = ''; } if (wasShowingAbout) { // Use smooth scroll if already on about page setTimeout(() => { window.scrollTo({ top: 0, behavior: 'smooth' }); }, 50); } else { // Instant scroll when switching from another page window.scrollTo(0, 0); } }, goPhotos() { const wasShowingPhotos = this.showPhotos; const currentHash = window.location.hash || ''; const wasPhotoDetail = currentHash.startsWith('#photo='); // Scroll immediately before DOM changes if needed if (wasShowingPhotos && !wasPhotoDetail) { // Smooth scroll if already on photos gallery window.scrollTo({ top: 0, behavior: 'smooth' }); } else if (!wasShowingPhotos) { // Instant scroll when switching from About window.scrollTo(0, 0); } // Note: Don't scroll yet if coming from photo detail - will scroll after transition this.showPhotos = true; // Use replaceState for normal navigation, but location.hash when coming from photo detail // to ensure proper hashchange event fires if (wasPhotoDetail) { window.location.hash = 'photos'; } else if (window.history && window.history.replaceState) { window.history.replaceState( null, document.title, window.location.pathname + window.location.search + '#photos', ); } else { window.location.hash = 'photos'; } // Smooth scroll after transition when coming from photo detail if (wasPhotoDetail) { setTimeout(() => { window.scrollTo({ top: 0, behavior: 'smooth' }); }, 200); } } }" >

About

I live in Finland with my girlfriend Ina and cat Masse. I grew up in Montana and lived in New York City for many years before moving to Finland in 2021. Big Sky to Big Apple to Big Sauna.

These days I work as a Software Engineering Manager at Posti, Finland's postal service and multi-national logistics company. In the past, I've had roles ranging from backend software engineer to government policy data analyst to public school teacher. My CV and LinkedIn profile have more information.

I've studied Statistics at Hunter College, Mathematics Education at NYU, and Mathematics at the University of Washington.

Lately, my hobbies include learning Swedish and Finnish, watching movies, traveling (especially in the Nordics), and finding good saunas or cold water swimming spots.

Please take a look at my photos if you like.

Contact

Photo of Jeff Erickson