Domain edwardboaden.com
United States
AMAZON-02
Software information

AmazonS3 AmazonS3

tcp/443

CloudFront

tcp/80

  • Open service 2600:9000:266e:b600:18:98:7200:93a1:80 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 301 Moved Permanently
    Server: CloudFront
    Date: Sat, 10 Jan 2026 22:46:37 GMT
    Content-Type: text/html
    Content-Length: 167
    Connection: close
    Location: https://edwardboaden.com/
    X-Cache: Redirect from cloudfront
    Via: 1.1 af3799c72ed879abb7633a4c3e57502e.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: ZgtuivIDArxmwWFY6dked0qyVx2A5sFQes52BxjXB0u0pOYYUakwVQ==
    
    Page title: 301 Moved Permanently
    
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>CloudFront</center>
    </body>
    </html>
    
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 2600:9000:266e:b600:18:98:7200:93a1:443 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 11741
    Connection: close
    Last-Modified: Sat, 08 Nov 2025 17:58:46 GMT
    x-amz-server-side-encryption: AES256
    Accept-Ranges: bytes
    Server: AmazonS3
    Date: Sat, 10 Jan 2026 22:46:37 GMT
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "3013b02b337d805e9075625bfb49a119"
    X-Cache: Error from cloudfront
    Via: 1.1 2146d75cb402f16f98928cb19acf5ff6.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: u3ZkmzTW4pgZmUvHk1nX1TJSEY_oEz-kMxhP-Sq6yk0U58dU33xCrg==
    
    Page title: Edward Boaden - Software Engineer
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Edward Boaden - Software Engineer</title>
        <base href="/" />
        
        <!-- Google tag (gtag.js) -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=G-X7K8RELCL3"></script>
        <script>
          const GA_MEASUREMENT_ID = 'G-X7K8RELCL3';
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
    
          gtag('config', GA_MEASUREMENT_ID, {
            // Enhanced measurement features
            send_page_view: true,
            page_path: window.location.pathname,
            
            // Link tracking
            link_attribution: true,
            
            // Enhanced conversions (improves conversion measurement accuracy)
            allow_enhanced_conversions: true,
            
            // Session tracking - Lax is more compatible and respects user privacy
            cookie_flags: 'SameSite=Lax',
            
            // Debug mode (remove in production if desired)
            debug_mode: false
          });
          
          // Track scroll depth and time on page (initialized)
          let scrollDepthTracked = {};
          let scrollTimeout;
          let totalVisibleTime = 0;
          let lastVisibleTime = Date.now();
          
          // Setup all event listeners after DOM is loaded
          document.addEventListener('DOMContentLoaded', function() {
            // Track outbound links and file downloads in a single listener
            document.addEventListener('click', function(e) {
              const link = e.target.closest('a');
              if (!link || !link.href) return;
              
              // Track outbound links (only external domains)
              if (link.hostname !== window.location.hostname) {
                gtag('event', 'click', {
                  event_category: 'outbound',
                  event_label: link.href,
                  transport_type: 'beacon'
                });
              }
              
              // Track file downloads
              if (/\.(pdf|doc|docx|zip|rar|txt|csv)$/i.test(link.href)) {
                gtag('event', 'file_download', {
                  file_name: link.href.split('/').pop(),
                  link_url: link.href
                });
              }
            });
            
            // Track scroll depth with throttling
            window.addEventListener('scroll', function() {
              if (scrollTimeout) return;
              scrollTimeout = setTimeout(function() {
                scrollTimeout = null;
                const maxScroll = document.documentElement.scrollHeight - window.innerHeight;
                
                // Skip scroll tracking if page content fits in viewport
                if (maxScroll <= 0) return;
                
                const scrollPercent = Math.round((window.scrollY / maxScroll) * 100);
                [25, 50, 75, 90].forEach(function(depth) {
                  if (scrollPercent >= depth && !scrollDepthTracked[depth]) {
                    scrollDepthTracked[depth] = true;
                    gtag('event', 'scroll', {
                      event_category: 'engagement',
                      event_label: depth + '%',
                      value: depth
                    });
                  }
                });
              }, 100);
            });
            
            // Track visibility changes to accumulate visible time
            document.addEventListener('visibilitychange', function() {
              if (document.hidden) {
                // Page is hidden - add visible time to total
                totalVisibleTime += Date.now() - lastVisibleTime;
              } else {
                // Page is visible again - reset visible time tracker
                lastVisibleTime = Date.now();
              }
            });
            
            // Send time_on_page event once per session on pagehide
            window.addEventListener('pagehide', function() {
              // Add any remaining visible time if page is currently visible
              if (!document.hidden) {
                totalVisibleTime += Date.now() - lastVisibleTime;
              }
              const timeOnPage = Math.round(totalVisibleTime / 1000);
              gtag('event', 'time_on_page', {
          
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 2600:9000:266e:6600:18:98:7200:93a1:443 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 11741
    Connection: close
    Last-Modified: Sat, 08 Nov 2025 17:58:46 GMT
    x-amz-server-side-encryption: AES256
    Accept-Ranges: bytes
    Server: AmazonS3
    Date: Sat, 10 Jan 2026 22:46:37 GMT
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "3013b02b337d805e9075625bfb49a119"
    X-Cache: Error from cloudfront
    Via: 1.1 f36453eb82bc9ab0c6e360ac52cc5972.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: 5zwC7Y2uuskBjpVktEcquV_3B_mU5Zry_cresQSJ9e5b_pWiwFg-Wg==
    
    Page title: Edward Boaden - Software Engineer
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Edward Boaden - Software Engineer</title>
        <base href="/" />
        
        <!-- Google tag (gtag.js) -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=G-X7K8RELCL3"></script>
        <script>
          const GA_MEASUREMENT_ID = 'G-X7K8RELCL3';
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
    
          gtag('config', GA_MEASUREMENT_ID, {
            // Enhanced measurement features
            send_page_view: true,
            page_path: window.location.pathname,
            
            // Link tracking
            link_attribution: true,
            
            // Enhanced conversions (improves conversion measurement accuracy)
            allow_enhanced_conversions: true,
            
            // Session tracking - Lax is more compatible and respects user privacy
            cookie_flags: 'SameSite=Lax',
            
            // Debug mode (remove in production if desired)
            debug_mode: false
          });
          
          // Track scroll depth and time on page (initialized)
          let scrollDepthTracked = {};
          let scrollTimeout;
          let totalVisibleTime = 0;
          let lastVisibleTime = Date.now();
          
          // Setup all event listeners after DOM is loaded
          document.addEventListener('DOMContentLoaded', function() {
            // Track outbound links and file downloads in a single listener
            document.addEventListener('click', function(e) {
              const link = e.target.closest('a');
              if (!link || !link.href) return;
              
              // Track outbound links (only external domains)
              if (link.hostname !== window.location.hostname) {
                gtag('event', 'click', {
                  event_category: 'outbound',
                  event_label: link.href,
                  transport_type: 'beacon'
                });
              }
              
              // Track file downloads
              if (/\.(pdf|doc|docx|zip|rar|txt|csv)$/i.test(link.href)) {
                gtag('event', 'file_download', {
                  file_name: link.href.split('/').pop(),
                  link_url: link.href
                });
              }
            });
            
            // Track scroll depth with throttling
            window.addEventListener('scroll', function() {
              if (scrollTimeout) return;
              scrollTimeout = setTimeout(function() {
                scrollTimeout = null;
                const maxScroll = document.documentElement.scrollHeight - window.innerHeight;
                
                // Skip scroll tracking if page content fits in viewport
                if (maxScroll <= 0) return;
                
                const scrollPercent = Math.round((window.scrollY / maxScroll) * 100);
                [25, 50, 75, 90].forEach(function(depth) {
                  if (scrollPercent >= depth && !scrollDepthTracked[depth]) {
                    scrollDepthTracked[depth] = true;
                    gtag('event', 'scroll', {
                      event_category: 'engagement',
                      event_label: depth + '%',
                      value: depth
                    });
                  }
                });
              }, 100);
            });
            
            // Track visibility changes to accumulate visible time
            document.addEventListener('visibilitychange', function() {
              if (document.hidden) {
                // Page is hidden - add visible time to total
                totalVisibleTime += Date.now() - lastVisibleTime;
              } else {
                // Page is visible again - reset visible time tracker
                lastVisibleTime = Date.now();
              }
            });
            
            // Send time_on_page event once per session on pagehide
            window.addEventListener('pagehide', function() {
              // Add any remaining visible time if page is currently visible
              if (!document.hidden) {
                totalVisibleTime += Date.now() - lastVisibleTime;
              }
              const timeOnPage = Math.round(totalVisibleTime / 1000);
              gtag('event', 'time_on_page', {
          
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 18.245.31.114:80 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 301 Moved Permanently
    Server: CloudFront
    Date: Sat, 10 Jan 2026 22:46:36 GMT
    Content-Type: text/html
    Content-Length: 167
    Connection: close
    Location: https://edwardboaden.com/
    X-Cache: Redirect from cloudfront
    Via: 1.1 f996db233b87d6765cc5ad56701268d8.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: koOdmrbUcaGE4YngHWWn8UmeYpuSYW0igQx0CTInqeRLZuSdvhDk8g==
    
    Page title: 301 Moved Permanently
    
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>CloudFront</center>
    </body>
    </html>
    
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 18.245.31.47:80 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 301 Moved Permanently
    Server: CloudFront
    Date: Sat, 10 Jan 2026 22:46:37 GMT
    Content-Type: text/html
    Content-Length: 167
    Connection: close
    Location: https://edwardboaden.com/
    X-Cache: Redirect from cloudfront
    Via: 1.1 e030504e72fa75d92c1856a58b964932.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: mqR_V6u23wXgkKzQ1FQFLVvrdsaP23fSoC99Ru6110Cjpo62o459Hg==
    
    Page title: 301 Moved Permanently
    
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>CloudFront</center>
    </body>
    </html>
    
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 18.245.31.114:443 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 11741
    Connection: close
    Last-Modified: Sat, 08 Nov 2025 17:58:46 GMT
    x-amz-server-side-encryption: AES256
    Accept-Ranges: bytes
    Server: AmazonS3
    Date: Sat, 10 Jan 2026 22:46:37 GMT
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "3013b02b337d805e9075625bfb49a119"
    X-Cache: Error from cloudfront
    Via: 1.1 fbd2b51fce9ee4f3aa7b93dbbda3d698.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: bnn2BxrAocwLbs_p3QxqsMpsSaG5O6OArLUGL5j8rSP6mWVRc-lupQ==
    
    Page title: Edward Boaden - Software Engineer
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Edward Boaden - Software Engineer</title>
        <base href="/" />
        
        <!-- Google tag (gtag.js) -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=G-X7K8RELCL3"></script>
        <script>
          const GA_MEASUREMENT_ID = 'G-X7K8RELCL3';
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
    
          gtag('config', GA_MEASUREMENT_ID, {
            // Enhanced measurement features
            send_page_view: true,
            page_path: window.location.pathname,
            
            // Link tracking
            link_attribution: true,
            
            // Enhanced conversions (improves conversion measurement accuracy)
            allow_enhanced_conversions: true,
            
            // Session tracking - Lax is more compatible and respects user privacy
            cookie_flags: 'SameSite=Lax',
            
            // Debug mode (remove in production if desired)
            debug_mode: false
          });
          
          // Track scroll depth and time on page (initialized)
          let scrollDepthTracked = {};
          let scrollTimeout;
          let totalVisibleTime = 0;
          let lastVisibleTime = Date.now();
          
          // Setup all event listeners after DOM is loaded
          document.addEventListener('DOMContentLoaded', function() {
            // Track outbound links and file downloads in a single listener
            document.addEventListener('click', function(e) {
              const link = e.target.closest('a');
              if (!link || !link.href) return;
              
              // Track outbound links (only external domains)
              if (link.hostname !== window.location.hostname) {
                gtag('event', 'click', {
                  event_category: 'outbound',
                  event_label: link.href,
                  transport_type: 'beacon'
                });
              }
              
              // Track file downloads
              if (/\.(pdf|doc|docx|zip|rar|txt|csv)$/i.test(link.href)) {
                gtag('event', 'file_download', {
                  file_name: link.href.split('/').pop(),
                  link_url: link.href
                });
              }
            });
            
            // Track scroll depth with throttling
            window.addEventListener('scroll', function() {
              if (scrollTimeout) return;
              scrollTimeout = setTimeout(function() {
                scrollTimeout = null;
                const maxScroll = document.documentElement.scrollHeight - window.innerHeight;
                
                // Skip scroll tracking if page content fits in viewport
                if (maxScroll <= 0) return;
                
                const scrollPercent = Math.round((window.scrollY / maxScroll) * 100);
                [25, 50, 75, 90].forEach(function(depth) {
                  if (scrollPercent >= depth && !scrollDepthTracked[depth]) {
                    scrollDepthTracked[depth] = true;
                    gtag('event', 'scroll', {
                      event_category: 'engagement',
                      event_label: depth + '%',
                      value: depth
                    });
                  }
                });
              }, 100);
            });
            
            // Track visibility changes to accumulate visible time
            document.addEventListener('visibilitychange', function() {
              if (document.hidden) {
                // Page is hidden - add visible time to total
                totalVisibleTime += Date.now() - lastVisibleTime;
              } else {
                // Page is visible again - reset visible time tracker
                lastVisibleTime = Date.now();
              }
            });
            
            // Send time_on_page event once per session on pagehide
            window.addEventListener('pagehide', function() {
              // Add any remaining visible time if page is currently visible
              if (!document.hidden) {
                totalVisibleTime += Date.now() - lastVisibleTime;
              }
              const timeOnPage = Math.round(totalVisibleTime / 1000);
              gtag('event', 'time_on_page', {
          
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 18.245.31.47:443 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 11741
    Connection: close
    Last-Modified: Sat, 08 Nov 2025 17:58:46 GMT
    x-amz-server-side-encryption: AES256
    Accept-Ranges: bytes
    Server: AmazonS3
    Date: Sat, 10 Jan 2026 22:46:37 GMT
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "3013b02b337d805e9075625bfb49a119"
    X-Cache: Error from cloudfront
    Via: 1.1 851fdca2e1873274a995295ecd94732e.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: GPd3DaazO54D9MCkHGJxz43aSMrigw2Oc01eiXSiic-KuMn5s7kAsA==
    
    Page title: Edward Boaden - Software Engineer
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Edward Boaden - Software Engineer</title>
        <base href="/" />
        
        <!-- Google tag (gtag.js) -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=G-X7K8RELCL3"></script>
        <script>
          const GA_MEASUREMENT_ID = 'G-X7K8RELCL3';
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
    
          gtag('config', GA_MEASUREMENT_ID, {
            // Enhanced measurement features
            send_page_view: true,
            page_path: window.location.pathname,
            
            // Link tracking
            link_attribution: true,
            
            // Enhanced conversions (improves conversion measurement accuracy)
            allow_enhanced_conversions: true,
            
            // Session tracking - Lax is more compatible and respects user privacy
            cookie_flags: 'SameSite=Lax',
            
            // Debug mode (remove in production if desired)
            debug_mode: false
          });
          
          // Track scroll depth and time on page (initialized)
          let scrollDepthTracked = {};
          let scrollTimeout;
          let totalVisibleTime = 0;
          let lastVisibleTime = Date.now();
          
          // Setup all event listeners after DOM is loaded
          document.addEventListener('DOMContentLoaded', function() {
            // Track outbound links and file downloads in a single listener
            document.addEventListener('click', function(e) {
              const link = e.target.closest('a');
              if (!link || !link.href) return;
              
              // Track outbound links (only external domains)
              if (link.hostname !== window.location.hostname) {
                gtag('event', 'click', {
                  event_category: 'outbound',
                  event_label: link.href,
                  transport_type: 'beacon'
                });
              }
              
              // Track file downloads
              if (/\.(pdf|doc|docx|zip|rar|txt|csv)$/i.test(link.href)) {
                gtag('event', 'file_download', {
                  file_name: link.href.split('/').pop(),
                  link_url: link.href
                });
              }
            });
            
            // Track scroll depth with throttling
            window.addEventListener('scroll', function() {
              if (scrollTimeout) return;
              scrollTimeout = setTimeout(function() {
                scrollTimeout = null;
                const maxScroll = document.documentElement.scrollHeight - window.innerHeight;
                
                // Skip scroll tracking if page content fits in viewport
                if (maxScroll <= 0) return;
                
                const scrollPercent = Math.round((window.scrollY / maxScroll) * 100);
                [25, 50, 75, 90].forEach(function(depth) {
                  if (scrollPercent >= depth && !scrollDepthTracked[depth]) {
                    scrollDepthTracked[depth] = true;
                    gtag('event', 'scroll', {
                      event_category: 'engagement',
                      event_label: depth + '%',
                      value: depth
                    });
                  }
                });
              }, 100);
            });
            
            // Track visibility changes to accumulate visible time
            document.addEventListener('visibilitychange', function() {
              if (document.hidden) {
                // Page is hidden - add visible time to total
                totalVisibleTime += Date.now() - lastVisibleTime;
              } else {
                // Page is visible again - reset visible time tracker
                lastVisibleTime = Date.now();
              }
            });
            
            // Send time_on_page event once per session on pagehide
            window.addEventListener('pagehide', function() {
              // Add any remaining visible time if page is currently visible
              if (!document.hidden) {
                totalVisibleTime += Date.now() - lastVisibleTime;
              }
              const timeOnPage = Math.round(totalVisibleTime / 1000);
              gtag('event', 'time_on_page', {
          
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 2600:9000:266e:4400:18:98:7200:93a1:80 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 301 Moved Permanently
    Server: CloudFront
    Date: Sat, 10 Jan 2026 22:46:36 GMT
    Content-Type: text/html
    Content-Length: 167
    Connection: close
    Location: https://edwardboaden.com/
    X-Cache: Redirect from cloudfront
    Via: 1.1 f36453eb82bc9ab0c6e360ac52cc5972.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: yCcfnFf5uZAZhV9l2-krKRY2XFZi3HE4Ks0Wvkhl2KvQ2mE9ufI3gA==
    
    Page title: 301 Moved Permanently
    
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>CloudFront</center>
    </body>
    </html>
    
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 2600:9000:266e:0:18:98:7200:93a1:80 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 301 Moved Permanently
    Server: CloudFront
    Date: Sat, 10 Jan 2026 22:46:36 GMT
    Content-Type: text/html
    Content-Length: 167
    Connection: close
    Location: https://edwardboaden.com/
    X-Cache: Redirect from cloudfront
    Via: 1.1 7b85fc567b776c0d31c5ac07cc6c2ae6.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: naQp-OYlmb-z5hwjyIlCf8V5uBFU_6EqLWfUYtC6AyIXXZfzGxShkA==
    
    Page title: 301 Moved Permanently
    
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>CloudFront</center>
    </body>
    </html>
    
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 2600:9000:266e:fa00:18:98:7200:93a1:443 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 11741
    Connection: close
    Last-Modified: Sat, 08 Nov 2025 17:58:46 GMT
    x-amz-server-side-encryption: AES256
    Accept-Ranges: bytes
    Server: AmazonS3
    Date: Sat, 10 Jan 2026 22:46:37 GMT
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "3013b02b337d805e9075625bfb49a119"
    X-Cache: Error from cloudfront
    Via: 1.1 a4079c0a5989b4b7af98433fdd07f680.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: RPsMdTdJK1XgCWkfsYm-r-zCpdzWR8UgfDRSEc1hOJU67HYVg8Nd0g==
    
    Page title: Edward Boaden - Software Engineer
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Edward Boaden - Software Engineer</title>
        <base href="/" />
        
        <!-- Google tag (gtag.js) -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=G-X7K8RELCL3"></script>
        <script>
          const GA_MEASUREMENT_ID = 'G-X7K8RELCL3';
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
    
          gtag('config', GA_MEASUREMENT_ID, {
            // Enhanced measurement features
            send_page_view: true,
            page_path: window.location.pathname,
            
            // Link tracking
            link_attribution: true,
            
            // Enhanced conversions (improves conversion measurement accuracy)
            allow_enhanced_conversions: true,
            
            // Session tracking - Lax is more compatible and respects user privacy
            cookie_flags: 'SameSite=Lax',
            
            // Debug mode (remove in production if desired)
            debug_mode: false
          });
          
          // Track scroll depth and time on page (initialized)
          let scrollDepthTracked = {};
          let scrollTimeout;
          let totalVisibleTime = 0;
          let lastVisibleTime = Date.now();
          
          // Setup all event listeners after DOM is loaded
          document.addEventListener('DOMContentLoaded', function() {
            // Track outbound links and file downloads in a single listener
            document.addEventListener('click', function(e) {
              const link = e.target.closest('a');
              if (!link || !link.href) return;
              
              // Track outbound links (only external domains)
              if (link.hostname !== window.location.hostname) {
                gtag('event', 'click', {
                  event_category: 'outbound',
                  event_label: link.href,
                  transport_type: 'beacon'
                });
              }
              
              // Track file downloads
              if (/\.(pdf|doc|docx|zip|rar|txt|csv)$/i.test(link.href)) {
                gtag('event', 'file_download', {
                  file_name: link.href.split('/').pop(),
                  link_url: link.href
                });
              }
            });
            
            // Track scroll depth with throttling
            window.addEventListener('scroll', function() {
              if (scrollTimeout) return;
              scrollTimeout = setTimeout(function() {
                scrollTimeout = null;
                const maxScroll = document.documentElement.scrollHeight - window.innerHeight;
                
                // Skip scroll tracking if page content fits in viewport
                if (maxScroll <= 0) return;
                
                const scrollPercent = Math.round((window.scrollY / maxScroll) * 100);
                [25, 50, 75, 90].forEach(function(depth) {
                  if (scrollPercent >= depth && !scrollDepthTracked[depth]) {
                    scrollDepthTracked[depth] = true;
                    gtag('event', 'scroll', {
                      event_category: 'engagement',
                      event_label: depth + '%',
                      value: depth
                    });
                  }
                });
              }, 100);
            });
            
            // Track visibility changes to accumulate visible time
            document.addEventListener('visibilitychange', function() {
              if (document.hidden) {
                // Page is hidden - add visible time to total
                totalVisibleTime += Date.now() - lastVisibleTime;
              } else {
                // Page is visible again - reset visible time tracker
                lastVisibleTime = Date.now();
              }
            });
            
            // Send time_on_page event once per session on pagehide
            window.addEventListener('pagehide', function() {
              // Add any remaining visible time if page is currently visible
              if (!document.hidden) {
                totalVisibleTime += Date.now() - lastVisibleTime;
              }
              const timeOnPage = Math.round(totalVisibleTime / 1000);
              gtag('event', 'time_on_page', {
          
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 2600:9000:266e:6600:18:98:7200:93a1:80 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 301 Moved Permanently
    Server: CloudFront
    Date: Sat, 10 Jan 2026 22:46:36 GMT
    Content-Type: text/html
    Content-Length: 167
    Connection: close
    Location: https://edwardboaden.com/
    X-Cache: Redirect from cloudfront
    Via: 1.1 2146d75cb402f16f98928cb19acf5ff6.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: lwTpOIl3-hsi-JCvj7tvlJBduUo9bEV3vJp_z0PgQdcX5-7PY7AGVw==
    
    Page title: 301 Moved Permanently
    
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>CloudFront</center>
    </body>
    </html>
    
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 2600:9000:266e:e600:18:98:7200:93a1:80 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 301 Moved Permanently
    Server: CloudFront
    Date: Sat, 10 Jan 2026 22:46:36 GMT
    Content-Type: text/html
    Content-Length: 167
    Connection: close
    Location: https://edwardboaden.com/
    X-Cache: Redirect from cloudfront
    Via: 1.1 b8455bc5c5405f573b6e4da5524ee9e2.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: 4OFcTy3FNlD-yBzaINLVJg1I8J_lZQYDKJpQI-gE9kUW_fRKHPfLPg==
    
    Page title: 301 Moved Permanently
    
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>CloudFront</center>
    </body>
    </html>
    
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 2600:9000:266e:4000:18:98:7200:93a1:80 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 301 Moved Permanently
    Server: CloudFront
    Date: Sat, 10 Jan 2026 22:46:36 GMT
    Content-Type: text/html
    Content-Length: 167
    Connection: close
    Location: https://edwardboaden.com/
    X-Cache: Redirect from cloudfront
    Via: 1.1 74cd4e6bd806cc7209ac94e0173f5ac8.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: 4wt4mk1BtlmCqqkDrV2UqKFm7aH1XCRndPll3mMgZdkZV9S9wHnvcA==
    
    Page title: 301 Moved Permanently
    
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>CloudFront</center>
    </body>
    </html>
    
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 2600:9000:266e:3200:18:98:7200:93a1:443 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 11741
    Connection: close
    Last-Modified: Sat, 08 Nov 2025 17:58:46 GMT
    x-amz-server-side-encryption: AES256
    Accept-Ranges: bytes
    Server: AmazonS3
    Date: Sat, 10 Jan 2026 22:46:37 GMT
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "3013b02b337d805e9075625bfb49a119"
    X-Cache: Error from cloudfront
    Via: 1.1 d8ec42efeb409ac816e90eb0236c1f4a.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: WyIkD0EiZZE9DR3-jIUJrG1YETJMcv7B_QnF2WdpKu98e7wkZzgnJg==
    
    Page title: Edward Boaden - Software Engineer
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Edward Boaden - Software Engineer</title>
        <base href="/" />
        
        <!-- Google tag (gtag.js) -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=G-X7K8RELCL3"></script>
        <script>
          const GA_MEASUREMENT_ID = 'G-X7K8RELCL3';
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
    
          gtag('config', GA_MEASUREMENT_ID, {
            // Enhanced measurement features
            send_page_view: true,
            page_path: window.location.pathname,
            
            // Link tracking
            link_attribution: true,
            
            // Enhanced conversions (improves conversion measurement accuracy)
            allow_enhanced_conversions: true,
            
            // Session tracking - Lax is more compatible and respects user privacy
            cookie_flags: 'SameSite=Lax',
            
            // Debug mode (remove in production if desired)
            debug_mode: false
          });
          
          // Track scroll depth and time on page (initialized)
          let scrollDepthTracked = {};
          let scrollTimeout;
          let totalVisibleTime = 0;
          let lastVisibleTime = Date.now();
          
          // Setup all event listeners after DOM is loaded
          document.addEventListener('DOMContentLoaded', function() {
            // Track outbound links and file downloads in a single listener
            document.addEventListener('click', function(e) {
              const link = e.target.closest('a');
              if (!link || !link.href) return;
              
              // Track outbound links (only external domains)
              if (link.hostname !== window.location.hostname) {
                gtag('event', 'click', {
                  event_category: 'outbound',
                  event_label: link.href,
                  transport_type: 'beacon'
                });
              }
              
              // Track file downloads
              if (/\.(pdf|doc|docx|zip|rar|txt|csv)$/i.test(link.href)) {
                gtag('event', 'file_download', {
                  file_name: link.href.split('/').pop(),
                  link_url: link.href
                });
              }
            });
            
            // Track scroll depth with throttling
            window.addEventListener('scroll', function() {
              if (scrollTimeout) return;
              scrollTimeout = setTimeout(function() {
                scrollTimeout = null;
                const maxScroll = document.documentElement.scrollHeight - window.innerHeight;
                
                // Skip scroll tracking if page content fits in viewport
                if (maxScroll <= 0) return;
                
                const scrollPercent = Math.round((window.scrollY / maxScroll) * 100);
                [25, 50, 75, 90].forEach(function(depth) {
                  if (scrollPercent >= depth && !scrollDepthTracked[depth]) {
                    scrollDepthTracked[depth] = true;
                    gtag('event', 'scroll', {
                      event_category: 'engagement',
                      event_label: depth + '%',
                      value: depth
                    });
                  }
                });
              }, 100);
            });
            
            // Track visibility changes to accumulate visible time
            document.addEventListener('visibilitychange', function() {
              if (document.hidden) {
                // Page is hidden - add visible time to total
                totalVisibleTime += Date.now() - lastVisibleTime;
              } else {
                // Page is visible again - reset visible time tracker
                lastVisibleTime = Date.now();
              }
            });
            
            // Send time_on_page event once per session on pagehide
            window.addEventListener('pagehide', function() {
              // Add any remaining visible time if page is currently visible
              if (!document.hidden) {
                totalVisibleTime += Date.now() - lastVisibleTime;
              }
              const timeOnPage = Math.round(totalVisibleTime / 1000);
              gtag('event', 'time_on_page', {
          
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 2600:9000:266e:4000:18:98:7200:93a1:443 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 11741
    Connection: close
    Last-Modified: Sat, 08 Nov 2025 17:58:46 GMT
    x-amz-server-side-encryption: AES256
    Accept-Ranges: bytes
    Server: AmazonS3
    Date: Sat, 10 Jan 2026 22:46:37 GMT
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "3013b02b337d805e9075625bfb49a119"
    X-Cache: Error from cloudfront
    Via: 1.1 2146d75cb402f16f98928cb19acf5ff6.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: 2bY9XzLRXktd0zGFISRw8glrVwhK7SJasRH85LYSIeVA_y_fz7q3JQ==
    
    Page title: Edward Boaden - Software Engineer
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Edward Boaden - Software Engineer</title>
        <base href="/" />
        
        <!-- Google tag (gtag.js) -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=G-X7K8RELCL3"></script>
        <script>
          const GA_MEASUREMENT_ID = 'G-X7K8RELCL3';
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
    
          gtag('config', GA_MEASUREMENT_ID, {
            // Enhanced measurement features
            send_page_view: true,
            page_path: window.location.pathname,
            
            // Link tracking
            link_attribution: true,
            
            // Enhanced conversions (improves conversion measurement accuracy)
            allow_enhanced_conversions: true,
            
            // Session tracking - Lax is more compatible and respects user privacy
            cookie_flags: 'SameSite=Lax',
            
            // Debug mode (remove in production if desired)
            debug_mode: false
          });
          
          // Track scroll depth and time on page (initialized)
          let scrollDepthTracked = {};
          let scrollTimeout;
          let totalVisibleTime = 0;
          let lastVisibleTime = Date.now();
          
          // Setup all event listeners after DOM is loaded
          document.addEventListener('DOMContentLoaded', function() {
            // Track outbound links and file downloads in a single listener
            document.addEventListener('click', function(e) {
              const link = e.target.closest('a');
              if (!link || !link.href) return;
              
              // Track outbound links (only external domains)
              if (link.hostname !== window.location.hostname) {
                gtag('event', 'click', {
                  event_category: 'outbound',
                  event_label: link.href,
                  transport_type: 'beacon'
                });
              }
              
              // Track file downloads
              if (/\.(pdf|doc|docx|zip|rar|txt|csv)$/i.test(link.href)) {
                gtag('event', 'file_download', {
                  file_name: link.href.split('/').pop(),
                  link_url: link.href
                });
              }
            });
            
            // Track scroll depth with throttling
            window.addEventListener('scroll', function() {
              if (scrollTimeout) return;
              scrollTimeout = setTimeout(function() {
                scrollTimeout = null;
                const maxScroll = document.documentElement.scrollHeight - window.innerHeight;
                
                // Skip scroll tracking if page content fits in viewport
                if (maxScroll <= 0) return;
                
                const scrollPercent = Math.round((window.scrollY / maxScroll) * 100);
                [25, 50, 75, 90].forEach(function(depth) {
                  if (scrollPercent >= depth && !scrollDepthTracked[depth]) {
                    scrollDepthTracked[depth] = true;
                    gtag('event', 'scroll', {
                      event_category: 'engagement',
                      event_label: depth + '%',
                      value: depth
                    });
                  }
                });
              }, 100);
            });
            
            // Track visibility changes to accumulate visible time
            document.addEventListener('visibilitychange', function() {
              if (document.hidden) {
                // Page is hidden - add visible time to total
                totalVisibleTime += Date.now() - lastVisibleTime;
              } else {
                // Page is visible again - reset visible time tracker
                lastVisibleTime = Date.now();
              }
            });
            
            // Send time_on_page event once per session on pagehide
            window.addEventListener('pagehide', function() {
              // Add any remaining visible time if page is currently visible
              if (!document.hidden) {
                totalVisibleTime += Date.now() - lastVisibleTime;
              }
              const timeOnPage = Math.round(totalVisibleTime / 1000);
              gtag('event', 'time_on_page', {
          
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 2600:9000:266e:fa00:18:98:7200:93a1:80 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 301 Moved Permanently
    Server: CloudFront
    Date: Sat, 10 Jan 2026 22:46:36 GMT
    Content-Type: text/html
    Content-Length: 167
    Connection: close
    Location: https://edwardboaden.com/
    X-Cache: Redirect from cloudfront
    Via: 1.1 a4079c0a5989b4b7af98433fdd07f680.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: sI8fOMwYMRnqy5FIfazs98gsFkLVXlpImdGWgGO71lbDYrBA0S4B2Q==
    
    Page title: 301 Moved Permanently
    
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>CloudFront</center>
    </body>
    </html>
    
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 2600:9000:266e:4400:18:98:7200:93a1:443 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 11741
    Connection: close
    Last-Modified: Sat, 08 Nov 2025 17:58:46 GMT
    x-amz-server-side-encryption: AES256
    Accept-Ranges: bytes
    Server: AmazonS3
    Date: Sat, 10 Jan 2026 22:46:37 GMT
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "3013b02b337d805e9075625bfb49a119"
    X-Cache: Error from cloudfront
    Via: 1.1 a4079c0a5989b4b7af98433fdd07f680.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: TXmlbAOFkH0ulC1E1Z8eWw9W-fU-k888qZmsTQw2yOutW6whOzISog==
    
    Page title: Edward Boaden - Software Engineer
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Edward Boaden - Software Engineer</title>
        <base href="/" />
        
        <!-- Google tag (gtag.js) -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=G-X7K8RELCL3"></script>
        <script>
          const GA_MEASUREMENT_ID = 'G-X7K8RELCL3';
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
    
          gtag('config', GA_MEASUREMENT_ID, {
            // Enhanced measurement features
            send_page_view: true,
            page_path: window.location.pathname,
            
            // Link tracking
            link_attribution: true,
            
            // Enhanced conversions (improves conversion measurement accuracy)
            allow_enhanced_conversions: true,
            
            // Session tracking - Lax is more compatible and respects user privacy
            cookie_flags: 'SameSite=Lax',
            
            // Debug mode (remove in production if desired)
            debug_mode: false
          });
          
          // Track scroll depth and time on page (initialized)
          let scrollDepthTracked = {};
          let scrollTimeout;
          let totalVisibleTime = 0;
          let lastVisibleTime = Date.now();
          
          // Setup all event listeners after DOM is loaded
          document.addEventListener('DOMContentLoaded', function() {
            // Track outbound links and file downloads in a single listener
            document.addEventListener('click', function(e) {
              const link = e.target.closest('a');
              if (!link || !link.href) return;
              
              // Track outbound links (only external domains)
              if (link.hostname !== window.location.hostname) {
                gtag('event', 'click', {
                  event_category: 'outbound',
                  event_label: link.href,
                  transport_type: 'beacon'
                });
              }
              
              // Track file downloads
              if (/\.(pdf|doc|docx|zip|rar|txt|csv)$/i.test(link.href)) {
                gtag('event', 'file_download', {
                  file_name: link.href.split('/').pop(),
                  link_url: link.href
                });
              }
            });
            
            // Track scroll depth with throttling
            window.addEventListener('scroll', function() {
              if (scrollTimeout) return;
              scrollTimeout = setTimeout(function() {
                scrollTimeout = null;
                const maxScroll = document.documentElement.scrollHeight - window.innerHeight;
                
                // Skip scroll tracking if page content fits in viewport
                if (maxScroll <= 0) return;
                
                const scrollPercent = Math.round((window.scrollY / maxScroll) * 100);
                [25, 50, 75, 90].forEach(function(depth) {
                  if (scrollPercent >= depth && !scrollDepthTracked[depth]) {
                    scrollDepthTracked[depth] = true;
                    gtag('event', 'scroll', {
                      event_category: 'engagement',
                      event_label: depth + '%',
                      value: depth
                    });
                  }
                });
              }, 100);
            });
            
            // Track visibility changes to accumulate visible time
            document.addEventListener('visibilitychange', function() {
              if (document.hidden) {
                // Page is hidden - add visible time to total
                totalVisibleTime += Date.now() - lastVisibleTime;
              } else {
                // Page is visible again - reset visible time tracker
                lastVisibleTime = Date.now();
              }
            });
            
            // Send time_on_page event once per session on pagehide
            window.addEventListener('pagehide', function() {
              // Add any remaining visible time if page is currently visible
              if (!document.hidden) {
                totalVisibleTime += Date.now() - lastVisibleTime;
              }
              const timeOnPage = Math.round(totalVisibleTime / 1000);
              gtag('event', 'time_on_page', {
          
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 2600:9000:266e:3200:18:98:7200:93a1:80 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 301 Moved Permanently
    Server: CloudFront
    Date: Sat, 10 Jan 2026 22:46:36 GMT
    Content-Type: text/html
    Content-Length: 167
    Connection: close
    Location: https://edwardboaden.com/
    X-Cache: Redirect from cloudfront
    Via: 1.1 b0723c68cc136f4e89ad2f6a85c82e12.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: z0Er56Xy0XtxZLv0ww73fVcDDX96Q4bWun3b_AOwPV2h4xXpshCVPA==
    
    Page title: 301 Moved Permanently
    
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>CloudFront</center>
    </body>
    </html>
    
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 2600:9000:266e:0:18:98:7200:93a1:443 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 11741
    Connection: close
    Last-Modified: Sat, 08 Nov 2025 17:58:46 GMT
    x-amz-server-side-encryption: AES256
    Accept-Ranges: bytes
    Server: AmazonS3
    Date: Sat, 10 Jan 2026 22:46:37 GMT
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "3013b02b337d805e9075625bfb49a119"
    X-Cache: Error from cloudfront
    Via: 1.1 9eb1733bea847c3a8f4910adebcc8146.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: DuWlRtSfSK-cJ4qZYvX0QAE6JoWhuldpI2Z2v5HQFRje4daBidChDw==
    
    Page title: Edward Boaden - Software Engineer
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Edward Boaden - Software Engineer</title>
        <base href="/" />
        
        <!-- Google tag (gtag.js) -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=G-X7K8RELCL3"></script>
        <script>
          const GA_MEASUREMENT_ID = 'G-X7K8RELCL3';
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
    
          gtag('config', GA_MEASUREMENT_ID, {
            // Enhanced measurement features
            send_page_view: true,
            page_path: window.location.pathname,
            
            // Link tracking
            link_attribution: true,
            
            // Enhanced conversions (improves conversion measurement accuracy)
            allow_enhanced_conversions: true,
            
            // Session tracking - Lax is more compatible and respects user privacy
            cookie_flags: 'SameSite=Lax',
            
            // Debug mode (remove in production if desired)
            debug_mode: false
          });
          
          // Track scroll depth and time on page (initialized)
          let scrollDepthTracked = {};
          let scrollTimeout;
          let totalVisibleTime = 0;
          let lastVisibleTime = Date.now();
          
          // Setup all event listeners after DOM is loaded
          document.addEventListener('DOMContentLoaded', function() {
            // Track outbound links and file downloads in a single listener
            document.addEventListener('click', function(e) {
              const link = e.target.closest('a');
              if (!link || !link.href) return;
              
              // Track outbound links (only external domains)
              if (link.hostname !== window.location.hostname) {
                gtag('event', 'click', {
                  event_category: 'outbound',
                  event_label: link.href,
                  transport_type: 'beacon'
                });
              }
              
              // Track file downloads
              if (/\.(pdf|doc|docx|zip|rar|txt|csv)$/i.test(link.href)) {
                gtag('event', 'file_download', {
                  file_name: link.href.split('/').pop(),
                  link_url: link.href
                });
              }
            });
            
            // Track scroll depth with throttling
            window.addEventListener('scroll', function() {
              if (scrollTimeout) return;
              scrollTimeout = setTimeout(function() {
                scrollTimeout = null;
                const maxScroll = document.documentElement.scrollHeight - window.innerHeight;
                
                // Skip scroll tracking if page content fits in viewport
                if (maxScroll <= 0) return;
                
                const scrollPercent = Math.round((window.scrollY / maxScroll) * 100);
                [25, 50, 75, 90].forEach(function(depth) {
                  if (scrollPercent >= depth && !scrollDepthTracked[depth]) {
                    scrollDepthTracked[depth] = true;
                    gtag('event', 'scroll', {
                      event_category: 'engagement',
                      event_label: depth + '%',
                      value: depth
                    });
                  }
                });
              }, 100);
            });
            
            // Track visibility changes to accumulate visible time
            document.addEventListener('visibilitychange', function() {
              if (document.hidden) {
                // Page is hidden - add visible time to total
                totalVisibleTime += Date.now() - lastVisibleTime;
              } else {
                // Page is visible again - reset visible time tracker
                lastVisibleTime = Date.now();
              }
            });
            
            // Send time_on_page event once per session on pagehide
            window.addEventListener('pagehide', function() {
              // Add any remaining visible time if page is currently visible
              if (!document.hidden) {
                totalVisibleTime += Date.now() - lastVisibleTime;
              }
              const timeOnPage = Math.round(totalVisibleTime / 1000);
              gtag('event', 'time_on_page', {
          
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 2600:9000:266e:e600:18:98:7200:93a1:443 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 11741
    Connection: close
    Last-Modified: Sat, 08 Nov 2025 17:58:46 GMT
    x-amz-server-side-encryption: AES256
    Accept-Ranges: bytes
    Server: AmazonS3
    Date: Sat, 10 Jan 2026 22:46:37 GMT
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "3013b02b337d805e9075625bfb49a119"
    X-Cache: Error from cloudfront
    Via: 1.1 74cd4e6bd806cc7209ac94e0173f5ac8.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: pBHljfhFpTP5mSIv4kMbEgdsGg-_sio9rvbUqcFvAqyIfyRF5VVirg==
    
    Page title: Edward Boaden - Software Engineer
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Edward Boaden - Software Engineer</title>
        <base href="/" />
        
        <!-- Google tag (gtag.js) -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=G-X7K8RELCL3"></script>
        <script>
          const GA_MEASUREMENT_ID = 'G-X7K8RELCL3';
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
    
          gtag('config', GA_MEASUREMENT_ID, {
            // Enhanced measurement features
            send_page_view: true,
            page_path: window.location.pathname,
            
            // Link tracking
            link_attribution: true,
            
            // Enhanced conversions (improves conversion measurement accuracy)
            allow_enhanced_conversions: true,
            
            // Session tracking - Lax is more compatible and respects user privacy
            cookie_flags: 'SameSite=Lax',
            
            // Debug mode (remove in production if desired)
            debug_mode: false
          });
          
          // Track scroll depth and time on page (initialized)
          let scrollDepthTracked = {};
          let scrollTimeout;
          let totalVisibleTime = 0;
          let lastVisibleTime = Date.now();
          
          // Setup all event listeners after DOM is loaded
          document.addEventListener('DOMContentLoaded', function() {
            // Track outbound links and file downloads in a single listener
            document.addEventListener('click', function(e) {
              const link = e.target.closest('a');
              if (!link || !link.href) return;
              
              // Track outbound links (only external domains)
              if (link.hostname !== window.location.hostname) {
                gtag('event', 'click', {
                  event_category: 'outbound',
                  event_label: link.href,
                  transport_type: 'beacon'
                });
              }
              
              // Track file downloads
              if (/\.(pdf|doc|docx|zip|rar|txt|csv)$/i.test(link.href)) {
                gtag('event', 'file_download', {
                  file_name: link.href.split('/').pop(),
                  link_url: link.href
                });
              }
            });
            
            // Track scroll depth with throttling
            window.addEventListener('scroll', function() {
              if (scrollTimeout) return;
              scrollTimeout = setTimeout(function() {
                scrollTimeout = null;
                const maxScroll = document.documentElement.scrollHeight - window.innerHeight;
                
                // Skip scroll tracking if page content fits in viewport
                if (maxScroll <= 0) return;
                
                const scrollPercent = Math.round((window.scrollY / maxScroll) * 100);
                [25, 50, 75, 90].forEach(function(depth) {
                  if (scrollPercent >= depth && !scrollDepthTracked[depth]) {
                    scrollDepthTracked[depth] = true;
                    gtag('event', 'scroll', {
                      event_category: 'engagement',
                      event_label: depth + '%',
                      value: depth
                    });
                  }
                });
              }, 100);
            });
            
            // Track visibility changes to accumulate visible time
            document.addEventListener('visibilitychange', function() {
              if (document.hidden) {
                // Page is hidden - add visible time to total
                totalVisibleTime += Date.now() - lastVisibleTime;
              } else {
                // Page is visible again - reset visible time tracker
                lastVisibleTime = Date.now();
              }
            });
            
            // Send time_on_page event once per session on pagehide
            window.addEventListener('pagehide', function() {
              // Add any remaining visible time if page is currently visible
              if (!document.hidden) {
                totalVisibleTime += Date.now() - lastVisibleTime;
              }
              const timeOnPage = Math.round(totalVisibleTime / 1000);
              gtag('event', 'time_on_page', {
          
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 18.245.31.128:443 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 11741
    Connection: close
    Last-Modified: Sat, 08 Nov 2025 17:58:46 GMT
    x-amz-server-side-encryption: AES256
    Accept-Ranges: bytes
    Server: AmazonS3
    Date: Sat, 10 Jan 2026 22:46:37 GMT
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "3013b02b337d805e9075625bfb49a119"
    X-Cache: Error from cloudfront
    Via: 1.1 04d30d89cfeb7f513dc1f5b2d3c605d2.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: o1BYBkzwIZv_4-yKqvzL8qgXTvKUF1Qa-Mvgpoiwtx2ZpHEM0ClRDQ==
    
    Page title: Edward Boaden - Software Engineer
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Edward Boaden - Software Engineer</title>
        <base href="/" />
        
        <!-- Google tag (gtag.js) -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=G-X7K8RELCL3"></script>
        <script>
          const GA_MEASUREMENT_ID = 'G-X7K8RELCL3';
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
    
          gtag('config', GA_MEASUREMENT_ID, {
            // Enhanced measurement features
            send_page_view: true,
            page_path: window.location.pathname,
            
            // Link tracking
            link_attribution: true,
            
            // Enhanced conversions (improves conversion measurement accuracy)
            allow_enhanced_conversions: true,
            
            // Session tracking - Lax is more compatible and respects user privacy
            cookie_flags: 'SameSite=Lax',
            
            // Debug mode (remove in production if desired)
            debug_mode: false
          });
          
          // Track scroll depth and time on page (initialized)
          let scrollDepthTracked = {};
          let scrollTimeout;
          let totalVisibleTime = 0;
          let lastVisibleTime = Date.now();
          
          // Setup all event listeners after DOM is loaded
          document.addEventListener('DOMContentLoaded', function() {
            // Track outbound links and file downloads in a single listener
            document.addEventListener('click', function(e) {
              const link = e.target.closest('a');
              if (!link || !link.href) return;
              
              // Track outbound links (only external domains)
              if (link.hostname !== window.location.hostname) {
                gtag('event', 'click', {
                  event_category: 'outbound',
                  event_label: link.href,
                  transport_type: 'beacon'
                });
              }
              
              // Track file downloads
              if (/\.(pdf|doc|docx|zip|rar|txt|csv)$/i.test(link.href)) {
                gtag('event', 'file_download', {
                  file_name: link.href.split('/').pop(),
                  link_url: link.href
                });
              }
            });
            
            // Track scroll depth with throttling
            window.addEventListener('scroll', function() {
              if (scrollTimeout) return;
              scrollTimeout = setTimeout(function() {
                scrollTimeout = null;
                const maxScroll = document.documentElement.scrollHeight - window.innerHeight;
                
                // Skip scroll tracking if page content fits in viewport
                if (maxScroll <= 0) return;
                
                const scrollPercent = Math.round((window.scrollY / maxScroll) * 100);
                [25, 50, 75, 90].forEach(function(depth) {
                  if (scrollPercent >= depth && !scrollDepthTracked[depth]) {
                    scrollDepthTracked[depth] = true;
                    gtag('event', 'scroll', {
                      event_category: 'engagement',
                      event_label: depth + '%',
                      value: depth
                    });
                  }
                });
              }, 100);
            });
            
            // Track visibility changes to accumulate visible time
            document.addEventListener('visibilitychange', function() {
              if (document.hidden) {
                // Page is hidden - add visible time to total
                totalVisibleTime += Date.now() - lastVisibleTime;
              } else {
                // Page is visible again - reset visible time tracker
                lastVisibleTime = Date.now();
              }
            });
            
            // Send time_on_page event once per session on pagehide
            window.addEventListener('pagehide', function() {
              // Add any remaining visible time if page is currently visible
              if (!document.hidden) {
                totalVisibleTime += Date.now() - lastVisibleTime;
              }
              const timeOnPage = Math.round(totalVisibleTime / 1000);
              gtag('event', 'time_on_page', {
          
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 18.245.31.91:80 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 301 Moved Permanently
    Server: CloudFront
    Date: Sat, 10 Jan 2026 22:46:36 GMT
    Content-Type: text/html
    Content-Length: 167
    Connection: close
    Location: https://edwardboaden.com/
    X-Cache: Redirect from cloudfront
    Via: 1.1 f99e0a5708c6297d4aa91b3e4794707e.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: Tgvt3GUnO7IXux3Tib57flKC-0xsLurpMBku_wpW3tvhbnSMpMolzg==
    
    Page title: 301 Moved Permanently
    
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>CloudFront</center>
    </body>
    </html>
    
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 18.245.31.128:80 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 301 Moved Permanently
    Server: CloudFront
    Date: Sat, 10 Jan 2026 22:46:36 GMT
    Content-Type: text/html
    Content-Length: 167
    Connection: close
    Location: https://edwardboaden.com/
    X-Cache: Redirect from cloudfront
    Via: 1.1 f36453eb82bc9ab0c6e360ac52cc5972.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: QNtW5_Tn3UUYJVFF3O_IvPGaU7MwP7CfgWuhNc1SUbrTlwGVFsYerw==
    
    Page title: 301 Moved Permanently
    
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>CloudFront</center>
    </body>
    </html>
    
    Found 2026-01-10 by HttpPlugin
    Create report
  • Open service 18.245.31.91:443 · edwardboaden.com

    2026-01-10 22:46

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 11741
    Connection: close
    Last-Modified: Sat, 08 Nov 2025 17:58:46 GMT
    x-amz-server-side-encryption: AES256
    Accept-Ranges: bytes
    Server: AmazonS3
    Date: Sat, 10 Jan 2026 22:46:37 GMT
    Cache-Control: public, max-age=0, must-revalidate
    ETag: "3013b02b337d805e9075625bfb49a119"
    X-Cache: Error from cloudfront
    Via: 1.1 1feab8d6a8e5cc920c359b62fd33d3de.cloudfront.net (CloudFront)
    X-Amz-Cf-Pop: FRA56-P8
    X-Amz-Cf-Id: eEMB4IYUW7w7Pe4-uc9sZQYCNIUquesnWbuc6FbmVFU00jFQQ9HJbA==
    
    Page title: Edward Boaden - Software Engineer
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Edward Boaden - Software Engineer</title>
        <base href="/" />
        
        <!-- Google tag (gtag.js) -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=G-X7K8RELCL3"></script>
        <script>
          const GA_MEASUREMENT_ID = 'G-X7K8RELCL3';
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
    
          gtag('config', GA_MEASUREMENT_ID, {
            // Enhanced measurement features
            send_page_view: true,
            page_path: window.location.pathname,
            
            // Link tracking
            link_attribution: true,
            
            // Enhanced conversions (improves conversion measurement accuracy)
            allow_enhanced_conversions: true,
            
            // Session tracking - Lax is more compatible and respects user privacy
            cookie_flags: 'SameSite=Lax',
            
            // Debug mode (remove in production if desired)
            debug_mode: false
          });
          
          // Track scroll depth and time on page (initialized)
          let scrollDepthTracked = {};
          let scrollTimeout;
          let totalVisibleTime = 0;
          let lastVisibleTime = Date.now();
          
          // Setup all event listeners after DOM is loaded
          document.addEventListener('DOMContentLoaded', function() {
            // Track outbound links and file downloads in a single listener
            document.addEventListener('click', function(e) {
              const link = e.target.closest('a');
              if (!link || !link.href) return;
              
              // Track outbound links (only external domains)
              if (link.hostname !== window.location.hostname) {
                gtag('event', 'click', {
                  event_category: 'outbound',
                  event_label: link.href,
                  transport_type: 'beacon'
                });
              }
              
              // Track file downloads
              if (/\.(pdf|doc|docx|zip|rar|txt|csv)$/i.test(link.href)) {
                gtag('event', 'file_download', {
                  file_name: link.href.split('/').pop(),
                  link_url: link.href
                });
              }
            });
            
            // Track scroll depth with throttling
            window.addEventListener('scroll', function() {
              if (scrollTimeout) return;
              scrollTimeout = setTimeout(function() {
                scrollTimeout = null;
                const maxScroll = document.documentElement.scrollHeight - window.innerHeight;
                
                // Skip scroll tracking if page content fits in viewport
                if (maxScroll <= 0) return;
                
                const scrollPercent = Math.round((window.scrollY / maxScroll) * 100);
                [25, 50, 75, 90].forEach(function(depth) {
                  if (scrollPercent >= depth && !scrollDepthTracked[depth]) {
                    scrollDepthTracked[depth] = true;
                    gtag('event', 'scroll', {
                      event_category: 'engagement',
                      event_label: depth + '%',
                      value: depth
                    });
                  }
                });
              }, 100);
            });
            
            // Track visibility changes to accumulate visible time
            document.addEventListener('visibilitychange', function() {
              if (document.hidden) {
                // Page is hidden - add visible time to total
                totalVisibleTime += Date.now() - lastVisibleTime;
              } else {
                // Page is visible again - reset visible time tracker
                lastVisibleTime = Date.now();
              }
            });
            
            // Send time_on_page event once per session on pagehide
            window.addEventListener('pagehide', function() {
              // Add any remaining visible time if page is currently visible
              if (!document.hidden) {
                totalVisibleTime += Date.now() - lastVisibleTime;
              }
              const timeOnPage = Math.round(totalVisibleTime / 1000);
              gtag('event', 'time_on_page', {
          
    Found 2026-01-10 by HttpPlugin
    Create report
edwardboaden.comwww.edwardboaden.com
CN:
edwardboaden.com
Key:
RSA-2048
Issuer:
Not before:
2025-11-02 00:00
Not after:
2026-12-01 23:59