{
    "ready": true,
    "site": {
        "id": 0,
        "domain": "danieljudd.xyz",
        "display_name": "Daniel Judd’s Interesting Software Blog",
        "primary_country_code": "",
        "category_name": "Personal: Portfolios & CVs"
    },
    "metrics": {
        "global_rank": 32120,
        "country_rank": 16949,
        "category_rank": 48,
        "daily_pageviews_per_visitor": 3.95,
        "daily_time_on_site_seconds": 315,
        "bounce_rate": 31.9,
        "search_visits_percent": 40.82,
        "total_sites_linking_in": 1,
        "monthly_unique_visitors": 121,
        "recorded_at": "2026-03-19 15:04:21"
    },
    "audit": {
        "score": 94
    },
    "traffic_sources": {
        "direct_percent": 28.32,
        "search_percent": 36.61,
        "social_percent": 6.77,
        "referral_percent": 12.55,
        "email_percent": 6.77,
        "paid_percent": 8.98
    },
    "seo_profile": {
        "backlinks_total": 1,
        "referring_domains": 1,
        "dofollow_backlinks_percent": 100,
        "organic_keywords": 74,
        "indexed_pages": 25,
        "page_speed_score": 100,
        "mobile_friendliness_score": 90,
        "authority_score": 49,
        "spam_risk_score": 14
    },
    "crawl_report": {
        "robots_status": 200,
        "sitemap_status": 200,
        "sitemap_total_urls": 25,
        "crawl_blocked": false,
        "crawl_blocked_by": "",
        "crawl_blocked_reason": "",
        "notes": [],
        "created_at": "2026-03-19 15:04:21"
    },
    "keywords": [
        {
            "keyword": "Daniel Judd’s Interesting Software Blog",
            "position": 18,
            "search_engine": "Estimated",
            "checked_at": "2026-04-15 20:32:10",
            "is_estimated": true
        },
        {
            "keyword": "Daniel Judd’s Interesting Software Blog personal: portfolios & cvs",
            "position": 20,
            "search_engine": "Estimated",
            "checked_at": "2026-04-15 20:32:10",
            "is_estimated": true
        },
        {
            "keyword": "Daniel Judd’s Interesting Software Blog reviews",
            "position": 22,
            "search_engine": "Estimated",
            "checked_at": "2026-04-15 20:32:10",
            "is_estimated": true
        },
        {
            "keyword": "daniel",
            "position": 24,
            "search_engine": "Estimated",
            "checked_at": "2026-04-15 20:32:10",
            "is_estimated": true
        },
        {
            "keyword": "judd",
            "position": 26,
            "search_engine": "Estimated",
            "checked_at": "2026-04-15 20:32:10",
            "is_estimated": true
        },
        {
            "keyword": "interesting",
            "position": 28,
            "search_engine": "Estimated",
            "checked_at": "2026-04-15 20:32:10",
            "is_estimated": true
        },
        {
            "keyword": "software",
            "position": 30,
            "search_engine": "Estimated",
            "checked_at": "2026-04-15 20:32:10",
            "is_estimated": true
        },
        {
            "keyword": "blog",
            "position": 32,
            "search_engine": "Estimated",
            "checked_at": "2026-04-15 20:32:10",
            "is_estimated": true
        }
    ],
    "rating": {
        "overall": 42,
        "label": "Average",
        "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": 8,
                "max": 10
            },
            {
                "label": "Channels & diversification",
                "score": 4,
                "max": 6
            },
            {
                "label": "Registry stability",
                "score": 4,
                "max": 6
            },
            {
                "label": "Quality system",
                "score": 94,
                "max": 100
            },
            {
                "label": "Reputation system",
                "score": 45,
                "max": 100
            },
            {
                "label": "Safety system",
                "score": 100,
                "max": 100
            },
            {
                "label": "Evidence confidence",
                "score": 100,
                "max": 100
            },
            {
                "label": "External intelligence",
                "score": 52,
                "max": 100
            },
            {
                "label": "API intelligence",
                "score": 54,
                "max": 100
            }
        ],
        "authority_score": 49,
        "quality_score": 94,
        "reputation_score": 45,
        "safety_score": 100,
        "confidence_score": 100,
        "fraud_score": 1,
        "authority_signals": {
            "backlinks": 1,
            "referring_domains": 1,
            "organic_keywords": 74,
            "indexed_pages": 25,
            "monthly_visitors": 121,
            "global_rank": 32120,
            "engagement_score": 80,
            "crawl_quality_score": 100,
            "brand_completeness_score": 65,
            "link_diversity_score": 92,
            "technical_reliability_score": 98,
            "whois_score": 72,
            "whois_age_years": 4.9,
            "whois_stability_score": 100,
            "spam_penalty": 0
        },
        "whois_signals": {
            "age_years": 4.9,
            "days_to_expiry": 2944,
            "days_since_last_registry_update": 27,
            "stability_score": 100,
            "registrar_changes": 0,
            "ownership_changes": 0,
            "nameserver_changes": 0,
            "status_changes": 0,
            "history_entries": 1,
            "privacy_protected": false,
            "dnssec_enabled": true,
            "has_registrant_country": false,
            "registrant_country": "",
            "nameserver_count": 4,
            "status_count": 2
        }
    },
    "authority_score": 49,
    "trust_score": 42,
    "domain_tags": {
        "primary_tag": "T",
        "primary_tag_score": 76,
        "primary_candidate": "T",
        "primary_candidate_score": 76,
        "tag_codes": "T,Uncertain",
        "tags": [
            {
                "code": "T",
                "label": "Trusted",
                "tone": "good",
                "description": "Strong trust, stability, and low-risk signals were detected.",
                "reason": "Low spam indicators plus strong trust, quality, registry, and stability signals were detected. Showing the stored external intelligence snapshot. New search and review intelligence only runs after a visitor uses Refresh data manually.",
                "message": "The site shows a reasonably trustworthy and stable profile.",
                "priority": 76,
                "score": 76,
                "match_percent": 76,
                "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 and external checks stayed inconclusive, so the system kept an uncertainty buffer instead of 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. Showing the stored external intelligence snapshot. New search and review intelligence only runs after a visitor uses Refresh data manually.",
                "message": "The site shows a reasonably trustworthy and stable profile.",
                "priority": 76,
                "score": 76,
                "match_percent": 76,
                "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 and external checks stayed inconclusive, so the system kept an uncertainty buffer instead of 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": 14,
                "score": 14,
                "match_percent": 14,
                "threshold_band": "none"
            },
            {
                "code": "Spam",
                "label": "Spam",
                "tone": "spam",
                "description": "Manipulative, low-quality, or overly promotional patterns were detected.",
                "reason": "Spam score 0/100 with a suspicious low-trust TLD. Showing the stored external intelligence snapshot. New search and review intelligence only runs after a visitor uses Refresh data manually.",
                "message": "No meaningful spam-pattern match was detected.",
                "priority": 10,
                "score": 10,
                "match_percent": 10,
                "threshold_band": "none"
            },
            {
                "code": "D",
                "label": "Dangerous",
                "tone": "toxic",
                "description": "Strong signs of phishing, malware, or other harmful behaviour were detected.",
                "reason": "Very high spam signals were detected alongside suspicious domain or thin-content patterns. Showing the stored external intelligence snapshot. New search and review intelligence only runs after a visitor uses Refresh data manually.",
                "message": "No meaningful dangerous-signal match was detected.",
                "priority": 8,
                "score": 8,
                "match_percent": 8,
                "threshold_band": "none"
            }
        ],
        "nsfw_score": 0,
        "trust_score": 46,
        "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 (76% match) because low spam indicators plus strong trust, quality, registry, and stability signals were detected. showing the stored external intelligence snapshot. new search and review intelligence only runs after a visitor uses refresh data manually.",
        "external_intel": {
            "domain": "danieljudd.xyz",
            "candidate_tag": "",
            "checked_at": "2026-03-19T15:04:19+00:00",
            "status": "fresh",
            "snapshot_version": 9,
            "summary": "Showing the stored external intelligence snapshot. New search and review intelligence only runs after a visitor uses Refresh data manually.",
            "search_intelligence": {
                "queries": [
                    "site:trustpilot.com \"danieljudd.xyz\" -site:danieljudd.xyz -site:www.danieljudd.xyz",
                    "site:bbb.org \"danieljudd.xyz\" -site:danieljudd.xyz -site:www.danieljudd.xyz"
                ],
                "focused_queries": [
                    "site:trustpilot.com \"danieljudd.xyz\" -site:danieljudd.xyz -site:www.danieljudd.xyz",
                    "site:bbb.org \"danieljudd.xyz\" -site:danieljudd.xyz -site:www.danieljudd.xyz"
                ],
                "relaxed_queries": [
                    "site:wikipedia.org \"danieljudd.xyz\"",
                    "site:en.wikipedia.org \"danieljudd.xyz\"",
                    "site:wikipedia.org \"danieljudd\"",
                    "site:en.wikipedia.org \"danieljudd\"",
                    "danieljudd company profile",
                    "danieljudd reviews",
                    "danieljudd wikipedia",
                    "danieljudd linkedin",
                    "danieljudd crunchbase"
                ],
                "providers": [
                    "brave"
                ],
                "provider_result_counts": {
                    "brave": 0
                },
                "provider_query_attempts": {
                    "brave": 2
                },
                "provider_error_counts": {
                    "brave": 2
                },
                "provider_failure_reasons": {
                    "brave": "Brave hourly hard cap reached."
                },
                "provider_block_signals": [],
                "results_found": 1,
                "external_results_found": 0,
                "used_direct_fallback": true,
                "results": [
                    {
                        "provider": "direct-domain-fallback",
                        "url": "https://danieljudd.xyz/",
                        "host": "danieljudd.xyz",
                        "title": "danieljudd.xyz",
                        "snippet": "First-party fallback captured directly from the domain when public search engines returned no usable results.",
                        "is_direct_fallback": true,
                        "source_meta": {
                            "host": "danieljudd.xyz",
                            "source_type": "official_site",
                            "label": "Official site",
                            "trust_weight": 55,
                            "evidence_weight": 26,
                            "noise_penalty": 0,
                            "requires_exact_domain_match": true,
                            "supports_positive_verdicts": false,
                            "supports_negative_verdicts": false,
                            "freshness_ttl_days": 21
                        },
                        "entity": {
                            "score": 100,
                            "exactness": "exact_domain",
                            "reasons": [
                                "The result host matches the exact domain.",
                                "The exact domain is mentioned in the page snippet or document text.",
                                "The result URL contains the exact domain string."
                            ]
                        },
                        "query": "direct-fallback",
                        "rank": 1
                    }
                ],
                "source_mix": {
                    "official_site": 1
                },
                "entity_coverage_score": 100,
                "high_trust_result_count": 0,
                "exact_match_result_count": 1,
                "high_entity_result_count": 1,
                "query_hit_count": 0,
                "query_count": 2,
                "used_failover_provider": false,
                "inferred_candidate_tag": "",
                "used_relaxed_queries": false,
                "search_passes": [
                    {
                        "name": "focused-primary",
                        "queries": 2,
                        "providers": [
                            "brave"
                        ],
                        "results_added": 0,
                        "external_results_added": 0,
                        "deadline_hit": false
                    }
                ],
                "deadline_hit": false
            },
            "review_intelligence": {
                "documents_fetched": 1,
                "external_documents_fetched": 0,
                "documents": [
                    {
                        "provider": "direct-domain-fallback",
                        "url": "https://danieljudd.xyz/",
                        "host": "danieljudd.xyz",
                        "title": "danieljudd.xyz",
                        "snippet": "First-party fallback captured directly from the domain when public search engines returned no usable results.",
                        "is_direct_fallback": true,
                        "source_meta": {
                            "host": "danieljudd.xyz",
                            "source_type": "official_site",
                            "label": "Official site",
                            "trust_weight": 55,
                            "evidence_weight": 26,
                            "noise_penalty": 0,
                            "requires_exact_domain_match": true,
                            "supports_positive_verdicts": false,
                            "supports_negative_verdicts": false,
                            "freshness_ttl_days": 21
                        },
                        "entity": {
                            "score": 100,
                            "exactness": "exact_domain",
                            "reasons": [
                                "The result host matches the exact domain.",
                                "The exact domain is mentioned in the page snippet or document text.",
                                "The result URL contains the exact domain string."
                            ]
                        },
                        "query": "direct-fallback",
                        "rank": 1,
                        "body": "Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴︎ Most Recent Posts 22 March 2025 - Arm Outside of Mobile Computers (Words: 1433) /blog/ 22 October 2024 - AI Detectors (Words: 456) /blog/ 22 June 2024 - How to Connect Microsoft SQL Server Database to Python (Words: 201) /projects/ 10 April 2024 - Learning to Type Again (Words: 1529) /blog/ 3 April 2024 - How I use SEO in Hugo (Words: 1429) /blog/ 27 March 2024 - Why I Don't Use Vim (Words: 726) /blog/ 8 March 2024 - Why UK Companies Should Hire Remote Software Developers (Words: 691) /blog/ 4 March 2024 - QR Code Security is Not Being Talked About Enough (Words: 506) /blog/ 1 March 2024 - What I learned - Watering System Using Raspberry Pi (Words: 639) /projects/ 15 February 2024 - Motivation Tracker (Words: 218) /projects/ E-mail 📧 | Github 🐱‍💻 | Subscribe to RSS 👨🏻‍💻 © danieljudd.xyz 2025",
                        "html": "<!DOCTYPE html> <html lang=\"en\"><head> <meta name=\"generator\" content=\"Hugo 0.145.0\"> <!-- Theme Author: danieljudd.xyz | github.com/danieljudd --> <meta charset=\"utf-8\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"> <link rel=\"stylesheet\" type=\"text/css\" href=\"/css/style.css\"> <title>Daniel Judd’s Interesting Software Blog</title> <meta name=\"description\" content=\"Daniel Judd - Professional Software Developer and Content Writer in South Wales UK.\"> <meta name=\"keywords\" content=\" become a software developer, daniel judd, software engineer, UK, software developer, junior software developer, xyz, git, bash, full stack software developer, software developer portfolio, software developer for hire, copywriting, local seo, local developer, technical seo, linux, debian, github, security, privacy, new technology, technology news, digital technology, disruptive technology, hugo, kde, and distro \"> <link rel=\"canonical\" href=\"https://danieljudd.xyz/\" /> <link rel=\"icon\" href=\"/favicon.avif\"> <link rel=\"apple-touch-icon\" sizes=\"128x128\" href=\"/favicon.avif\"> <link rel=\"icon\" type=\"image/avif\" sizes=\"128x128\" href=\"/favicon.avif\"> <link rel=\"sitemap\" type=\"application/xml\" title=\"Daniel Judd’s Interesting Software Blog\" href=\"/sitemap.xml\"> <link rel=\"alternate\" type=\"application/rss+xml\" title=\"Daniel Judd’s Interesting Software Blog\" href=\"/index.xml\"> </head><body><a href=\"/\"><img src=\"/favicon.avif\" id=\"favicon\" alt=\"Daniel Judd’s Interesting Software Blog logo\" srcset=\"<128px image source> 1x, <256px image source> 2x\"></a> <nav id=\"nav\"> <a class=\"nav-link\" href=\"/about\"> 💭 About </a> <a class=\"nav-link\" href=\"/blog\"> ✍️ Blog </a> <a class=\"nav-link\" href=\"/projects\"> 🗃️ Projects </a> <a class=\"nav-link\" href=\"/donate\"> ️💲 Donate </a> <a class=\"nav-link\" href=\"https://epaper.medium.com/\"> 📓 ePaper technology ⤴︎ </a> </nav> <br> <div id = \"content\"> <div id = \"archive\"><div id=\"archive\"><h1>Most Recent Posts</h1> <a href=\"https://danieljudd.xyz/blog/arm/\"> 22 March 2025 - Arm Outside of Mobile Computers (Words: 1433) <small>/blog/ </small> </a> <hr> <a href=\"https://danieljudd.xyz/blog/ai-detectors/\"> 22 October 2024 - AI Detectors (Words: 456) <small>/blog/ </small> </a> <hr> <a href=\"https://danieljudd.xyz/projects/ms-sql-server-python-database/\"> 22 June 2024 - How to Connect Microsoft SQL Server Database to Python (Words: 201) <small>/projects/ </small> </a> <hr> <a href=\"https://danieljudd.xyz/blog/learning-to-type-vimium/\"> 10 April 2024 - Learning to Type Again (Words: 1529) <small>/blog/ </small> </a> <hr> <a href=\"https://danieljudd.xyz/blog/how-to-seo-hugo/\"> 3 April 2024 - How I use SEO in Hugo (Words: 1429) <small>/blog/ </small> </a> <hr> <a href=\"https://danieljudd.xyz/blog/why-i-dont-use-vim/\"> 27 March 2024 - Why I Don't Use Vim (Words: 726) <small>/blog/ </small> </a> <hr> <a href=\"https://danieljudd.xyz/blog/developerhire/\"> 8 March 2024 - Why UK Companies Should Hire Remote Software Developers (Words: 691) <small>/blog/ </small> </a> <hr> <a href=\"https://danieljudd.xyz/blog/qrcodes/\"> 4 March 2024 - QR Code Security is Not Being Talked About Enough (Words: 506) <small>/blog/ </small> </a> <hr> <a href=\"https://danieljudd.xyz/projects/watering/\"> 1 March 2024 - What I learned - Watering System Using Raspberry Pi (Words: 639) <small>/projects/ </small> </a> <hr> <a href=\"https://danieljudd.xyz/projects/motivation/\"> 15 February 2024 - Motivation Tracker (Words: 218) <small>/projects/ </small> </a> <hr> </div> </div> <br> </div> <br> <div id = \"socials\"> <a href=\"mailto:daniel@danieljudd.xyz\">E-mail 📧 |</a> <a href=\"https://github.com/danieljudd\">Github 🐱‍💻 |</a> <a href=\"https://danieljudd.xyz/index.xml\" target=\"_blank\">Subscribe to RSS 👨🏻‍💻</a> </div> <div id = \"foot\"><a href=\"/\"> <br> © danieljudd.xyz 2025 </a></div> </body> </html>",
                        "status_code": 200,
                        "final_url": "https://danieljudd.xyz/"
                    }
                ],
                "facts": [],
                "ignored_candidates": [],
                "blocked_candidates": 0,
                "source_diversity": 0,
                "host_coverage": 1,
                "source_type_coverage": 1,
                "exact_match_documents": 1,
                "external_exact_match_documents": 0,
                "elapsed_ms": 28,
                "candidates_considered": 1,
                "fetch_success_rate": 100,
                "avg_source_trust": 55,
                "avg_entity_score": 100
            },
            "provider_enrichment": {
                "providers": {
                    "safebrowsing": {
                        "status": "disabled"
                    },
                    "abuseipdb": {
                        "status": "ok",
                        "confidence": 58,
                        "ip": "185.199.108.153",
                        "abuse_confidence_score": 30,
                        "total_reports": 11,
                        "last_reported_at": "2026-03-09T23:24:07+00:00",
                        "country_code": "US",
                        "usage_type": "Content Delivery Network",
                        "isp": "GitHub, Inc.",
                        "domain": "github.com",
                        "budget": {
                            "provider": "abuseipdb",
                            "window_key": "2026-03-19",
                            "used": 133,
                            "limit": 850,
                            "remaining": 717,
                            "updated_at": "2026-03-19T05:44:27+00:00"
                        },
                        "facts": [],
                        "highlights": [],
                        "citations": [
                            {
                                "title": "AbuseIPDB IP reputation check",
                                "url": "https://docs.abuseipdb.com/",
                                "host": "docs.abuseipdb.com",
                                "snippet": "Primary IP 185.199.108.153 scored 30/100 with 11 report(s).",
                                "source_type": "api_reputation"
                            }
                        ],
                        "cached": true
                    },
                    "ipinfo": {
                        "status": "ok",
                        "confidence": 54,
                        "ip": "185.199.108.153",
                        "asn": "AS54113",
                        "as_name": "Fastly, Inc.",
                        "as_domain": "fastly.com",
                        "country_code": "US",
                        "country": "United States",
                        "region": "",
                        "city": "",
                        "flags": [],
                        "highlights": [
                            "IPinfo resolved the primary IP to US on AS54113."
                        ],
                        "citations": [
                            {
                                "title": "IPinfo IP enrichment",
                                "url": "https://ipinfo.io/developers",
                                "host": "ipinfo.io",
                                "snippet": "Primary IP 185.199.108.153 geolocates to US.",
                                "source_type": "ip_enrichment"
                            }
                        ],
                        "cached": true
                    },
                    "censys": {
                        "status": "disabled"
                    },
                    "sslmate": {
                        "status": "error",
                        "error": "HTTP 429: {\"code\":\"rate_limited\",\"message\":\"You have exceeded the domain search rate limit for the SSLMate CT Search API. Please try again later, or upgrade your Cert Spotter plan by visiting .\"}",
                        "cached": true
                    }
                },
                "facts": [],
                "citations": [
                    {
                        "title": "AbuseIPDB IP reputation check",
                        "url": "https://docs.abuseipdb.com/",
                        "host": "docs.abuseipdb.com",
                        "snippet": "Primary IP 185.199.108.153 scored 30/100 with 11 report(s).",
                        "source_type": "api_reputation"
                    },
                    {
                        "title": "IPinfo IP enrichment",
                        "url": "https://ipinfo.io/developers",
                        "host": "ipinfo.io",
                        "snippet": "Primary IP 185.199.108.153 geolocates to US.",
                        "source_type": "ip_enrichment"
                    }
                ],
                "highlights": [
                    "IPinfo resolved the primary IP to US on AS54113."
                ],
                "resolved_ips": [
                    "185.199.108.153",
                    "185.199.110.153",
                    "185.199.109.153"
                ],
                "primary_ip": "185.199.108.153",
                "quality": {
                    "provider_diversity_score": 50,
                    "provider_confidence_score": 56,
                    "provider_fact_count": 0
                }
            },
            "evidence": {
                "scores": {
                    "legit": 0,
                    "safe": 0,
                    "trusted": 0,
                    "caution": 0,
                    "scam": 0,
                    "dangerous": 0,
                    "spam": 0,
                    "nsfw": 0
                },
                "counts": {
                    "official_presence": 0,
                    "business_profiles": 0,
                    "positive_reviews": 0,
                    "negative_reviews": 0,
                    "scam_reports": 0,
                    "dangerous_reports": 0,
                    "spam_reports": 0,
                    "adult_reports": 0
                },
                "tag_support": [],
                "top_supporting_facts": [],
                "top_positive_facts": []
            },
            "quality": {
                "source_diversity_score": 0,
                "entity_coverage_score": 100,
                "freshness_score": 18,
                "confidence": 25,
                "documents_fetched": 1,
                "external_documents_fetched": 0,
                "fact_count": 0,
                "avg_source_trust": 55,
                "avg_entity_score": 100,
                "fetch_success_rate": 100,
                "exact_match_score": 0,
                "query_coverage_score": 20,
                "host_coverage_score": 20,
                "source_type_coverage_score": 25,
                "qualified_evidence_score": 0,
                "exact_match_documents": 0,
                "blocked_candidates": 0,
                "used_direct_fallback": true,
                "external_results_found": 0,
                "provider_diversity_score": 50,
                "provider_confidence_score": 56,
                "provider_fact_count": 0
            },
            "decision": {
                "state": "insufficient",
                "uncertainty": true,
                "candidate_support": 0,
                "candidate_contradiction": 0,
                "supports": {
                    "dangerous": false,
                    "scam": false,
                    "spam": false,
                    "nsfw": false,
                    "trusted": false
                },
                "evidence_quality": "low",
                "state_label": "Inconclusive",
                "state_reason": "Public search did not yield usable third-party matches, so the system fell back to first-party inspection only."
            },
            "signals": {
                "scores": {
                    "legit": 0,
                    "safe": 0,
                    "trusted": 0,
                    "caution": 0,
                    "scam": 0,
                    "dangerous": 0,
                    "spam": 0,
                    "nsfw": 0
                },
                "counts": {
                    "official_presence": 0,
                    "business_profiles": 0,
                    "positive_reviews": 0,
                    "negative_reviews": 0,
                    "scam_reports": 0,
                    "dangerous_reports": 0,
                    "spam_reports": 0,
                    "adult_reports": 0
                },
                "candidate_support": 0,
                "candidate_contradiction": 0,
                "highlights": [
                    "IPinfo resolved the primary IP to US on AS54113.",
                    "External evidence remained inconclusive because diversity, exact matching, or confidence was still too weak."
                ]
            },
            "citations": [
                {
                    "title": "AbuseIPDB IP reputation check",
                    "url": "https://docs.abuseipdb.com/",
                    "host": "docs.abuseipdb.com",
                    "snippet": "Primary IP 185.199.108.153 scored 30/100 with 11 report(s).",
                    "source_type": "api_reputation"
                },
                {
                    "title": "IPinfo IP enrichment",
                    "url": "https://ipinfo.io/developers",
                    "host": "ipinfo.io",
                    "snippet": "Primary IP 185.199.108.153 geolocates to US.",
                    "source_type": "ip_enrichment"
                }
            ],
            "urlscan": {
                "domain": "danieljudd.xyz",
                "status": "error",
                "submitted_at": "2026-03-19T15:04:18+00:00",
                "completed_at": null,
                "last_checked_at": "2026-03-19T15:04:18+00:00",
                "last_error": "Rate limit for 'public' exceeded. Limit is 5000 per day. Reset in 32140 seconds.",
                "submitted_url": "https://danieljudd.xyz/",
                "uuid": "",
                "result_url": "",
                "api_result_url": "",
                "visibility": "public",
                "summary": "urlscan.io scan submission failed.",
                "report": [],
                "report_summary": [],
                "is_fresh": false,
                "can_retry": false,
                "poll_after_seconds": 20
            },
            "eligibility": {
                "budget_ms": 4200,
                "search_budget_ms": 1600,
                "review_budget_ms": 2600,
                "query_cap": 2,
                "provider_cap": 1,
                "result_cap": 6,
                "review_document_cap": 4,
                "search_connect_timeout": 2,
                "search_timeout": 3,
                "review_connect_timeout": 2,
                "review_timeout": 3,
                "allowed": true,
                "mode": "normal",
                "decision_code": "run_normal",
                "reason": "post-crawl",
                "summary": "Running a standard intelligence pass because the current signals need third-party corroboration. The TLD is treated as abuse-prone, so evidence thresholds stay stricter.",
                "cooldown": {
                    "active": false,
                    "empty_attempts": 0,
                    "next_allowed_at": "",
                    "reason": "",
                    "provider_retry_at": ""
                },
                "suffix": {
                    "tld": "xyz",
                    "registered_suffix": "xyz",
                    "class": "abuse_prone",
                    "reserved": false
                },
                "signals": {
                    "trust_score": 0,
                    "quality_score": 0,
                    "safety_score": 0,
                    "fraud_score": 0,
                    "spam_score": 0,
                    "nsfw_score": 0,
                    "score_confidence": 0,
                    "risk_label": "good",
                    "crawl_blocked": false,
                    "last_http_status": 200,
                    "content_word_count": 162,
                    "internal_links_count": 15,
                    "site_name": "",
                    "title": "Daniel Judd’s Interesting Software Blog",
                    "is_tracked": false
                }
            },
            "cooldown": {
                "empty_attempts": 1,
                "next_allowed_at": "2026-03-26T15:04:19+00:00",
                "reason": "Recent intelligence runs produced no qualified third-party evidence, so retries are cooled down to save budget.",
                "provider_retry_at": "",
                "last_reason": "post-crawl"
            },
            "debug": {
                "top_supporting_facts": [],
                "top_positive_facts": [],
                "ignored_candidates": [],
                "budget_ms": 4200,
                "search_budget_ms": 1600,
                "review_budget_ms": 2600,
                "search_mode": "post-crawl",
                "query_cap": 2,
                "provider_cap": 1,
                "result_cap": 6,
                "review_document_cap": 4,
                "reason": "post-crawl",
                "priority": 92,
                "eligibility_decision": "run_normal",
                "provider_statuses": {
                    "safebrowsing": "disabled",
                    "abuseipdb": "ok",
                    "ipinfo": "ok",
                    "censys": "disabled",
                    "sslmate": "error"
                }
            },
            "last_good": {
                "checked_at": "2026-03-19T15:04:19+00:00",
                "summary": "External checks ran, but the verified result set was still too sparse to harden the verdict.",
                "decision": {
                    "state": "insufficient",
                    "uncertainty": true,
                    "candidate_support": 0,
                    "candidate_contradiction": 0,
                    "supports": {
                        "dangerous": false,
                        "scam": false,
                        "spam": false,
                        "nsfw": false,
                        "trusted": false
                    },
                    "evidence_quality": "low",
                    "state_label": "Inconclusive",
                    "state_reason": "Public search did not yield usable third-party matches, so the system fell back to first-party inspection only."
                },
                "signals": {
                    "scores": {
                        "legit": 0,
                        "safe": 0,
                        "trusted": 0,
                        "caution": 0,
                        "scam": 0,
                        "dangerous": 0,
                        "spam": 0,
                        "nsfw": 0
                    },
                    "counts": {
                        "official_presence": 0,
                        "business_profiles": 0,
                        "positive_reviews": 0,
                        "negative_reviews": 0,
                        "scam_reports": 0,
                        "dangerous_reports": 0,
                        "spam_reports": 0,
                        "adult_reports": 0
                    },
                    "candidate_support": 0,
                    "candidate_contradiction": 0,
                    "highlights": [
                        "IPinfo resolved the primary IP to US on AS54113.",
                        "External evidence remained inconclusive because diversity, exact matching, or confidence was still too weak."
                    ]
                },
                "citations": [
                    {
                        "title": "AbuseIPDB IP reputation check",
                        "url": "https://docs.abuseipdb.com/",
                        "host": "docs.abuseipdb.com",
                        "snippet": "Primary IP 185.199.108.153 scored 30/100 with 11 report(s).",
                        "source_type": "api_reputation"
                    },
                    {
                        "title": "IPinfo IP enrichment",
                        "url": "https://ipinfo.io/developers",
                        "host": "ipinfo.io",
                        "snippet": "Primary IP 185.199.108.153 geolocates to US.",
                        "source_type": "ip_enrichment"
                    }
                ]
            }
        },
        "external_decision": {
            "state": "insufficient",
            "uncertainty": true,
            "candidate_support": 0,
            "candidate_contradiction": 0,
            "supports": {
                "dangerous": false,
                "scam": false,
                "spam": false,
                "nsfw": false,
                "trusted": false
            },
            "evidence_quality": "low",
            "state_label": "Inconclusive",
            "state_reason": "Public search did not yield usable third-party matches, so the system fell back to first-party inspection only."
        },
        "signal_scores": [
            {
                "label": "Strongest tag heuristic",
                "value": "T · 76%",
                "tone": "good",
                "detail": "The highest raw tag match from the heuristic engine before visibility thresholds and manual overrides."
            },
            {
                "label": "Trust score",
                "value": "46/100",
                "tone": "caution",
                "detail": "Confidence derived from authority, crawl quality, stability, and risk signals."
            },
            {
                "label": "Authority score",
                "value": "51/100",
                "tone": "caution",
                "detail": "A higher authority score usually means broader reputation and backlink confidence."
            },
            {
                "label": "Spam risk",
                "value": "0/100",
                "tone": "good",
                "detail": "Lower is better. This blends spam indicators with false-positive protections for legitimate sites."
            },
            {
                "label": "Quality score",
                "value": "92/100",
                "tone": "good",
                "detail": "Based on crawl quality, content completeness, and technical evidence."
            },
            {
                "label": "Safety score",
                "value": "100/100",
                "tone": "good",
                "detail": "Higher is safer. Direct fraud signals can heavily cap this even when SEO signals look strong."
            },
            {
                "label": "Fraud score",
                "value": "0/100",
                "tone": "good",
                "detail": "Lower is better. This reflects phishing, drainer, fake-support, fake-shop, and malware signals."
            },
            {
                "label": "Infrastructure risk",
                "value": "7/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": "4.9 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": "2,944",
                        "tone": "good",
                        "detail": "Very short renewal windows can be a weak trust signal."
                    },
                    {
                        "label": "Registrar / ownership changes",
                        "value": "0 / 0",
                        "tone": "good",
                        "detail": "Frequent ownership churn can weaken trust."
                    },
                    {
                        "label": "Nameserver changes",
                        "value": "0",
                        "tone": "good",
                        "detail": "Repeated infrastructure changes can indicate instability."
                    },
                    {
                        "label": "DNSSEC / privacy",
                        "value": "DNSSEC on · privacy off",
                        "tone": "good",
                        "detail": "DNSSEC strengthens DNS trust; privacy is neutral on its own."
                    }
                ]
            },
            {
                "title": "Reputation & search evidence",
                "items": [
                    {
                        "label": "Backlinks",
                        "value": "1",
                        "tone": "unknown",
                        "detail": "Broader backlink evidence usually improves confidence."
                    },
                    {
                        "label": "Referring domains",
                        "value": "1",
                        "tone": "unknown",
                        "detail": "Unique linking domains are more useful than raw link volume."
                    },
                    {
                        "label": "Organic keywords",
                        "value": "74",
                        "tone": "caution",
                        "detail": "Search footprint helps distinguish real sites from thin shells."
                    },
                    {
                        "label": "Indexed pages",
                        "value": "25",
                        "tone": "caution",
                        "detail": "Larger index coverage usually means more evidence to classify from."
                    },
                    {
                        "label": "Brand strength",
                        "value": "65/100",
                        "tone": "good",
                        "detail": "Stronger brand signals reduce false positives for legitimate sites."
                    },
                    {
                        "label": "Risk label",
                        "value": "SUSPICIOUS",
                        "tone": "caution",
                        "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 · 155 ms",
                        "tone": "good",
                        "detail": "Slow or broken technical signals weaken confidence."
                    },
                    {
                        "label": "Content words",
                        "value": "162",
                        "tone": "caution",
                        "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": "15 internal · 2 external",
                        "tone": "good",
                        "detail": "Link patterns help detect thin directories and promo pages."
                    },
                    {
                        "label": "Page speed / mobile",
                        "value": "100/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": "Public search did not yield usable third-party matches, so the system fell back to first-party inspection only."
                    },
                    {
                        "label": "Evidence quality",
                        "value": "Low",
                        "tone": "unknown",
                        "detail": "Blends source trust, domain matching, evidence diversity, and freshness."
                    },
                    {
                        "label": "Support vs contradiction",
                        "value": "0 / 0",
                        "tone": "unknown",
                        "detail": "Compares how much structured external evidence supports the candidate tag against evidence that contradicts it."
                    },
                    {
                        "label": "Qualified risk sources",
                        "value": "No",
                        "tone": "good",
                        "detail": "Risk tags only promote from external evidence when source diversity or source trust thresholds are met."
                    },
                    {
                        "label": "Uncertainty buffer",
                        "value": "Active",
                        "tone": "caution",
                        "detail": "Prevents thin or mixed external evidence from forcing a stronger tag than the evidence can justify."
                    }
                ]
            }
        ],
        "positives": [
            "Established domain age: 4.9 years.",
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness.",
            "DNSSEC is enabled."
        ],
        "risks": [
            "The domain uses a lower-trust TLD commonly seen in throwaway abuse.",
            "External evidence was mixed or sparse, so the tag model keeps an uncertainty buffer instead of overcommitting."
        ]
    },
    "traffic_confidence": 63,
    "whois": {
        "current": {
            "id": 36835,
            "domain": "danieljudd.xyz",
            "source_type": "rdap",
            "rdap_url": "https://rdap.centralnic.com/xyz/domain/danieljudd.xyz",
            "registrar_name": "Porkbun, LLC",
            "registrar_handle": "1861",
            "registrant_name": "",
            "registrant_org": "",
            "registrant_country": "",
            "registrant_email": "",
            "abuse_email": "abuse@porkbun.com",
            "created_date": "2021-05-07 13:38:55",
            "updated_date": "2026-03-19 15:04:17",
            "expires_date": "2034-05-07 23:59:59",
            "nameservers_json": "[\"curitiba.ns.porkbun.com\",\"fortaleza.ns.porkbun.com\",\"maceio.ns.porkbun.com\",\"salvador.ns.porkbun.com\"]",
            "status_json": "[\"client delete prohibited\",\"client transfer prohibited\"]",
            "dnssec": "signed",
            "privacy_protected": 0,
            "content_hash": "21f074ab5dd5014f15b21581c2ae01eaf8cfef0ef182ee78b37d704f0e9a31ad",
            "history_count": 1,
            "last_checked_at": "2026-03-19 15:04:17",
            "last_changed_at": "2026-03-19 15:04:17",
            "created_at": "2026-03-19 15:04:18",
            "updated_at": "2026-03-19 15:04:18"
        },
        "history": [
            {
                "id": 37667,
                "domain": "danieljudd.xyz",
                "source_type": "rdap",
                "registrar_name": "Porkbun, LLC",
                "registrar_handle": "1861",
                "registrant_name": "",
                "registrant_org": "",
                "registrant_country": "",
                "registrant_email": "",
                "abuse_email": "abuse@porkbun.com",
                "created_date": "2021-05-07 13:38:55",
                "updated_date": "2026-03-19 15:04:17",
                "expires_date": "2034-05-07 23:59:59",
                "nameservers_json": "[\"curitiba.ns.porkbun.com\",\"fortaleza.ns.porkbun.com\",\"maceio.ns.porkbun.com\",\"salvador.ns.porkbun.com\"]",
                "status_json": "[\"client delete prohibited\",\"client transfer prohibited\"]",
                "dnssec": "signed",
                "privacy_protected": 0,
                "content_hash": "21f074ab5dd5014f15b21581c2ae01eaf8cfef0ef182ee78b37d704f0e9a31ad",
                "checked_at": "2026-03-19 15:04:17",
                "change_summary": "Initial WHOIS snapshot captured.",
                "created_at": "2026-03-19 15:04:17"
            }
        ],
        "signals": {
            "age_years": 4.9,
            "days_to_expiry": 2944,
            "days_since_last_registry_update": 27,
            "stability_score": 100,
            "registrar_changes": 0,
            "ownership_changes": 0,
            "nameserver_changes": 0,
            "status_changes": 0,
            "history_entries": 1,
            "privacy_protected": false,
            "dnssec_enabled": true,
            "has_registrant_country": false,
            "registrant_country": "",
            "nameserver_count": 4,
            "status_count": 2
        }
    },
    "discovered_domain": {
        "id": 100887,
        "domain": "danieljudd.xyz",
        "first_seen_at": "2026-03-15 22:03:39",
        "last_crawled_at": "2026-03-19 15:04:21",
        "last_title": "Daniel Judd’s Interesting Software Blog",
        "last_http_status": 200,
        "discovered_from_domain": "1mb.club",
        "depth": 0,
        "backlinks_count": 1,
        "rating_cache": 57,
        "spam_score": 46,
        "risk_label": "suspicious",
        "category_name": "Personal: Portfolios & CVs",
        "primary_country_code": "",
        "internal_links_count": 15,
        "external_links_count": 2,
        "social_profiles_count": 1,
        "content_word_count": 162,
        "title_quality_score": 93,
        "has_meta_description": 1,
        "has_h1": 1,
        "language_code": "en",
        "response_time_ms": 155,
        "robots_status": 200,
        "sitemap_status": 200,
        "sitemap_total_urls": 25,
        "quality_score": 92,
        "site_name": "",
        "canonical_domain": "",
        "favicon_present": 1,
        "schema_org_count": 0,
        "noindex_detected": 0,
        "feed_links_count": 1,
        "https_working": 1,
        "estimated_authority_score": 38,
        "trust_score": 96,
        "nsfw_score": 0,
        "overall_rank_estimate": 16579,
        "primary_tag": "Uncertain",
        "tag_codes": "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": 50,
        "infrastructure_risk_score": 7,
        "score_confidence": 100,
        "tag_confidence": 72,
        "category_confidence": 88,
        "deep_crawl_pages": 23,
        "resolved_ip": "185.199.111.153",
        "category_candidates_json": "[{\"category\":\"Personal: Portfolios & CVs\",\"score\":88}]",
        "page_signals_json": "[{\"path\":\"/about\",\"status\":200,\"title\":\"About me | Daniel Judd’s Interesting Software Blog\",\"word_count\":237,\"summary_text\":\"About me | Daniel Judd’s Interesting Software Blog About me | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; About me I am from the United Kingdom (Wales) and I blog about my thoughts, experience, and solutions to problems in technology, software, efficiency, accessibility at my website&rsquo;s blog section. The use of tools such as Markdown, Hugo and Git let me post content quickly and easily here. I have been involved with web design since 2017 and have been actively developing and publishing these works on my personal GitHub page. I then explain my methods and analysis in my projects posts. Future Goals for Me Start a business/career in the field Do more side projects (exploring new software) Pursuit of valuable niches Website Goals I am actively publishing on this website in\",\"classification_terms\":[\"about\",\"about me\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/blog\",\"status\":200,\"title\":\"Blog | Daniel Judd’s Interesting Software Blog\",\"word_count\":119,\"summary_text\":\"Blog | Daniel Judd’s Interesting Software Blog Blog | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; Blog Arm Outside of Mobile Computers 22 Mar 2025 AI Detectors 22 Oct 2024 Learning to Type Again 10 Apr 2024 How I use SEO in Hugo 03 Apr 2024 Why I Don&#39;t Use Vim 27 Mar 2024 Why UK Companies Should Hire Remote Software Developers 08 Mar 2024 QR Code Security is Not Being Talked About Enough 04 Mar 2024 TPM Chips on Motherboards in 2025 30 Dec 2023 Why do Electron Applications Use So Much CPU? 27 Oct 2022 My New Site 02 Jul 2022 E-mail 📧 | Github 🐱‍💻 | Subscribe to RSS 👨🏻‍💻 © danieljudd.xyz 2025\",\"classification_terms\":[\"blog\",\"about\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/projects\",\"status\":200,\"title\":\"Projects | Daniel Judd’s Interesting Software Blog\",\"word_count\":112,\"summary_text\":\"Projects | Daniel Judd’s Interesting Software Blog Projects | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; Projects Also feel free to visit my GitHub website or contact me below via E-mail. How to Connect Microsoft SQL Server Database to Python 22 Jun 2024 What I learned - Watering System Using Raspberry Pi 01 Mar 2024 Motivation Tracker 15 Feb 2024 Mobile Diary Project 03 Oct 2022 Hugo Theme (bubblegasket) 16 Aug 2022 Addon for Tiling Window Managers (dwm, i3, etc) 25 Jun 2022 Quote Generator 18 Jun 2022 My Old (Ultra-Modern) Portfolio Page 18 Jun 2022 E-mail 📧 | Github 🐱‍💻 | Subscribe to RSS 👨🏻‍💻 © danieljudd.xyz 2025\",\"classification_terms\":[\"projects\",\"about\",\"contact\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/donate\",\"status\":200,\"title\":\"Donate | Daniel Judd’s Interesting Software Blog\",\"word_count\":45,\"summary_text\":\"Donate | Daniel Judd’s Interesting Software Blog Donate | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; Donate Ko-fi kofiwidget2.init('Support Me on Ko-fi', '#29abe0', 'P5P0V8PGX');kofiwidget2.draw(); buymeacoffee BTC address: bc1qgmawlrmnxhwaq6stp9vgmxk69y7uy0pkswp8l7 PayPal: E-mail 📧 | Github 🐱‍💻 | Subscribe to RSS 👨🏻‍💻 © danieljudd.xyz 2025\",\"classification_terms\":[\"donate\",\"about\",\"support\",\"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\":1,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[\"ko-fi.com\"],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/blog/arm/\",\"status\":200,\"title\":\"Arm Outside of Mobile Computers | Daniel Judd’s Interesting Software Blog\",\"word_count\":1529,\"summary_text\":\"Arm Outside of Mobile Computers | Daniel Judd’s Interesting Software Blog Arm Outside of Mobile Computers | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; Arm Outside of Mobile Computers Posted: 22 March 2025 Firstly, I want to clarify that Apple does not have primary ownership over Arm (if at all), but they have a deal with SoftBank&rsquo;s Arm company to produce their own Arm chips which are called Apple Silicon. SoftBank&rsquo;s ownership lies in Japan but Arm was established in England in 1990 (previously named Widelogic Limited and then Advanced RISC Machines Limited). I&rsquo;ve been using an Apple Silicon CPU for some time now and found this sufficiently stable for general computing tasks. But what is driving the recent popularity of Arm architecture on the desktop? In my view, Arm has the poten\",\"classification_terms\":[\"blog/arm\",\"about\",\"company\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/blog/ai-detectors/\",\"status\":200,\"title\":\"AI Detectors | Daniel Judd’s Interesting Software Blog\",\"word_count\":548,\"summary_text\":\"AI Detectors | Daniel Judd’s Interesting Software Blog AI Detectors | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; AI Detectors Posted: 22 October 2024 One thing I have pondered for some time is how artificial intelligence (AI) will shape the future of online content. Many people initially showcased ChatGPT&rsquo;s generative AI on YouTube and narrated some scene written by AI and suggest these are not so different from a person. This is because in 2024 we have two forms of media that is at first glance difficult to distinguish between being generated from AI or man-made: writing and images. There are two ways of detecting AI generated content that are popular, these are: visible or invisible watermarking, and AI detection tools. Detection tools are simply software for deciphering\",\"classification_terms\":[\"blog/ai-detectors\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/projects/ms-sql-server-python-database/\",\"status\":200,\"title\":\"How to Connect Microsoft SQL Server Database to Python | Daniel Judd’s Interesting Software Blog\",\"word_count\":308,\"summary_text\":\"How to Connect Microsoft SQL Server Database to Python | Daniel Judd’s Interesting Software Blog How to Connect Microsoft SQL Server Database to Python | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; How to Connect Microsoft SQL Server Database to Python Posted: 22 June 2024 Purpose # I am attending a coding academy and wanted to show my class a presentation on how to set-up software for connecting to a SQL database using Visual Studio Code, MS SQL server, and Python 3 (hence no formalities). I didn&rsquo;t want to use my local Microsoft account for authentication for security reasons, this also requires disabling SSL encryption (as shown in the code) - if you are just doing local testing then this is fine. Many tutorials exist but are very unclear or don&rsquo;t show how this is done, so I recorded the video below to show\",\"classification_terms\":[\"projects/ms-sql-server-python-database\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/blog/learning-to-type-vimium/\",\"status\":200,\"title\":\"Learning to Type Again | Daniel Judd’s Interesting Software Blog\",\"word_count\":1629,\"summary_text\":\"Learning to Type Again | Daniel Judd’s Interesting Software Blog Learning to Type Again | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; Learning to Type Again Posted: 10 April 2024 In a previous post I stated I don&rsquo;t use VIM in daily life and I think I could incorporate a surprising number of big changes this month or year into my typing habits that would undo previous years of contentment and improve about 90% of the work I do. Why Typing as a Professional Skill is In Trouble # I met someone years ago who applied for jobs only owning and using a mobile phone and I thought this was extremely unusual and now I feel like a minority who still can&rsquo;t write seriously on any digital device other than a desktop computer with a physical keyboard. This person was the first instance that mad\",\"classification_terms\":[\"blog/learning-to-type-vimium\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/blog/how-to-seo-hugo/\",\"status\":200,\"title\":\"How I use SEO in Hugo | Daniel Judd’s Interesting Software Blog\",\"word_count\":1540,\"summary_text\":\"How I use SEO in Hugo | Daniel Judd’s Interesting Software Blog How I use SEO in Hugo | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; How I use SEO in Hugo Posted: 3 April 2024 Table of Contents # The Problem With SEO Discovery Why Correct an SEO Problem for a Small Blog? I Misused Tags in Hugo Posts Hugo SEO and Google Lighthouse Hugo File Size and Speed Rankings More Explicit Sitemap and RSS Feed Tagging Generate Your Meta Tags Hugo Templates Aren&rsquo;t Always Optimised for Search Engines Results Why Use a Static Site Generator Like Hugo for SEO? The Problem With SEO Discovery # Initially, I didn&rsquo;t know how to open up my bespoke Hugo-generated website to search engines in the best way because I misjudged their capabilities to crawl plain pages. SEO discovery was one of the aspects\",\"classification_terms\":[\"blog/how-to-seo-hugo\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":1,\"depth\":1},{\"path\":\"/blog/why-i-dont-use-vim/\",\"status\":200,\"title\":\"Why I Don't Use Vim | Daniel Judd’s Interesting Software Blog\",\"word_count\":826,\"summary_text\":\"Why I Don't Use Vim | Daniel Judd’s Interesting Software Blog Why I Don&#39;t Use Vim | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; Why I Don&#39;t Use Vim Posted: 27 March 2024 This is a contentious and nerdy topic to write about but I don&rsquo;t use Vim (or neovim, helix, emacs, etc&hellip;) for editing files, even on GNU + Linux. First of all, I didn&rsquo;t know any better and had no memorable influence from computer-knowledgeable people growing up a generation before me. Everything ran on Windows operating systems and was made in Visual Basic for all I knew. I didn&rsquo;t start using personal computers until maybe the late 90s or early 2000s and by then the GUI was ubiquitous. A gentoo-based distribution was my first non-Windows operating system and shortly after I used Ubuntu. Ab\",\"classification_terms\":[\"blog/why-i-dont-use-vim\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/blog/developerhire/\",\"status\":200,\"title\":\"Why UK Companies Should Hire Remote Software Developers | Daniel Judd’s Interesting Software Blog\",\"word_count\":803,\"summary_text\":\"Why UK Companies Should Hire Remote Software Developers | Daniel Judd’s Interesting Software Blog Why UK Companies Should Hire Remote Software Developers | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; Why UK Companies Should Hire Remote Software Developers Posted: 8 March 2024 Modified: 23 March 2024 Stick with this post, I&rsquo;ll be giving a lot of opinion throughout. 1. Culture of the Company # Companies that hire remote software developers often have a strong work culture. Remote workers take advantage of being spread across time zones e.g., GitLab, Sprinklr, Mailbird, etc — these are able to handle constant problems around the clock. Bigger list of &ldquo;Remote Work Companies&rdquo; To do this, systems such as E-mail communication is used to communicate and workers can now be involved in video meetings, allowing them\",\"classification_terms\":[\"blog/developerhire\",\"about\",\"company\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/blog/qrcodes/\",\"status\":200,\"title\":\"QR Code Security is Not Being Talked About Enough | Daniel Judd’s Interesting Software Blog\",\"word_count\":620,\"summary_text\":\"QR Code Security is Not Being Talked About Enough | Daniel Judd’s Interesting Software Blog QR Code Security is Not Being Talked About Enough | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; QR Code Security is Not Being Talked About Enough Posted: 4 March 2024 Modified: 23 March 2024 What Are QR Codes and the Issues # QR codes or quick-response codes were made by a Japanese company in 1994. Since then, use outside of big businesses has become more commonplace since 2020. They are usually appear more commonly on menus, leaflets, billboards, adverts, job adverts, consumer products and more. These are there to replace text Uniform Resource Locators (URLs) because they can be difficult to type in a short amount of time and can eliminate typo frustration. Image source The issue with QR codes is security because they are eas\",\"classification_terms\":[\"blog/qrcodes\",\"about\",\"company\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/projects/watering/\",\"status\":200,\"title\":\"What I learned - Watering System Using Raspberry Pi | Daniel Judd’s Interesting Software Blog\",\"word_count\":745,\"summary_text\":\"What I learned - Watering System Using Raspberry Pi | Daniel Judd’s Interesting Software Blog What I learned - Watering System Using Raspberry Pi | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; What I learned - Watering System Using Raspberry Pi Posted: 1 March 2024 Languages: Python, MicroPython System: Raspberry Pi Pico W GitHub link to project code and technical documentation What Was the Problem # Many gardeners own greenhouses in their gardens such as a lean to greenhouse or mini greenhouses. One of my Raspberry Pi Pico W projects aims to sit inside a portable box using my 2.4GHz wireless network to report any issues inside the environment (or microclimate) such as temperature, relative humidity, soil moisture content, light levels. These are then used to continually send and update graph data viewable on a separate\",\"classification_terms\":[\"projects/watering\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/projects/motivation/\",\"status\":200,\"title\":\"Motivation Tracker | Daniel Judd’s Interesting Software Blog\",\"word_count\":308,\"summary_text\":\"Motivation Tracker | Daniel Judd’s Interesting Software Blog Motivation Tracker | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; Motivation Tracker Posted: 15 February 2024 Languages: HTML, CSS, JavaScript Link to project I designed a short application to help me prioritise a list of meaningful and personal goals, often numerous and also short term targets. The idea came from me drawing up a list of things I wanted to accomplish in the week ahead, always scribbled on paper, and this created an easily outdated paper trail because priorities were shifting regularly. To accomplish these tasks I wrote the things that were most beneficial and valuable to me, like writing, programming, reading. As I mentioned, this had been difficult on paper and also I felt a spreadsheet was also a bit &ldquo;h\",\"classification_terms\":[\"projects/motivation\",\"about\",\"help\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":1},{\"path\":\"/blog/tpm-chips/\",\"status\":200,\"title\":\"TPM Chips on Motherboards in 2025 | Daniel Judd’s Interesting Software Blog\",\"word_count\":424,\"summary_text\":\"TPM Chips on Motherboards in 2025 | Daniel Judd’s Interesting Software Blog TPM Chips on Motherboards in 2025 | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; TPM Chips on Motherboards in 2025 Posted: 30 December 2023 In 2025 Windows 10 will reach end of life in their consumer-level operating systems and the only viable alternative in the Microsoft space is using Windows 11 or if it&rsquo;s released; Windows 12. More critically, the requirements to install Windows 11 currently is having a hardware module called the &ldquo;Trusted Module Platform (TPM)&rdquo; that supposedly enhances security for users that use full disk encryption or just use cryptography in general. Having attempted to repair a Microsoft Surface laptop recently that one of my friend owns, they have made boot and bluescreen repair attemp\",\"classification_terms\":[\"blog/tpm-chips\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":2},{\"path\":\"/blog/whyelectron/\",\"status\":200,\"title\":\"Why do Electron Applications Use So Much CPU? | Daniel Judd’s Interesting Software Blog\",\"word_count\":582,\"summary_text\":\"Why do Electron Applications Use So Much CPU? | Daniel Judd’s Interesting Software Blog Why do Electron Applications Use So Much CPU? | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; Why do Electron Applications Use So Much CPU? Posted: 27 October 2022 What Is Electron? # Electron is a framework for creating mobile and desktop applications and enables cross-platform (hybrid) applications to be built quickly. It uses JavaScript, HTML and CSS to build the logic, interface and style just like a webpage. Bundled with any electron application is the Chromium browser engine which means it shares similar vulnerabilities and bugs to Chromium-based browsers as listed here. Electron Is Slow. # Slow is a relative term, so when I say &ldquo;slow&rdquo; I mean compared to every other process I have running, and by the way; this\",\"classification_terms\":[\"blog/whyelectron\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":2},{\"path\":\"/blog/mysite/\",\"status\":200,\"title\":\"My New Site | Daniel Judd’s Interesting Software Blog\",\"word_count\":805,\"summary_text\":\"My New Site | Daniel Judd’s Interesting Software Blog My New Site | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; My New Site Posted: 2 July 2022 Modified: 18 July 2022 New Website # Straight to the point: I made my site with a Hugo template I will be released soon after I am happy with it It will be GPLV3 Why GPLV3? # &ldquo;&hellip;if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.&rdquo; Source: GPL-3.0 I have yet to find any publicly available themes that are not MIT licensed at Hugo&rsquo;s own website (i.e., self published) and It would help if Hugo did\",\"classification_terms\":[\"blog/mysite\",\"about\",\"terms\",\"help\",\"blog\",\"source code\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":2},{\"path\":\"/projects/diary/\",\"status\":200,\"title\":\"Mobile Diary Project | Daniel Judd’s Interesting Software Blog\",\"word_count\":235,\"summary_text\":\"Mobile Diary Project | Daniel Judd’s Interesting Software Blog Mobile Diary Project | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; Mobile Diary Project Posted: 3 October 2022 Languages: HTML, JavaScript This was a final module project that allows users to document their visit to a particular hotel. The technical appeal for users carrying this web application (often in their phone) is that it works similar to a &rsquo;thick&rsquo; client and organizes text and/or image information conveniently with help of JS processing and storing objects in the device&rsquo;s browser. Images get converted to base64 which has the advantage of using the same storage space as text, not having images overwrite each other and can reduce network transit problems. No upper limits are placed on the number of entr\",\"classification_terms\":[\"projects/diary\",\"about\",\"help\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":2},{\"path\":\"/projects/hugotheme/\",\"status\":200,\"title\":\"Hugo Theme (bubblegasket) | Daniel Judd’s Interesting Software Blog\",\"word_count\":273,\"summary_text\":\"Hugo Theme (bubblegasket) | Daniel Judd’s Interesting Software Blog Hugo Theme (bubblegasket) | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; Hugo Theme (bubblegasket) Posted: 16 August 2022 The theme that this website uses is released publicly at my Github page here along with relevant information in the README file. I would like to say this is an ongoing project so I have added updates including: Archive functionality Smaller .svg files A comprehensive template like I use Accomplishments # Smooth and easy to build using Hugo+GoLang Absolutely TINY websites (https://1mb.club/ 63rd place at 7.5kB)&hellip; and roughly 99% w3c compliant (explained below) Mobile Test # Style Choice and Breakages # Firstly # Currently the website uses an emoji hack to render non-images in place of a favicon. This ha\",\"classification_terms\":[\"projects/hugotheme\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":2},{\"path\":\"/projects/tilingcomplement/\",\"status\":200,\"title\":\"Addon for Tiling Window Managers (dwm, i3, etc) | Daniel Judd’s Interesting Software Blog\",\"word_count\":234,\"summary_text\":\"Addon for Tiling Window Managers (dwm, i3, etc) | Daniel Judd’s Interesting Software Blog Addon for Tiling Window Managers (dwm, i3, etc) | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; Addon for Tiling Window Managers (dwm, i3, etc) Posted: 25 June 2022 Language: Bash This is a bash script compatible with modern GNU/Linux operating systems. Two challenges with this application: Script breaks if parts are not written 100% correct. The script can generate too many weather API calls so it had to be restricted to a reasonable interval out of respect of the host provider. If I had the spark to justify refactoring this code I would: Write functions might not be useful without many (linked) bash scripts could make the script unreasonably bigger but logically the same might be better to use a different language to automate\",\"classification_terms\":[\"projects/tilingcomplement\",\"about\",\"api\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":2},{\"path\":\"/projects/quotegen/\",\"status\":200,\"title\":\"Quote Generator | Daniel Judd’s Interesting Software Blog\",\"word_count\":140,\"summary_text\":\"Quote Generator | Daniel Judd’s Interesting Software Blog Quote Generator | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; Quote Generator Posted: 18 June 2022 A basic 2017 project to use JQuery and other languages as a model-view-controller architecture. It is messy because the quotes and authors are pre-defined parallel arrays. You will also notice how you can hit random and reach the same quote as nothing seems to change. Languages used: HTML5 CSS3 JQuery 3.1.1 https://codepen.io/danieljudd/pen/oWLJEJ Addon for Tiling... » My Old... » var disqus_config = function () { this.page.url = \\\"https://danieljudd.xyz/projects/quotegen/\\\"; this.page.identifier = \\\"/projects/quotegen/\\\"; }; (function() { var d = document, s = d.createElement('script'); s.src = 'https://danieljudd-xyz.disqus.com/emb\",\"classification_terms\":[\"projects/quotegen\",\"about\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":2},{\"path\":\"/projects/prevsite/\",\"status\":200,\"title\":\"My Old (Ultra-Modern) Portfolio Page | Daniel Judd’s Interesting Software Blog\",\"word_count\":154,\"summary_text\":\"My Old (Ultra-Modern) Portfolio Page | Daniel Judd’s Interesting Software Blog My Old (Ultra-Modern) Portfolio Page | Daniel Judd’s Interesting Software Blog 💭 About ✍️ Blog 🗃️ Projects ️💲 Donate 📓 ePaper technology ⤴&#xFE0E; My Old (Ultra-Modern) Portfolio Page Posted: 18 June 2022 My old portfolio page is something I wrote entirely from scratch circa 2017 as a static site. The theme I was trying to achieve was the &ldquo;modern&rdquo; website that appeared everywhere at this time. If I were to replicate this today, I would use a flexbox layout with a grid at the bottom for images (https://developer.mozilla.org/en-US/docs/Web/CSS/display). Languages used: Bootstrap version 3.36 HTML5 CSS3 https://codepen.io/danieljudd/pen/aZOPBv Quote Generator » var disqus_config = function () { this.page.url = \\\"https://danieljudd.xyz/projects/prevsite/\\\"; this.page.identifier = \\\"/p\",\"classification_terms\":[\"projects/prevsite\",\"about\",\"docs\",\"blog\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":2},{\"path\":\"/motivationtracker.html\",\"status\":200,\"title\":\"Motivation Tracker\",\"word_count\":388,\"summary_text\":\"Motivation Tracker Motivation Tracker body { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; padding: 10px; } .bar-container { display: flex; flex-direction: column; align-items: center; } .bar { width: 30px; height: 200px; position: relative; cursor: pointer; } .fill { position: absolute; width: 100%; bottom: 0; } input[type=\\\"text\\\"] { margin-top: 10px; width: 10em; text-align: center; transition: width 0.2s ease-in-out; } input[type=\\\"text\\\"]:focus { width: 25em; } #addBarBtn { height: 40px; align-self: center; } #author { font-family: sans-serif; width: 100%; background-color:lightblue; border-radius: 50px; text-align: center; } Motivation Tracker Author's Github Application remembers data when you drag a bar CTRL+D to bookmark app Add Bar document.getElementById('addBarBtn').addEventListen\",\"classification_terms\":[\"motivationtracker.html\"],\"external_refs\":[],\"password_input_count\":0,\"email_input_count\":0,\"tel_input_count\":0,\"otp_term_count\":0,\"login_form_count\":0,\"checkout_form_count\":0,\"wallet_prompt_count\":0,\"offdomain_form_actions\":0,\"suspicious_script_refs_count\":0,\"external_script_hosts\":[],\"executable_download_count\":0,\"archive_download_count\":0,\"apk_download_count\":0,\"phone_number_count\":0,\"depth\":2}]",
        "score_reasons_json": "[]",
        "route_domain": "danieljudd.xyz",
        "display_domain": "danieljudd.xyz"
    },
    "explainability": {
        "summary": "danieljudd.xyz currently scores 42/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": "caution",
                "detail": "63/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": "+15.3",
                "tone": "caution",
                "detail": "Authority, search visibility, reach, engagement, and registry stability. Current subsystem score: 45/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": "-37.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 42/100",
                "tone": "caution",
                "detail": "121 monthly visitors, 74 organic keywords, brand completeness 65/100, engagement 80/100."
            },
            {
                "label": "Backlink and search evidence",
                "value": "1 referring domains",
                "tone": "good",
                "detail": "1 backlinks across 1 referring domains. Diversity 92/100; spam penalty 0."
            },
            {
                "label": "Registry and domain stability",
                "value": "4.9 years old",
                "tone": "good",
                "detail": "Stability 100/100 · age 4.9 years · registrar Porkbun, LLC · expires in 2,944 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: 4.9 years.",
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness.",
            "DNSSEC is enabled.",
            "Registry history looks stable, which supports legitimacy and trust.",
            "HTTPS is working, so the site clears a basic transport-security check."
        ],
        "risks": [
            "The domain uses a lower-trust TLD commonly seen in throwaway abuse.",
            "External evidence was mixed or sparse, so the tag model keeps an uncertainty buffer instead of overcommitting."
        ],
        "freshness": [
            {
                "label": "Crawl evidence",
                "value": "2026-03-19 15:04:21",
                "tone": "risk",
                "detail": "Crawl and page content sample. Age: 27d ago."
            },
            {
                "label": "WHOIS snapshot",
                "value": "2026-03-19 15:04:17",
                "tone": "risk",
                "detail": "Registry profile and stability signals. Age: 27d ago."
            },
            {
                "label": "Keyword view",
                "value": "2026-04-15 20:32:10",
                "tone": "good",
                "detail": "Estimated visibility until tracked keyword snapshots exist. Age: 0s ago."
            },
            {
                "label": "Rank history",
                "value": "2026-04-15 20:32:10",
                "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": 79,
        "fraud_clamp_penalty": 37,
        "final_score": 42
    },
    "insight_snapshot": {
        "version": 1,
        "generated_at": "2026-04-15T20:32:10+00:00",
        "domain": "danieljudd.xyz",
        "display_name": "Daniel Judd’s Interesting Software Blog",
        "is_tracked": false,
        "is_estimated": true,
        "overall_score": 42,
        "authority_score": 49,
        "trust_score": 42,
        "safety_score": 100,
        "fraud_score": 1,
        "confidence_score": 100,
        "traffic_confidence": 63,
        "last_crawled_at": "2026-03-19 15:04:21",
        "crawl_blocked": false,
        "summary": "danieljudd.xyz currently scores 42/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": "caution",
                "detail": "63/100"
            },
            {
                "label": "Crawler access",
                "value": "Clean visibility",
                "tone": "good",
                "detail": null
            }
        ],
        "top_positive_signals": [
            "Established domain age: 4.9 years.",
            "Low registrar / ownership churn with solid registry stability.",
            "Healthy crawl quality and on-page completeness.",
            "DNSSEC is enabled.",
            "Registry history looks stable, which supports legitimacy and trust."
        ],
        "top_risk_signals": [
            "The domain uses a lower-trust TLD commonly seen in throwaway abuse.",
            "External evidence was mixed or sparse, so the tag model keeps an uncertainty buffer instead of overcommitting."
        ],
        "freshness": [
            {
                "label": "Crawl evidence",
                "value": "2026-03-19 15:04:21",
                "tone": "risk",
                "detail": "Crawl and page content sample. Age: 27d ago."
            },
            {
                "label": "WHOIS snapshot",
                "value": "2026-03-19 15:04:17",
                "tone": "risk",
                "detail": "Registry profile and stability signals. Age: 27d ago."
            },
            {
                "label": "Keyword view",
                "value": "2026-04-15 20:32:10",
                "tone": "good",
                "detail": "Estimated visibility until tracked keyword snapshots exist. Age: 0s ago."
            },
            {
                "label": "Rank history",
                "value": "2026-04-15 20:32:10",
                "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-15T23:49:48+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/danieljudd.xyz/refresh",
        "isGuestCooldown": false,
        "cooldownSeconds": 0
    },
    "urlscan_report": {
        "domain": "danieljudd.xyz",
        "status": "error",
        "submitted_at": "2026-03-19T15:04:18+00:00",
        "completed_at": null,
        "last_checked_at": "2026-03-19T15:04:18+00:00",
        "last_error": "Rate limit for 'public' exceeded. Limit is 5000 per day. Reset in 32140 seconds.",
        "submitted_url": "https://danieljudd.xyz/",
        "uuid": "",
        "result_url": "",
        "api_result_url": "",
        "visibility": "public",
        "summary": "urlscan.io scan submission failed.",
        "report": [],
        "report_summary": [],
        "is_fresh": false,
        "can_retry": true,
        "poll_after_seconds": 20
    }
}