{
    "ready": true,
    "site": {
        "id": 0,
        "domain": "tylergaw.com",
        "display_name": "Tyler Gaw is a Designer & Engineer in New York City, USA",
        "primary_country_code": "",
        "category_name": "E-commerce"
    },
    "metrics": {
        "global_rank": 4304,
        "country_rank": 2211,
        "category_rank": 120,
        "daily_pageviews_per_visitor": 4.69,
        "daily_time_on_site_seconds": 354,
        "bounce_rate": 30.46,
        "search_visits_percent": 43.07,
        "total_sites_linking_in": 2,
        "monthly_unique_visitors": 301,
        "recorded_at": "2026-03-31 03:37:14"
    },
    "audit": {
        "score": 94
    },
    "traffic_sources": {
        "direct_percent": 25.33,
        "search_percent": 36.74,
        "social_percent": 7.79,
        "referral_percent": 7.83,
        "email_percent": 9.77,
        "paid_percent": 12.54
    },
    "seo_profile": {
        "backlinks_total": 2,
        "referring_domains": 2,
        "dofollow_backlinks_percent": 100,
        "organic_keywords": 94,
        "indexed_pages": 83,
        "page_speed_score": 98,
        "mobile_friendliness_score": 90,
        "authority_score": 47,
        "spam_risk_score": 31
    },
    "crawl_report": {
        "robots_status": 200,
        "sitemap_status": 200,
        "sitemap_total_urls": 83,
        "crawl_blocked": false,
        "crawl_blocked_by": "",
        "crawl_blocked_reason": "",
        "notes": [],
        "created_at": "2026-03-31 03:37:14"
    },
    "keywords": [
        {
            "keyword": "Tyler Gaw is a Designer & Engineer in New York City, USA",
            "position": 18,
            "search_engine": "Estimated",
            "checked_at": "2026-04-16 14:26:18",
            "is_estimated": true
        },
        {
            "keyword": "Tyler Gaw is a Designer & Engineer in New York City, USA e-commerce",
            "position": 20,
            "search_engine": "Estimated",
            "checked_at": "2026-04-16 14:26:18",
            "is_estimated": true
        },
        {
            "keyword": "Tyler Gaw is a Designer & Engineer in New York City, USA reviews",
            "position": 22,
            "search_engine": "Estimated",
            "checked_at": "2026-04-16 14:26:18",
            "is_estimated": true
        },
        {
            "keyword": "tyler",
            "position": 24,
            "search_engine": "Estimated",
            "checked_at": "2026-04-16 14:26:18",
            "is_estimated": true
        },
        {
            "keyword": "gaw",
            "position": 26,
            "search_engine": "Estimated",
            "checked_at": "2026-04-16 14:26:18",
            "is_estimated": true
        },
        {
            "keyword": "designer",
            "position": 28,
            "search_engine": "Estimated",
            "checked_at": "2026-04-16 14:26:18",
            "is_estimated": true
        },
        {
            "keyword": "engineer",
            "position": 30,
            "search_engine": "Estimated",
            "checked_at": "2026-04-16 14:26:18",
            "is_estimated": true
        },
        {
            "keyword": "new",
            "position": 32,
            "search_engine": "Estimated",
            "checked_at": "2026-04-16 14:26:18",
            "is_estimated": true
        }
    ],
    "rating": {
        "overall": 64,
        "label": "Healthy",
        "breakdown": [
            {
                "label": "Technical foundation",
                "score": 17,
                "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": 4,
                "max": 6
            },
            {
                "label": "Registry stability",
                "score": 5,
                "max": 6
            },
            {
                "label": "Quality system",
                "score": 94,
                "max": 100
            },
            {
                "label": "Reputation system",
                "score": 48,
                "max": 100
            },
            {
                "label": "Safety system",
                "score": 100,
                "max": 100
            },
            {
                "label": "Evidence confidence",
                "score": 100,
                "max": 100
            },
            {
                "label": "External intelligence",
                "score": 50,
                "max": 100
            }
        ],
        "authority_score": 49,
        "quality_score": 94,
        "reputation_score": 48,
        "safety_score": 100,
        "confidence_score": 100,
        "fraud_score": 1,
        "authority_signals": {
            "backlinks": 2,
            "referring_domains": 2,
            "organic_keywords": 94,
            "indexed_pages": 83,
            "monthly_visitors": 301,
            "global_rank": 4304,
            "engagement_score": 87,
            "crawl_quality_score": 100,
            "brand_completeness_score": 69,
            "link_diversity_score": 93,
            "technical_reliability_score": 97,
            "whois_score": 81,
            "whois_age_years": 20.6,
            "whois_stability_score": 100,
            "spam_penalty": 3
        },
        "whois_signals": {
            "age_years": 20.6,
            "days_to_expiry": 152,
            "days_since_last_registry_update": 242,
            "stability_score": 100,
            "registrar_changes": 0,
            "ownership_changes": 0,
            "nameserver_changes": 0,
            "status_changes": 0,
            "history_entries": 1,
            "privacy_protected": false,
            "dnssec_enabled": false,
            "has_registrant_country": false,
            "registrant_country": "",
            "nameserver_count": 2,
            "status_count": 1
        }
    },
    "authority_score": 49,
    "trust_score": 67,
    "domain_tags": {
        "primary_tag": "T",
        "primary_tag_score": 81,
        "primary_candidate": "T",
        "primary_candidate_score": 81,
        "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.",
                "message": "The site shows a reasonably trustworthy and stable profile.",
                "priority": 81,
                "score": 81,
                "match_percent": 81,
                "threshold_band": "strong"
            },
            {
                "code": "Uncertain",
                "label": "Uncertain",
                "tone": "unknown",
                "description": "External checks stayed inconclusive, so the model avoided a harder verdict.",
                "reason": "The evidence is mixed or only partially corroborated, so the system avoided a harder automated verdict.",
                "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.",
                "message": "The site shows a reasonably trustworthy and stable profile.",
                "priority": 81,
                "score": 81,
                "match_percent": 81,
                "threshold_band": "strong"
            },
            {
                "code": "Uncertain",
                "label": "Uncertain",
                "tone": "unknown",
                "description": "External checks stayed inconclusive, so the model avoided a harder verdict.",
                "reason": "The evidence is mixed or only partially corroborated, so the system avoided a harder automated verdict.",
                "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": 5,
                "score": 5,
                "match_percent": 5,
                "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.",
                "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": 68,
        "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 (81% match) because low spam indicators plus strong trust, quality, registry, and stability signals were detected.",
        "external_intel": [],
        "external_decision": [],
        "signal_scores": [
            {
                "label": "Strongest tag heuristic",
                "value": "T · 81%",
                "tone": "good",
                "detail": "The highest raw tag match from the heuristic engine before visibility thresholds and manual overrides."
            },
            {
                "label": "Trust score",
                "value": "68/100",
                "tone": "caution",
                "detail": "Confidence derived from authority, crawl quality, stability, and risk signals."
            },
            {
                "label": "Authority score",
                "value": "49/100",
                "tone": "caution",
                "detail": "A higher authority score usually means broader reputation and backlink confidence."
            },
            {
                "label": "Spam risk",
                "value": "4/100",
                "tone": "good",
                "detail": "Lower is better. This blends spam indicators with false-positive protections for legitimate sites."
            },
            {
                "label": "Quality score",
                "value": "93/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": "1/100",
                "tone": "good",
                "detail": "Lower is better. This reflects phishing, drainer, fake-support, fake-shop, and malware signals."
            },
            {
                "label": "Infrastructure risk",
                "value": "5/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": "20.6 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": "152",
                        "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 off · privacy off",
                        "tone": "caution",
                        "detail": "DNSSEC strengthens DNS trust; privacy is neutral on its own."
                    }
                ]
            },
            {
                "title": "Reputation & search evidence",
                "items": [
                    {
                        "label": "Backlinks",
                        "value": "2",
                        "tone": "unknown",
                        "detail": "Broader backlink evidence usually improves confidence."
                    },
                    {
                        "label": "Referring domains",
                        "value": "2",
                        "tone": "unknown",
                        "detail": "Unique linking domains are more useful than raw link volume."
                    },
                    {
                        "label": "Organic keywords",
                        "value": "94",
                        "tone": "caution",
                        "detail": "Search footprint helps distinguish real sites from thin shells."
                    },
                    {
                        "label": "Indexed pages",
                        "value": "83",
                        "tone": "caution",
                        "detail": "Larger index coverage usually means more evidence to classify from."
                    },
                    {
                        "label": "Brand strength",
                        "value": "69/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 · 358 ms",
                        "tone": "good",
                        "detail": "Slow or broken technical signals weaken confidence."
                    },
                    {
                        "label": "Content words",
                        "value": "2,143",
                        "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": "13 internal · 3 external",
                        "tone": "good",
                        "detail": "Link patterns help detect thin directories and promo pages."
                    },
                    {
                        "label": "Page speed / mobile",
                        "value": "98/100 · 90/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": "Structured third-party evidence is still too thin, mixed, or unqualified to force a harder verdict."
                    },
                    {
                        "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": "Clear",
                        "tone": "good",
                        "detail": "Prevents thin or mixed external evidence from forcing a stronger tag than the evidence can justify."
                    }
                ]
            }
        ],
        "positives": [
            "Established domain age: 20.6 years.",
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness."
        ],
        "risks": []
    },
    "traffic_confidence": 76,
    "whois": {
        "current": {
            "id": 23388,
            "domain": "tylergaw.com",
            "source_type": "rdap",
            "rdap_url": "https://rdap.verisign.com/com/v1/domain/TYLERGAW.COM",
            "registrar_name": "NameCheap, Inc.",
            "registrar_handle": "1068",
            "registrant_name": "",
            "registrant_org": "",
            "registrant_country": "",
            "registrant_email": "",
            "abuse_email": "abuse@namecheap.com",
            "created_date": "2005-09-16 01:53:59",
            "updated_date": "2025-08-17 09:02:29",
            "expires_date": "2026-09-16 01:53:59",
            "nameservers_json": "[\"dns1.registrar-servers.com\",\"dns2.registrar-servers.com\"]",
            "status_json": "[\"client transfer prohibited\"]",
            "dnssec": "unsigned",
            "privacy_protected": 0,
            "content_hash": "ec95d8e82ddbe4b0a4814337eb1f2f486f06752dd71722b8c9babd1ccf859225",
            "history_count": 1,
            "last_checked_at": "2026-03-18 21:11:57",
            "last_changed_at": "2026-03-18 21:11:57",
            "created_at": "2026-03-18 21:11:58",
            "updated_at": "2026-03-18 21:11:58"
        },
        "history": [
            {
                "id": 23874,
                "domain": "tylergaw.com",
                "source_type": "rdap",
                "registrar_name": "NameCheap, Inc.",
                "registrar_handle": "1068",
                "registrant_name": "",
                "registrant_org": "",
                "registrant_country": "",
                "registrant_email": "",
                "abuse_email": "abuse@namecheap.com",
                "created_date": "2005-09-16 01:53:59",
                "updated_date": "2025-08-17 09:02:29",
                "expires_date": "2026-09-16 01:53:59",
                "nameservers_json": "[\"dns1.registrar-servers.com\",\"dns2.registrar-servers.com\"]",
                "status_json": "[\"client transfer prohibited\"]",
                "dnssec": "unsigned",
                "privacy_protected": 0,
                "content_hash": "ec95d8e82ddbe4b0a4814337eb1f2f486f06752dd71722b8c9babd1ccf859225",
                "checked_at": "2026-03-18 21:11:57",
                "change_summary": "Initial WHOIS snapshot captured.",
                "created_at": "2026-03-18 21:11:57"
            }
        ],
        "signals": {
            "age_years": 20.6,
            "days_to_expiry": 152,
            "days_since_last_registry_update": 242,
            "stability_score": 100,
            "registrar_changes": 0,
            "ownership_changes": 0,
            "nameserver_changes": 0,
            "status_changes": 0,
            "history_entries": 1,
            "privacy_protected": false,
            "dnssec_enabled": false,
            "has_registrant_country": false,
            "registrant_country": "",
            "nameserver_count": 2,
            "status_count": 1
        }
    },
    "discovered_domain": {
        "id": 75269,
        "domain": "tylergaw.com",
        "first_seen_at": "2026-03-15 19:50:55",
        "last_crawled_at": "2026-03-31 03:37:14",
        "last_title": "Tyler Gaw is a Designer & Engineer in New York City, USA",
        "last_http_status": 200,
        "discovered_from_domain": "tombrandis.uk",
        "depth": 0,
        "backlinks_count": 2,
        "rating_cache": 54,
        "spam_score": 0,
        "risk_label": "good",
        "category_name": "E-commerce",
        "primary_country_code": "",
        "internal_links_count": 13,
        "external_links_count": 3,
        "social_profiles_count": 1,
        "content_word_count": 2143,
        "title_quality_score": 93,
        "has_meta_description": 1,
        "has_h1": 1,
        "language_code": "en",
        "response_time_ms": 358,
        "robots_status": 200,
        "sitemap_status": 200,
        "sitemap_total_urls": 83,
        "quality_score": 93,
        "site_name": "",
        "canonical_domain": "",
        "favicon_present": 1,
        "schema_org_count": 0,
        "noindex_detected": 0,
        "feed_links_count": 1,
        "https_working": 1,
        "estimated_authority_score": 40,
        "trust_score": 80,
        "nsfw_score": 0,
        "overall_rank_estimate": 1492859,
        "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": 1,
        "legitimacy_score": 55,
        "infrastructure_risk_score": 5,
        "score_confidence": 100,
        "tag_confidence": 72,
        "category_confidence": 18,
        "deep_crawl_pages": 50,
        "resolved_ip": "18.208.88.157",
        "category_candidates_json": "[{\"category\":\"E-commerce\",\"score\":17},{\"category\":\"Personal\",\"score\":17},{\"category\":\"Technology\",\"score\":17},{\"category\":\"Lifestyle\",\"score\":11}]",
        "page_signals_json": "[{\"path\":\"/about\",\"status\":200,\"title\":\"About Tyler Gaw and this Site\",\"word_count\":2691,\"summary_text\":\"About Tyler Gaw and this Site document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); About Tyler Gaw and this Site a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.vis\",\"classification_terms\":[\"about\",\"address\"],\"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\":31,\"depth\":1},{\"path\":\"/blog\",\"status\":200,\"title\":\"Design and Engineering articles by Tyler Gaw\",\"word_count\":2543,\"summary_text\":\"Design and Engineering articles by Tyler Gaw document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Design and Engineering articles by Tyler Gaw a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:\",\"classification_terms\":[\"blog\",\"address\"],\"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\":33,\"depth\":1},{\"path\":\"/work/streetcred\",\"status\":200,\"title\":\"StreetCred from the foggy memory of Tyler Gaw\",\"word_count\":2522,\"summary_text\":\"StreetCred from the foggy memory of Tyler Gaw document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); StreetCred from the foggy memory of Tyler Gaw a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin\",\"classification_terms\":[\"work/streetcred\",\"address\"],\"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\":32,\"depth\":1},{\"path\":\"/work/limbo\",\"status\":200,\"title\":\"Limbo as described by Tyler Gaw\",\"word_count\":2595,\"summary_text\":\"Limbo as described by Tyler Gaw document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Limbo as described by Tyler Gaw a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.v\",\"classification_terms\":[\"work/limbo\",\"address\"],\"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\":32,\"depth\":1},{\"path\":\"/work/colorme\",\"status\":200,\"title\":\"ColorMe. A project by Tyler Gaw\",\"word_count\":2406,\"summary_text\":\"ColorMe. A project by Tyler Gaw document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); ColorMe. A project by Tyler Gaw a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.v\",\"classification_terms\":[\"work/colorme\",\"address\"],\"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\":31,\"depth\":1},{\"path\":\"/work/thegroundwork\",\"status\":200,\"title\":\"The Groundwork as remembered by Tyler Gaw\",\"word_count\":2655,\"summary_text\":\"The Groundwork as remembered by Tyler Gaw document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); The Groundwork as remembered by Tyler Gaw a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;b\",\"classification_terms\":[\"work/thegroundwork\",\"address\"],\"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\":32,\"depth\":1},{\"path\":\"/work/osx-apps-with-js\",\"status\":200,\"title\":\"The Tall Tale of Building OS X Apps with JavaScript by Tyler Gaw\",\"word_count\":2574,\"summary_text\":\"The Tall Tale of Building OS X Apps with JavaScript by Tyler Gaw document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); The Tall Tale of Building OS X Apps with JavaScript by Tyler Gaw a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-b\",\"classification_terms\":[\"work/osx-apps-with-js\",\"address\"],\"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\":31,\"depth\":1},{\"path\":\"/work/archive\",\"status\":200,\"title\":\"An archive of the many projects Tyler Gaw starts and sometimes finishes\",\"word_count\":2495,\"summary_text\":\"An archive of the many projects Tyler Gaw starts and sometimes finishes document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); An archive of the many projects Tyler Gaw starts and sometimes finishes a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:b\",\"classification_terms\":[\"work/archive\",\"address\"],\"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\":31,\"depth\":1},{\"path\":\"/bookshelf\",\"status\":200,\"title\":\"Books I’m Reading and Books I’ve Read - Tyler Gaw\",\"word_count\":2399,\"summary_text\":\"Books I’m Reading and Books I’ve Read - Tyler Gaw document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Books I’m Reading and Books I’ve Read - Tyler Gaw a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{ma\",\"classification_terms\":[\"bookshelf\",\"address\"],\"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\":32,\"depth\":1},{\"path\":\"/art\",\"status\":200,\"title\":\"Paintings, drawings, and various creations of Tyler Gaw\",\"word_count\":2121,\"summary_text\":\"Paintings, drawings, and various creations of Tyler Gaw document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Paintings, drawings, and various creations of Tyler Gaw a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,h\",\"classification_terms\":[\"art\",\"address\"],\"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\":31,\"depth\":1},{\"path\":\"/resume\",\"status\":200,\"title\":\"Tyler Gaw’s Resume\",\"word_count\":2293,\"summary_text\":\"Tyler Gaw’s Resume document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Tyler Gaw’s Resume a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visually-hidde\",\"classification_terms\":[\"resume\",\"address\"],\"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\":31,\"depth\":1},{\"path\":\"/blog/color-scheme-browser-native-control/\",\"status\":200,\"title\":\"Browsers Should Have a Native Control for Per-Site Color Scheme\",\"word_count\":3922,\"summary_text\":\"Browsers Should Have a Native Control for Per-Site Color Scheme document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Browsers Should Have a Native Control for Per-Site Color Scheme a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-bo\",\"classification_terms\":[\"blog/color-scheme-browser-native-control\",\"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\":31,\"depth\":2},{\"path\":\"/blog/the-old-internet-is-still-here/\",\"status\":200,\"title\":\"The Old Internet is Still Here\",\"word_count\":2637,\"summary_text\":\"The Old Internet is Still Here document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); The Old Internet is Still Here a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.vi\",\"classification_terms\":[\"blog/the-old-internet-is-still-here\",\"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\":31,\"depth\":2},{\"path\":\"/blog/an-app-for-modern-collage/\",\"status\":200,\"title\":\"An App for Modern Collage\",\"word_count\":2541,\"summary_text\":\"An App for Modern Collage document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); An App for Modern Collage a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visuall\",\"classification_terms\":[\"blog/an-app-for-modern-collage\",\"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\":31,\"depth\":2},{\"path\":\"/blog/a-few-things-to-enjoy-2/\",\"status\":200,\"title\":\"A Few Things to Enjoy #2\",\"word_count\":2458,\"summary_text\":\"A Few Things to Enjoy #2 document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); A Few Things to Enjoy #2 a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visually\",\"classification_terms\":[\"blog/a-few-things-to-enjoy-2\",\"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\":31,\"depth\":2},{\"path\":\"/blog/failing-at-local-models-for-wax/\",\"status\":200,\"title\":\"Failing at Using a Local LLM for Vinyl Record Color Extraction\",\"word_count\":3452,\"summary_text\":\"Failing at Using a Local LLM for Vinyl Record Color Extraction document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Failing at Using a Local LLM for Vinyl Record Color Extraction a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box\",\"classification_terms\":[\"blog/failing-at-local-models-for-wax\",\"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\":31,\"depth\":2},{\"path\":\"/blog/building-latchbolt-1/\",\"status\":200,\"title\":\"Building Latchbolt #1\",\"word_count\":2729,\"summary_text\":\"Building Latchbolt #1 document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Building Latchbolt #1 a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visually-hi\",\"classification_terms\":[\"blog/building-latchbolt-1\",\"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\":31,\"depth\":2},{\"path\":\"/blog/something-to-latch-onto/\",\"status\":200,\"title\":\"Something to Latch Onto\",\"word_count\":2980,\"summary_text\":\"Something to Latch Onto document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Something to Latch Onto a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visually-\",\"classification_terms\":[\"blog/something-to-latch-onto\",\"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\":31,\"depth\":2},{\"path\":\"/blog/has-attribute-external-links/\",\"status\":200,\"title\":\"Styling External Links Using :has and an Attribute Selector\",\"word_count\":2375,\"summary_text\":\"Styling External Links Using :has and an Attribute Selector document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Styling External Links Using :has and an Attribute Selector a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}bo\",\"classification_terms\":[\"blog/has-attribute-external-links\",\"address\",\"blog\",\"links\"],\"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\":31,\"depth\":2},{\"path\":\"/blog/fairweather-ride-2025/\",\"status\":200,\"title\":\"Fairweather Ride 2025\",\"word_count\":4176,\"summary_text\":\"Fairweather Ride 2025 document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Fairweather Ride 2025 a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visually-hi\",\"classification_terms\":[\"blog/fairweather-ride-2025\",\"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\":32,\"depth\":2},{\"path\":\"/blog/a-few-things-to-enjoy-1/\",\"status\":200,\"title\":\"A Few Things to Enjoy #1\",\"word_count\":2704,\"summary_text\":\"A Few Things to Enjoy #1 document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); A Few Things to Enjoy #1 a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visually\",\"classification_terms\":[\"blog/a-few-things-to-enjoy-1\",\"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\":31,\"depth\":2},{\"path\":\"/blog/tag-youre-it/\",\"status\":200,\"title\":\"Tag, You’re It\",\"word_count\":3091,\"summary_text\":\"Tag, You’re It document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Tag, You’re It a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visually-hidden{po\",\"classification_terms\":[\"blog/tag-youre-it\",\"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\":31,\"depth\":2},{\"path\":\"/blog/view-transition-at-rule/\",\"status\":200,\"title\":\"CSS View Transition At-Rule\",\"word_count\":2544,\"summary_text\":\"CSS View Transition At-Rule document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); CSS View Transition At-Rule a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visua\",\"classification_terms\":[\"blog/view-transition-at-rule\",\"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\":31,\"depth\":2},{\"path\":\"/blog/mocking-sveltekit-stores-in-storybook/\",\"status\":200,\"title\":\"Mocking SvelteKit Stores in Storybook\",\"word_count\":2670,\"summary_text\":\"Mocking SvelteKit Stores in Storybook document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Mocking SvelteKit Stores in Storybook a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;borde\",\"classification_terms\":[\"blog/mocking-sveltekit-stores-in-storybook\",\"address\",\"blog\",\"store\"],\"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\":31,\"depth\":2},{\"path\":\"/blog/complex-mpa-view-transitions/\",\"status\":200,\"title\":\"Complex MPA View Transitions\",\"word_count\":4214,\"summary_text\":\"Complex MPA View Transitions document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Complex MPA View Transitions a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visu\",\"classification_terms\":[\"blog/complex-mpa-view-transitions\",\"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\":31,\"depth\":2},{\"path\":\"/blog/chatgpt-cloudformation/\",\"status\":200,\"title\":\"Using ChatGPT to Write CloudFormation\",\"word_count\":2492,\"summary_text\":\"Using ChatGPT to Write CloudFormation document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Using ChatGPT to Write CloudFormation a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;borde\",\"classification_terms\":[\"blog/chatgpt-cloudformation\",\"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\":33,\"depth\":2},{\"path\":\"/blog/node-test-runner/\",\"status\":200,\"title\":\"The Native Node Test Runner is Great\",\"word_count\":2394,\"summary_text\":\"The Native Node Test Runner is Great document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); The Native Node Test Runner is Great a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border\",\"classification_terms\":[\"blog/node-test-runner\",\"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\":31,\"depth\":2},{\"path\":\"/blog/css-typed-om-thread/\",\"status\":200,\"title\":\"CSS Trig Functions, CSS Typed OM, and Pulling on Threads\",\"word_count\":3256,\"summary_text\":\"CSS Trig Functions, CSS Typed OM, and Pulling on Threads document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); CSS Trig Functions, CSS Typed OM, and Pulling on Threads a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,\",\"classification_terms\":[\"blog/css-typed-om-thread\",\"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\":34,\"depth\":2},{\"path\":\"/blog/css-scroll-driven-write-on/\",\"status\":200,\"title\":\"CSS Scroll-Driven Write-on Text Effect\",\"word_count\":2524,\"summary_text\":\"CSS Scroll-Driven Write-on Text Effect document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); CSS Scroll-Driven Write-on Text Effect a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;bord\",\"classification_terms\":[\"blog/css-scroll-driven-write-on\",\"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\":[\"codepen.io\"],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":31,\"depth\":2},{\"path\":\"/blog/view-transitions-first-experiments-mpa/\",\"status\":200,\"title\":\"First Experiments with View Transitions for Multi-page Apps\",\"word_count\":3648,\"summary_text\":\"First Experiments with View Transitions for Multi-page Apps document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); First Experiments with View Transitions for Multi-page Apps a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}bo\",\"classification_terms\":[\"blog/view-transitions-first-experiments-mpa\",\"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\":31,\"depth\":2},{\"path\":\"/blog/colormix-refresh/\",\"status\":200,\"title\":\"Refreshing Colormix\",\"word_count\":2860,\"summary_text\":\"Refreshing Colormix document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Refreshing Colormix a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visually-hidd\",\"classification_terms\":[\"blog/colormix-refresh\",\"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\":31,\"depth\":2},{\"path\":\"/blog/ios-16-avif-fix/\",\"status\":200,\"title\":\"Re-encode AVIF images for iOS 16\",\"word_count\":2446,\"summary_text\":\"Re-encode AVIF images for iOS 16 document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Re-encode AVIF images for iOS 16 a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.\",\"classification_terms\":[\"blog/ios-16-avif-fix\",\"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\":31,\"depth\":2},{\"path\":\"/blog/colormix-mvp/\",\"status\":200,\"title\":\"Visualizing CSS color-mix\",\"word_count\":2367,\"summary_text\":\"Visualizing CSS color-mix document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Visualizing CSS color-mix a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visuall\",\"classification_terms\":[\"blog/colormix-mvp\",\"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\":31,\"depth\":2},{\"path\":\"/blog/realign-2020-realigned/\",\"status\":200,\"title\":\"Realign 2020: Realigned\",\"word_count\":2911,\"summary_text\":\"Realign 2020: Realigned document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Realign 2020: Realigned a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visually-\",\"classification_terms\":[\"blog/realign-2020-realigned\",\"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\":31,\"depth\":2},{\"path\":\"/blog/how-to-get-all-custom-properties-on-a-page-in-javascript/\",\"status\":200,\"title\":\"How to Get All Custom Properties on a Page in JavaScript\",\"word_count\":5120,\"summary_text\":\"How to Get All Custom Properties on a Page in JavaScript document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); How to Get All Custom Properties on a Page in JavaScript a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,\",\"classification_terms\":[\"blog/how-to-get-all-custom-properties-on-a-page-in-javascript\",\"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\":[\"codepen.io\"],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":31,\"depth\":2},{\"path\":\"/blog/realign-2020-color/\",\"status\":200,\"title\":\"Realign 2020: Color\",\"word_count\":4262,\"summary_text\":\"Realign 2020: Color document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Realign 2020: Color a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visually-hidd\",\"classification_terms\":[\"blog/realign-2020-color\",\"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\":31,\"depth\":2},{\"path\":\"/blog/css-repeating-svg-masks/\",\"status\":200,\"title\":\"CSS: Flexible Repeating SVG Masks\",\"word_count\":3260,\"summary_text\":\"CSS: Flexible Repeating SVG Masks document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); CSS: Flexible Repeating SVG Masks a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}\",\"classification_terms\":[\"blog/css-repeating-svg-masks\",\"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\":33,\"depth\":2},{\"path\":\"/blog/realign-2020-logo/\",\"status\":200,\"title\":\"Realign 2020: Logo\",\"word_count\":2903,\"summary_text\":\"Realign 2020: Logo document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Realign 2020: Logo a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visually-hidde\",\"classification_terms\":[\"blog/realign-2020-logo\",\"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\":31,\"depth\":2},{\"path\":\"/blog/realign-2020-typography/\",\"status\":200,\"title\":\"Realign 2020: Typography\",\"word_count\":3036,\"summary_text\":\"Realign 2020: Typography document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Realign 2020: Typography a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visually\",\"classification_terms\":[\"blog/realign-2020-typography\",\"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\":31,\"depth\":2},{\"path\":\"/blog/realign-2020/\",\"status\":200,\"title\":\"Realign 2020\",\"word_count\":2609,\"summary_text\":\"Realign 2020 document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Realign 2020 a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visually-hidden{posi\",\"classification_terms\":[\"blog/realign-2020\",\"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\":31,\"depth\":2},{\"path\":\"/blog/netlify-cms-custom-oath-provider/\",\"status\":200,\"title\":\"Using a Custom OAuth Provider with NetlifyCMS\",\"word_count\":3027,\"summary_text\":\"Using a Custom OAuth Provider with NetlifyCMS document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Using a Custom OAuth Provider with NetlifyCMS a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin\",\"classification_terms\":[\"blog/netlify-cms-custom-oath-provider\",\"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\":31,\"depth\":2},{\"path\":\"/blog/good-things/\",\"status\":200,\"title\":\"Good Things\",\"word_count\":2371,\"summary_text\":\"Good Things document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Good Things a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visually-hidden{posit\",\"classification_terms\":[\"blog/good-things\",\"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\":31,\"depth\":2},{\"path\":\"/blog/a-library/\",\"status\":200,\"title\":\"A Library\",\"word_count\":2286,\"summary_text\":\"A Library document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); A Library a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visually-hidden{positio\",\"classification_terms\":[\"blog/a-library\",\"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\":31,\"depth\":2},{\"path\":\"/blog/no-more-google-analytics/\",\"status\":200,\"title\":\"No More Google Analytics\",\"word_count\":2266,\"summary_text\":\"No More Google Analytics document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); No More Google Analytics a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;border:0}.visually\",\"classification_terms\":[\"blog/no-more-google-analytics\",\"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\":32,\"depth\":2},{\"path\":\"/blog/designing-anthologies-concepts/\",\"status\":200,\"title\":\"Designing Anthologies: Initial Concepts\",\"word_count\":3983,\"summary_text\":\"Designing Anthologies: Initial Concepts document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Designing Anthologies: Initial Concepts a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;bor\",\"classification_terms\":[\"blog/designing-anthologies-concepts\",\"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\":31,\"depth\":2},{\"path\":\"/blog/jribbble-three-and-oauth/\",\"status\":200,\"title\":\"Jribbble Three and Helping People OAuth\",\"word_count\":5837,\"summary_text\":\"Jribbble Three and Helping People OAuth document.getElementsByTagName(\\\"html\\\")[0].classList.replace(\\\"no-js\\\", \\\"js\\\"); Jribbble Three and Helping People OAuth a,abbr,acronym,address,article,aside,audio,b,blockquote,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,header,html,i,iframe,img,label,legend,li,mark,nav,object,ol,p,pre,q,s,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,time,tr,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:\\\"\\\";content:none}em,i{font-style:normal}*{box-sizing:border-box}body,html{margin:0;bor\",\"classification_terms\":[\"blog/jribbble-three-and-oauth\",\"help\",\"address\",\"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\":31,\"depth\":2},{\"path\":\"/blog/dynamic-redux-reducers/\",\"status\":200,\"title\":\"Dynamic Redux Reducers\",\"word_count\":3800,\"summary_text\":\"Dynamic Redux Reducers document.getElem",
        "score_reasons_json": "[\"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": "tylergaw.com",
        "display_domain": "tylergaw.com"
    },
    "explainability": {
        "summary": "tylergaw.com 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": "+32.0",
                "tone": "good",
                "detail": "Technical quality, crawl depth, page structure, and implementation hygiene. Current subsystem score: 94/100."
            },
            {
                "label": "Reputation system",
                "points": "+16.3",
                "tone": "caution",
                "detail": "Authority, search visibility, reach, engagement, and registry stability. Current subsystem score: 48/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": "-16.0",
                "tone": "risk",
                "detail": "Safety thresholds capped the final score until the risk profile improves."
            }
        ],
        "evidence_cards": [
            {
                "label": "Authority and trust",
                "value": "49/100 · trust 67/100",
                "tone": "caution",
                "detail": "301 monthly visitors, 94 organic keywords, brand completeness 69/100, engagement 87/100."
            },
            {
                "label": "Backlink and search evidence",
                "value": "2 referring domains",
                "tone": "good",
                "detail": "2 backlinks across 2 referring domains. Diversity 93/100; spam penalty 3."
            },
            {
                "label": "Registry and domain stability",
                "value": "20.6 years old",
                "tone": "good",
                "detail": "Stability 100/100 · age 20.6 years · registrar NameCheap, Inc. · expires in 152 days."
            },
            {
                "label": "Safety and fraud posture",
                "value": "Safety 100/100 · fraud 1/100",
                "tone": "good",
                "detail": "Primary tag T · safety 100/100 · fraud 1/100."
            }
        ],
        "positives": [
            "Established domain age: 20.6 years.",
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness.",
            "Registry history looks stable, which supports legitimacy and trust.",
            "The domain has been registered for years, which usually improves trust confidence.",
            "HTTPS is working, so the site clears a basic transport-security check."
        ],
        "risks": [],
        "freshness": [
            {
                "label": "Crawl evidence",
                "value": "2026-03-31 03:37:14",
                "tone": "risk",
                "detail": "Crawl and page content sample. Age: 16d ago."
            },
            {
                "label": "WHOIS snapshot",
                "value": "2026-03-18 21:11:57",
                "tone": "risk",
                "detail": "Registry profile and stability signals. Age: 28d ago."
            },
            {
                "label": "Keyword view",
                "value": "2026-04-16 14:26:18",
                "tone": "good",
                "detail": "Estimated visibility until tracked keyword snapshots exist. Age: 0s ago."
            },
            {
                "label": "Rank history",
                "value": "2026-04-16 14:26:18",
                "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": 80,
        "fraud_clamp_penalty": 16,
        "final_score": 64
    },
    "insight_snapshot": {
        "version": 1,
        "generated_at": "2026-04-16T14:26:18+00:00",
        "domain": "tylergaw.com",
        "display_name": "Tyler Gaw is a Designer & Engineer in New York City, USA",
        "is_tracked": false,
        "is_estimated": true,
        "overall_score": 64,
        "authority_score": 49,
        "trust_score": 67,
        "safety_score": 100,
        "fraud_score": 1,
        "confidence_score": 100,
        "traffic_confidence": 76,
        "last_crawled_at": "2026-03-31 03:37:14",
        "crawl_blocked": false,
        "summary": "tylergaw.com 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: 20.6 years.",
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness.",
            "Registry history looks stable, which supports legitimacy and trust.",
            "The domain has been registered for years, which usually improves trust confidence."
        ],
        "top_risk_signals": [],
        "freshness": [
            {
                "label": "Crawl evidence",
                "value": "2026-03-31 03:37:14",
                "tone": "risk",
                "detail": "Crawl and page content sample. Age: 16d ago."
            },
            {
                "label": "WHOIS snapshot",
                "value": "2026-03-18 21:11:57",
                "tone": "risk",
                "detail": "Registry profile and stability signals. Age: 28d ago."
            },
            {
                "label": "Keyword view",
                "value": "2026-04-16 14:26:18",
                "tone": "good",
                "detail": "Estimated visibility until tracked keyword snapshots exist. Age: 0s ago."
            },
            {
                "label": "Rank history",
                "value": "2026-04-16 14:26:18",
                "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-19T10:50:41+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/tylergaw.com/refresh",
        "isGuestCooldown": false,
        "cooldownSeconds": 0
    },
    "urlscan_report": {
        "domain": "tylergaw.com",
        "status": "idle",
        "submitted_at": null,
        "completed_at": null,
        "last_checked_at": null,
        "last_error": "",
        "submitted_url": "https://tylergaw.com/",
        "uuid": "",
        "result_url": "",
        "api_result_url": "",
        "visibility": "public",
        "summary": "No urlscan.io report has been requested for this domain yet.",
        "report": [],
        "report_summary": [],
        "is_fresh": false,
        "can_retry": true,
        "poll_after_seconds": 20
    }
}