{
    "ready": true,
    "site": {
        "id": 0,
        "domain": "chrisotto.dev",
        "display_name": "Chris Otto",
        "primary_country_code": "",
        "category_name": "Personal"
    },
    "metrics": {
        "global_rank": 23643,
        "country_rank": 12389,
        "category_rank": 34,
        "daily_pageviews_per_visitor": 4.11,
        "daily_time_on_site_seconds": 351,
        "bounce_rate": 28.84,
        "search_visits_percent": 42.21,
        "total_sites_linking_in": 1,
        "monthly_unique_visitors": 209,
        "recorded_at": "2026-03-31 03:03:17"
    },
    "audit": {
        "score": 96
    },
    "traffic_sources": {
        "direct_percent": 27.84,
        "search_percent": 35.56,
        "social_percent": 10,
        "referral_percent": 11.8,
        "email_percent": 6.36,
        "paid_percent": 8.44
    },
    "seo_profile": {
        "backlinks_total": 1,
        "referring_domains": 1,
        "dofollow_backlinks_percent": 100,
        "organic_keywords": 92,
        "indexed_pages": 26,
        "page_speed_score": 98,
        "mobile_friendliness_score": 91,
        "authority_score": 50,
        "spam_risk_score": 27
    },
    "crawl_report": {
        "robots_status": 404,
        "sitemap_status": 200,
        "sitemap_total_urls": 26,
        "crawl_blocked": false,
        "crawl_blocked_by": "",
        "crawl_blocked_reason": "",
        "notes": [
            "robots.txt could not be confirmed."
        ],
        "created_at": "2026-03-31 03:03:17"
    },
    "keywords": [
        {
            "keyword": "Chris Otto",
            "position": 18,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:34:26",
            "is_estimated": true
        },
        {
            "keyword": "Chris Otto personal",
            "position": 20,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:34:26",
            "is_estimated": true
        },
        {
            "keyword": "Chris Otto reviews",
            "position": 22,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:34:26",
            "is_estimated": true
        },
        {
            "keyword": "chris",
            "position": 24,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:34:26",
            "is_estimated": true
        },
        {
            "keyword": "otto",
            "position": 26,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:34:26",
            "is_estimated": true
        },
        {
            "keyword": "chrisotto",
            "position": 28,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:34:26",
            "is_estimated": true
        },
        {
            "keyword": "dev",
            "position": 30,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:34:26",
            "is_estimated": true
        },
        {
            "keyword": "father",
            "position": 32,
            "search_engine": "Estimated",
            "checked_at": "2026-04-19 10:34:26",
            "is_estimated": true
        }
    ],
    "rating": {
        "overall": 64,
        "label": "Healthy",
        "breakdown": [
            {
                "label": "Technical foundation",
                "score": 15,
                "max": 18
            },
            {
                "label": "Authority & trust",
                "score": 15,
                "max": 30
            },
            {
                "label": "Reach & market presence",
                "score": 3,
                "max": 18
            },
            {
                "label": "Search visibility",
                "score": 3,
                "max": 12
            },
            {
                "label": "Engagement & retention",
                "score": 9,
                "max": 10
            },
            {
                "label": "Channels & diversification",
                "score": 5,
                "max": 6
            },
            {
                "label": "Registry stability",
                "score": 5,
                "max": 6
            },
            {
                "label": "Quality system",
                "score": 83,
                "max": 100
            },
            {
                "label": "Reputation system",
                "score": 49,
                "max": 100
            },
            {
                "label": "Safety system",
                "score": 100,
                "max": 100
            },
            {
                "label": "Evidence confidence",
                "score": 100,
                "max": 100
            },
            {
                "label": "External intelligence",
                "score": 52,
                "max": 100
            },
            {
                "label": "API intelligence",
                "score": 54,
                "max": 100
            }
        ],
        "authority_score": 50,
        "quality_score": 83,
        "reputation_score": 49,
        "safety_score": 100,
        "confidence_score": 100,
        "fraud_score": 0,
        "authority_signals": {
            "backlinks": 1,
            "referring_domains": 1,
            "organic_keywords": 92,
            "indexed_pages": 26,
            "monthly_visitors": 209,
            "global_rank": 23643,
            "engagement_score": 83,
            "crawl_quality_score": 100,
            "brand_completeness_score": 84,
            "link_diversity_score": 92,
            "technical_reliability_score": 87,
            "whois_score": 71,
            "whois_age_years": 7.1,
            "whois_stability_score": 100,
            "spam_penalty": 0
        },
        "whois_signals": {
            "age_years": 7.1,
            "days_to_expiry": 332,
            "days_since_last_registry_update": 31,
            "stability_score": 100,
            "registrar_changes": 0,
            "ownership_changes": 0,
            "nameserver_changes": 0,
            "status_changes": 0,
            "history_entries": 1,
            "privacy_protected": false,
            "dnssec_enabled": true,
            "has_registrant_country": false,
            "registrant_country": "",
            "nameserver_count": 2,
            "status_count": 3
        }
    },
    "authority_score": 50,
    "trust_score": 80,
    "domain_tags": {
        "primary_tag": "T",
        "primary_tag_score": 87,
        "primary_candidate": "T",
        "primary_candidate_score": 87,
        "tag_codes": "T,Uncertain",
        "tags": [
            {
                "code": "T",
                "label": "Trusted",
                "tone": "good",
                "description": "Strong trust, stability, and low-risk signals were detected.",
                "reason": "Low spam indicators plus strong trust, quality, registry, and stability signals were detected. Showing the stored external intelligence snapshot. New search and review intelligence only runs after a visitor uses Refresh data manually.",
                "message": "The site shows a reasonably trustworthy and stable profile.",
                "priority": 87,
                "score": 87,
                "match_percent": 87,
                "threshold_band": "strong"
            },
            {
                "code": "Uncertain",
                "label": "Uncertain",
                "tone": "unknown",
                "description": "External checks stayed inconclusive, so the model avoided a harder verdict.",
                "reason": "External checks stayed inconclusive, so the system kept an uncertainty buffer.",
                "message": "The evidence is materially mixed or partially corroborated, so the model is avoiding a harder verdict.",
                "priority": 68,
                "score": 68,
                "match_percent": 68,
                "threshold_band": "strong"
            }
        ],
        "tag_breakdown": [
            {
                "code": "T",
                "label": "Trusted",
                "tone": "good",
                "description": "Strong trust, stability, and low-risk signals were detected.",
                "reason": "Low spam indicators plus strong trust, quality, registry, and stability signals were detected. Showing the stored external intelligence snapshot. New search and review intelligence only runs after a visitor uses Refresh data manually.",
                "message": "The site shows a reasonably trustworthy and stable profile.",
                "priority": 87,
                "score": 87,
                "match_percent": 87,
                "threshold_band": "strong"
            },
            {
                "code": "Uncertain",
                "label": "Uncertain",
                "tone": "unknown",
                "description": "External checks stayed inconclusive, so the model avoided a harder verdict.",
                "reason": "External checks stayed inconclusive, so the system kept an uncertainty buffer.",
                "message": "The evidence is materially mixed or partially corroborated, so the model is avoiding a harder verdict.",
                "priority": 68,
                "score": 68,
                "match_percent": 68,
                "threshold_band": "strong"
            },
            {
                "code": "Infra",
                "label": "Risky infrastructure",
                "tone": "caution",
                "description": "The hosting / registrar / nameserver neighbourhood looks unusually risky.",
                "reason": "The infrastructure neighbourhood looks riskier than normal.",
                "message": "Infrastructure risk does not currently stand out.",
                "priority": 1,
                "score": 1,
                "match_percent": 1,
                "threshold_band": "none"
            },
            {
                "code": "C",
                "label": "Caution",
                "tone": "caution",
                "description": "Signals are mixed or weak, so this domain should be treated carefully.",
                "reason": "Review carefully: mixed trust signals. Showing the stored external intelligence snapshot. New search and review intelligence only runs after a visitor uses Refresh data manually.",
                "message": "The current crawl does not show a meaningful caution match.",
                "priority": 0,
                "score": 0,
                "match_percent": 0,
                "threshold_band": "none"
            },
            {
                "code": "Crypto",
                "label": "Crypto drainer risk",
                "tone": "toxic",
                "description": "Wallet-connect or seed-phrase theft patterns were detected.",
                "reason": "Wallet-connect or seed-phrase theft patterns were detected.",
                "message": "No meaningful crypto-drainer signals were detected.",
                "priority": 0,
                "score": 0,
                "match_percent": 0,
                "threshold_band": "none"
            }
        ],
        "nsfw_score": 0,
        "trust_score": 84,
        "manual": {
            "has_changes": false,
            "verified_status": "",
            "tag_codes": "",
            "rating_delta": 0,
            "authority_delta": 0,
            "trust_delta": 0,
            "note": "",
            "adjusted_by": 0,
            "adjusted_at": "",
            "lock_scores": false,
            "lock_flags": false
        },
        "summary": "Trusted (87% match) because low spam indicators plus strong trust, quality, registry, and stability signals were detected. showing the stored external intelligence snapshot. new search and review intelligence only runs after a visitor uses refresh data manually.",
        "external_intel": {
            "domain": "chrisotto.dev",
            "candidate_tag": "",
            "checked_at": "2026-03-19T09:10:44+00:00",
            "status": "fresh",
            "snapshot_version": 9,
            "summary": "Showing the stored external intelligence snapshot. New search and review intelligence only runs after a visitor uses Refresh data manually.",
            "search_intelligence": {
                "queries": [
                    "site:trustpilot.com \"chrisotto.dev\" -site:chrisotto.dev -site:www.chrisotto.dev",
                    "site:bbb.org \"chrisotto.dev\" -site:chrisotto.dev -site:www.chrisotto.dev"
                ],
                "focused_queries": [
                    "site:trustpilot.com \"chrisotto.dev\" -site:chrisotto.dev -site:www.chrisotto.dev",
                    "site:bbb.org \"chrisotto.dev\" -site:chrisotto.dev -site:www.chrisotto.dev"
                ],
                "relaxed_queries": [
                    "site:wikipedia.org \"chrisotto.dev\"",
                    "site:en.wikipedia.org \"chrisotto.dev\"",
                    "site:wikipedia.org \"chrisotto\"",
                    "site:en.wikipedia.org \"chrisotto\"",
                    "chrisotto company profile",
                    "chrisotto reviews",
                    "chrisotto wikipedia",
                    "chrisotto linkedin",
                    "chrisotto crunchbase"
                ],
                "providers": [
                    "brave"
                ],
                "provider_result_counts": {
                    "brave": 0
                },
                "provider_query_attempts": {
                    "brave": 2
                },
                "provider_error_counts": {
                    "brave": 2
                },
                "provider_failure_reasons": {
                    "brave": "Brave hourly hard cap reached."
                },
                "provider_block_signals": [],
                "results_found": 1,
                "external_results_found": 0,
                "used_direct_fallback": true,
                "results": [
                    {
                        "provider": "direct-domain-fallback",
                        "url": "https://chrisotto.dev/",
                        "host": "chrisotto.dev",
                        "title": "chrisotto.dev",
                        "snippet": "First-party fallback captured directly from the domain when public search engines returned no usable results.",
                        "is_direct_fallback": true,
                        "source_meta": {
                            "host": "chrisotto.dev",
                            "source_type": "official_site",
                            "label": "Official site",
                            "trust_weight": 55,
                            "evidence_weight": 26,
                            "noise_penalty": 0,
                            "requires_exact_domain_match": true,
                            "supports_positive_verdicts": false,
                            "supports_negative_verdicts": false,
                            "freshness_ttl_days": 21
                        },
                        "entity": {
                            "score": 100,
                            "exactness": "exact_domain",
                            "reasons": [
                                "The result host matches the exact domain.",
                                "The exact domain is mentioned in the page snippet or document text.",
                                "The result URL contains the exact domain string."
                            ]
                        },
                        "query": "direct-fallback",
                        "rank": 1
                    }
                ],
                "source_mix": {
                    "official_site": 1
                },
                "entity_coverage_score": 100,
                "high_trust_result_count": 0,
                "exact_match_result_count": 1,
                "high_entity_result_count": 1,
                "query_hit_count": 0,
                "query_count": 2,
                "used_failover_provider": false,
                "inferred_candidate_tag": "",
                "used_relaxed_queries": false,
                "search_passes": [
                    {
                        "name": "focused-primary",
                        "queries": 2,
                        "providers": [
                            "brave"
                        ],
                        "results_added": 0,
                        "external_results_added": 0,
                        "deadline_hit": false
                    }
                ],
                "deadline_hit": false
            },
            "review_intelligence": {
                "documents_fetched": 1,
                "external_documents_fetched": 0,
                "documents": [
                    {
                        "provider": "direct-domain-fallback",
                        "url": "https://chrisotto.dev/",
                        "host": "chrisotto.dev",
                        "title": "chrisotto.dev",
                        "snippet": "First-party fallback captured directly from the domain when public search engines returned no usable results.",
                        "is_direct_fallback": true,
                        "source_meta": {
                            "host": "chrisotto.dev",
                            "source_type": "official_site",
                            "label": "Official site",
                            "trust_weight": 55,
                            "evidence_weight": 26,
                            "noise_penalty": 0,
                            "requires_exact_domain_match": true,
                            "supports_positive_verdicts": false,
                            "supports_negative_verdicts": false,
                            "freshness_ttl_days": 21
                        },
                        "entity": {
                            "score": 100,
                            "exactness": "exact_domain",
                            "reasons": [
                                "The result host matches the exact domain.",
                                "The exact domain is mentioned in the page snippet or document text.",
                                "The result URL contains the exact domain string."
                            ]
                        },
                        "query": "direct-fallback",
                        "rank": 1,
                        "body": "Chris Otto | Father, Developer, SDETChris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesLatest PostsChris Otto's Digital Garden.Watchtower - Docker NAS SetupPublished onFebruary 19, 20212 min read Image courteous of [@kristsll on Unsplash](https://unsplash.com/@kristsll). Watchtower is a container that will update all your other running contai...dockernaswatchtowerCalibre Library - Docker NAS SetupPublished onFebruary 5, 20215 min read Image courteous of [Susan Yin at Unsplash](https://unsplash.com/@syinq). Calibre is a free ebook manager. It has been around for a while, has an e-b...calibredockernasPiHole - Docker NAS SetupPublished onJanuary 31, 20214 min read Pi-hole is an awesome tool that let's you block certain requests on your home network from devices. The way that Pi-hole does this by either hosting ...synologydockernasPortainer - Docker Container Manager For Your NASPublished onJanuary 25, 20213 min read Image courteous of [Pixabay](https://pixabay.com/). Portainer is an application that makes it easy for you to manage docker containers that you have...synologydockernasSynology NAS - SSH To Find User InfoPublished onJanuary 21, 20212 min read Image courteous of [unsplash](https://unsplash.com/). The user information for your user is useful for setting up Docker images/containers that need...synologynasAll Posts →Subscribe to the newsletterEmail addressSign upChris Otto | Father, Developer, SDET • © 2023",
                        "html": "<!DOCTYPE html><html lang=\"en\" class=\"scroll-smooth\"><head><meta charSet=\"utf-8\"/><meta content=\"width=device-width, initial-scale=1\" name=\"viewport\"/><title>Chris Otto | Father, Developer, SDET</title><meta name=\"robots\" content=\"follow, index\"/><meta name=\"description\" content=\"Chris Otto's Digital Garden.\"/><meta property=\"og:url\" content=\"https://www.chrisotto.dev/\"/><meta property=\"og:type\" content=\"website\"/><meta property=\"og:site_name\" content=\"Chris Otto | Father, Developer, SDET\"/><meta property=\"og:description\" content=\"Chris Otto's Digital Garden.\"/><meta property=\"og:title\" content=\"Chris Otto | Father, Developer, SDET\"/><meta property=\"og:image\" content=\"https://www.chrisotto.dev/static/images/twitter-card.png\"/><meta name=\"twitter:card\" content=\"summary_large_image\"/><meta name=\"twitter:site\" content=\"https://twitter.com/chris_otto6\"/><meta name=\"twitter:title\" content=\"Chris Otto | Father, Developer, SDET\"/><meta name=\"twitter:description\" content=\"Chris Otto's Digital Garden.\"/><meta name=\"twitter:image\" content=\"https://www.chrisotto.dev/static/images/twitter-card.png\"/><link rel=\"canonical\" href=\"https://www.chrisotto.dev/\"/><meta name=\"next-head-count\" content=\"17\"/><link rel=\"apple-touch-icon\" sizes=\"76x76\" href=\"/static/favicons/apple-touch-icon.png\"/><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/static/favicons/favicon-32x32.png\"/><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/static/favicons/favicon-16x16.png\"/><link rel=\"manifest\" href=\"/static/favicons/site.webmanifest\"/><link rel=\"mask-icon\" href=\"/static/favicons/safari-pinned-tab.svg\" color=\"#5bbad5\"/><meta name=\"msapplication-TileColor\" content=\"#000000\"/><meta name=\"theme-color\" content=\"#000000\"/><link rel=\"alternate\" type=\"application/rss+xml\" href=\"/feed.xml\"/><link rel=\"preload\" href=\"/_next/static/css/d91f70f0afeead5c.css\" as=\"style\"/><link rel=\"stylesheet\" href=\"/_next/static/css/d91f70f0afeead5c.css\" data-n-g=\"\"/><noscript data-n-css=\"\"></noscript><script defer=\"\" nomodule=\"\" src=\"/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js\"></script><script src=\"/_next/static/chunks/webpack-a76f0c849161e8ab.js\" defer=\"\"></script><script src=\"/_next/static/chunks/framework-b5e59d933bb20783.js\" defer=\"\"></script><script src=\"/_next/static/chunks/main-16cbef4a4622f0d4.js\" defer=\"\"></script><script src=\"/_next/static/chunks/pages/_app-ec7d205fcc14b9eb.js\" defer=\"\"></script><script src=\"/_next/static/chunks/890-7e81353e2795e6ca.js\" defer=\"\"></script><script src=\"/_next/static/chunks/590-c7c98df989dc54dc.js\" defer=\"\"></script><script src=\"/_next/static/chunks/pages/index-a0ca53e0e76c504a.js\" defer=\"\"></script><script src=\"/_next/static/IFbKJgG-nudaH-sLMj5Zu/_buildManifest.js\" defer=\"\"></script><script src=\"/_next/static/IFbKJgG-nudaH-sLMj5Zu/_ssgManifest.js\" defer=\"\"></script></head><body class=\"bg-white text-black antialiased dark:bg-gray-900 dark:text-white\"><div id=\"__next\"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()</script><div class=\"mx-auto max-w-3xl px-4 sm:px-6 xl:max-w-5xl xl:px-0\"><div class=\"flex h-screen flex-col justify-between\"><header class=\"flex items-center justify-between py-10\"><div><a aria-label=\"Chris Otto\" href=\"/\"><div class=\"flex items-center justify-between\"><div class=\"mr-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.87\" viewBox=\"0 0 375 375\" height=\"43.61\"><defs><clipPath id=\"logo_svg__c\"><path d=\"M0 0h311v375H0z\"></path></clipPath><filter x=\"0%\" y=\"0%\" width=\"100%\" height=\"100%\" id=\"logo_svg__a\"><feColorMatrix values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0\" color-interpolation-filters=\"sRGB\"></feColorMatrix></filter><mask id=\"logo_svg__b\"><g filter=\"url(#logo_svg__a)\"><path fill-opacity=\"0.769\" d=\"M-37.5-37.5h450v450h-450z\"></path></g></mask></defs><g mask=\"url(#logo_svg__b)\"><g clip-path=\"url(#logo_svg__c)\" transform=\"translate(32)\"><path d=\"M155.504 51.953c26.894 0 51.351 6.024 73.375 18.063 22.031 12.03 39.383 28.617 52.062 49.75 12.688 21.125 19.032 44.625 19.032 70.5s-6.344 49.445-19.032 70.703c-12.68 21.25-30.03 37.96-52.062 50.125-22.024 12.168-46.48 18.25-73.375 18.25-26.899 0-51.36-6.082-73.39-18.25-22.032-12.164-39.387-28.813-52.063-49.938-12.68-21.133-19.016-44.765-19.016-70.89 0-25.875 6.336-49.375 19.016-70.5 12.676-21.133 29.96-37.72 51.86-49.75 21.905-12.04 46.437-18.063 73.593-18.063Zm.766 53.016c-14.856 0-28.688 3.781-41.5 11.343-12.805 7.555-22.918 17.86-30.344 30.922-7.43 13.063-11.14 27.407-11.14 43.032 0 15.875 3.773 30.351 11.327 43.421 7.551 13.063 17.664 23.438 30.344 31.125 12.688 7.68 26.457 11.516 41.313 11.516 14.851 0 28.488-3.773 40.906-11.328 12.426-7.563 22.289-17.938 29.594-31.125 7.3-13.195 10.953-27.734 10.953-43.61 0-15.624-3.653-29.968-10.953-43.03-7.305-13.063-17.168-23.368-29.594-30.923-12.418-7.562-26.055-11.343-40.906-11.343Zm0 0\" fill=\"#90adc6\"></path></g></g…",
                        "status_code": 200,
                        "final_url": "https://chrisotto.dev/"
                    }
                ],
                "facts": [],
                "ignored_candidates": [],
                "blocked_candidates": 0,
                "source_diversity": 0,
                "host_coverage": 1,
                "source_type_coverage": 1,
                "exact_match_documents": 1,
                "external_exact_match_documents": 0,
                "elapsed_ms": 50,
                "candidates_considered": 1,
                "fetch_success_rate": 100,
                "avg_source_trust": 55,
                "avg_entity_score": 100
            },
            "provider_enrichment": {
                "providers": {
                    "safebrowsing": {
                        "status": "disabled"
                    },
                    "abuseipdb": {
                        "status": "ok",
                        "confidence": 58,
                        "ip": "76.76.21.21",
                        "abuse_confidence_score": 0,
                        "total_reports": 30,
                        "last_reported_at": "2026-03-14T00:08:57+00:00",
                        "country_code": "US",
                        "usage_type": "Content Delivery Network",
                        "isp": "Vercel, Inc",
                        "domain": "nextjs.org",
                        "budget": {
                            "provider": "abuseipdb",
                            "window_key": "2026-03-19",
                            "used": 40,
                            "limit": 850,
                            "remaining": 810,
                            "updated_at": "2026-03-19T05:27:24+00:00"
                        },
                        "facts": [],
                        "highlights": [],
                        "citations": [
                            {
                                "title": "AbuseIPDB IP reputation check",
                                "url": "https://docs.abuseipdb.com/",
                                "host": "docs.abuseipdb.com",
                                "snippet": "Primary IP 76.76.21.21 scored 0/100 with 30 report(s).",
                                "source_type": "api_reputation"
                            }
                        ],
                        "cached": true
                    },
                    "ipinfo": {
                        "status": "ok",
                        "confidence": 54,
                        "ip": "76.76.21.21",
                        "asn": "AS16509",
                        "as_name": "Amazon.com, Inc.",
                        "as_domain": "amazon.com",
                        "country_code": "US",
                        "country": "United States",
                        "region": "",
                        "city": "",
                        "flags": [],
                        "highlights": [
                            "IPinfo resolved the primary IP to US on AS16509."
                        ],
                        "citations": [
                            {
                                "title": "IPinfo IP enrichment",
                                "url": "https://ipinfo.io/developers",
                                "host": "ipinfo.io",
                                "snippet": "Primary IP 76.76.21.21 geolocates to US.",
                                "source_type": "ip_enrichment"
                            }
                        ],
                        "cached": true
                    },
                    "censys": {
                        "status": "disabled"
                    },
                    "sslmate": {
                        "status": "error",
                        "error": "HTTP 429: {\"code\":\"rate_limited\",\"message\":\"You have exceeded the domain search rate limit for the SSLMate CT Search API. Please try again later, or upgrade your Cert Spotter plan by visiting .\"}"
                    }
                },
                "facts": [],
                "citations": [
                    {
                        "title": "AbuseIPDB IP reputation check",
                        "url": "https://docs.abuseipdb.com/",
                        "host": "docs.abuseipdb.com",
                        "snippet": "Primary IP 76.76.21.21 scored 0/100 with 30 report(s).",
                        "source_type": "api_reputation"
                    },
                    {
                        "title": "IPinfo IP enrichment",
                        "url": "https://ipinfo.io/developers",
                        "host": "ipinfo.io",
                        "snippet": "Primary IP 76.76.21.21 geolocates to US.",
                        "source_type": "ip_enrichment"
                    }
                ],
                "highlights": [
                    "IPinfo resolved the primary IP to US on AS16509."
                ],
                "resolved_ips": [
                    "76.76.21.21"
                ],
                "primary_ip": "76.76.21.21",
                "quality": {
                    "provider_diversity_score": 50,
                    "provider_confidence_score": 56,
                    "provider_fact_count": 0
                }
            },
            "evidence": {
                "scores": {
                    "legit": 0,
                    "safe": 0,
                    "trusted": 0,
                    "caution": 0,
                    "scam": 0,
                    "dangerous": 0,
                    "spam": 0,
                    "nsfw": 0
                },
                "counts": {
                    "official_presence": 0,
                    "business_profiles": 0,
                    "positive_reviews": 0,
                    "negative_reviews": 0,
                    "scam_reports": 0,
                    "dangerous_reports": 0,
                    "spam_reports": 0,
                    "adult_reports": 0
                },
                "tag_support": [],
                "top_supporting_facts": [],
                "top_positive_facts": []
            },
            "quality": {
                "source_diversity_score": 0,
                "entity_coverage_score": 100,
                "freshness_score": 18,
                "confidence": 25,
                "documents_fetched": 1,
                "external_documents_fetched": 0,
                "fact_count": 0,
                "avg_source_trust": 55,
                "avg_entity_score": 100,
                "fetch_success_rate": 100,
                "exact_match_score": 0,
                "query_coverage_score": 20,
                "host_coverage_score": 20,
                "source_type_coverage_score": 25,
                "qualified_evidence_score": 0,
                "exact_match_documents": 0,
                "blocked_candidates": 0,
                "used_direct_fallback": true,
                "external_results_found": 0,
                "provider_diversity_score": 50,
                "provider_confidence_score": 56,
                "provider_fact_count": 0
            },
            "decision": {
                "state": "insufficient",
                "uncertainty": true,
                "candidate_support": 0,
                "candidate_contradiction": 0,
                "supports": {
                    "dangerous": false,
                    "scam": false,
                    "spam": false,
                    "nsfw": false,
                    "trusted": false
                },
                "evidence_quality": "low",
                "state_label": "Inconclusive",
                "state_reason": "Public search did not yield usable third-party matches, so the system fell back to first-party inspection only."
            },
            "signals": {
                "scores": {
                    "legit": 0,
                    "safe": 0,
                    "trusted": 0,
                    "caution": 0,
                    "scam": 0,
                    "dangerous": 0,
                    "spam": 0,
                    "nsfw": 0
                },
                "counts": {
                    "official_presence": 0,
                    "business_profiles": 0,
                    "positive_reviews": 0,
                    "negative_reviews": 0,
                    "scam_reports": 0,
                    "dangerous_reports": 0,
                    "spam_reports": 0,
                    "adult_reports": 0
                },
                "candidate_support": 0,
                "candidate_contradiction": 0,
                "highlights": [
                    "IPinfo resolved the primary IP to US on AS16509.",
                    "External evidence remained inconclusive because diversity, exact matching, or confidence was still too weak."
                ]
            },
            "citations": [
                {
                    "title": "AbuseIPDB IP reputation check",
                    "url": "https://docs.abuseipdb.com/",
                    "host": "docs.abuseipdb.com",
                    "snippet": "Primary IP 76.76.21.21 scored 0/100 with 30 report(s).",
                    "source_type": "api_reputation"
                },
                {
                    "title": "IPinfo IP enrichment",
                    "url": "https://ipinfo.io/developers",
                    "host": "ipinfo.io",
                    "snippet": "Primary IP 76.76.21.21 geolocates to US.",
                    "source_type": "ip_enrichment"
                }
            ],
            "urlscan": {
                "domain": "chrisotto.dev",
                "status": "submitting",
                "submitted_at": "2026-03-19T09:10:43+00:00",
                "completed_at": null,
                "last_checked_at": "2026-03-19T09:10:43+00:00",
                "last_error": "",
                "submitted_url": "https://chrisotto.dev/",
                "uuid": "",
                "result_url": "",
                "api_result_url": "",
                "visibility": "public",
                "summary": "Submitting the domain to urlscan.io.",
                "report": [],
                "report_summary": [],
                "is_fresh": false,
                "can_retry": false,
                "poll_after_seconds": 20
            },
            "eligibility": {
                "budget_ms": 4200,
                "search_budget_ms": 1600,
                "review_budget_ms": 2600,
                "query_cap": 2,
                "provider_cap": 1,
                "result_cap": 6,
                "review_document_cap": 4,
                "search_connect_timeout": 2,
                "search_timeout": 3,
                "review_connect_timeout": 2,
                "review_timeout": 3,
                "allowed": true,
                "mode": "normal",
                "decision_code": "run_normal",
                "reason": "post-crawl",
                "summary": "Running a standard intelligence pass because the current signals need third-party corroboration.",
                "cooldown": {
                    "active": false,
                    "empty_attempts": 0,
                    "next_allowed_at": "",
                    "reason": "",
                    "provider_retry_at": ""
                },
                "suffix": {
                    "tld": "dev",
                    "registered_suffix": "dev",
                    "class": "high_confidence",
                    "reserved": false
                },
                "signals": {
                    "trust_score": 0,
                    "quality_score": 0,
                    "safety_score": 0,
                    "fraud_score": 0,
                    "spam_score": 0,
                    "nsfw_score": 0,
                    "score_confidence": 0,
                    "risk_label": "good",
                    "crawl_blocked": false,
                    "last_http_status": 200,
                    "content_word_count": 627,
                    "internal_links_count": 16,
                    "site_name": "Chris Otto | Father, Developer, SDET",
                    "title": "Chris Otto | Father, Developer, SDET",
                    "is_tracked": false
                }
            },
            "cooldown": {
                "empty_attempts": 1,
                "next_allowed_at": "2026-03-26T09:10:44+00:00",
                "reason": "Recent intelligence runs produced no qualified third-party evidence, so retries are cooled down to save budget.",
                "provider_retry_at": "",
                "last_reason": "post-crawl"
            },
            "debug": {
                "top_supporting_facts": [],
                "top_positive_facts": [],
                "ignored_candidates": [],
                "budget_ms": 4200,
                "search_budget_ms": 1600,
                "review_budget_ms": 2600,
                "search_mode": "post-crawl",
                "query_cap": 2,
                "provider_cap": 1,
                "result_cap": 6,
                "review_document_cap": 4,
                "reason": "post-crawl",
                "priority": 92,
                "eligibility_decision": "run_normal",
                "provider_statuses": {
                    "safebrowsing": "disabled",
                    "abuseipdb": "ok",
                    "ipinfo": "ok",
                    "censys": "disabled",
                    "sslmate": "error"
                }
            },
            "last_good": {
                "checked_at": "2026-03-19T09:10:44+00:00",
                "summary": "External checks ran, but the verified result set was still too sparse to harden the verdict.",
                "decision": {
                    "state": "insufficient",
                    "uncertainty": true,
                    "candidate_support": 0,
                    "candidate_contradiction": 0,
                    "supports": {
                        "dangerous": false,
                        "scam": false,
                        "spam": false,
                        "nsfw": false,
                        "trusted": false
                    },
                    "evidence_quality": "low",
                    "state_label": "Inconclusive",
                    "state_reason": "Public search did not yield usable third-party matches, so the system fell back to first-party inspection only."
                },
                "signals": {
                    "scores": {
                        "legit": 0,
                        "safe": 0,
                        "trusted": 0,
                        "caution": 0,
                        "scam": 0,
                        "dangerous": 0,
                        "spam": 0,
                        "nsfw": 0
                    },
                    "counts": {
                        "official_presence": 0,
                        "business_profiles": 0,
                        "positive_reviews": 0,
                        "negative_reviews": 0,
                        "scam_reports": 0,
                        "dangerous_reports": 0,
                        "spam_reports": 0,
                        "adult_reports": 0
                    },
                    "candidate_support": 0,
                    "candidate_contradiction": 0,
                    "highlights": [
                        "IPinfo resolved the primary IP to US on AS16509.",
                        "External evidence remained inconclusive because diversity, exact matching, or confidence was still too weak."
                    ]
                },
                "citations": [
                    {
                        "title": "AbuseIPDB IP reputation check",
                        "url": "https://docs.abuseipdb.com/",
                        "host": "docs.abuseipdb.com",
                        "snippet": "Primary IP 76.76.21.21 scored 0/100 with 30 report(s).",
                        "source_type": "api_reputation"
                    },
                    {
                        "title": "IPinfo IP enrichment",
                        "url": "https://ipinfo.io/developers",
                        "host": "ipinfo.io",
                        "snippet": "Primary IP 76.76.21.21 geolocates to US.",
                        "source_type": "ip_enrichment"
                    }
                ]
            }
        },
        "external_decision": {
            "state": "insufficient",
            "uncertainty": true,
            "candidate_support": 0,
            "candidate_contradiction": 0,
            "supports": {
                "dangerous": false,
                "scam": false,
                "spam": false,
                "nsfw": false,
                "trusted": false
            },
            "evidence_quality": "low",
            "state_label": "Inconclusive",
            "state_reason": "Public search did not yield usable third-party matches, so the system fell back to first-party inspection only."
        },
        "signal_scores": [
            {
                "label": "Strongest tag heuristic",
                "value": "T · 87%",
                "tone": "good",
                "detail": "The highest raw tag match from the heuristic engine before visibility thresholds and manual overrides."
            },
            {
                "label": "Trust score",
                "value": "84/100",
                "tone": "good",
                "detail": "Confidence derived from authority, crawl quality, stability, and risk signals."
            },
            {
                "label": "Authority score",
                "value": "52/100",
                "tone": "caution",
                "detail": "A higher authority score usually means broader reputation and backlink confidence."
            },
            {
                "label": "Spam risk",
                "value": "0/100",
                "tone": "good",
                "detail": "Lower is better. This blends spam indicators with false-positive protections for legitimate sites."
            },
            {
                "label": "Quality score",
                "value": "96/100",
                "tone": "good",
                "detail": "Based on crawl quality, content completeness, and technical evidence."
            },
            {
                "label": "Safety score",
                "value": "100/100",
                "tone": "good",
                "detail": "Higher is safer. Direct fraud signals can heavily cap this even when SEO signals look strong."
            },
            {
                "label": "Fraud score",
                "value": "0/100",
                "tone": "good",
                "detail": "Lower is better. This reflects phishing, drainer, fake-support, fake-shop, and malware signals."
            },
            {
                "label": "Infrastructure risk",
                "value": "1/100",
                "tone": "good",
                "detail": "Lower is better. This reflects the IP, registrar, and nameserver neighbourhood seen by the crawler."
            },
            {
                "label": "Evidence confidence",
                "value": "100/100",
                "tone": "good",
                "detail": "Higher means the crawler had enough pages and registry evidence to make a stronger call."
            },
            {
                "label": "External evidence",
                "value": "Low",
                "tone": "unknown",
                "detail": "Quality of the structured search and review evidence cluster."
            },
            {
                "label": "External decision",
                "value": "Inconclusive",
                "tone": "unknown",
                "detail": "How third-party evidence compares with the current candidate tag."
            },
            {
                "label": "NSFW score",
                "value": "0/100",
                "tone": "good",
                "detail": "Context-aware adult-content detection with medical / educational false-positive reduction."
            },
            {
                "label": "Registry stability",
                "value": "100/100",
                "tone": "good",
                "detail": "Based on age, expiry runway, and the amount of ownership / registrar churn."
            }
        ],
        "signal_sections": [
            {
                "title": "Registry & ownership",
                "items": [
                    {
                        "label": "Domain age",
                        "value": "7.1 years",
                        "tone": "good",
                        "detail": "Older domains generally carry more historical trust than very new ones."
                    },
                    {
                        "label": "Stability score",
                        "value": "100/100",
                        "tone": "good",
                        "detail": "Penalised by registrar, ownership, and nameserver churn."
                    },
                    {
                        "label": "Days to expiry",
                        "value": "332",
                        "tone": "good",
                        "detail": "Very short renewal windows can be a weak trust signal."
                    },
                    {
                        "label": "Registrar / ownership changes",
                        "value": "0 / 0",
                        "tone": "good",
                        "detail": "Frequent ownership churn can weaken trust."
                    },
                    {
                        "label": "Nameserver changes",
                        "value": "0",
                        "tone": "good",
                        "detail": "Repeated infrastructure changes can indicate instability."
                    },
                    {
                        "label": "DNSSEC / privacy",
                        "value": "DNSSEC on · privacy off",
                        "tone": "good",
                        "detail": "DNSSEC strengthens DNS trust; privacy is neutral on its own."
                    }
                ]
            },
            {
                "title": "Reputation & search evidence",
                "items": [
                    {
                        "label": "Backlinks",
                        "value": "1",
                        "tone": "unknown",
                        "detail": "Broader backlink evidence usually improves confidence."
                    },
                    {
                        "label": "Referring domains",
                        "value": "1",
                        "tone": "unknown",
                        "detail": "Unique linking domains are more useful than raw link volume."
                    },
                    {
                        "label": "Organic keywords",
                        "value": "92",
                        "tone": "caution",
                        "detail": "Search footprint helps distinguish real sites from thin shells."
                    },
                    {
                        "label": "Indexed pages",
                        "value": "26",
                        "tone": "caution",
                        "detail": "Larger index coverage usually means more evidence to classify from."
                    },
                    {
                        "label": "Brand strength",
                        "value": "84/100",
                        "tone": "good",
                        "detail": "Stronger brand signals reduce false positives for legitimate sites."
                    },
                    {
                        "label": "Risk label",
                        "value": "GOOD",
                        "tone": "unknown",
                        "detail": "This is the raw crawl / heuristic risk label feeding the tag model."
                    }
                ]
            },
            {
                "title": "Crawl, content & technicals",
                "items": [
                    {
                        "label": "HTTP status",
                        "value": "200",
                        "tone": "good",
                        "detail": "Healthy responses make classification more reliable."
                    },
                    {
                        "label": "HTTPS / speed",
                        "value": "HTTPS OK · 362 ms",
                        "tone": "good",
                        "detail": "Slow or broken technical signals weaken confidence."
                    },
                    {
                        "label": "Content words",
                        "value": "627",
                        "tone": "good",
                        "detail": "Thin pages are harder to trust and easier to manipulate."
                    },
                    {
                        "label": "Schema / structure",
                        "value": "0 schema · meta · H1",
                        "tone": "caution",
                        "detail": "Structured markup and basic on-page hygiene improve quality confidence."
                    },
                    {
                        "label": "Links on page",
                        "value": "16 internal · 3 external",
                        "tone": "good",
                        "detail": "Link patterns help detect thin directories and promo pages."
                    },
                    {
                        "label": "Page speed / mobile",
                        "value": "98/100 · 91/100",
                        "tone": "good",
                        "detail": "Better technical quality generally reduces low-effort site patterns."
                    },
                    {
                        "label": "Crawl access",
                        "value": "Open",
                        "tone": "good",
                        "detail": "The crawler reached the site without an anti-bot challenge."
                    }
                ]
            },
            {
                "title": "External evidence & explainability",
                "items": [
                    {
                        "label": "Decision state",
                        "value": "Inconclusive",
                        "tone": "unknown",
                        "detail": "Public search did not yield usable third-party matches, so the system fell back to first-party inspection only."
                    },
                    {
                        "label": "Evidence quality",
                        "value": "Low",
                        "tone": "unknown",
                        "detail": "Blends source trust, domain matching, evidence diversity, and freshness."
                    },
                    {
                        "label": "Support vs contradiction",
                        "value": "0 / 0",
                        "tone": "unknown",
                        "detail": "Compares how much structured external evidence supports the candidate tag against evidence that contradicts it."
                    },
                    {
                        "label": "Qualified risk sources",
                        "value": "No",
                        "tone": "good",
                        "detail": "Risk tags only promote from external evidence when source diversity or source trust thresholds are met."
                    },
                    {
                        "label": "Uncertainty buffer",
                        "value": "Active",
                        "tone": "caution",
                        "detail": "Prevents thin or mixed external evidence from forcing a stronger tag than the evidence can justify."
                    }
                ]
            }
        ],
        "positives": [
            "Established domain age: 7.1 years.",
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness.",
            "DNSSEC is enabled."
        ],
        "risks": [
            "External evidence was mixed or sparse, so the tag model keeps an uncertainty buffer instead of overcommitting."
        ]
    },
    "traffic_confidence": 76,
    "whois": {
        "current": {
            "id": 34394,
            "domain": "chrisotto.dev",
            "source_type": "rdap",
            "rdap_url": "https://pubapi.registry.google/rdap/domain/chrisotto.dev",
            "registrar_name": "Porkbun LLC",
            "registrar_handle": "1861",
            "registrant_name": "",
            "registrant_org": "",
            "registrant_country": "",
            "registrant_email": "",
            "abuse_email": "abuse@porkbun.com",
            "created_date": "2019-03-17 22:24:08",
            "updated_date": "2026-03-19 09:10:42",
            "expires_date": "2027-03-17 22:24:08",
            "nameservers_json": "[\"deb.ns.cloudflare.com\",\"elmo.ns.cloudflare.com\"]",
            "status_json": "[\"client delete prohibited\",\"client transfer prohibited\",\"renew period\"]",
            "dnssec": "signed",
            "privacy_protected": 0,
            "content_hash": "efc9b99205dfd5e7ef35bf3fbe24305356ba3369fa5b5f3a05eba4c477f60ef4",
            "history_count": 1,
            "last_checked_at": "2026-03-19 09:10:42",
            "last_changed_at": "2026-03-19 09:10:42",
            "created_at": "2026-03-19 09:10:43",
            "updated_at": "2026-03-19 09:10:43"
        },
        "history": [
            {
                "id": 35196,
                "domain": "chrisotto.dev",
                "source_type": "rdap",
                "registrar_name": "Porkbun LLC",
                "registrar_handle": "1861",
                "registrant_name": "",
                "registrant_org": "",
                "registrant_country": "",
                "registrant_email": "",
                "abuse_email": "abuse@porkbun.com",
                "created_date": "2019-03-17 22:24:08",
                "updated_date": "2026-03-19 09:10:42",
                "expires_date": "2027-03-17 22:24:08",
                "nameservers_json": "[\"deb.ns.cloudflare.com\",\"elmo.ns.cloudflare.com\"]",
                "status_json": "[\"client delete prohibited\",\"client transfer prohibited\",\"renew period\"]",
                "dnssec": "signed",
                "privacy_protected": 0,
                "content_hash": "efc9b99205dfd5e7ef35bf3fbe24305356ba3369fa5b5f3a05eba4c477f60ef4",
                "checked_at": "2026-03-19 09:10:42",
                "change_summary": "Initial WHOIS snapshot captured.",
                "created_at": "2026-03-19 09:10:42"
            }
        ],
        "signals": {
            "age_years": 7.1,
            "days_to_expiry": 332,
            "days_since_last_registry_update": 31,
            "stability_score": 100,
            "registrar_changes": 0,
            "ownership_changes": 0,
            "nameserver_changes": 0,
            "status_changes": 0,
            "history_entries": 1,
            "privacy_protected": false,
            "dnssec_enabled": true,
            "has_registrant_country": false,
            "registrant_country": "",
            "nameserver_count": 2,
            "status_count": 3
        }
    },
    "discovered_domain": {
        "id": 136794,
        "domain": "chrisotto.dev",
        "first_seen_at": "2026-03-16 03:50:23",
        "last_crawled_at": "2026-03-31 03:03:17",
        "last_title": "Chris Otto | Father, Developer, SDET",
        "last_http_status": 200,
        "discovered_from_domain": "uses.tech",
        "depth": 0,
        "backlinks_count": 1,
        "rating_cache": 55,
        "spam_score": 0,
        "risk_label": "good",
        "category_name": "Personal",
        "primary_country_code": "",
        "internal_links_count": 16,
        "external_links_count": 3,
        "social_profiles_count": 3,
        "content_word_count": 627,
        "title_quality_score": 93,
        "has_meta_description": 1,
        "has_h1": 1,
        "language_code": "en",
        "response_time_ms": 362,
        "robots_status": 404,
        "sitemap_status": 200,
        "sitemap_total_urls": 26,
        "quality_score": 96,
        "site_name": "Chris Otto | Father, Developer, SDET",
        "canonical_domain": "",
        "favicon_present": 1,
        "schema_org_count": 0,
        "noindex_detected": 0,
        "feed_links_count": 1,
        "https_working": 1,
        "estimated_authority_score": 42,
        "trust_score": 97,
        "nsfw_score": 0,
        "overall_rank_estimate": 1849580,
        "primary_tag": "C",
        "tag_codes": "C,T,Uncertain",
        "manual_verified_status": "",
        "manual_tag_codes": "",
        "manual_rating_delta": 0,
        "manual_authority_delta": 0,
        "manual_trust_delta": 0,
        "manual_note": null,
        "manual_adjusted_by": null,
        "manual_adjusted_at": null,
        "manual_lock_scores": 0,
        "manual_lock_flags": 0,
        "crawl_blocked": 0,
        "crawl_blocked_by": "",
        "crawl_blocked_reason": null,
        "safety_score": 100,
        "fraud_score": 0,
        "legitimacy_score": 61,
        "infrastructure_risk_score": 1,
        "score_confidence": 100,
        "tag_confidence": 72,
        "category_confidence": 38,
        "deep_crawl_pages": 44,
        "resolved_ip": "76.76.21.21",
        "category_candidates_json": "[{\"category\":\"Personal\",\"score\":33},{\"category\":\"Developer Tools\",\"score\":17},{\"category\":\"Personal\",\"score\":17},{\"category\":\"Technology\",\"score\":17}]",
        "page_signals_json": "[{\"path\":\"/about\",\"status\":200,\"title\":\"About - Chris Otto\",\"word_count\":1414,\"summary_text\":\"About - Chris Otto About - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesAboutChris OttoSenior SDETFlowExperienceFlowSenior SDETAug 2022 - PresentUNDER CONSTRUCTIONNorthwestern MutualManager Software EngineeringAug 2021 - Aug 2022Manage technical backlog and planning for over forty test and test support repositories.Lead team of nine Test Engineers across a large project co\",\"classification_terms\":[\"about\",\"about me\",\"support\",\"blog\",\"under construction\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":1,\"depth\":1},{\"path\":\"/blog\",\"status\":200,\"title\":\"Blog - Chris Otto\",\"word_count\":753,\"summary_text\":\"Blog - Chris Otto Blog - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesAll PostsWatchtower - Docker NAS SetupPublished onFebruary 19, 20212 min read Image courteous of [@kristsll on Unsplash](https://unsplash.com/@kristsll). Watchtower is a container that will update all your other running contai...dockernaswatchtowerCalibre Library - Docker NAS SetupPublished onFebruary 5\",\"classification_terms\":[\"blog\",\"about\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":21,\"depth\":1},{\"path\":\"/tags\",\"status\":200,\"title\":\"Tags - Chris Otto\",\"word_count\":43,\"summary_text\":\"Tags - Chris Otto Tags - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesTagsreact (8)nas (5)gatsby (5)docker (4)javascript (3)synology (3)node (2)calibre (1)specflow (1)vs2017 (1)csharp (1)utility (1)ios (1)mailchimp (1)graphql (1)sentry (1)netlify (1)react-router (1)typescript (1)watchtower (1)Chris Otto | Father, Developer, SDET • © 2023{\\\"props\\\":{\\\"pageProps\\\":{\\\"tags\\\":{\\\"rea\",\"classification_terms\":[\"tags\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/projects\",\"status\":200,\"title\":\"Projects - Chris Otto\",\"word_count\":71,\"summary_text\":\"Projects - Chris Otto Projects - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesProjectsMy open source side projects.Formats, runs and highlights FitNesse tests in VS Code.TypescriptNodePersonal site showcasing my blog, projects and online resume.ReactGraphQLNodeReact application to view parts of my GoodReads Library.ReactAPINodeNPM package to format a string the same as the Fi\",\"classification_terms\":[\"projects\",\"about\",\"api\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/uses\",\"status\":200,\"title\":\"Uses\",\"word_count\":293,\"summary_text\":\"Uses Uses!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesUsesWhat I use for my developer setup, gear, software, configs, etc.ComputersDesktopCoreCase: NZXT S340 Mid TowerMotherboard: ROG Maximus IX CodeProcessor: Intel Core i7-7700KCPU Cooler: Corsair iCUE H150i Elite Liquid CoolerRAM: 32 GB Corsair Vengeance LPX DDR4Boot Drive: MyDigitalSSD BPX M.2 PCIE 480GBPower Supply\",\"classification_terms\":[\"uses\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/blog/watchtower-docker-nas\",\"status\":200,\"title\":\"Watchtower - Docker NAS Setup\",\"word_count\":683,\"summary_text\":\"Watchtower - Docker NAS Setup Watchtower - Docker NAS Setup!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesWatchtower - Docker NAS SetupPublished onFriday, February 19, 2021AuthorsNameChris OttoTwitter@chris_otto6Table of ContentsPrerequisites 📃SSH Into Your NAS 💻Run the Container 🐳Image courteous of @kristsll on Unsplash.Watchtower is a container that will update all your other running container\",\"classification_terms\":[\"blog/watchtower-docker-nas\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":3,\"depth\":1},{\"path\":\"/tags/docker\",\"status\":200,\"title\":\"docker - Chris Otto\",\"word_count\":262,\"summary_text\":\"docker - Chris Otto docker - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesDockerWatchtower - Docker NAS SetupPublished onFebruary 19, 20212 min read Image courteous of [@kristsll on Unsplash](https://unsplash.com/@kristsll). Watchtower is a container that will update all your other running contai...dockernaswatchtowerCalibre Library - Docker NAS SetupPublished onFebruary 5,\",\"classification_terms\":[\"tags/docker\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":4,\"depth\":1},{\"path\":\"/tags/nas\",\"status\":200,\"title\":\"nas - Chris Otto\",\"word_count\":319,\"summary_text\":\"nas - Chris Otto nas - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesNasWatchtower - Docker NAS SetupPublished onFebruary 19, 20212 min read Image courteous of [@kristsll on Unsplash](https://unsplash.com/@kristsll). Watchtower is a container that will update all your other running contai...dockernaswatchtowerCalibre Library - Docker NAS SetupPublished onFebruary 5, 20215\",\"classification_terms\":[\"tags/nas\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":5,\"depth\":1},{\"path\":\"/tags/watchtower\",\"status\":200,\"title\":\"watchtower - Chris Otto\",\"word_count\":72,\"summary_text\":\"watchtower - Chris Otto watchtower - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesWatchtowerWatchtower - Docker NAS SetupPublished onFebruary 19, 20212 min read Image courteous of [@kristsll on Unsplash](https://unsplash.com/@kristsll). Watchtower is a container that will update all your other running contai...dockernaswatchtowerChris Otto | Father, Developer, SDET • © 2023{\\\"pr\",\"classification_terms\":[\"tags/watchtower\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":1,\"depth\":1},{\"path\":\"/blog/calibre-library-docker-nas\",\"status\":200,\"title\":\"Calibre Library - Docker NAS Setup\",\"word_count\":1616,\"summary_text\":\"Calibre Library - Docker NAS Setup Calibre Library - Docker NAS Setup!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesCalibre Library - Docker NAS SetupPublished onFriday, February 5, 2021AuthorsNameChris OttoTwitter@chris_otto6Table of ContentsPrerequisites 📃Create Folder Structure 📂Downloading and Configuring the Image 🚢Launch the Container 🚀Configuring Calibre 📚Image courteous of Susan Yin at Unspla\",\"classification_terms\":[\"blog/calibre-library-docker-nas\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":11,\"depth\":1},{\"path\":\"/tags/calibre\",\"status\":200,\"title\":\"calibre - Chris Otto\",\"word_count\":84,\"summary_text\":\"calibre - Chris Otto calibre - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesCalibreCalibre Library - Docker NAS SetupPublished onFebruary 5, 20215 min read Image courteous of [Susan Yin at Unsplash](https://unsplash.com/@syinq). Calibre is a free ebook manager. It has been around for a while, has an e-b...calibredockernasChris Otto | Father, Developer, SDET • © 2023{\\\"props\\\":\",\"classification_terms\":[\"tags/calibre\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":1,\"depth\":1},{\"path\":\"/blog/pihole-docker-nas\",\"status\":200,\"title\":\"PiHole - Docker NAS Setup\",\"word_count\":1455,\"summary_text\":\"PiHole - Docker NAS Setup PiHole - Docker NAS Setup!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesPiHole - Docker NAS SetupPublished onSunday, January 31, 2021AuthorsNameChris OttoTwitter@chris_otto6Table of ContentsPrerequisites 📃Create Folder Structure 📂Downloading and Configuring the Image 🚢Launch the Container 🚀Router Changes 📶Pi-hole is an awesome tool that let&#x27;s you block certain\",\"classification_terms\":[\"blog/pihole-docker-nas\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":4,\"depth\":1},{\"path\":\"/tags/synology\",\"status\":200,\"title\":\"synology - Chris Otto\",\"word_count\":209,\"summary_text\":\"synology - Chris Otto synology - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesSynologyPiHole - Docker NAS SetupPublished onJanuary 31, 20214 min read Pi-hole is an awesome tool that let&#x27;s you block certain requests on your home network from devices. The way that Pi-hole does this by either hosting ...synologydockernasPortainer - Docker Container Manager For Your NASPubli\",\"classification_terms\":[\"tags/synology\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":3,\"depth\":1},{\"path\":\"/blog/portainer-docker-nas\",\"status\":200,\"title\":\"Portainer - Docker Container Manager For Your NAS\",\"word_count\":981,\"summary_text\":\"Portainer - Docker Container Manager For Your NAS Portainer - Docker Container Manager For Your NAS!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesPortainer - Docker Container Manager For Your NASPublished onMonday, January 25, 2021AuthorsNameChris OttoTwitter@chris_otto6Table of ContentsPrerequisites 📃Create Folder Structure 📂SSH Into Your NAS And Run the Image 📦Setup Portainer 🛳Image courteous of Pixabay.Portainer\",\"classification_terms\":[\"blog/portainer-docker-nas\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":4,\"depth\":1},{\"path\":\"/blog/ssh-synology-nas\",\"status\":200,\"title\":\"Synology NAS - SSH To Find User Info\",\"word_count\":828,\"summary_text\":\"Synology NAS - SSH To Find User Info Synology NAS - SSH To Find User Info!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesSynology NAS - SSH To Find User InfoPublished onThursday, January 21, 2021AuthorsNameChris OttoTwitter@chris_otto6Table of ContentsEnable SSHOpen Up The Terminal And Find User InfoImage courteous of unsplash.The user information for your user is useful for setting up Docker images/con\",\"classification_terms\":[\"blog/ssh-synology-nas\",\"about\",\"blog\",\"shop\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":4,\"depth\":1},{\"path\":\"/blog/page/2\",\"status\":200,\"title\":\"Chris Otto | Father, Developer, SDET\",\"word_count\":729,\"summary_text\":\"Chris Otto | Father, Developer, SDET Chris Otto | Father, Developer, SDET!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesAll PostsNetlify - Client Side RoutingPublished onJanuary 15, 20212 min read I have a nice little [side project](https://library.chrisotto.dev/) based on the Goodreads API (yes, my key is still active). I had it up for a while...netlifyreactreact-routerGatsby Error Monitoring with Sen\",\"classification_terms\":[\"blog/page/2\",\"about\",\"api\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":21,\"depth\":2},{\"path\":\"/tags/react\",\"status\":200,\"title\":\"react - Chris Otto\",\"word_count\":467,\"summary_text\":\"react - Chris Otto react - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesReactNetlify - Client Side RoutingPublished onJanuary 15, 20212 min read I have a nice little [side project](https://library.chrisotto.dev/) based on the Goodreads API (yes, my key is still active). I had it up for a while...netlifyreactreact-routerGatsby Error Monitoring with SentryPublished onJanuary\",\"classification_terms\":[\"tags/react\",\"about\",\"api\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":8,\"depth\":2},{\"path\":\"/tags/gatsby\",\"status\":200,\"title\":\"gatsby - Chris Otto\",\"word_count\":308,\"summary_text\":\"gatsby - Chris Otto gatsby - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesGatsbyGatsby Error Monitoring with SentryPublished onJanuary 8, 20214 min read Image from [Free Illustrations](https://freellustrations.com/). Being able to monitor when your application encounters a bug in production is a nice...reactgatsbysentryGatsby Develop with iOS SimulatorPublished onJuly 10, 2\",\"classification_terms\":[\"tags/gatsby\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":5,\"depth\":2},{\"path\":\"/tags/javascript\",\"status\":200,\"title\":\"javascript - Chris Otto\",\"word_count\":201,\"summary_text\":\"javascript - Chris Otto javascript - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesJavascriptAdd Linting to Create-React-AppPublished onJune 30, 20202 min read Image from [Free Illustrations](https://freellustrations.com/). Create-React-App gives a nice bootstrapped project. I like being able to lint outsid...reactjavascriptnodeManage image sizes with tinifyPublished onJune 1, 2\",\"classification_terms\":[\"tags/javascript\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":3,\"depth\":2},{\"path\":\"/tags/node\",\"status\":200,\"title\":\"node - Chris Otto\",\"word_count\":125,\"summary_text\":\"node - Chris Otto node - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesNodeAdd Linting to Create-React-AppPublished onJune 30, 20202 min read Image from [Free Illustrations](https://freellustrations.com/). Create-React-App gives a nice bootstrapped project. I like being able to lint outsid...reactjavascriptnodeManage image sizes with tinifyPublished onJune 1, 20206 min rea\",\"classification_terms\":[\"tags/node\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":2,\"depth\":2},{\"path\":\"/tags/specflow\",\"status\":200,\"title\":\"specflow - Chris Otto\",\"word_count\":88,\"summary_text\":\"specflow - Chris Otto specflow - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesSpecflowCreate Specflow `feature.cs` At Build TimePublished onApril 30, 20192 min read ## Change Feature File to Generate the `~.feature.cs` at Compile Time Whenever a new Specflow file is created in the solution it is automatically cr...specflowvs2017csharpChris Otto | Father, Developer, SDET • © 2\",\"classification_terms\":[\"tags/specflow\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":1,\"depth\":2},{\"path\":\"/tags/vs2017\",\"status\":200,\"title\":\"vs2017 - Chris Otto\",\"word_count\":88,\"summary_text\":\"vs2017 - Chris Otto vs2017 - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesVs2017Create Specflow `feature.cs` At Build TimePublished onApril 30, 20192 min read ## Change Feature File to Generate the `~.feature.cs` at Compile Time Whenever a new Specflow file is created in the solution it is automatically cr...specflowvs2017csharpChris Otto | Father, Developer, SDET • © 2023{\",\"classification_terms\":[\"tags/vs2017\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":1,\"depth\":2},{\"path\":\"/tags/csharp\",\"status\":200,\"title\":\"csharp - Chris Otto\",\"word_count\":88,\"summary_text\":\"csharp - Chris Otto csharp - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesCsharpCreate Specflow `feature.cs` At Build TimePublished onApril 30, 20192 min read ## Change Feature File to Generate the `~.feature.cs` at Compile Time Whenever a new Specflow file is created in the solution it is automatically cr...specflowvs2017csharpChris Otto | Father, Developer, SDET • © 2023{\",\"classification_terms\":[\"tags/csharp\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":1,\"depth\":2},{\"path\":\"/tags/utility\",\"status\":200,\"title\":\"utility - Chris Otto\",\"word_count\":80,\"summary_text\":\"utility - Chris Otto utility - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesUtilityManage image sizes with tinifyPublished onJune 1, 20206 min read Image from @jruscello on [Unsplash](https://unsplash.com/) Having my blog maintained in source control is awesome. I love having a commit log and be...javascriptnodeutilityChris Otto | Father, Developer, SDET • © 2023{\\\"props\\\":{\\\"p\",\"classification_terms\":[\"tags/utility\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":1,\"depth\":2},{\"path\":\"/tags/ios\",\"status\":200,\"title\":\"ios - Chris Otto\",\"word_count\":76,\"summary_text\":\"ios - Chris Otto ios - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesIosGatsby Develop with iOS SimulatorPublished onJuly 10, 20202 min read Image from [@norwood](https://unsplash.com/@nordwood) at Unsplash. Chrome DevTools have come a long way in enabling users to mimic mobile devices. H...gatsbyreactiosChris Otto | Father, Developer, SDET • © 2023{\\\"props\\\":{\\\"pageProps\\\":{\",\"classification_terms\":[\"tags/ios\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":1,\"depth\":2},{\"path\":\"/tags/mailchimp\",\"status\":200,\"title\":\"mailchimp - Chris Otto\",\"word_count\":84,\"summary_text\":\"mailchimp - Chris Otto mailchimp - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesMailchimpGatsby - Create an audience with MailchimpPublished onMay 21, 20204 min read Image from @mathyaskurmann on [Unsplash](https://unsplash.com/) Allowing people to get updates from your blog is a great way to create and engage wi...gatsbyreactmailchimpChris Otto | Father, Developer, SDET • © 2\",\"classification_terms\":[\"tags/mailchimp\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":1,\"depth\":2},{\"path\":\"/tags/graphql\",\"status\":200,\"title\":\"graphql - Chris Otto\",\"word_count\":92,\"summary_text\":\"graphql - Chris Otto graphql - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesGraphqlGatsby - Add a Published Filter To PostsPublished onFebruary 11, 20204 min read I like [Dev.to](www.dev.to)&#x27;s published filter. It allows you to continue to write posts until they&#x27;re ready to be viewed by everyone. If you are not...gatsbyreactgraphqlChris Otto | Father, Developer, SD\",\"classification_terms\":[\"tags/graphql\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":1,\"depth\":2},{\"path\":\"/tags/sentry\",\"status\":200,\"title\":\"sentry - Chris Otto\",\"word_count\":74,\"summary_text\":\"sentry - Chris Otto sentry - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesSentryGatsby Error Monitoring with SentryPublished onJanuary 8, 20214 min read Image from [Free Illustrations](https://freellustrations.com/). Being able to monitor when your application encounters a bug in production is a nice...reactgatsbysentryChris Otto | Father, Developer, SDET • © 2023{\\\"props\\\":{\",\"classification_terms\":[\"tags/sentry\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":1,\"depth\":2},{\"path\":\"/tags/netlify\",\"status\":200,\"title\":\"netlify - Chris Otto\",\"word_count\":87,\"summary_text\":\"netlify - Chris Otto netlify - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesNetlifyNetlify - Client Side RoutingPublished onJanuary 15, 20212 min read I have a nice little [side project](https://library.chrisotto.dev/) based on the Goodreads API (yes, my key is still active). I had it up for a while...netlifyreactreact-routerChris Otto | Father, Developer, SDET • © 2023{\\\"pro\",\"classification_terms\":[\"tags/netlify\",\"about\",\"api\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":1,\"depth\":2},{\"path\":\"/tags/react-router\",\"status\":200,\"title\":\"react-router - Chris Otto\",\"word_count\":87,\"summary_text\":\"react-router - Chris Otto react-router - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesReact-routerNetlify - Client Side RoutingPublished onJanuary 15, 20212 min read I have a nice little [side project](https://library.chrisotto.dev/) based on the Goodreads API (yes, my key is still active). I had it up for a while...netlifyreactreact-routerChris Otto | Father, Developer, SDET • ©\",\"classification_terms\":[\"tags/react-router\",\"about\",\"api\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":1,\"depth\":2},{\"path\":\"/tags/typescript\",\"status\":200,\"title\":\"typescript - Chris Otto\",\"word_count\":73,\"summary_text\":\"typescript - Chris Otto typescript - Chris Otto!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesTypescriptReact Tutorial - Add TypescriptPublished onNovember 10, 20182 min read This week I was going through the React [tutorial](https://reactjs.org/tutorial/tutorial.html). While going through each phase of the tutorial; going...reacttypescriptChris Otto | Father, Developer, SDET • © 2023{\\\"pro\",\"classification_terms\":[\"tags/typescript\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":1,\"depth\":2},{\"path\":\"/blog/netlify-client-side-routing\",\"status\":200,\"title\":\"Netlify - Client Side Routing\",\"word_count\":494,\"summary_text\":\"Netlify - Client Side Routing Netlify - Client Side Routing!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesNetlify - Client Side RoutingPublished onFriday, January 15, 2021AuthorsNameChris OttoTwitter@chris_otto6Table of ContentsCreating a Redirects File 💻I have a nice little side project based on the Goodreads API (yes, my key is still active). I had it up for a while and whenever I would refres\",\"classification_terms\":[\"blog/netlify-client-side-routing\",\"about\",\"api\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":4,\"depth\":2},{\"path\":\"/blog/gatsby-error-monitoring-with-sentry\",\"status\":200,\"title\":\"Gatsby Error Monitoring with Sentry\",\"word_count\":1568,\"summary_text\":\"Gatsby Error Monitoring with Sentry Gatsby Error Monitoring with Sentry!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesGatsby Error Monitoring with SentryPublished onFriday, January 8, 2021AuthorsNameChris OttoTwitter@chris_otto6Table of ContentsCreate Sentry Account and ProjectInstall Packages 📦Gatsby Configuration Changes 👨‍💻Create the Error Boundary Component 🧩Wrap Contents of Layout Component with\",\"classification_terms\":[\"blog/gatsby-error-monitoring-with-sentry\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":4,\"depth\":3},{\"path\":\"/blog/debug-gatsby-simulator\",\"status\":200,\"title\":\"Gatsby Develop with iOS Simulator\",\"word_count\":755,\"summary_text\":\"Gatsby Develop with iOS Simulator Gatsby Develop with iOS Simulator!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesGatsby Develop with iOS SimulatorPublished onFriday, July 10, 2020AuthorsNameChris OttoTwitter@chris_otto6Table of ContentsPrerequisitesStart Gatsby 👨‍🚀Find IP Address 💻Launch the Simulator 🚀Image from @norwood at Unsplash.Chrome DevTools have come a long way in enabling users to mimic m\",\"classification_terms\":[\"blog/debug-gatsby-simulator\",\"about\",\"address\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":4,\"depth\":3},{\"path\":\"/blog/add-linting-to-create-react-app\",\"status\":200,\"title\":\"Add Linting to Create-React-App\",\"word_count\":661,\"summary_text\":\"Add Linting to Create-React-App Add Linting to Create-React-App!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesAdd Linting to Create-React-AppPublished onTuesday, June 30, 2020AuthorsNameChris OttoTwitter@chris_otto6Table of ContentsInstall packages 📦Add ESLint Configuration to package.jsonAdd Linting ScriptImage from Free Illustrations.Create-React-App gives a nice bootstrapped project. I like bei\",\"classification_terms\":[\"blog/add-linting-to-create-react-app\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":4,\"depth\":3},{\"path\":\"/blog/compress-your-images-with-tinify\",\"status\":200,\"title\":\"Manage image sizes with tinify\",\"word_count\":2534,\"summary_text\":\"Manage image sizes with tinify Manage image sizes with tinify!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesManage image sizes with tinifyPublished onMonday, June 1, 2020AuthorsNameChris OttoTwitter@chris_otto6Table of ContentsInstall packages 📦NPMYarnCreate Tiny PNG Account 🖼Create the Utility File and Registry ⚙Stub Out Registry StructureImplement the UtilityCreate Script and Add to Husky 🐕‍🦺Ru\",\"classification_terms\":[\"blog/compress-your-images-with-tinify\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":18,\"depth\":3},{\"path\":\"/blog/page/3\",\"status\":200,\"title\":\"Chris Otto | Father, Developer, SDET\",\"word_count\":781,\"summary_text\":\"Chris Otto | Father, Developer, SDET Chris Otto | Father, Developer, SDET!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesAll PostsGatsby - Create an audience with MailchimpPublished onMay 21, 20204 min read Image from @mathyaskurmann on [Unsplash](https://unsplash.com/) Allowing people to get updates from your blog is a great way to create and engage wi...gatsbyreactmailchimpGatsby - Add a Published Fil\",\"classification_terms\":[\"blog/page/3\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":21,\"depth\":3},{\"path\":\"/blog/gatsby-create-an-audience-with-mailchimp\",\"status\":200,\"title\":\"Gatsby - Create an audience with Mailchimp\",\"word_count\":1974,\"summary_text\":\"Gatsby - Create an audience with Mailchimp Gatsby - Create an audience with Mailchimp!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesGatsby - Create an audience with MailchimpPublished onThursday, May 21, 2020AuthorsNameChris OttoTwitter@chris_otto6Table of ContentsCreate a MailChimp Account 📬Add and Setup Plugin Package 📦Create the Subscribe Component 🧩Finishing up 🏁Image from @mathyaskurmann on UnsplashAllo\",\"classification_terms\":[\"blog/gatsby-create-an-audience-with-mailchimp\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":4,\"depth\":3},{\"path\":\"/blog/gatsby-create-published-filter-for-posts\",\"status\":200,\"title\":\"Gatsby - Add a Published Filter To Posts\",\"word_count\":1521,\"summary_text\":\"Gatsby - Add a Published Filter To Posts Gatsby - Add a Published Filter To Posts!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesGatsby - Add a Published Filter To PostsPublished onTuesday, February 11, 2020AuthorsNameChris OttoTwitter@chris_otto6Table of ContentsApplying the Updates 😎Add published to the frontmatterAdding the filter to gatsby-config.js queriesApply filter to gatsby-node.js, components and\",\"classification_terms\":[\"blog/gatsby-create-published-filter-for-posts\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":4,\"depth\":3},{\"path\":\"/blog/gatsby-change-from-md-to-mdx\",\"status\":200,\"title\":\"Gatsby - Switching from Markdown to MDX\",\"word_count\":2164,\"summary_text\":\"Gatsby - Switching from Markdown to MDX Gatsby - Switching from Markdown to MDX!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesGatsby - Switching from Markdown to MDXPublished onSaturday, February 8, 2020AuthorsNameChris OttoTwitter@chris_otto6Table of ContentsMaking The Switch 🎉Gatsby-Plugin-MDXGatbsy-Plugin-Feed-MDXChange All Your QueriesChange Components and PropsRemove old packagesGotchasMDX Doesn&#x27\",\"classification_terms\":[\"blog/gatsby-change-from-md-to-mdx\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":4,\"depth\":3},{\"path\":\"/blog/react-tutorial-adding-typescript\",\"status\":200,\"title\":\"React Tutorial - Add Typescript\",\"word_count\":488,\"summary_text\":\"React Tutorial - Add Typescript React Tutorial - Add Typescript!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesReact Tutorial - Add TypescriptPublished onSaturday, November 10, 2018AuthorsNameChris OttoTwitter@chris_otto6Table of ContentsThis week I was going through the React tutorial. While going through each phase of the tutorial; going over state, JSX and React Components I wanted to be writing\",\"classification_terms\":[\"blog/react-tutorial-adding-typescript\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":3,\"depth\":3},{\"path\":\"/blog/javascript-copyright-date\",\"status\":200,\"title\":\"Dynamically Set Footer Copyright Date\",\"word_count\":402,\"summary_text\":\"Dynamically Set Footer Copyright Date Dynamically Set Footer Copyright Date!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesDynamically Set Footer Copyright DatePublished onTuesday, November 20, 2018AuthorsNameChris OttoTwitter@chris_otto6Table of ContentsWith 2018 winding down I found myself thinking that I will need to leave a note to update the footer on my site to change the year to 2019. Having to co\",\"classification_terms\":[\"blog/javascript-copyright-date\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":4,\"depth\":3},{\"path\":\"/blog/change-specflow-build\",\"status\":200,\"title\":\"Create Specflow `feature.cs` At Build Time\",\"word_count\":679,\"summary_text\":\"Create Specflow `feature.cs` At Build Time Create Specflow `feature.cs` At Build Time!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesCreate Specflow `feature.cs` At Build TimePublished onTuesday, April 30, 2019AuthorsNameChris OttoTwitter@chris_otto6Table of ContentsChange Feature File to Generate the ~.feature.cs at Compile TimePrerequisiteMaking the ChangeChange Feature File to Generate the ~.feature.cs at\",\"classification_terms\":[\"blog/change-specflow-build\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":4,\"depth\":3},{\"path\":\"/blog/page/4\",\"status\":200,\"title\":\"Chris Otto | Father, Developer, SDET\",\"word_count\":509,\"summary_text\":\"Chris Otto | Father, Developer, SDET Chris Otto | Father, Developer, SDET!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()Chris OttoBlogTagsProjectsAboutUsesBlogTagsProjectsAboutUsesAll PostsReact Tutorial - Add TypescriptPublished onNovember 10, 20182 min read This week I was going through the React [tutorial](https://reactjs.org/tutorial/tutorial.html). While going through each phase of the tutorial; going...reacttypescriptPrevious4 of 4NextChris Otto | Father,\",\"classification_terms\":[\"blog/page/4\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":17,\"depth\":4}]",
        "score_reasons_json": "[\"Category confidence was reduced, so the classifier fell back to the broader parent category.\",\"Category evidence stayed thin, so the output was softened to a broader classification.\",\"Trusted status now requires clean crawl access and stronger confidence, so this result was downgraded to caution.\"]",
        "route_domain": "chrisotto.dev",
        "display_domain": "chrisotto.dev"
    },
    "explainability": {
        "summary": "chrisotto.dev currently scores 64/100. The score is being shaped by a mixed signal profile rather than one dominant factor. Evidence confidence is strong enough for a relatively stable read. This is an estimated profile rather than a manually tracked one. Crawler access looks clean.",
        "badges": [
            {
                "label": "Profile",
                "value": "Estimated profile",
                "tone": "unknown",
                "detail": null
            },
            {
                "label": "Evidence confidence",
                "value": "High confidence",
                "tone": "good",
                "detail": "100/100"
            },
            {
                "label": "Traffic confidence",
                "value": "Solid confidence",
                "tone": "good",
                "detail": "76/100"
            },
            {
                "label": "Crawler access",
                "value": "Clean visibility",
                "tone": "good",
                "detail": null
            }
        ],
        "weighted_contributions": [
            {
                "label": "Quality system",
                "points": "+28.2",
                "tone": "good",
                "detail": "Technical quality, crawl depth, page structure, and implementation hygiene. Current subsystem score: 83/100."
            },
            {
                "label": "Reputation system",
                "points": "+16.7",
                "tone": "caution",
                "detail": "Authority, search visibility, reach, engagement, and registry stability. Current subsystem score: 49/100."
            },
            {
                "label": "Safety system",
                "points": "+32.0",
                "tone": "good",
                "detail": "Fraud, spam, and trust signals from infrastructure, crawl, and registry evidence. Current subsystem score: 100/100."
            },
            {
                "label": "Risk clamp",
                "points": "-13.0",
                "tone": "risk",
                "detail": "Safety thresholds capped the final score until the risk profile improves."
            }
        ],
        "evidence_cards": [
            {
                "label": "Authority and trust",
                "value": "50/100 · trust 80/100",
                "tone": "caution",
                "detail": "209 monthly visitors, 92 organic keywords, brand completeness 84/100, engagement 83/100."
            },
            {
                "label": "Backlink and search evidence",
                "value": "1 referring domains",
                "tone": "good",
                "detail": "1 backlinks across 1 referring domains. Diversity 92/100; spam penalty 0."
            },
            {
                "label": "Registry and domain stability",
                "value": "7.1 years old",
                "tone": "good",
                "detail": "Stability 100/100 · age 7.1 years · registrar Porkbun LLC · expires in 332 days."
            },
            {
                "label": "Safety and fraud posture",
                "value": "Safety 100/100 · fraud 0/100",
                "tone": "good",
                "detail": "Primary tag T · safety 100/100 · fraud 0/100."
            }
        ],
        "positives": [
            "Established domain age: 7.1 years.",
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness.",
            "DNSSEC is enabled.",
            "Registry history looks stable, which supports legitimacy and trust.",
            "The domain has been registered for years, which usually improves trust confidence."
        ],
        "risks": [
            "External evidence was mixed or sparse, so the tag model keeps an uncertainty buffer instead of overcommitting."
        ],
        "freshness": [
            {
                "label": "Crawl evidence",
                "value": "2026-03-31 03:03:17",
                "tone": "risk",
                "detail": "Crawl and page content sample. Age: 19d ago."
            },
            {
                "label": "WHOIS snapshot",
                "value": "2026-03-19 09:10:42",
                "tone": "risk",
                "detail": "Registry profile and stability signals. Age: 1mo ago."
            },
            {
                "label": "Keyword view",
                "value": "2026-04-19 10:34:26",
                "tone": "good",
                "detail": "Estimated visibility until tracked keyword snapshots exist. Age: 0s ago."
            },
            {
                "label": "Rank history",
                "value": "2026-04-19 10:34:26",
                "tone": "good",
                "detail": "Estimated trend derived from current profile and crawl signals. Age: 0s ago."
            },
            {
                "label": "Audience geography",
                "value": "Not captured yet",
                "tone": "unknown",
                "detail": "Audience mix is estimated from available signals rather than first-party audience logs."
            }
        ],
        "section_notes": {
            "audience": "Audience geography is estimated from category, country, traffic mix, and brand signals until first-party audience data is collected.",
            "keywords": "Top keywords are estimated from crawl language, brand, category, and visibility signals until tracked keyword snapshots are stored.",
            "history": "Rank history is estimated from the current profile because no stored history exists for this domain yet."
        },
        "base_weighted_score": 77,
        "fraud_clamp_penalty": 13,
        "final_score": 64
    },
    "insight_snapshot": {
        "version": 1,
        "generated_at": "2026-04-19T10:34:26+00:00",
        "domain": "chrisotto.dev",
        "display_name": "Chris Otto",
        "is_tracked": false,
        "is_estimated": true,
        "overall_score": 64,
        "authority_score": 50,
        "trust_score": 80,
        "safety_score": 100,
        "fraud_score": 0,
        "confidence_score": 100,
        "traffic_confidence": 76,
        "last_crawled_at": "2026-03-31 03:03:17",
        "crawl_blocked": false,
        "summary": "chrisotto.dev currently scores 64/100. The score is being shaped by a mixed signal profile rather than one dominant factor. Evidence confidence is strong enough for a relatively stable read. This is an estimated profile rather than a manually tracked one. Crawler access looks clean.",
        "badges": [
            {
                "label": "Profile",
                "value": "Estimated profile",
                "tone": "unknown",
                "detail": null
            },
            {
                "label": "Evidence confidence",
                "value": "High confidence",
                "tone": "good",
                "detail": "100/100"
            },
            {
                "label": "Traffic confidence",
                "value": "Solid confidence",
                "tone": "good",
                "detail": "76/100"
            },
            {
                "label": "Crawler access",
                "value": "Clean visibility",
                "tone": "good",
                "detail": null
            }
        ],
        "top_positive_signals": [
            "Established domain age: 7.1 years.",
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness.",
            "DNSSEC is enabled.",
            "Registry history looks stable, which supports legitimacy and trust."
        ],
        "top_risk_signals": [
            "External evidence was mixed or sparse, so the tag model keeps an uncertainty buffer instead of overcommitting."
        ],
        "freshness": [
            {
                "label": "Crawl evidence",
                "value": "2026-03-31 03:03:17",
                "tone": "risk",
                "detail": "Crawl and page content sample. Age: 19d ago."
            },
            {
                "label": "WHOIS snapshot",
                "value": "2026-03-19 09:10:42",
                "tone": "risk",
                "detail": "Registry profile and stability signals. Age: 1mo ago."
            },
            {
                "label": "Keyword view",
                "value": "2026-04-19 10:34:26",
                "tone": "good",
                "detail": "Estimated visibility until tracked keyword snapshots exist. Age: 0s ago."
            },
            {
                "label": "Rank history",
                "value": "2026-04-19 10:34:26",
                "tone": "good",
                "detail": "Estimated trend derived from current profile and crawl signals. Age: 0s ago."
            },
            {
                "label": "Audience geography",
                "value": "Not captured yet",
                "tone": "unknown",
                "detail": "Audience mix is estimated from available signals rather than first-party audience logs."
            }
        ],
        "top_tags": [
            {
                "code": "T",
                "label": "Trusted",
                "tone": "good"
            },
            {
                "code": "Uncertain",
                "label": "Uncertain",
                "tone": "unknown"
            }
        ]
    },
    "is_tracked": false,
    "is_estimated": true,
    "live_state": {
        "status": "processing",
        "status_label": "Cache build running",
        "message": "The refreshed page cache is still being built for this domain.",
        "updated_at": "2026-04-19T14:37:55+00:00"
    },
    "refresh_state": {
        "canRequest": false,
        "queued": true,
        "processing": true,
        "stageKey": "cache-queued",
        "stageLabel": "Cache build running",
        "cooldownUntil": null,
        "message": "The refreshed page cache is still being built for this domain.",
        "action": "/domain/chrisotto.dev/refresh",
        "isGuestCooldown": false,
        "cooldownSeconds": 0
    },
    "urlscan_report": {
        "domain": "chrisotto.dev",
        "status": "complete",
        "submitted_at": "2026-03-19T09:10:44+00:00",
        "last_checked_at": "2026-03-24T05:02:54+00:00",
        "last_error": "",
        "submitted_url": "https://chrisotto.dev/",
        "summary": "urlscan.io report is ready.",
        "uuid": "019d055c-8bc5-7637-adb4-ea2aca2a897c",
        "result_url": "https://urlscan.io/result/019d055c-8bc5-7637-adb4-ea2aca2a897c/",
        "api_result_url": "https://urlscan.io/api/v1/result/019d055c-8bc5-7637-adb4-ea2aca2a897c/",
        "visibility": "public",
        "raw_submit_response": {
            "message": "Submission successful",
            "uuid": "019d055c-8bc5-7637-adb4-ea2aca2a897c",
            "result": "https://urlscan.io/result/019d055c-8bc5-7637-adb4-ea2aca2a897c/",
            "api": "https://urlscan.io/api/v1/result/019d055c-8bc5-7637-adb4-ea2aca2a897c/",
            "visibility": "public",
            "options": [],
            "url": "https://chrisotto.dev/"
        },
        "report": {
            "data": {
                "requests": [
                    {
                        "request": {
                            "requestId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/",
                                "method": "GET",
                                "headers": {
                                    "Upgrade-Insecure-Requests": "1",
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "VeryHigh",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302528.687409,
                            "wallTime": 1773911444.519054,
                            "initiator": {
                                "type": "other"
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Document",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false,
                            "primaryRequest": true
                        },
                        "response": {
                            "encodedDataLength": 9969,
                            "dataLength": 35472,
                            "requestId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "type": "Document",
                            "response": {
                                "url": "https://chrisotto.dev/",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "access-control-allow-origin": "*",
                                    "age": "581518",
                                    "cache-control": "public, max-age=0, must-revalidate",
                                    "content-disposition": "inline",
                                    "content-encoding": "br",
                                    "content-security-policy": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app",
                                    "content-type": "text/html; charset=utf-8",
                                    "date": "Thu, 19 Mar 2026 09:10:44 GMT",
                                    "etag": "W/\"d6be5794e3188afedb9eb251f77bc55a\"",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "server": "Vercel",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "vary": "RSC, Next-Router-State-Tree, Next-Router-Prefetch",
                                    "x-content-type-options": "nosniff",
                                    "x-dns-prefetch-control": "on",
                                    "x-frame-options": "DENY",
                                    "x-matched-path": "/",
                                    "x-vercel-cache": "HIT",
                                    "x-vercel-id": "fra1::dcpnh-1773911444959-6882d727243b"
                                },
                                "mimeType": "text/html",
                                "charset": "utf-8",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 651,
                                "timing": {
                                    "requestTime": 4302528.687791,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": 0,
                                    "dnsEnd": 20.244,
                                    "connectStart": 20.286,
                                    "connectEnd": 429.707,
                                    "sslStart": 40.373,
                                    "sslEnd": 429.7,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 429.892,
                                    "sendEnd": 430.098,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 451.1,
                                    "receiveHeadersEnd": 466.863
                                },
                                "responseTime": 1773911444986.07,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "2f9f1f8151213bbb57514d10a2010fdc1f644b2b49ba11a9adb7e3f269a864c7",
                            "size": 35467,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.2",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/static/css/d91f70f0afeead5c.css",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "VeryHigh",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isLinkPreload": true,
                                "isSameSite": true
                            },
                            "timestamp": 4302529.17028,
                            "wallTime": 1773911445.001947,
                            "initiator": {
                                "type": "parser",
                                "url": "https://chrisotto.dev/",
                                "lineNumber": 0,
                                "columnNumber": 1884
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Stylesheet",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false,
                            "renderBlockingBehavior": "NonBlocking"
                        },
                        "response": {
                            "encodedDataLength": 12908,
                            "dataLength": 66602,
                            "requestId": "294488.2",
                            "type": "Stylesheet",
                            "response": {
                                "url": "https://chrisotto.dev/_next/static/css/d91f70f0afeead5c.css",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "content-encoding": "br",
                                    "etag": "\"b6cdced711c8db521ef09e7992e3059a\"",
                                    "age": "8578",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/_next/static/css/d91f70f0afeead5c.css",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"d91f70f0afeead5c.css\"",
                                    "content-type": "text/css; charset=utf-8",
                                    "last-modified": "Thu, 19 Mar 2026 06:47:46 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app",
                                    "cache-control": "public,max-age=31536000,immutable",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "accept-ranges": "bytes",
                                    "access-control-allow-origin": "*",
                                    "content-length": "12381",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::fgj7b-1773911445013-00e36dc81362"
                                },
                                "mimeType": "text/css",
                                "charset": "utf-8",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 12908,
                                "timing": {
                                    "requestTime": 4302529.170693,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.298,
                                    "sendEnd": 0.434,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 173.086,
                                    "receiveHeadersEnd": 173.443
                                },
                                "responseTime": 1773911445175.436,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "901a811aecbc59324605f8d5372117032343d0bcaab4a23790d0ad794e086f5f",
                            "size": 66602,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/",
                            "host": "chrisotto.dev",
                            "type": "parser"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.4",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/static/chunks/webpack-a76f0c849161e8ab.js",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "Low",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.170461,
                            "wallTime": 1773911445.002103,
                            "initiator": {
                                "type": "parser",
                                "url": "https://chrisotto.dev/",
                                "lineNumber": 0,
                                "columnNumber": 2168
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Script",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false,
                            "renderBlockingBehavior": "NonBlocking"
                        },
                        "response": {
                            "encodedDataLength": 2111,
                            "dataLength": 3618,
                            "requestId": "294488.4",
                            "type": "Script",
                            "response": {
                                "url": "https://chrisotto.dev/_next/static/chunks/webpack-a76f0c849161e8ab.js",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "content-encoding": "br",
                                    "etag": "\"6e5c3b307e10a4ceb36bd22b266fcc08\"",
                                    "age": "8577",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/_next/static/chunks/webpack-a76f0c849161e8ab.js",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"webpack-a76f0c849161e8ab.js\"",
                                    "content-type": "application/javascript; charset=utf-8",
                                    "last-modified": "Thu, 19 Mar 2026 06:47:47 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app",
                                    "cache-control": "public,max-age=31536000,immutable",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "accept-ranges": "bytes",
                                    "access-control-allow-origin": "*",
                                    "content-length": "1822",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::prgw5-1773911445013-4d87c7886264"
                                },
                                "mimeType": "application/javascript",
                                "charset": "utf-8",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 2111,
                                "timing": {
                                    "requestTime": 4302529.170904,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.147,
                                    "sendEnd": 0.224,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 30.083,
                                    "receiveHeadersEnd": 30.826
                                },
                                "responseTime": 1773911445032.665,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "1ba1ec45be579c7596bc08185367cac06b5a556e28b1a0b97689e308490b627a",
                            "size": 3618,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/",
                            "host": "chrisotto.dev",
                            "type": "parser"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.5",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/static/chunks/framework-b5e59d933bb20783.js",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "Low",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.170503,
                            "wallTime": 1773911445.002152,
                            "initiator": {
                                "type": "parser",
                                "url": "https://chrisotto.dev/",
                                "lineNumber": 0,
                                "columnNumber": 2251
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Script",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false,
                            "renderBlockingBehavior": "NonBlocking"
                        },
                        "response": {
                            "encodedDataLength": 44623,
                            "dataLength": 133607,
                            "requestId": "294488.5",
                            "type": "Script",
                            "response": {
                                "url": "https://chrisotto.dev/_next/static/chunks/framework-b5e59d933bb20783.js",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "content-encoding": "br",
                                    "etag": "\"6553a427e69b851b916e4d483af5e8b5\"",
                                    "age": "0",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/_next/static/chunks/framework-b5e59d933bb20783.js",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"framework-b5e59d933bb20783.js\"",
                                    "content-type": "application/javascript; charset=utf-8",
                                    "last-modified": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app",
                                    "cache-control": "public,max-age=31536000,immutable",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "accept-ranges": "bytes",
                                    "access-control-allow-origin": "*",
                                    "content-length": "44384",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::8f4t5-1773911445066-4be32b8c16c9"
                                },
                                "mimeType": "application/javascript",
                                "charset": "utf-8",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 19293,
                                "timing": {
                                    "requestTime": 4302529.223813,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.265,
                                    "sendEnd": 0.755,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 261.411,
                                    "receiveHeadersEnd": 261.697
                                },
                                "responseTime": 1773911445316.905,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "aaf2c2cd58ac13c898aee5563b026d577f642884f31c1dc0bd5dfe0b79f92fe9",
                            "size": 133607,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/",
                            "host": "chrisotto.dev",
                            "type": "parser"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.6",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/static/chunks/main-16cbef4a4622f0d4.js",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "Low",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.170531,
                            "wallTime": 1773911445.002176,
                            "initiator": {
                                "type": "parser",
                                "url": "https://chrisotto.dev/",
                                "lineNumber": 0,
                                "columnNumber": 2329
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Script",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false,
                            "renderBlockingBehavior": "NonBlocking"
                        },
                        "response": {
                            "encodedDataLength": 70002,
                            "dataLength": 219610,
                            "requestId": "294488.6",
                            "type": "Script",
                            "response": {
                                "url": "https://chrisotto.dev/_next/static/chunks/main-16cbef4a4622f0d4.js",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "content-encoding": "br",
                                    "etag": "\"27a6fcbb1aacc59c146c473dfc93f663\"",
                                    "age": "8577",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/_next/static/chunks/main-16cbef4a4622f0d4.js",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"main-16cbef4a4622f0d4.js\"",
                                    "content-type": "application/javascript; charset=utf-8",
                                    "last-modified": "Thu, 19 Mar 2026 06:47:47 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app",
                                    "cache-control": "public,max-age=31536000,immutable",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "accept-ranges": "bytes",
                                    "access-control-allow-origin": "*",
                                    "content-length": "69779",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::q6zl4-1773911445067-4dfc45ea7a22"
                                },
                                "mimeType": "application/javascript",
                                "charset": "utf-8",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 19268,
                                "timing": {
                                    "requestTime": 4302529.224463,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 1.064,
                                    "sendEnd": 1.515,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 35.089,
                                    "receiveHeadersEnd": 36.089
                                },
                                "responseTime": 1773911445091.199,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "8ccd62aa1589cbebdca27994d37738c92de1f0d82a9096f528f13d7cc686176f",
                            "size": 219610,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/",
                            "host": "chrisotto.dev",
                            "type": "parser"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.7",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/static/chunks/pages/_app-ec7d205fcc14b9eb.js",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "Low",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.170557,
                            "wallTime": 1773911445.002197,
                            "initiator": {
                                "type": "parser",
                                "url": "https://chrisotto.dev/",
                                "lineNumber": 0,
                                "columnNumber": 2413
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Script",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false,
                            "renderBlockingBehavior": "NonBlocking"
                        },
                        "response": {
                            "encodedDataLength": 10668,
                            "dataLength": 24784,
                            "requestId": "294488.7",
                            "type": "Script",
                            "response": {
                                "url": "https://chrisotto.dev/_next/static/chunks/pages/_app-ec7d205fcc14b9eb.js",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "content-encoding": "br",
                                    "etag": "\"f16f20387dade082af2c26b96a16b36d\"",
                                    "age": "8577",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/_next/static/chunks/pages/_app-ec7d205fcc14b9eb.js",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"_app-ec7d205fcc14b9eb.js\"",
                                    "content-type": "application/javascript; charset=utf-8",
                                    "last-modified": "Thu, 19 Mar 2026 06:47:47 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app",
                                    "cache-control": "public,max-age=31536000,immutable",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "accept-ranges": "bytes",
                                    "access-control-allow-origin": "*",
                                    "content-length": "10477",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::xj4xd-1773911445067-7451d77eb341"
                                },
                                "mimeType": "application/javascript",
                                "charset": "utf-8",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 10668,
                                "timing": {
                                    "requestTime": 4302529.224649,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.938,
                                    "sendEnd": 1.33,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 118.306,
                                    "receiveHeadersEnd": 118.604
                                },
                                "responseTime": 1773911445174.622,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "f0177d94eef209057f04afd50380e5e440b0de66b26080848d9bd4df34c32978",
                            "size": 24782,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/",
                            "host": "chrisotto.dev",
                            "type": "parser"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.8",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/static/chunks/890-7e81353e2795e6ca.js",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "Low",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.170577,
                            "wallTime": 1773911445.002221,
                            "initiator": {
                                "type": "parser",
                                "url": "https://chrisotto.dev/",
                                "lineNumber": 0,
                                "columnNumber": 2490
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Script",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false,
                            "renderBlockingBehavior": "NonBlocking"
                        },
                        "response": {
                            "encodedDataLength": 3973,
                            "dataLength": 7989,
                            "requestId": "294488.8",
                            "type": "Script",
                            "response": {
                                "url": "https://chrisotto.dev/_next/static/chunks/890-7e81353e2795e6ca.js",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "content-encoding": "br",
                                    "etag": "\"7d9f0974065c09d7d0288a0442dc5e43\"",
                                    "age": "8577",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/_next/static/chunks/890-7e81353e2795e6ca.js",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"890-7e81353e2795e6ca.js\"",
                                    "content-type": "application/javascript; charset=utf-8",
                                    "last-modified": "Thu, 19 Mar 2026 06:47:47 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app",
                                    "cache-control": "public,max-age=31536000,immutable",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "accept-ranges": "bytes",
                                    "access-control-allow-origin": "*",
                                    "content-length": "3680",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::w77cd-1773911445067-c511ad9d96e9"
                                },
                                "mimeType": "application/javascript",
                                "charset": "utf-8",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 3973,
                                "timing": {
                                    "requestTime": 4302529.224816,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.817,
                                    "sendEnd": 1.163,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 121.827,
                                    "receiveHeadersEnd": 122.355
                                },
                                "responseTime": 1773911445178.301,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "14b0404a112409b03dfa6042dcb171130a24f4ddbfa075f209896a2702d0a558",
                            "size": 7989,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/",
                            "host": "chrisotto.dev",
                            "type": "parser"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.9",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/static/chunks/590-c7c98df989dc54dc.js",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "Low",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.170596,
                            "wallTime": 1773911445.002244,
                            "initiator": {
                                "type": "parser",
                                "url": "https://chrisotto.dev/",
                                "lineNumber": 0,
                                "columnNumber": 2567
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Script",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false,
                            "renderBlockingBehavior": "NonBlocking"
                        },
                        "response": {
                            "encodedDataLength": 5621,
                            "dataLength": 13952,
                            "requestId": "294488.9",
                            "type": "Script",
                            "response": {
                                "url": "https://chrisotto.dev/_next/static/chunks/590-c7c98df989dc54dc.js",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "content-encoding": "br",
                                    "etag": "\"23c8c067906ff682e4d2e48f9e188c37\"",
                                    "age": "8577",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/_next/static/chunks/590-c7c98df989dc54dc.js",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"590-c7c98df989dc54dc.js\"",
                                    "content-type": "application/javascript; charset=utf-8",
                                    "last-modified": "Thu, 19 Mar 2026 06:47:47 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app",
                                    "cache-control": "public,max-age=31536000,immutable",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "accept-ranges": "bytes",
                                    "access-control-allow-origin": "*",
                                    "content-length": "5360",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::8vjcn-1773911445067-3d34e971b08a"
                                },
                                "mimeType": "application/javascript",
                                "charset": "utf-8",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 5621,
                                "timing": {
                                    "requestTime": 4302529.224941,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.735,
                                    "sendEnd": 1.039,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 118.896,
                                    "receiveHeadersEnd": 119.489
                                },
                                "responseTime": 1773911445175.482,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "bd3b890de3acd830fb814ab2c6bf824cd7988ee083ac04a0186ef2a181beca0e",
                            "size": 13952,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/",
                            "host": "chrisotto.dev",
                            "type": "parser"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.10",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/static/chunks/pages/index-a0ca53e0e76c504a.js",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "Low",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.170624,
                            "wallTime": 1773911445.002265,
                            "initiator": {
                                "type": "parser",
                                "url": "https://chrisotto.dev/",
                                "lineNumber": 0,
                                "columnNumber": 2652
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Script",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false,
                            "renderBlockingBehavior": "NonBlocking"
                        },
                        "response": {
                            "encodedDataLength": 1956,
                            "dataLength": 3838,
                            "requestId": "294488.10",
                            "type": "Script",
                            "response": {
                                "url": "https://chrisotto.dev/_next/static/chunks/pages/index-a0ca53e0e76c504a.js",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "content-encoding": "br",
                                    "etag": "\"bbf4f76f93ba58b7a41ec4de4c0ca68d\"",
                                    "age": "8577",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/_next/static/chunks/pages/index-a0ca53e0e76c504a.js",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"index-a0ca53e0e76c504a.js\"",
                                    "content-type": "application/javascript; charset=utf-8",
                                    "last-modified": "Thu, 19 Mar 2026 06:47:47 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app",
                                    "cache-control": "public,max-age=31536000,immutable",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "accept-ranges": "bytes",
                                    "access-control-allow-origin": "*",
                                    "content-length": "1773",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::krxmw-1773911445067-19caa394045b"
                                },
                                "mimeType": "application/javascript",
                                "charset": "utf-8",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 165,
                                "timing": {
                                    "requestTime": 4302529.22507,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.668,
                                    "sendEnd": 0.911,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 28.374,
                                    "receiveHeadersEnd": 28.531
                                },
                                "responseTime": 1773911445085.121,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "454d1c1e552a3a9607d7f86716f9a7bc001ac1de39c1e7cdf04a8c21eba5e975",
                            "size": 3836,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/",
                            "host": "chrisotto.dev",
                            "type": "parser"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.11",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/static/IFbKJgG-nudaH-sLMj5Zu/_buildManifest.js",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "Low",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.170654,
                            "wallTime": 1773911445.002297,
                            "initiator": {
                                "type": "parser",
                                "url": "https://chrisotto.dev/",
                                "lineNumber": 0,
                                "columnNumber": 2738
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Script",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false,
                            "renderBlockingBehavior": "NonBlocking"
                        },
                        "response": {
                            "encodedDataLength": 719,
                            "dataLength": 1143,
                            "requestId": "294488.11",
                            "type": "Script",
                            "response": {
                                "url": "https://chrisotto.dev/_next/static/IFbKJgG-nudaH-sLMj5Zu/_buildManifest.js",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "content-encoding": "br",
                                    "etag": "\"cafd3994f7b0faf3182b9448312788b2\"",
                                    "age": "8577",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/_next/static/IFbKJgG-nudaH-sLMj5Zu/_buildManifest.js",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"_buildManifest.js\"",
                                    "content-type": "application/javascript; charset=utf-8",
                                    "last-modified": "Thu, 19 Mar 2026 06:47:47 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app",
                                    "cache-control": "public,max-age=31536000,immutable",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "accept-ranges": "bytes",
                                    "access-control-allow-origin": "*",
                                    "content-length": "538",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::ml5h9-1773911445067-a6727984e817"
                                },
                                "mimeType": "application/javascript",
                                "charset": "utf-8",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 719,
                                "timing": {
                                    "requestTime": 4302529.225171,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.62,
                                    "sendEnd": 0.81,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 58.34,
                                    "receiveHeadersEnd": 58.577
                                },
                                "responseTime": 1773911445115.173,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "8b76db3d62ddd03ee7149c89e5b97663b4052147c6f6c1bfa1c9ea1851ec2bdc",
                            "size": 1143,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/",
                            "host": "chrisotto.dev",
                            "type": "parser"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.12",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/static/IFbKJgG-nudaH-sLMj5Zu/_ssgManifest.js",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "Low",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.170672,
                            "wallTime": 1773911445.002312,
                            "initiator": {
                                "type": "parser",
                                "url": "https://chrisotto.dev/",
                                "lineNumber": 0,
                                "columnNumber": 2822
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Script",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false,
                            "renderBlockingBehavior": "NonBlocking"
                        },
                        "response": {
                            "encodedDataLength": 403,
                            "dataLength": 228,
                            "requestId": "294488.12",
                            "type": "Script",
                            "response": {
                                "url": "https://chrisotto.dev/_next/static/IFbKJgG-nudaH-sLMj5Zu/_ssgManifest.js",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "etag": "\"5a98d45358cd0910a0fe53a4c9a5ab35\"",
                                    "age": "8577",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/_next/static/IFbKJgG-nudaH-sLMj5Zu/_ssgManifest.js",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"_ssgManifest.js\"",
                                    "content-type": "application/javascript; charset=utf-8",
                                    "last-modified": "Thu, 19 Mar 2026 06:47:47 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app",
                                    "cache-control": "public,max-age=31536000,immutable",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "accept-ranges": "bytes",
                                    "access-control-allow-origin": "*",
                                    "content-length": "228",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::2v9d6-1773911445067-fd889c31221d"
                                },
                                "mimeType": "application/javascript",
                                "charset": "utf-8",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 403,
                                "timing": {
                                    "requestTime": 4302529.22537,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.459,
                                    "sendEnd": 0.612,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 31.98,
                                    "receiveHeadersEnd": 33.184
                                },
                                "responseTime": 1773911445089.006,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "c8cbe32e45d3b711de4eafc0f61d531c1da152f5c84fc78419929f6637bd7378",
                            "size": 228,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/",
                            "host": "chrisotto.dev",
                            "type": "parser"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.88",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/static/media/inter-latin-variable-full-normal.79d31200.woff2",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Origin": "https://chrisotto.dev",
                                    "Referer": "https://chrisotto.dev/_next/static/css/d91f70f0afeead5c.css"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "VeryHigh",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.360521,
                            "wallTime": 1773911445.192174,
                            "initiator": {
                                "type": "parser",
                                "url": "https://chrisotto.dev/_next/static/css/d91f70f0afeead5c.css"
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Font",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false,
                            "renderBlockingBehavior": "NonBlocking"
                        },
                        "response": {
                            "encodedDataLength": 55613,
                            "dataLength": 55360,
                            "requestId": "294488.88",
                            "type": "Font",
                            "response": {
                                "url": "https://chrisotto.dev/_next/static/media/inter-latin-variable-full-normal.79d31200.woff2",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "etag": "\"5af41ff8d97a18f2fac9a96ea9324ab1\"",
                                    "age": "0",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/_next/static/media/inter-latin-variable-full-normal.79d31200.woff2",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"inter-latin-variable-full-normal.79d31200.woff2\"",
                                    "content-type": "font/woff2",
                                    "last-modified": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app",
                                    "cache-control": "public,max-age=31536000,immutable",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "accept-ranges": "bytes",
                                    "access-control-allow-origin": "*",
                                    "content-length": "55360",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::xj4xd-1773911445214-eb8dcd386044"
                                },
                                "mimeType": "font/woff2",
                                "charset": "",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 2921,
                                "timing": {
                                    "requestTime": 4302529.37251,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.075,
                                    "sendEnd": 0.297,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 178.474,
                                    "receiveHeadersEnd": 178.711
                                },
                                "responseTime": 1773911445382.637,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "750a469d97a45e7b315b7a44a4ee41e615aca938544cf7199b681785a993a8ec",
                            "size": 73816,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/_next/static/css/d91f70f0afeead5c.css",
                            "host": "chrisotto.dev",
                            "type": "parser"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.91",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Fwatchtower.jpg&w=1920&q=75",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "Low",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.371725,
                            "wallTime": 1773911445.203379,
                            "initiator": {
                                "type": "parser",
                                "url": "https://chrisotto.dev/",
                                "lineNumber": 13,
                                "columnNumber": 14335
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Image",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false
                        },
                        "response": {
                            "encodedDataLength": 49688,
                            "dataLength": 49418,
                            "requestId": "294488.91",
                            "type": "Image",
                            "response": {
                                "url": "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Fwatchtower.jpg&w=1920&q=75",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "age": "1267587",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/static/images/posts/watchtower.jpg",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"watchtower.webp\"",
                                    "content-type": "image/webp",
                                    "vary": "Accept",
                                    "last-modified": "Wed, 04 Mar 2026 17:04:18 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "script-src 'none'; frame-src 'none'; sandbox;",
                                    "cache-control": "public, max-age=0, must-revalidate",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "access-control-allow-origin": "*",
                                    "content-length": "49418",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::5twgp-1773911445214-1c705369a800"
                                },
                                "mimeType": "image/webp",
                                "charset": "",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 3180,
                                "timing": {
                                    "requestTime": 4302529.371905,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.722,
                                    "sendEnd": 0.903,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 175.44,
                                    "receiveHeadersEnd": 175.762
                                },
                                "responseTime": 1773911445379.006,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "script-src 'none'; frame-src 'none'; sandbox;"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "d53b3619322c21fb747bf894e65e14f1db2a366361ee282a0a2cf6ecee76c35e",
                            "size": 65892,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/",
                            "host": "chrisotto.dev",
                            "type": "parser"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.92",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Flibrary.jpg&w=1920&q=75",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "Low",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.371788,
                            "wallTime": 1773911445.203428,
                            "initiator": {
                                "type": "parser",
                                "url": "https://chrisotto.dev/",
                                "lineNumber": 13,
                                "columnNumber": 14335
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Image",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false
                        },
                        "response": {
                            "encodedDataLength": 62005,
                            "dataLength": 61836,
                            "requestId": "294488.92",
                            "type": "Image",
                            "response": {
                                "url": "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Flibrary.jpg&w=1920&q=75",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "age": "1267587",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/static/images/posts/library.jpg",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"library.webp\"",
                                    "content-type": "image/webp",
                                    "vary": "Accept",
                                    "last-modified": "Wed, 04 Mar 2026 17:04:18 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "script-src 'none'; frame-src 'none'; sandbox;",
                                    "cache-control": "public, max-age=0, must-revalidate",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "access-control-allow-origin": "*",
                                    "content-length": "61836",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::pnzq7-1773911445214-3f22819719c6"
                                },
                                "mimeType": "image/webp",
                                "charset": "",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 3076,
                                "timing": {
                                    "requestTime": 4302529.372111,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.54,
                                    "sendEnd": 0.698,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 441.878,
                                    "receiveHeadersEnd": 442.083
                                },
                                "responseTime": 1773911445645.664,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "script-src 'none'; frame-src 'none'; sandbox;"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "7551bd4ee73493b28048b3b6ec520b707ddaf37a0b321c98414e1196b0e18e67",
                            "size": 82448,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/",
                            "host": "chrisotto.dev",
                            "type": "parser"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.93",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Fpi-hole.png&w=1920&q=75",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "Low",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.371814,
                            "wallTime": 1773911445.203455,
                            "initiator": {
                                "type": "parser",
                                "url": "https://chrisotto.dev/",
                                "lineNumber": 13,
                                "columnNumber": 14335
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Image",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false
                        },
                        "response": {
                            "encodedDataLength": 5557,
                            "dataLength": 5372,
                            "requestId": "294488.93",
                            "type": "Image",
                            "response": {
                                "url": "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Fpi-hole.png&w=1920&q=75",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "age": "1267587",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/static/images/posts/pi-hole.png",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"pi-hole.webp\"",
                                    "content-type": "image/webp",
                                    "vary": "Accept",
                                    "last-modified": "Wed, 04 Mar 2026 17:04:17 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "script-src 'none'; frame-src 'none'; sandbox;",
                                    "cache-control": "public, max-age=0, must-revalidate",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "access-control-allow-origin": "*",
                                    "content-length": "5372",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::ng2lw-1773911445214-7c5010efa0ea"
                                },
                                "mimeType": "image/webp",
                                "charset": "",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 5557,
                                "timing": {
                                    "requestTime": 4302529.372245,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.425,
                                    "sendEnd": 0.564,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 348.359,
                                    "receiveHeadersEnd": 349.575
                                },
                                "responseTime": 1773911445552.264,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "script-src 'none'; frame-src 'none'; sandbox;"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "cf9cac9c692a29aa9b63a018eb73830caf8cc8924156a663c5c989cb96bde344",
                            "size": 7164,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/",
                            "host": "chrisotto.dev",
                            "type": "parser"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.94",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Fshipyard.jpg&w=1920&q=75",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "Low",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.371835,
                            "wallTime": 1773911445.203481,
                            "initiator": {
                                "type": "parser",
                                "url": "https://chrisotto.dev/",
                                "lineNumber": 13,
                                "columnNumber": 14335
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Image",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false
                        },
                        "response": {
                            "encodedDataLength": 50530,
                            "dataLength": 50344,
                            "requestId": "294488.94",
                            "type": "Image",
                            "response": {
                                "url": "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Fshipyard.jpg&w=1920&q=75",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "age": "1267587",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/static/images/posts/shipyard.jpg",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"shipyard.webp\"",
                                    "content-type": "image/webp",
                                    "vary": "Accept",
                                    "last-modified": "Sun, 01 Mar 2026 23:22:17 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "script-src 'none'; frame-src 'none'; sandbox;",
                                    "cache-control": "public, max-age=0, must-revalidate",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "access-control-allow-origin": "*",
                                    "content-length": "50344",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::tn9zc-1773911445214-a4ec25ffb89d"
                                },
                                "mimeType": "image/webp",
                                "charset": "",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 141,
                                "timing": {
                                    "requestTime": 4302529.372345,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.347,
                                    "sendEnd": 0.465,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 183.779,
                                    "receiveHeadersEnd": 184.407
                                },
                                "responseTime": 1773911445387.774,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "script-src 'none'; frame-src 'none'; sandbox;"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "a9f3cb0bf0aaa31b3010862639293d6ff524e5a33d56baf03aa792ce9b0feaba",
                            "size": 67128,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/",
                            "host": "chrisotto.dev",
                            "type": "parser"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.95",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Fsynology.png&w=1920&q=75",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "Low",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.371857,
                            "wallTime": 1773911445.203497,
                            "initiator": {
                                "type": "parser",
                                "url": "https://chrisotto.dev/",
                                "lineNumber": 13,
                                "columnNumber": 14335
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Image",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false
                        },
                        "response": {
                            "encodedDataLength": 11201,
                            "dataLength": 10954,
                            "requestId": "294488.95",
                            "type": "Image",
                            "response": {
                                "url": "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Fsynology.png&w=1920&q=75",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "age": "1213517",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/static/images/posts/synology.png",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"synology.webp\"",
                                    "content-type": "image/webp",
                                    "vary": "Accept",
                                    "last-modified": "Thu, 05 Mar 2026 08:05:28 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "script-src 'none'; frame-src 'none'; sandbox;",
                                    "cache-control": "public, max-age=0, must-revalidate",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "access-control-allow-origin": "*",
                                    "content-length": "10954",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::g5knf-1773911445215-8cee64f64b48"
                                },
                                "mimeType": "image/webp",
                                "charset": "",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 11201,
                                "timing": {
                                    "requestTime": 4302529.372431,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.281,
                                    "sendEnd": 0.38,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 336.695,
                                    "receiveHeadersEnd": 336.869
                                },
                                "responseTime": 1773911445540.793,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "script-src 'none'; frame-src 'none'; sandbox;"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "c2bd76c5a3e23969a43e876dd7b141f96d807bab9915979d388c2b2aa5637e0e",
                            "size": 14608,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/",
                            "host": "chrisotto.dev",
                            "type": "parser"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.101",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/_next/static/chunks/pages/_error-db21bb860f914658.js",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "Low",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.504677,
                            "wallTime": 1773911445.336379,
                            "initiator": {
                                "type": "script",
                                "stack": {
                                    "callFrames": [
                                        {
                                            "functionName": "",
                                            "scriptId": "244",
                                            "url": "https://chrisotto.dev/_next/static/chunks/main-16cbef4a4622f0d4.js",
                                            "lineNumber": 13,
                                            "columnNumber": 35335
                                        },
                                        {
                                            "functionName": "c",
                                            "scriptId": "244",
                                            "url": "https://chrisotto.dev/_next/static/chunks/main-16cbef4a4622f0d4.js",
                                            "lineNumber": 13,
                                            "columnNumber": 35163
                                        },
                                        {
                                            "functionName": "",
                                            "scriptId": "244",
                                            "url": "https://chrisotto.dev/_next/static/chunks/main-16cbef4a4622f0d4.js",
                                            "lineNumber": 13,
                                            "columnNumber": 35980
                                        }
                                    ]
                                }
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Script",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false,
                            "renderBlockingBehavior": "NonBlocking"
                        },
                        "response": {
                            "encodedDataLength": 1297,
                            "dataLength": 831,
                            "requestId": "294488.101",
                            "type": "Script",
                            "response": {
                                "url": "https://chrisotto.dev/_next/static/chunks/pages/_error-db21bb860f914658.js",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "etag": "\"87c80e33d8a2bb01534f54cef2e80f51\"",
                                    "age": "0",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/_next/static/chunks/pages/_error-db21bb860f914658.js",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"_error-db21bb860f914658.js\"",
                                    "content-type": "application/javascript; charset=utf-8",
                                    "last-modified": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app",
                                    "cache-control": "public,max-age=31536000,immutable",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "accept-ranges": "bytes",
                                    "access-control-allow-origin": "*",
                                    "content-length": "831",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::g45sq-1773911445347-391c7ab42e30"
                                },
                                "mimeType": "application/javascript",
                                "charset": "utf-8",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 1297,
                                "timing": {
                                    "requestTime": 4302529.504943,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.167,
                                    "sendEnd": 0.236,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 177.655,
                                    "receiveHeadersEnd": 178.808
                                },
                                "responseTime": 1773911445514.254,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "fb816136061bcf5b273dfaa2bfe50231e05228b491430b21dce334a7ca5af81e",
                            "size": 831,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        },
                        "initiatorInfo": {
                            "url": "https://chrisotto.dev/_next/static/chunks/main-16cbef4a4622f0d4.js",
                            "host": "chrisotto.dev",
                            "type": "script"
                        }
                    },
                    {
                        "request": {
                            "requestId": "294488.102",
                            "loaderId": "260B2F8D369D73A0D8ED4698D6F88A0C",
                            "documentURL": "https://chrisotto.dev/",
                            "request": {
                                "url": "https://chrisotto.dev/static/favicons/favicon-32x32.png",
                                "method": "GET",
                                "headers": {
                                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
                                    "Referer": "https://chrisotto.dev/"
                                },
                                "mixedContentType": "none",
                                "initialPriority": "High",
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "isSameSite": true
                            },
                            "timestamp": 4302529.689643,
                            "wallTime": 1773911445.521293,
                            "initiator": {
                                "type": "other"
                            },
                            "redirectHasExtraInfo": false,
                            "type": "Other",
                            "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E",
                            "hasUserGesture": false
                        },
                        "response": {
                            "encodedDataLength": 1439,
                            "dataLength": 1238,
                            "requestId": "294488.102",
                            "type": "Other",
                            "response": {
                                "url": "https://chrisotto.dev/static/favicons/favicon-32x32.png",
                                "status": 200,
                                "statusText": "",
                                "headers": {
                                    "etag": "\"6e9be08c6512b184c667a223d41f0235\"",
                                    "age": "0",
                                    "x-content-type-options": "nosniff",
                                    "x-matched-path": "/static/favicons/favicon-32x32.png",
                                    "date": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "content-disposition": "inline; filename=\"favicon-32x32.png\"",
                                    "content-type": "image/png",
                                    "last-modified": "Thu, 19 Mar 2026 09:10:45 GMT",
                                    "x-frame-options": "DENY",
                                    "strict-transport-security": "max-age=31536000; includeSubDomains",
                                    "content-security-policy": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app",
                                    "cache-control": "public, max-age=0, must-revalidate",
                                    "x-dns-prefetch-control": "on",
                                    "x-vercel-cache": "HIT",
                                    "referrer-policy": "strict-origin-when-cross-origin",
                                    "permissions-policy": "camera=(), microphone=(), geolocation=()",
                                    "accept-ranges": "bytes",
                                    "access-control-allow-origin": "*",
                                    "content-length": "1238",
                                    "server": "Vercel",
                                    "x-vercel-id": "fra1::nn7wm-1773911445531-50269ae15845"
                                },
                                "mimeType": "image/png",
                                "charset": "",
                                "remoteIPAddress": "76.76.21.21",
                                "remotePort": 443,
                                "encodedDataLength": 1439,
                                "timing": {
                                    "requestTime": 4302529.689817,
                                    "proxyStart": -1,
                                    "proxyEnd": -1,
                                    "dnsStart": -1,
                                    "dnsEnd": -1,
                                    "connectStart": -1,
                                    "connectEnd": -1,
                                    "sslStart": -1,
                                    "sslEnd": -1,
                                    "workerStart": -1,
                                    "workerReady": -1,
                                    "workerFetchStart": -1,
                                    "workerRespondWithSettled": -1,
                                    "sendStart": 0.121,
                                    "sendEnd": 0.178,
                                    "pushStart": 0,
                                    "pushEnd": 0,
                                    "receiveHeadersStart": 160.612,
                                    "receiveHeadersEnd": 161.751
                                },
                                "responseTime": 1773911445682.086,
                                "protocol": "h2",
                                "alternateProtocolUsage": "unspecifiedReason",
                                "securityState": "secure",
                                "securityDetails": {
                                    "protocol": "TLS 1.3",
                                    "keyExchange": "",
                                    "keyExchangeGroup": "X25519MLKEM768",
                                    "cipher": "AES_128_GCM",
                                    "certificateId": 0,
                                    "subjectName": "chrisotto.dev",
                                    "sanList": [
                                        "chrisotto.dev"
                                    ],
                                    "issuer": "R12",
                                    "validFrom": 1771843156,
                                    "validTo": 1779619155,
                                    "signedCertificateTimestampList": [
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Google 'Xenon2026h1' log",
                                            "logId": "969764BF555897ADF743876837084277E9F03AD5F6A4F3366E46A43F0FCAA9C6",
                                            "timestamp": 1771846667117,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3044022078362FE3CBAD8658DDFAC8657BBA3A7C820C46300EDA29CC436AE0825E6EDA6902201880793B9C036F988FF11F009BF5E7AA6E71B6E348E6837A1FF30CC2266955E6"
                                        },
                                        {
                                            "status": "Verified",
                                            "origin": "Embedded in certificate",
                                            "logDescription": "Sectigo 'Elephant2026h1'",
                                            "logId": "D16EA9A568077E6635A03F37A5DDBC03A53C411214D48818F5E931B323CB9504",
                                            "timestamp": 1771846669282,
                                            "hashAlgorithm": "SHA-256",
                                            "signatureAlgorithm": "ECDSA",
                                            "signatureData": "3045022100B4481E0A362013BC0EBFD1669A3AD2976C6528BC0F00CFEBDCFF23AFB6940102022028D18AAF665683E2C85473A4E34E7D6E482B023D922E312F7F8DA7CC9500DD83"
                                        }
                                    ],
                                    "certificateTransparencyCompliance": "compliant",
                                    "serverSignatureAlgorithm": 2052,
                                    "encryptedClientHello": false
                                },
                                "securityHeaders": [
                                    {
                                        "name": "Content-Security-Policy",
                                        "value": "default-src 'self';  script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app;  style-src 'self' 'unsafe-inline';  img-src * blob: data:;  media-src 'none';  connect-src *;  font-src 'self';  frame-src giscus.app"
                                    },
                                    {
                                        "name": "Strict-Transport-Security",
                                        "value": "max-age=31536000; includeSubDomains"
                                    },
                                    {
                                        "name": "X-Content-Type-Options",
                                        "value": "nosniff"
                                    },
                                    {
                                        "name": "X-Frame-Options",
                                        "value": "DENY"
                                    }
                                ]
                            },
                            "hasExtraInfo": true,
                            "hash": "13baffb302ca5a34f17252b7447811510bdb76f74914f148efb0e536543793bf",
                            "size": 1652,
                            "asn": {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            },
                            "geoip": {
                                "country": "US",
                                "region": "CA",
                                "timezone": "America/Los_Angeles",
                                "city": "Walnut",
                                "ll": [
                                    34.0233,
                                    -117.8512
                                ],
                                "country_name": "United States",
                                "metro": 803
                            }
                        }
                    }
                ],
                "cookies": [],
                "console": [],
                "links": [
                    {
                        "href": "https://github.com/chrisotto6",
                        "text": "",
                        "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E"
                    },
                    {
                        "href": "https://www.linkedin.com/in/ottochristopher/",
                        "text": "",
                        "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E"
                    },
                    {
                        "href": "https://twitter.com/chris_otto6",
                        "text": "",
                        "frameId": "AD853161DF4A9C63DCBF25ECEFD4D15E"
                    }
                ],
                "timing": {
                    "beginNavigation": "2026-03-19T09:10:44.516Z",
                    "frameStartedLoading": "2026-03-19T09:10:44.518Z",
                    "frameNavigated": "2026-03-19T09:10:45.031Z",
                    "domContentEventFired": "2026-03-19T09:10:45.336Z",
                    "frameStoppedLoading": "2026-03-19T09:10:45.523Z"
                },
                "globals": [
                    {
                        "prop": "webpackChunk_N_E",
                        "type": "object"
                    },
                    {
                        "prop": "__SENTRY__",
                        "type": "object"
                    },
                    {
                        "prop": "SENTRY_RELEASE",
                        "type": "object"
                    },
                    {
                        "prop": "__next_require__",
                        "type": "function"
                    },
                    {
                        "prop": "next",
                        "type": "object"
                    },
                    {
                        "prop": "__NEXT_DATA__",
                        "type": "object"
                    },
                    {
                        "prop": "__SSG_MANIFEST_CB",
                        "type": "function"
                    },
                    {
                        "prop": "__NEXT_P",
                        "type": "object"
                    },
                    {
                        "prop": "_N_E",
                        "type": "object"
                    },
                    {
                        "prop": "__MIDDLEWARE_MATCHERS",
                        "type": "object"
                    },
                    {
                        "prop": "__BUILD_MANIFEST_CB",
                        "type": "function"
                    },
                    {
                        "prop": "__BUILD_MANIFEST",
                        "type": "object"
                    },
                    {
                        "prop": "__SSG_MANIFEST",
                        "type": "object"
                    }
                ],
                "storages": []
            },
            "lists": {
                "ips": [
                    "76.76.21.21"
                ],
                "countries": [
                    "US"
                ],
                "asns": [
                    "16509"
                ],
                "domains": [
                    "chrisotto.dev"
                ],
                "servers": [
                    "Vercel"
                ],
                "urls": [
                    "https://chrisotto.dev/",
                    "https://chrisotto.dev/_next/static/css/d91f70f0afeead5c.css",
                    "https://chrisotto.dev/_next/static/chunks/webpack-a76f0c849161e8ab.js",
                    "https://chrisotto.dev/_next/static/chunks/framework-b5e59d933bb20783.js",
                    "https://chrisotto.dev/_next/static/chunks/main-16cbef4a4622f0d4.js",
                    "https://chrisotto.dev/_next/static/chunks/pages/_app-ec7d205fcc14b9eb.js",
                    "https://chrisotto.dev/_next/static/chunks/890-7e81353e2795e6ca.js",
                    "https://chrisotto.dev/_next/static/chunks/590-c7c98df989dc54dc.js",
                    "https://chrisotto.dev/_next/static/chunks/pages/index-a0ca53e0e76c504a.js",
                    "https://chrisotto.dev/_next/static/IFbKJgG-nudaH-sLMj5Zu/_buildManifest.js",
                    "https://chrisotto.dev/_next/static/IFbKJgG-nudaH-sLMj5Zu/_ssgManifest.js",
                    "https://chrisotto.dev/_next/static/media/inter-latin-variable-full-normal.79d31200.woff2",
                    "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Fwatchtower.jpg&w=1920&q=75",
                    "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Flibrary.jpg&w=1920&q=75",
                    "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Fpi-hole.png&w=1920&q=75",
                    "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Fshipyard.jpg&w=1920&q=75",
                    "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Fsynology.png&w=1920&q=75",
                    "https://chrisotto.dev/_next/static/chunks/pages/_error-db21bb860f914658.js",
                    "https://chrisotto.dev/static/favicons/favicon-32x32.png"
                ],
                "linkDomains": [
                    "github.com",
                    "www.linkedin.com",
                    "twitter.com"
                ],
                "certificates": [
                    {
                        "subjectName": "chrisotto.dev",
                        "issuer": "R12",
                        "validFrom": 1771843156,
                        "validTo": 1779619155
                    }
                ],
                "hashes": [
                    "2f9f1f8151213bbb57514d10a2010fdc1f644b2b49ba11a9adb7e3f269a864c7",
                    "901a811aecbc59324605f8d5372117032343d0bcaab4a23790d0ad794e086f5f",
                    "1ba1ec45be579c7596bc08185367cac06b5a556e28b1a0b97689e308490b627a",
                    "aaf2c2cd58ac13c898aee5563b026d577f642884f31c1dc0bd5dfe0b79f92fe9",
                    "8ccd62aa1589cbebdca27994d37738c92de1f0d82a9096f528f13d7cc686176f",
                    "f0177d94eef209057f04afd50380e5e440b0de66b26080848d9bd4df34c32978",
                    "14b0404a112409b03dfa6042dcb171130a24f4ddbfa075f209896a2702d0a558",
                    "bd3b890de3acd830fb814ab2c6bf824cd7988ee083ac04a0186ef2a181beca0e",
                    "454d1c1e552a3a9607d7f86716f9a7bc001ac1de39c1e7cdf04a8c21eba5e975",
                    "8b76db3d62ddd03ee7149c89e5b97663b4052147c6f6c1bfa1c9ea1851ec2bdc",
                    "c8cbe32e45d3b711de4eafc0f61d531c1da152f5c84fc78419929f6637bd7378",
                    "750a469d97a45e7b315b7a44a4ee41e615aca938544cf7199b681785a993a8ec",
                    "d53b3619322c21fb747bf894e65e14f1db2a366361ee282a0a2cf6ecee76c35e",
                    "7551bd4ee73493b28048b3b6ec520b707ddaf37a0b321c98414e1196b0e18e67",
                    "cf9cac9c692a29aa9b63a018eb73830caf8cc8924156a663c5c989cb96bde344",
                    "a9f3cb0bf0aaa31b3010862639293d6ff524e5a33d56baf03aa792ce9b0feaba",
                    "c2bd76c5a3e23969a43e876dd7b141f96d807bab9915979d388c2b2aa5637e0e",
                    "fb816136061bcf5b273dfaa2bfe50231e05228b491430b21dce334a7ca5af81e",
                    "13baffb302ca5a34f17252b7447811510bdb76f74914f148efb0e536543793bf"
                ]
            },
            "meta": {
                "processors": {
                    "umbrella": {
                        "data": []
                    },
                    "geoip": {
                        "data": [
                            {
                                "ip": "76.76.21.21",
                                "geoip": {
                                    "country": "US",
                                    "region": "CA",
                                    "timezone": "America/Los_Angeles",
                                    "city": "Walnut",
                                    "ll": [
                                        34.0233,
                                        -117.8512
                                    ],
                                    "country_name": "United States",
                                    "metro": 803
                                }
                            }
                        ]
                    },
                    "asn": {
                        "data": [
                            {
                                "ip": "76.76.21.21",
                                "asn": "16509",
                                "country": "US",
                                "description": "AMAZON-02 - Amazon.com, Inc., US",
                                "name": "Amazon.com",
                                "route": "76.76.21.0/24"
                            }
                        ]
                    },
                    "rdns": {
                        "data": []
                    },
                    "wappa": {
                        "data": [
                            {
                                "confidence": [
                                    {
                                        "confidence": 100,
                                        "pattern": "(?:((?:\\d+\\.)+\\d+)\\/(?:dc\\/)?)?dc(?:\\.leaflet)?\\.js"
                                    }
                                ],
                                "confidenceTotal": 100,
                                "app": "dc.js",
                                "icon": "dc.js.png",
                                "website": "https://dc-js.github.io/dc.js/",
                                "categories": [
                                    {
                                        "groups": [
                                            9
                                        ],
                                        "name": "JavaScript graphics",
                                        "priority": 6
                                    },
                                    {
                                        "groups": [
                                            9
                                        ],
                                        "name": "JavaScript libraries",
                                        "priority": 9
                                    }
                                ]
                            },
                            {
                                "confidence": [
                                    {
                                        "confidence": 100,
                                        "pattern": "^https://[\\w\\d\\.\\-]+(?:\\.dev)(?:/.+||/)$"
                                    }
                                ],
                                "confidenceTotal": 100,
                                "app": "HSTS",
                                "website": "https://www.rfc-editor.org/rfc/rfc6797#section-6.1",
                                "categories": [
                                    {
                                        "groups": [
                                            11
                                        ],
                                        "name": "Security",
                                        "priority": 9
                                    }
                                ]
                            }
                        ]
                    }
                }
            },
            "page": {
                "asn": "AS16509",
                "asnname": "AMAZON-02 - Amazon.com, Inc., US",
                "city": "Walnut",
                "country": "US",
                "domain": "chrisotto.dev",
                "ip": "76.76.21.21",
                "server": "Vercel",
                "url": "https://chrisotto.dev/",
                "apexDomainAgeDays": 2331,
                "language": "en",
                "mimeType": "text/html",
                "title": "Chris Otto | Father, Developer, SDET",
                "tlsValidDays": 89,
                "tlsAgeDays": 23,
                "domainAgeDays": 2331,
                "tlsValidFrom": "2026-02-23T10:39:16.000Z",
                "apexDomain": "chrisotto.dev",
                "tlsIssuer": "R12",
                "status": "200"
            },
            "scanner": {
                "country": "ch"
            },
            "stats": {
                "IPv6Percentage": 0,
                "adBlocked": 0,
                "domainStats": [
                    {
                        "count": 19,
                        "ips": [
                            "76.76.21.21"
                        ],
                        "domain": "chrisotto.dev",
                        "size": 746196,
                        "encodedSize": 400283,
                        "countries": [
                            "US"
                        ],
                        "index": 0,
                        "initiators": [
                            "chrisotto.dev"
                        ],
                        "redirects": 0
                    }
                ],
                "ipStats": [
                    {
                        "requests": 19,
                        "domains": [
                            "chrisotto.dev"
                        ],
                        "ip": "76.76.21.21",
                        "asn": {
                            "ip": "76.76.21.21",
                            "asn": "16509",
                            "country": "US",
                            "description": "AMAZON-02 - Amazon.com, Inc., US",
                            "name": "Amazon.com",
                            "route": "76.76.21.0/24"
                        },
                        "dns": [],
                        "geoip": {
                            "country": "US",
                            "region": "CA",
                            "timezone": "America/Los_Angeles",
                            "city": "Walnut",
                            "ll": [
                                34.0233,
                                -117.8512
                            ],
                            "country_name": "United States",
                            "metro": 803
                        },
                        "size": 746196,
                        "encodedSize": 400283,
                        "countries": [
                            "US"
                        ],
                        "index": 0,
                        "ipv6": false,
                        "redirects": 0,
                        "count": null
                    }
                ],
                "malicious": 0,
                "protocolStats": [
                    {
                        "count": 19,
                        "size": 746196,
                        "encodedSize": 400283,
                        "ips": [
                            "76.76.21.21"
                        ],
                        "countries": [
                            "US"
                        ],
                        "securityState": [],
                        "protocol": "h2"
                    }
                ],
                "regDomainStats": [
                    {
                        "count": 19,
                        "ips": [
                            "76.76.21.21"
                        ],
                        "regDomain": "chrisotto.dev",
                        "size": 746196,
                        "encodedSize": 400283,
                        "countries": [],
                        "index": 0,
                        "subDomains": [
                            {
                                "domain": "",
                                "country": "US"
                            }
                        ],
                        "redirects": 0
                    }
                ],
                "resourceStats": [
                    {
                        "count": 10,
                        "size": 409600,
                        "encodedSize": 141373,
                        "latency": 0,
                        "countries": [
                            "US"
                        ],
                        "ips": [
                            "76.76.21.21"
                        ],
                        "type": "Script",
                        "compression": "2.9",
                        "percentage": 52
                    },
                    {
                        "count": 5,
                        "size": 177924,
                        "encodedSize": 178981,
                        "latency": 0,
                        "countries": [
                            "US"
                        ],
                        "ips": [
                            "76.76.21.21"
                        ],
                        "type": "Image",
                        "compression": "1.0",
                        "percentage": 26
                    },
                    {
                        "count": 1,
                        "size": 1238,
                        "encodedSize": 1439,
                        "latency": 0,
                        "countries": [
                            "US"
                        ],
                        "ips": [
                            "76.76.21.21"
                        ],
                        "type": "Other",
                        "compression": "0.9",
                        "percentage": 5
                    },
                    {
                        "count": 1,
                        "size": 55360,
                        "encodedSize": 55613,
                        "latency": 0,
                        "countries": [
                            "US"
                        ],
                        "ips": [
                            "76.76.21.21"
                        ],
                        "type": "Font",
                        "compression": "1.0",
                        "percentage": 5
                    },
                    {
                        "count": 1,
                        "size": 66602,
                        "encodedSize": 12908,
                        "latency": 0,
                        "countries": [
                            "US"
                        ],
                        "ips": [
                            "76.76.21.21"
                        ],
                        "type": "Stylesheet",
                        "compression": "5.2",
                        "percentage": 5
                    },
                    {
                        "count": 1,
                        "size": 35472,
                        "encodedSize": 9969,
                        "latency": 0,
                        "countries": [
                            "US"
                        ],
                        "ips": [
                            "76.76.21.21"
                        ],
                        "type": "Document",
                        "compression": "3.6",
                        "percentage": 5
                    }
                ],
                "securePercentage": 100,
                "secureRequests": 19,
                "serverStats": [
                    {
                        "count": 19,
                        "size": 746196,
                        "encodedSize": 400283,
                        "ips": [
                            "76.76.21.21"
                        ],
                        "countries": [
                            "US"
                        ],
                        "server": "Vercel"
                    }
                ],
                "tlsStats": [
                    {
                        "count": 19,
                        "size": 746196,
                        "encodedSize": 400283,
                        "ips": [
                            "76.76.21.21"
                        ],
                        "countries": [
                            "US"
                        ],
                        "protocols": {
                            "TLS 1.3 /  / AES_128_GCM": 19
                        },
                        "securityState": "secure"
                    }
                ],
                "totalLinks": 3,
                "uniqCountries": 1
            },
            "submitter": {
                "country": "GB"
            },
            "task": {
                "method": "api",
                "source": "fb1d0777",
                "tags": [
                    "website-rank",
                    "chrisotto.dev"
                ],
                "time": "2026-03-19T09:10:54.276Z",
                "url": "https://chrisotto.dev/",
                "uuid": "019d055c-8bc5-7637-adb4-ea2aca2a897c",
                "visibility": "public",
                "reportURL": "https://urlscan.io/result/019d055c-8bc5-7637-adb4-ea2aca2a897c/",
                "screenshotURL": "https://urlscan.io/screenshots/019d055c-8bc5-7637-adb4-ea2aca2a897c.png",
                "domURL": "https://urlscan.io/dom/019d055c-8bc5-7637-adb4-ea2aca2a897c/",
                "domain": "chrisotto.dev",
                "apexDomain": "chrisotto.dev"
            },
            "verdicts": {
                "overall": {
                    "score": 0,
                    "categories": [],
                    "brands": [],
                    "tags": [],
                    "malicious": false,
                    "hasVerdicts": true
                },
                "urlscan": {
                    "score": 0,
                    "categories": [],
                    "brands": [],
                    "tags": [],
                    "malicious": false,
                    "hasVerdicts": false
                },
                "engines": {
                    "score": -34,
                    "malicious": false,
                    "categories": [],
                    "enginesTotal": 0,
                    "maliciousTotal": 0,
                    "benignTotal": 0,
                    "maliciousVerdicts": [],
                    "benignVerdicts": [],
                    "hasVerdicts": true,
                    "tags": [
                        "urlscan-ml",
                        "urlscan-ml-60c5e22"
                    ]
                },
                "community": {
                    "score": 0,
                    "categories": [],
                    "brands": [],
                    "votesTotal": 0,
                    "votesMalicious": 0,
                    "votesBenign": 0,
                    "malicious": false,
                    "hasVerdicts": false
                }
            }
        },
        "report_summary": {
            "page_url": "https://chrisotto.dev/",
            "page_domain": "chrisotto.dev",
            "ip": "76.76.21.21",
            "country": "US",
            "server": "Vercel",
            "asn": "AS16509",
            "status_code": 200,
            "screenshot_url": "https://urlscan.io/screenshots/019d055c-8bc5-7637-adb4-ea2aca2a897c.png",
            "report_url": "https://urlscan.io/result/019d055c-8bc5-7637-adb4-ea2aca2a897c/",
            "requests": 0,
            "unique_countries": 1,
            "domains": 0,
            "malicious": false,
            "classification": "",
            "verdict_text": "No clear malicious classification",
            "brands": [],
            "labels": [],
            "lists": {
                "ips": [
                    "76.76.21.21"
                ],
                "countries": [
                    "US"
                ],
                "asns": [
                    "16509"
                ],
                "domains": [
                    "chrisotto.dev"
                ],
                "servers": [
                    "Vercel"
                ],
                "urls": [
                    "https://chrisotto.dev/",
                    "https://chrisotto.dev/_next/static/css/d91f70f0afeead5c.css",
                    "https://chrisotto.dev/_next/static/chunks/webpack-a76f0c849161e8ab.js",
                    "https://chrisotto.dev/_next/static/chunks/framework-b5e59d933bb20783.js",
                    "https://chrisotto.dev/_next/static/chunks/main-16cbef4a4622f0d4.js",
                    "https://chrisotto.dev/_next/static/chunks/pages/_app-ec7d205fcc14b9eb.js",
                    "https://chrisotto.dev/_next/static/chunks/890-7e81353e2795e6ca.js",
                    "https://chrisotto.dev/_next/static/chunks/590-c7c98df989dc54dc.js",
                    "https://chrisotto.dev/_next/static/chunks/pages/index-a0ca53e0e76c504a.js",
                    "https://chrisotto.dev/_next/static/IFbKJgG-nudaH-sLMj5Zu/_buildManifest.js",
                    "https://chrisotto.dev/_next/static/IFbKJgG-nudaH-sLMj5Zu/_ssgManifest.js",
                    "https://chrisotto.dev/_next/static/media/inter-latin-variable-full-normal.79d31200.woff2",
                    "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Fwatchtower.jpg&w=1920&q=75",
                    "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Flibrary.jpg&w=1920&q=75",
                    "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Fpi-hole.png&w=1920&q=75",
                    "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Fshipyard.jpg&w=1920&q=75",
                    "https://chrisotto.dev/_next/image?url=%2Fstatic%2Fimages%2Fposts%2Fsynology.png&w=1920&q=75",
                    "https://chrisotto.dev/_next/static/chunks/pages/_error-db21bb860f914658.js",
                    "https://chrisotto.dev/static/favicons/favicon-32x32.png"
                ],
                "linkDomains": [
                    "github.com",
                    "www.linkedin.com",
                    "twitter.com"
                ],
                "certificates": [
                    {
                        "subjectName": "chrisotto.dev",
                        "issuer": "R12",
                        "validFrom": 1771843156,
                        "validTo": 1779619155
                    }
                ],
                "hashes": [
                    "2f9f1f8151213bbb57514d10a2010fdc1f644b2b49ba11a9adb7e3f269a864c7",
                    "901a811aecbc59324605f8d5372117032343d0bcaab4a23790d0ad794e086f5f",
                    "1ba1ec45be579c7596bc08185367cac06b5a556e28b1a0b97689e308490b627a",
                    "aaf2c2cd58ac13c898aee5563b026d577f642884f31c1dc0bd5dfe0b79f92fe9",
                    "8ccd62aa1589cbebdca27994d37738c92de1f0d82a9096f528f13d7cc686176f",
                    "f0177d94eef209057f04afd50380e5e440b0de66b26080848d9bd4df34c32978",
                    "14b0404a112409b03dfa6042dcb171130a24f4ddbfa075f209896a2702d0a558",
                    "bd3b890de3acd830fb814ab2c6bf824cd7988ee083ac04a0186ef2a181beca0e",
                    "454d1c1e552a3a9607d7f86716f9a7bc001ac1de39c1e7cdf04a8c21eba5e975",
                    "8b76db3d62ddd03ee7149c89e5b97663b4052147c6f6c1bfa1c9ea1851ec2bdc",
                    "c8cbe32e45d3b711de4eafc0f61d531c1da152f5c84fc78419929f6637bd7378",
                    "750a469d97a45e7b315b7a44a4ee41e615aca938544cf7199b681785a993a8ec",
                    "d53b3619322c21fb747bf894e65e14f1db2a366361ee282a0a2cf6ecee76c35e",
                    "7551bd4ee73493b28048b3b6ec520b707ddaf37a0b321c98414e1196b0e18e67",
                    "cf9cac9c692a29aa9b63a018eb73830caf8cc8924156a663c5c989cb96bde344",
                    "a9f3cb0bf0aaa31b3010862639293d6ff524e5a33d56baf03aa792ce9b0feaba",
                    "c2bd76c5a3e23969a43e876dd7b141f96d807bab9915979d388c2b2aa5637e0e",
                    "fb816136061bcf5b273dfaa2bfe50231e05228b491430b21dce334a7ca5af81e",
                    "13baffb302ca5a34f17252b7447811510bdb76f74914f148efb0e536543793bf"
                ]
            }
        },
        "completed_at": "2026-03-24T05:02:54+00:00",
        "is_fresh": false,
        "can_retry": true,
        "poll_after_seconds": 20
    }
}