Check server response of

Server response
NS records
Whois domain
Response headers
Request headers
Raw HTML code
301 Moved Permanently - admhh.com
HTTP Status: 301
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
Date: Sat, 03 May 2025 12:56:28 GMT
Content-Type: text/html
Content-Length: 167
Connection: keep-alive
Cache-Control: max-age=3600
Expires: Sat, 03 May 2025 13:56:28 GMT
Location: https://admhh.com/
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=rOPa6SwCowGyorhgYjPth7wS%2FjNsgRNGuRoUlW5a9zhHwYW7gC%2FGXQna0x7LBxaeh74VSbJxBRkmmufB%2FffW68hK6C4sctxEczHG%2FPEyTAW91jrjNWFY2PucKDILpWkhU%2FQ5fVcojz4%3D"}],"group":"cf-nel","max_age":604800}
NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
Server: cloudflare
CF-RAY: 939feb2c4bf3eb50-CPH
alt-svc: h3=":443"; ma=86400
server-timing: cfL4;desc="?proto=TCP&rtt=20834&min_rtt=20834&rtt_var=10417&sent=1&recv=3&lost=0&retrans=0&sent_bytes=0&recv_bytes=165&delivery_rate=0&cwnd=249&unsent_bytes=0&cid=0000000000000000&ts=0&x=0"

HTTP Code 301 Moved Permanently

301 status code means that the requested resource has been permanently moved to a new URL. All future requests should use the new address.

When is Code 301 used?

  • When changing a website domain
  • When modifying URL structures
  • When setting up redirects for SEO

What does Code 301 mean for the user?

The browser will automatically redirect the user to the new address, and search engines will update their indexes.

200 OK - https://admhh.com/
HTTP Status: 200
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
Date: Sat, 03 May 2025 12:56:29 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Cf-Cache-Status: DYNAMIC
Server: cloudflare
Vary: Accept-Encoding
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
Referrer-Policy: strict-origin-when-cross-origin
X-Content-Type-Options: nosniff
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=dd92Q0xUfDBGfZ80wPVXxH8TyPIiL1ptt15003Y%2BG6v8zw3wDJYt%2FCt6%2FtmYtxOqraws1xJEJyZ1UGf%2FAVfj0EnKmAhs5z%2BPGpPRby0sX2%2FwS8N%2Bfj7%2B6mKlwApsvev7p8haQiH0ZVc%3D"}],"group":"cf-nel","max_age":604800}
Nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
CF-RAY: 939feb2d0a056df0-CPH

HTTP Code 200 OK

200 status code is a standard successful HTTP server response. It means that the client’s request (e.g., from a browser) was successfully processed, and the server is delivering the requested data.

When is Code 200 used?

  • When loading a web page
  • When successfully receiving an API response
  • When processing a form or another HTTP request

What does Code 200 mean for the user?

The user receives content without errors, and the page or application functions properly. If Code 200 is accompanied by data, the browser or program processes and displays it to the user.

GET / HTTP/1.1
Host: admhh.com
Accept: */*
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
<!DOCTYPE html>

<html lang="en">
<head>
<title>Adam Howard</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

<meta property="og:url" content="https://admhh.com">

<meta name="description" content="A Computer Science graduate from the University of Bath.">

<link rel="icon" href="imgs/favicons/green.png">

<link rel="stylesheet" href="index.css">

<script type="importmap">
    {
      "imports": {
        "three": "https://cdn.jsdelivr.net/npm/[email protected]/build/three.module.js",
        "three/addons/": "https://cdn.jsdelivr.net/npm/[email protected]/examples/jsm/"
      }
    }
</script>

<!-- import mesh-view.js function -->
<script type="02119b18052e9bef4a5439d5-module">

    import { createScene } from "/three-js/mesh-view.js"
    window.createScene = createScene;

</script>

<!-- import p5.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.9.4/p5.min.js" type="02119b18052e9bef4a5439d5-text/javascript"></script>

<script src="/p5-js/sliding-grids.js" defer type="02119b18052e9bef4a5439d5-text/javascript"></script>

<!-- load colour picker script -->
 
<script src="colour-picker.js" type="02119b18052e9bef4a5439d5-text/javascript"></script>

</head>
<body>

<div class="navbar">   
    <div class="link-outer active" id="main-link-outer">
        <button class="link active" id="main-link" onclick="if (!window.__cfRLUnblockHandlers) return false; showPage('main')" data-cf-modified-02119b18052e9bef4a5439d5-="">
            <p class="link-text" id="main-link-text">ADAM HOWARD</p>
        </button>
    </div>

    <div class="link-outer" id="work-link-outer"> 
        <button class="link" id="work-link" onclick="if (!window.__cfRLUnblockHandlers) return false; showPage('work')" data-cf-modified-02119b18052e9bef4a5439d5-="">
            <p class="link-text" id="work-link-text">WORK</p>
        </button>
    </div>
    <div class="link-outer" id="music-link-outer">
        <button class="link" id="music-link" onclick="if (!window.__cfRLUnblockHandlers) return false; showPage('music')" data-cf-modified-02119b18052e9bef4a5439d5-="">
            <p class="link-text" id="music-link-text">MUSIC</p>
        </button>
    </div>
    <div class="link-outer" id="contact-link-outer">
        <button class="link" id="contact-link" onclick="if (!window.__cfRLUnblockHandlers) return false; showPage('contact')" data-cf-modified-02119b18052e9bef4a5439d5-="">
            <p class="link-text" id="contact-link-text">CONTACT</p>
        </button>
    </div>
</div>

<div class="content" id="content">

    <div class="content-container" id="main" style="display: block;">

        <!-- <div class="body-text">
        <svg viewBox="0 0 200 250" xmlns="http://www.w3.org/2000/svg">
            <path d="M70 200 L100 50 L130 200 L115 200 L100 130 L85 200 Z" fill="black" />
          
            <circle cx="100" cy="100" r="50" fill="none" stroke="black" stroke-width="10" />
          
            <circle cx="100" cy="100" r="70" fill="none" stroke="black" stroke-width="10" stroke-dasharray="20" />
          
            <circle cx="100" cy="100" r="90" fill="none" stroke="black" stroke-width="10" stroke-dasharray="20 20" />
          </svg>
        </div> -->

        <div class="map-container">
            <iframe title="Map" src="https://www.google.com/maps/embed?pb=!4v1718916173490!6m8!1m7!1s4jC_4hD2FffnyvyU_6Zk6A!2m2!1d51.47191832062975!2d-0.0934459344137624!3f300.68293509124874!4f-1.9836919319311335!5f0.7820865974627469" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade" class="map"></iframe>
        </div>
        
    </div>


    <div class="content-container" id="work" style="display: none;">

        <div class="body-text">

            <!-- <h1>
                CV
            </h1>

            <p>
                Download CV <a href="files/Adam Howard CV.pdf" target="_blank">here</a>.
            </p> -->

            <h1 id="connections" class="section-head" onclick="if (!window.__cfRLUnblockHandlers) return false; toggleCollapsible('connections')" data-cf-modified-02119b18052e9bef4a5439d5-="">
                Connections
            </h1>

            <div class="content-collapsible" id="connections-collapsible">
            <p>Play some custom games of <a href="https://www.nytimes.com/games/connections" target="_blank">NYT Connections</a>.</p>
            
            <ul>
                <li><a href="/connections/puzzle-1.html" class="colourable">Play Connections 1</a></li>
                <li><a href="/connections/puzzle-2.html" class="colourable">Play Connections 2</a></li>
                <li><a href="/connections/puzzle-3.html" class="colourable">Play Connections 3</a></li>
                <li><a href="/connections/puzzle-4.html" class="colourable">Play Connections 4</a></li>
                <li><a href="/connections/puzzle-5.html" class="colourable">Play Connections 5</a></li>
                <li><a href="/connections/puzzle-6.html" class="colourable">Play Connections 6</a></li>
            </ul>
            </div>

            <h1 id="128kb" class="section-head" onclick="if (!window.__cfRLUnblockHandlers) return false; toggleCollapsible('128kb')" data-cf-modified-02119b18052e9bef4a5439d5-="">
                128kb
            </h1>

            <div class="content-collapsible" id="128kb-collapsible">
            <img class="image-small" style="image-rendering: pixelated;" src="/imgs/sliding-grids.gif" loading="lazy" id="sliding-grids-gif">

            <p>
                "Sliding Grids". 128x128 GIF, 128 frames. Created with <a href="https://p5js.org/" target="_blank">p5.js</a>.
            </p>

            <p>
                Submission for the <a href="https://128kb.timrodenbroeker.de/" target="_blank">128kb exhibition</a> by <a href="https://timrodenbroeker.de/" target="_blank">Tim Rodenbröker</a>.
            </p>

            <p>
                Try it out below!
            </p>

            <div id="sliding-grids-interactive" style="display: flex; align-items: center;">
                <div style="width: 55%;">
                    <canvas class="image-small" id="sliding-grids-canvas" style="margin: auto;"></canvas>
                </div>
                <div style="width:45%; padding: 20px;">
                    <div style="display: flex; flex-direction: column; align-items: center; height: auto; gap: 10px;">


                        <p style="margin: auto; text-align: center;">
                            <input class="text-input" autocomplete="off" id="sliding-grids-pattern-input" type="text" style="width: 100%; margin: auto; text-align: center;" placeholder="Write something"></p>
                        

                        <div style="display: flex; gap: 30px;">
                            <div id="colour-picker-wrapper-sliding-grids-main" style="width: 25px; height: 25px; cursor: pointer; background-color: var(--main-colour); border: 2px solid var(--main-colour);">
                                <input type="color" id="colour-picker-sliding-grids-main"style="width: 25px; height: 25px; cursor: pointer; opacity: 0; border: 2px solid var(--main-colour);">
                            </div>

                            <div id="colour-picker-wrapper-sliding-grids-background" style="width: 25px; height: 25px; cursor: pointer; background-color: var(--secondary-colour); border: 2px solid var(--main-colour);">
                                <input type="color" id="colour-picker-sliding-grids-background"style="width: 25px; height: 25px; cursor: pointer; opacity: 0; border: 2px solid var(--main-colour);">
                            </div>
                        </div>

                        <div id="sliding-grids-play" style="width: 25px; margin: auto;">
                            <svg  xmlns="http://www.w3.org/2000/svg" viewBox="-22 -25 500.88 500.51" style="cursor: pointer;"><title>Play Sequence</title>
                                <path 
                                    d="M393.538,203.629L102.557,5.543c-9.793-6.666-22.468-7.372-32.94-1.832c-10.472,5.538-17.022,16.413-17.022,28.26v396.173    c0,11.846,6.55,22.721,17.022,28.26c10.471,5.539,23.147,4.834,32.94-1.832l290.981-198.087    c8.746-5.954,13.98-15.848,13.98-26.428C407.519,219.477,402.285,209.582,393.538,203.629z"
                                    fill="var(--main-colour)"    
                                />
                            </svg>
                        </div>
                        
                    </div>
                </div>
            </div>
            </div>

            <h1 id="dissertation" class="section-head" onclick="if (!window.__cfRLUnblockHandlers) return false; toggleCollapsible('dissertation')" data-cf-modified-02119b18052e9bef4a5439d5-="">
                Dissertation Project
            </h1>

            <div class="content-collapsible" id="dissertation-collapsible">
            <h2>
                Robust Photometric Stereo for Specular and Shadowed Objects Under Noise
            </h2>

            <p>
                The report for the project can be downloaded <a href="https://admh-dissertation.s3.eu-west-2.amazonaws.com/Dissertation+AH.pdf" target="_blank">here</a>.
            </p>

            <p>
                The accompanying code is available <a href="https://github.com/admhh/robust-photometric-stereo" target="_blank">here</a>.
            </p>
            
            <p>
                Photometric Stereo is a technique concerned with extracting the <i>geometry</i> (normals) of a surface given a series of photographs captured under different lighting directions (<a href="https://www.cs.ubc.ca/~woodham/papers/Woodham80c.pdf" target="_blank">Woodham, 1980</a>). Once a normal field is reconstructed, it can be integrated to give a surface.
            </p>

            <div style="display: flex; align-items: center;">
                <div style="justify-content: center; display: flex; width: 50%;">
                    <p style="margin: auto;" id="frog-input-label">Input [1/20]</p>
                </div>
                <div style="justify-content: center; display: flex; width: 50%;">
                    <p style="margin: auto;">Output</p>
                </div>
            </div>

            <div id="frog-container" style="display: flex; margin-right: 10%; margin-left: 10%; width:80%; justify-content: center;">
                <img src="imgs/frogs/0.png" alt="A photo of a model frog." class="image-small" style="margin-left: 10%; margin-right: 10%; cursor:pointer;" loading="lazy" id="dissertation-frog-image" onclick="if (!window.__cfRLUnblockHandlers) return false; cycleFrog()" data-cf-modified-02119b18052e9bef4a5439d5-="">
            </div>

            <!-- <div style="display: flex; gap: 15px; justify-content: center; width: 100%; align-self: center; padding-top: 20px;"> -->
            <div style="display: flex; flex-direction: column; align-items: center; padding-top: 15px; width: 100%; justify-content: center; gap: 10px;">
                <div style="justify-content: center; display: flex; width: 20%;">
                    <button class="selected" id="frog-original-button" style="font-size: 15px; width: 100px; text-align: center;">Original</button>
                </div>
                <div style="justify-content: center; display: flex; width: 20%;">
                    <button id="frog-corrupted-button" style="font-size: 15px; width: 100px; text-align: center; justify-content: center; display: flex;">Corrupted</button>
                </div>
            </div>

            <p>
                Input images on the left are taken from <a href="https://vision.seas.harvard.edu/qsfs/index.html" target="_blank">Xiong et al., 2012</a> (click image to cycle through). Corrupted versions were generated as part of the project. The reconstructed surface is shown on the right (drag to rotate).
            </p>

            <p>
                The basic photometric stereo method assumes that surfaces are perfectly <i>Lambertian</i>, and as such suffers in the presence of image noise and <i>specular</i> (shiny) surfaces. The project aims to derive, implement and evaluate a robust algorithm on these trickier cases.
                <br><br>
                The codebase contains three main features:
                <ul>
                    <li>A pipeline for "corrupting" images with image noise and specular highlights.</li>
                    <li>A robust Sparse Bayesian Learning solver for Photometric Stereo (<a href="https://ieeexplore.ieee.org/abstract/document/6247691" target="_blank">Ikehata et al., 2012</a>).</li>
                    <li>A normal smoothing algorithm derived from <a href="https://ieeexplore.ieee.org/abstract/document/1310211" target="_blank">Jones, Durand and Zweiker (2004)</a>.</li>
                </ul>
            </p>
            </div>

            <!-- <img src="imgs/admh.jpg" class="image-smaller" style="margin-top: 25px;"> -->

        </div>
        
    </div>


    <div class="content-container" id="music" style="display: none;">
        <div class="body-text">

            <h1 id="music-spotlight" class="section-head" onclick="if (!window.__cfRLUnblockHandlers) return false; toggleCollapsible('spotlight')" data-cf-modified-02119b18052e9bef4a5439d5-="">
                Spotlight
            </h1>

            <div class="content-collapsible" id="spotlight-collapsible">
                <iframe width="100%" height="600" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/2060612940&color=%23ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true&visual=true"></iframe><div style="font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;"><a href="https://soundcloud.com/admh" title="adm" target="_blank" style="color: #cccccc; text-decoration: none;">adm</a> · <a href="https://soundcloud.com/admh/zoning-mix-250322" title="Zoning Mix 250322" target="_blank" style="color: #cccccc; text-decoration: none;">Zoning Mix 250322</a></div>
            </div>

            <h1 id="artist" class="section-head" onclick="if (!window.__cfRLUnblockHandlers) return false; toggleCollapsible('artist')" data-cf-modified-02119b18052e9bef4a5439d5-="">
                Profile
            </h1>        
            
            <div class="content-collapsible" id="artist-collapsible">
            <img src="imgs/amber.jpeg" alt="adm Artist Picture" class="image-small" loading="lazy">

            <div class="icons">
                <!-- spotify -->
                <a href="https://open.spotify.com/artist/0cgkCGZA8SOxUVvg0eTc4k?si=POLiC3HKRN2oZC7ysMNOIw" target="_blank" class="logo-container">
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="25 50 250 250" width="100%" height="100%">
                        <path 
                            d="M 103.569 73.799 L 178.953 30.771 L 179.62 61.791 L 287.358 38.109 L 266.344 150.517 L 304.37 137.175 L 286.691 229.903 L 189.293 274.6 L 207.305 230.57 L 118.579 289.61 L 50.867 256.254 L 71.548 246.581 L 9.84 152.518 L 30.187 160.857 L 25.517 55.787 L 103.569 73.799 Z"
                        ></path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo" preserveAspectRatio="xMidYMid meet" viewBox="-20 -10 100 100" width="100%" height="100%">
                        <path
                            d="M32 0C14.3 0 0 14.337 0 32c0 17.7 14.337 32 32 32 17.7 0 32-14.337 32-32S49.663 0 32 0zm14.68 46.184c-.573.956-1.797 1.223-2.753.65-7.532-4.588-16.975-5.62-28.14-3.097-1.07.23-2.14-.42-2.37-1.49s.42-2.14 1.49-2.37c12.196-2.79 22.67-1.606 31.082 3.556a2 2 0 0 1 .688 2.753zm3.9-8.717c-.726 1.185-2.256 1.53-3.44.84-8.602-5.276-21.716-6.805-31.885-3.747-1.338.382-2.714-.344-3.097-1.644-.382-1.338.344-2.714 1.682-3.097 11.622-3.517 26.074-1.835 35.976 4.244 1.147.688 1.49 2.217.765 3.403zm.344-9.1c-10.323-6.117-27.336-6.69-37.2-3.708-1.568.497-3.25-.42-3.747-1.988s.42-3.25 1.988-3.747c11.317-3.44 30.127-2.753 41.98 4.282 1.415.84 1.873 2.676 1.032 4.09-.765 1.453-2.638 1.912-4.053 1.07z"
                        ></path>
                    </svg>
                </a>
                
                
                <!-- apple music -->
                <a href="https://music.apple.com/za/artist/adm/1482498362" target="_blank" class="logo-container">
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="-20 45 400 400" width="100%" height="100%">
                        <path 
                            d="M 82.221 102.151 L 47.198 39.109 L 113.242 18.429 L 204.636 16.428 L 106.905 59.79 L 139.26 87.809 L 276.017 54.787 L 294.696 116.828 L 354.736 16.094 L 390.427 127.502 L 263.342 183.205 L 392.095 181.871 L 407.438 154.186 L 354.069 285.607 L 326.384 223.899 L 242.995 298.616 L 307.705 325.3 L 297.698 404.019 L 121.915 426.368 L 53.202 327.302 L 81.554 283.939 L 16.845 332.305 L 7.171 41.444 L 82.221 102.151 Z">
                        </path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo" preserveAspectRatio="xMidYMid meet" viewBox="-400 -150 1670 1670" width="100%" height="100%">
                        <path
                            d="M788.1 340.9c-5.8 4.5-108.2 62.2-108.2 190.5 0 148.4 130.3 200.9 134.2 202.2-.6 3.2-20.7 71.9-68.7 141.9-42.8 61.6-87.5 123.1-155.5 123.1s-85.5-39.5-164-39.5c-76.5 0-103.7 40.8-165.9 40.8s-105.6-57-155.5-127C46.7 790.7 0 663 0 541.8c0-194.4 126.4-297.5 250.8-297.5 66.1 0 121.2 43.4 162.7 43.4 39.5 0 101.1-46 176.3-46 28.5 0 130.9 2.6 198.3 99.2zm-234-181.5c31.1-36.9 53.1-88.1 53.1-139.3 0-7.1-.6-14.3-1.9-20.1-50.6 1.9-110.8 33.7-147.1 75.8-28.5 32.4-55.1 83.6-55.1 135.5 0 7.8 1.3 15.6 1.9 18.1 3.2.6 8.4 1.3 13.6 1.3 45.4 0 102.5-30.4 135.5-71.3z"
                        ></path>
                    </svg>
                </a>

                <!-- youtube -->
                <a href="https://www.youtube.com/channel/UCKGXOmDSEYUAPw2jx0egGyg" target="_blank" class="logo-container">
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="30 50 230 230" width="100%" height="100%">
                        <path d="M 93.896 107.822 L 52.535 46.114 L 144.263 79.47 L 233.656 54.453 L 208.973 97.482 L 281.688 71.464 L 281.021 168.863 L 223.316 223.566 L 186.291 188.209 L 222.315 239.576 L 80.22 244.913 L 92.562 230.904 L 25.183 207.555 L 27.185 171.197 L 16.177 158.522 L 42.195 152.185 L 29.52 23.432 L 93.896 107.822 Z"></path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo" preserveAspectRatio="xMidYMid meet" viewBox="-4 -5 35 35" width="100%" height="100%">
                        <path
                            d="M27.9727 3.12324C27.6435 1.89323 26.6768 0.926623 25.4468 0.597366C23.2197 2.24288e-07 14.285 0 14.285 0C14.285 0 5.35042 2.24288e-07 3.12323 0.597366C1.89323 0.926623 0.926623 1.89323 0.597366 3.12324C2.24288e-07 5.35042 0 10 0 10C0 10 2.24288e-07 14.6496 0.597366 16.8768C0.926623 18.1068 1.89323 19.0734 3.12323 19.4026C5.35042 20 14.285 20 14.285 20C14.285 20 23.2197 20 25.4468 19.4026C26.6768 19.0734 27.6435 18.1068 27.9727 16.8768C28.5701 14.6496 28.5701 10 28.5701 10C28.5701 10 28.5677 5.35042 27.9727 3.12324Z"
                        ></path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="-4 -5 35 35" width="100%" height="100%">
                        <path
                            d="M11.4253 14.2854L18.8477 10.0004L11.4253 5.71533V14.2854Z"
                        ></path>
                    </svg>
                </a>


                <!-- soundcloud -->
                <a href="https://soundcloud.com/admh?utm_source=clipboard&utm_medium=text&utm_campaign=social_sharing" target="_blank" class="logo-container">
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="40 40 350 350" width="100%" height="100%">
                        <path 
                            d="M 95.564 130.837 L 77.885 98.482 L 159.94 133.839 L 273.682 91.478 L 358.406 103.152 L 413.442 172.198 L 367.745 253.586 L 405.437 278.269 L 283.689 279.937 L 330.387 403.352 L 242.328 287.275 L 169.28 314.293 L 234.99 373.999 L 95.564 348.983 L 138.592 256.921 L 56.871 335.64 L 15.51 244.246 L 95.564 130.837 Z">
                        </path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo" preserveAspectRatio="xMidYMid meet" viewBox="-70 -20 400 400" width="100%" height="100%">
                        <g id="XMLID_526_">
                            <path id="XMLID_527_" d="M14.492,208.896c0.619,0,1.143-0.509,1.232-1.226l3.365-26.671l-3.355-27.278
                                c-0.1-0.717-0.623-1.23-1.242-1.23c-0.635,0-1.176,0.524-1.26,1.23l-2.941,27.278l2.941,26.662
                                C13.316,208.377,13.857,208.896,14.492,208.896z"/>
                            <path id="XMLID_530_" d="M3.397,198.752c0.608,0,1.101-0.473,1.19-1.18l2.608-16.574l-2.608-16.884
                                c-0.09-0.685-0.582-1.18-1.19-1.18c-0.635,0-1.127,0.495-1.217,1.19L0,180.999l2.18,16.569
                                C2.27,198.269,2.762,198.752,3.397,198.752z"/>
                            <path id="XMLID_531_" d="M27.762,148.644c-0.08-0.867-0.715-1.5-1.503-1.5c-0.782,0-1.418,0.633-1.491,1.5l-2.811,32.355
                                l2.811,31.174c0.073,0.862,0.709,1.487,1.491,1.487c0.788,0,1.423-0.625,1.503-1.487l3.18-31.174L27.762,148.644z"/>
                            <path id="XMLID_532_" d="M38.152,214.916c0.922,0,1.668-0.759,1.758-1.751l3.005-32.156l-3.005-33.258
                                c-0.09-0.999-0.836-1.749-1.758-1.749c-0.935,0-1.692,0.751-1.756,1.754l-2.656,33.253l2.656,32.156
                                C36.46,214.158,37.217,214.916,38.152,214.916z"/>
                            <path id="XMLID_533_" d="M50.127,215.438c1.074,0,1.936-0.86,2.025-2.011l-0.01,0.008l2.83-32.426l-2.83-30.857
                                c-0.08-1.132-0.941-2.005-2.016-2.005c-1.09,0-1.947,0.873-2.012,2.014l-2.502,30.849l2.502,32.418
                                C48.18,214.578,49.037,215.438,50.127,215.438z"/>
                            <path id="XMLID_534_" d="M67.132,181.017l-2.655-50.172c-0.074-1.272-1.065-2.286-2.281-2.286c-1.207,0-2.195,1.013-2.269,2.286
                                l-2.35,50.172l2.35,32.418c0.074,1.278,1.063,2.278,2.269,2.278c1.217,0,2.207-1,2.281-2.278v0.009L67.132,181.017z"/>
                            <path id="XMLID_535_" d="M74.386,215.766c1.339,0,2.45-1.111,2.513-2.529v0.021l2.482-32.233l-2.482-61.656
                                c-0.063-1.418-1.174-2.529-2.513-2.529c-1.37,0-2.471,1.111-2.545,2.529l-2.185,61.656l2.195,32.222
                                C71.915,214.655,73.016,215.766,74.386,215.766z"/>
                            <path id="XMLID_536_" d="M86.645,111.435c-1.508,0-2.725,1.238-2.787,2.799l-2.033,66.801l2.033,31.884
                                c0.063,1.553,1.279,2.783,2.787,2.783c1.504,0,2.73-1.22,2.783-2.788v0.016l2.307-31.895l-2.307-66.801
                                C89.375,112.663,88.148,111.435,86.645,111.435z"/>
                            <path id="XMLID_782_" d="M99.01,215.766c1.656,0,2.975-1.336,3.037-3.056v0.019l2.133-31.693l-2.133-69.045
                                c-0.063-1.714-1.381-3.056-3.037-3.056c-1.666,0-3.005,1.342-3.031,3.056l-1.916,69.045l1.916,31.693
                                C96.005,214.43,97.344,215.766,99.01,215.766z"/>
                            <path id="XMLID_783_" d="M111.477,215.734c1.787,0,3.237-1.463,3.291-3.318v0.029l1.963-31.404l-1.963-67.289
                                c-0.054-1.854-1.504-3.311-3.291-3.311c-1.8,0-3.25,1.456-3.303,3.311l-1.725,67.289l1.736,31.389
                                C108.227,214.271,109.677,215.734,111.477,215.734z"/>
                            <path id="XMLID_784_" d="M129.359,181.041l-1.777-64.836c-0.043-2-1.609-3.571-3.551-3.571c-1.947,0-3.514,1.571-3.555,3.584
                                l-1.594,64.823l1.594,31.198c0.041,1.984,1.607,3.556,3.555,3.556c1.941,0,3.508-1.572,3.551-3.585v0.029L129.359,181.041z"/>
                            <path id="XMLID_785_" d="M136.682,215.853c2.064,0,3.773-1.717,3.805-3.828v0.017l1.613-30.984l-1.613-77.153
                                c-0.031-2.119-1.74-3.833-3.805-3.833c-2.063,0-3.767,1.722-3.809,3.844l-1.434,77.111l1.434,31.016
                                C132.915,214.136,134.619,215.853,136.682,215.853z"/>
                            <path id="XMLID_786_" d="M149.291,92.814c-2.229,0-4.037,1.849-4.074,4.103l-1.667,84.151l1.677,30.526
                                c0.027,2.225,1.836,4.068,4.064,4.068c2.195,0,4.037-1.844,4.047-4.105v0.037l1.82-30.526l-1.82-84.151
                                C153.328,94.655,151.486,92.814,149.291,92.814z"/>
                            <path id="XMLID_787_" d="M160.82,215.882c0.09,0.008,101.623,0.056,102.275,0.056c20.385,0,36.904-16.722,36.904-37.357
                                c0-20.624-16.52-37.349-36.904-37.349c-5.059,0-9.879,1.034-14.275,2.907c-2.922-33.671-30.815-60.077-64.842-60.077
                                c-8.318,0-16.429,1.662-23.593,4.469c-2.788,1.09-3.534,2.214-3.556,4.392v118.539C156.861,213.752,158.607,215.655,160.82,215.882
                                z"/>
                        </g>
                    </svg>
                </a>
                
            </div>
            </div>

            <h1 id="music-releases" class="section-head" onclick="if (!window.__cfRLUnblockHandlers) return false; toggleCollapsible('releases')" data-cf-modified-02119b18052e9bef4a5439d5-="">
                Releases
            </h1>

            <div class="content-collapsible" id="releases-collapsible">
            <h2 id="aquae" class="section-head" onclick="if (!window.__cfRLUnblockHandlers) return false; toggleCollapsible('aquae')" data-cf-modified-02119b18052e9bef4a5439d5-="">
                Aquae
            </h2>

            <div class="content-collapsible" id="aquae-collapsible">
            <iframe style="border-radius:12px" src="https://open.spotify.com/embed/album/42WqBRIrvpebuy2qOKHIGt?utm_source=generator&theme=0" width="100%" height="152" frameBorder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe>

            <p>
                MCADM0 - 1:06 // MCADM1 - 1:57 // MCADM2 - 2:20 // Yep (You Win) - 3:11 // Movie Scene - 0:50 // Pigeon - 3:09 // Bulb - 0:56 // Oza - 2:51 // Tumbler - 0:50 // Time - 2:36 // Dew - 0:47 // Aquae - 2:10
            </p>

            <div class="icons">
                <!-- spotify -->
                <a href="https://open.spotify.com/album/42WqBRIrvpebuy2qOKHIGt?si=GR44E7FLTQ2rAmfUtsU9SQ" target="_blank" class="logo-container">
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="25 50 250 250" width="100%" height="100%">
                        <path 
                            d="M 103.569 73.799 L 178.953 30.771 L 179.62 61.791 L 287.358 38.109 L 266.344 150.517 L 304.37 137.175 L 286.691 229.903 L 189.293 274.6 L 207.305 230.57 L 118.579 289.61 L 50.867 256.254 L 71.548 246.581 L 9.84 152.518 L 30.187 160.857 L 25.517 55.787 L 103.569 73.799 Z"
                        ></path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo" preserveAspectRatio="xMidYMid meet" viewBox="-20 -10 100 100" width="100%" height="100%">
                        <path
                            d="M32 0C14.3 0 0 14.337 0 32c0 17.7 14.337 32 32 32 17.7 0 32-14.337 32-32S49.663 0 32 0zm14.68 46.184c-.573.956-1.797 1.223-2.753.65-7.532-4.588-16.975-5.62-28.14-3.097-1.07.23-2.14-.42-2.37-1.49s.42-2.14 1.49-2.37c12.196-2.79 22.67-1.606 31.082 3.556a2 2 0 0 1 .688 2.753zm3.9-8.717c-.726 1.185-2.256 1.53-3.44.84-8.602-5.276-21.716-6.805-31.885-3.747-1.338.382-2.714-.344-3.097-1.644-.382-1.338.344-2.714 1.682-3.097 11.622-3.517 26.074-1.835 35.976 4.244 1.147.688 1.49 2.217.765 3.403zm.344-9.1c-10.323-6.117-27.336-6.69-37.2-3.708-1.568.497-3.25-.42-3.747-1.988s.42-3.25 1.988-3.747c11.317-3.44 30.127-2.753 41.98 4.282 1.415.84 1.873 2.676 1.032 4.09-.765 1.453-2.638 1.912-4.053 1.07z"
                        ></path>
                    </svg>
                </a>

                <!-- youtube -->
                <a href="https://www.youtube.com/playlist?list=OLAK5uy_kmITMausddxCMFGChrw5n13DNnaKz3qsM" target="_blank" class="logo-container">
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="30 50 230 230" width="100%" height="100%">
                        <path d="M 93.896 107.822 L 52.535 46.114 L 144.263 79.47 L 233.656 54.453 L 208.973 97.482 L 281.688 71.464 L 281.021 168.863 L 223.316 223.566 L 186.291 188.209 L 222.315 239.576 L 80.22 244.913 L 92.562 230.904 L 25.183 207.555 L 27.185 171.197 L 16.177 158.522 L 42.195 152.185 L 29.52 23.432 L 93.896 107.822 Z"></path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo" preserveAspectRatio="xMidYMid meet" viewBox="-4 -5 35 35" width="100%" height="100%">
                        <path
                            d="M27.9727 3.12324C27.6435 1.89323 26.6768 0.926623 25.4468 0.597366C23.2197 2.24288e-07 14.285 0 14.285 0C14.285 0 5.35042 2.24288e-07 3.12323 0.597366C1.89323 0.926623 0.926623 1.89323 0.597366 3.12324C2.24288e-07 5.35042 0 10 0 10C0 10 2.24288e-07 14.6496 0.597366 16.8768C0.926623 18.1068 1.89323 19.0734 3.12323 19.4026C5.35042 20 14.285 20 14.285 20C14.285 20 23.2197 20 25.4468 19.4026C26.6768 19.0734 27.6435 18.1068 27.9727 16.8768C28.5701 14.6496 28.5701 10 28.5701 10C28.5701 10 28.5677 5.35042 27.9727 3.12324Z"
                        ></path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="-4 -5 35 35" width="100%" height="100%">
                        <path
                            d="M11.4253 14.2854L18.8477 10.0004L11.4253 5.71533V14.2854Z"
                        ></path>
                    </svg>
                </a>
                
                
                <!-- apple music -->
                <a href="https://music.apple.com/gb/album/aquae/1763563135" target="_blank" class="logo-container">
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="-20 45 400 400" width="100%" height="100%">
                        <path 
                            d="M 82.221 102.151 L 47.198 39.109 L 113.242 18.429 L 204.636 16.428 L 106.905 59.79 L 139.26 87.809 L 276.017 54.787 L 294.696 116.828 L 354.736 16.094 L 390.427 127.502 L 263.342 183.205 L 392.095 181.871 L 407.438 154.186 L 354.069 285.607 L 326.384 223.899 L 242.995 298.616 L 307.705 325.3 L 297.698 404.019 L 121.915 426.368 L 53.202 327.302 L 81.554 283.939 L 16.845 332.305 L 7.171 41.444 L 82.221 102.151 Z">
                        </path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo" preserveAspectRatio="xMidYMid meet" viewBox="-400 -150 1670 1670" width="100%" height="100%">
                        <path
                            d="M788.1 340.9c-5.8 4.5-108.2 62.2-108.2 190.5 0 148.4 130.3 200.9 134.2 202.2-.6 3.2-20.7 71.9-68.7 141.9-42.8 61.6-87.5 123.1-155.5 123.1s-85.5-39.5-164-39.5c-76.5 0-103.7 40.8-165.9 40.8s-105.6-57-155.5-127C46.7 790.7 0 663 0 541.8c0-194.4 126.4-297.5 250.8-297.5 66.1 0 121.2 43.4 162.7 43.4 39.5 0 101.1-46 176.3-46 28.5 0 130.9 2.6 198.3 99.2zm-234-181.5c31.1-36.9 53.1-88.1 53.1-139.3 0-7.1-.6-14.3-1.9-20.1-50.6 1.9-110.8 33.7-147.1 75.8-28.5 32.4-55.1 83.6-55.1 135.5 0 7.8 1.3 15.6 1.9 18.1 3.2.6 8.4 1.3 13.6 1.3 45.4 0 102.5-30.4 135.5-71.3z"
                        ></path>
                    </svg>
                </a>
                
            </div>

            <img src="imgs/aquae grids tracks.jpg" alt="Aquae Tracklist" class="image" loading="lazy">
            </div>

            <h2 id="jet-black" class="section-head" onclick="if (!window.__cfRLUnblockHandlers) return false; toggleCollapsible('jet-black')" data-cf-modified-02119b18052e9bef4a5439d5-="">
                Jet Black
            </h2>
            
            <!-- <img src="imgs/jet black.jpg" alt="Jet Black Cover Art" class="image" loading="lazy"> -->
            <div class="content-collapsible" id="jet-black-collapsible">
            <iframe style="border-radius:12px" src="https://open.spotify.com/embed/album/5UjAwzgyuEm1s0TqR912ac?utm_source=generator&theme=0" width="100%" height="152" frameBorder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe>

            <p>
                Big L (Intro) - 2:14 // Ahmad Also Impressed Me - 2:44 // Tempo - 1:36 // Olhool - 2:22 // Alsemanche - 3:33 // Astro Black x3 - 3:06 // Hunter - 2:50
            </p>

            <div class="icons">
                <!-- spotify -->
                <a href="https://open.spotify.com/album/5UjAwzgyuEm1s0TqR912ac?si=wGn5DtKxT-6XfayFP36RoQ" target="_blank" class="logo-container">
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="25 50 250 250" width="100%" height="100%">
                        <path 
                            d="M 103.569 73.799 L 178.953 30.771 L 179.62 61.791 L 287.358 38.109 L 266.344 150.517 L 304.37 137.175 L 286.691 229.903 L 189.293 274.6 L 207.305 230.57 L 118.579 289.61 L 50.867 256.254 L 71.548 246.581 L 9.84 152.518 L 30.187 160.857 L 25.517 55.787 L 103.569 73.799 Z"
                        ></path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo" preserveAspectRatio="xMidYMid meet" viewBox="-20 -10 100 100" width="100%" height="100%">
                        <path
                            d="M32 0C14.3 0 0 14.337 0 32c0 17.7 14.337 32 32 32 17.7 0 32-14.337 32-32S49.663 0 32 0zm14.68 46.184c-.573.956-1.797 1.223-2.753.65-7.532-4.588-16.975-5.62-28.14-3.097-1.07.23-2.14-.42-2.37-1.49s.42-2.14 1.49-2.37c12.196-2.79 22.67-1.606 31.082 3.556a2 2 0 0 1 .688 2.753zm3.9-8.717c-.726 1.185-2.256 1.53-3.44.84-8.602-5.276-21.716-6.805-31.885-3.747-1.338.382-2.714-.344-3.097-1.644-.382-1.338.344-2.714 1.682-3.097 11.622-3.517 26.074-1.835 35.976 4.244 1.147.688 1.49 2.217.765 3.403zm.344-9.1c-10.323-6.117-27.336-6.69-37.2-3.708-1.568.497-3.25-.42-3.747-1.988s.42-3.25 1.988-3.747c11.317-3.44 30.127-2.753 41.98 4.282 1.415.84 1.873 2.676 1.032 4.09-.765 1.453-2.638 1.912-4.053 1.07z"
                        ></path>
                    </svg>
                </a>

                <!-- youtube -->
                <a href="https://youtube.com/playlist?list=OLAK5uy_kE1MOHDgR-VYJP0CYpPYmHu95ywUXQxks&si=QRplIrsblBBsqO4Z" target="_blank" class="logo-container">
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="30 50 230 230" width="100%" height="100%">
                        <path d="M 93.896 107.822 L 52.535 46.114 L 144.263 79.47 L 233.656 54.453 L 208.973 97.482 L 281.688 71.464 L 281.021 168.863 L 223.316 223.566 L 186.291 188.209 L 222.315 239.576 L 80.22 244.913 L 92.562 230.904 L 25.183 207.555 L 27.185 171.197 L 16.177 158.522 L 42.195 152.185 L 29.52 23.432 L 93.896 107.822 Z"></path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo" preserveAspectRatio="xMidYMid meet" viewBox="-4 -5 35 35" width="100%" height="100%">
                        <path
                            d="M27.9727 3.12324C27.6435 1.89323 26.6768 0.926623 25.4468 0.597366C23.2197 2.24288e-07 14.285 0 14.285 0C14.285 0 5.35042 2.24288e-07 3.12323 0.597366C1.89323 0.926623 0.926623 1.89323 0.597366 3.12324C2.24288e-07 5.35042 0 10 0 10C0 10 2.24288e-07 14.6496 0.597366 16.8768C0.926623 18.1068 1.89323 19.0734 3.12323 19.4026C5.35042 20 14.285 20 14.285 20C14.285 20 23.2197 20 25.4468 19.4026C26.6768 19.0734 27.6435 18.1068 27.9727 16.8768C28.5701 14.6496 28.5701 10 28.5701 10C28.5701 10 28.5677 5.35042 27.9727 3.12324Z"
                        ></path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="-4 -5 35 35" width="100%" height="100%">
                        <path
                            d="M11.4253 14.2854L18.8477 10.0004L11.4253 5.71533V14.2854Z"
                        ></path>
                    </svg>
                </a>
                
                
                <!-- apple music -->
                <a href="https://music.apple.com/ca/album/jet-black/1715095878" target="_blank" class="logo-container">
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="-20 45 400 400" width="100%" height="100%">
                        <path 
                            d="M 82.221 102.151 L 47.198 39.109 L 113.242 18.429 L 204.636 16.428 L 106.905 59.79 L 139.26 87.809 L 276.017 54.787 L 294.696 116.828 L 354.736 16.094 L 390.427 127.502 L 263.342 183.205 L 392.095 181.871 L 407.438 154.186 L 354.069 285.607 L 326.384 223.899 L 242.995 298.616 L 307.705 325.3 L 297.698 404.019 L 121.915 426.368 L 53.202 327.302 L 81.554 283.939 L 16.845 332.305 L 7.171 41.444 L 82.221 102.151 Z">
                        </path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo" preserveAspectRatio="xMidYMid meet" viewBox="-400 -150 1670 1670" width="100%" height="100%">
                        <path
                            d="M788.1 340.9c-5.8 4.5-108.2 62.2-108.2 190.5 0 148.4 130.3 200.9 134.2 202.2-.6 3.2-20.7 71.9-68.7 141.9-42.8 61.6-87.5 123.1-155.5 123.1s-85.5-39.5-164-39.5c-76.5 0-103.7 40.8-165.9 40.8s-105.6-57-155.5-127C46.7 790.7 0 663 0 541.8c0-194.4 126.4-297.5 250.8-297.5 66.1 0 121.2 43.4 162.7 43.4 39.5 0 101.1-46 176.3-46 28.5 0 130.9 2.6 198.3 99.2zm-234-181.5c31.1-36.9 53.1-88.1 53.1-139.3 0-7.1-.6-14.3-1.9-20.1-50.6 1.9-110.8 33.7-147.1 75.8-28.5 32.4-55.1 83.6-55.1 135.5 0 7.8 1.3 15.6 1.9 18.1 3.2.6 8.4 1.3 13.6 1.3 45.4 0 102.5-30.4 135.5-71.3z"
                        ></path>
                    </svg>
                </a>
                
            </div>
            </div>


            <h2 id="astro-white" class="section-head" onclick="if (!window.__cfRLUnblockHandlers) return false; toggleCollapsible('astro-white')" data-cf-modified-02119b18052e9bef4a5439d5-="">
                Astro White
            </h2>
            
            <!-- <img src="imgs/astro white.jpg" alt="Astro White Cover Art" class="image" loading="lazy"> -->
            <div class="content-collapsible" id="astro-white-collapsible">
            <iframe style="border-radius:12px" src="https://open.spotify.com/embed/album/3gPAFIxS7lFZRJY9Cqcuw9?utm_source=generator&theme=0" width="100%" height="152" frameBorder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe>

            <p>
                84_shyne_21-11-09 - 2:05 // mulch (cou.1) - 1:56 // IYA_92.5 - 2.11 // 211212.iwywh.93 - 2:28 // 87_grit_v1 - 1:57 // fuzz_long_ver_89 - 2:44 // 220606.down_v2 (new drums) - 1:58 // studio.94 - 1:30 // static_v2_92 - 1:03 // duster - 2:47
            </p>

            <div class="icons">
                <!-- spotify -->
                <a href="https://open.spotify.com/album/3gPAFIxS7lFZRJY9Cqcuw9?si=ddmH-lXPT3CY0rcb8j-BOQ" target="_blank" class="logo-container">
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="25 50 250 250" width="100%" height="100%">
                        <path 
                            d="M 103.569 73.799 L 178.953 30.771 L 179.62 61.791 L 287.358 38.109 L 266.344 150.517 L 304.37 137.175 L 286.691 229.903 L 189.293 274.6 L 207.305 230.57 L 118.579 289.61 L 50.867 256.254 L 71.548 246.581 L 9.84 152.518 L 30.187 160.857 L 25.517 55.787 L 103.569 73.799 Z"
                        ></path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo" preserveAspectRatio="xMidYMid meet" viewBox="-20 -10 100 100" width="100%" height="100%">
                        <path
                            d="M32 0C14.3 0 0 14.337 0 32c0 17.7 14.337 32 32 32 17.7 0 32-14.337 32-32S49.663 0 32 0zm14.68 46.184c-.573.956-1.797 1.223-2.753.65-7.532-4.588-16.975-5.62-28.14-3.097-1.07.23-2.14-.42-2.37-1.49s.42-2.14 1.49-2.37c12.196-2.79 22.67-1.606 31.082 3.556a2 2 0 0 1 .688 2.753zm3.9-8.717c-.726 1.185-2.256 1.53-3.44.84-8.602-5.276-21.716-6.805-31.885-3.747-1.338.382-2.714-.344-3.097-1.644-.382-1.338.344-2.714 1.682-3.097 11.622-3.517 26.074-1.835 35.976 4.244 1.147.688 1.49 2.217.765 3.403zm.344-9.1c-10.323-6.117-27.336-6.69-37.2-3.708-1.568.497-3.25-.42-3.747-1.988s.42-3.25 1.988-3.747c11.317-3.44 30.127-2.753 41.98 4.282 1.415.84 1.873 2.676 1.032 4.09-.765 1.453-2.638 1.912-4.053 1.07z"
                        ></path>
                    </svg>
                </a>

                <!-- youtube -->
                <a href="https://youtube.com/playlist?list=OLAK5uy_mfaV0mbP4ApKWb5T33l20j1mRHPgjzeJM&si=f1MDvEmgtVFGRzL3" target="_blank" class="logo-container">
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="30 50 230 230" width="100%" height="100%">
                        <path d="M 93.896 107.822 L 52.535 46.114 L 144.263 79.47 L 233.656 54.453 L 208.973 97.482 L 281.688 71.464 L 281.021 168.863 L 223.316 223.566 L 186.291 188.209 L 222.315 239.576 L 80.22 244.913 L 92.562 230.904 L 25.183 207.555 L 27.185 171.197 L 16.177 158.522 L 42.195 152.185 L 29.52 23.432 L 93.896 107.822 Z"></path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo" preserveAspectRatio="xMidYMid meet" viewBox="-4 -5 35 35" width="100%" height="100%">
                        <path
                            d="M27.9727 3.12324C27.6435 1.89323 26.6768 0.926623 25.4468 0.597366C23.2197 2.24288e-07 14.285 0 14.285 0C14.285 0 5.35042 2.24288e-07 3.12323 0.597366C1.89323 0.926623 0.926623 1.89323 0.597366 3.12324C2.24288e-07 5.35042 0 10 0 10C0 10 2.24288e-07 14.6496 0.597366 16.8768C0.926623 18.1068 1.89323 19.0734 3.12323 19.4026C5.35042 20 14.285 20 14.285 20C14.285 20 23.2197 20 25.4468 19.4026C26.6768 19.0734 27.6435 18.1068 27.9727 16.8768C28.5701 14.6496 28.5701 10 28.5701 10C28.5701 10 28.5677 5.35042 27.9727 3.12324Z"
                        ></path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="-4 -5 35 35" width="100%" height="100%">
                        <path
                            d="M11.4253 14.2854L18.8477 10.0004L11.4253 5.71533V14.2854Z"
                        ></path>
                    </svg>
                </a>
                
                
                <!-- apple music -->
                <a href="https://music.apple.com/za/album/astro-white/1650860764" target="_blank" class="logo-container">
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo2" preserveAspectRatio="xMidYMid meet" viewBox="-20 45 400 400" width="100%" height="100%">
                        <path 
                            d="M 82.221 102.151 L 47.198 39.109 L 113.242 18.429 L 204.636 16.428 L 106.905 59.79 L 139.26 87.809 L 276.017 54.787 L 294.696 116.828 L 354.736 16.094 L 390.427 127.502 L 263.342 183.205 L 392.095 181.871 L 407.438 154.186 L 354.069 285.607 L 326.384 223.899 L 242.995 298.616 L 307.705 325.3 L 297.698 404.019 L 121.915 426.368 L 53.202 327.302 L 81.554 283.939 L 16.845 332.305 L 7.171 41.444 L 82.221 102.151 Z">
                        </path>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" class="logo" preserveAspectRatio="xMidYMid meet" viewBox="-400 -150 1670 1670" width="100%" height="100%">
                        <path
                            d="M788.1 340.9c-5.8 4.5-108.2 62.2-108.2 190.5 0 148.4 130.3 200.9 134.2 202.2-.6 3.2-20.7 71.9-68.7 141.9-42.8 61.6-87.5 123.1-155.5 123.1s-85.5-39.5-164-39.5c-76.5 0-103.7 40.8-165.9 40.8s-105.6-57-155.5-127C46.7 790.7 0 663 0 541.8c0-194.4 126.4-297.5 250.8-297.5 66.1 0 121.2 43.4 162.7 43.4 39.5 0 101.1-46 176.3-46 28.5 0 130.9 2.6 198.3 99.2zm-234-181.5c31.1-36.9 53.1-88.1 53.1-139.3 0-7.1-.6-14.3-1.9-20.1-50.6 1.9-110.8 33.7-147.1 75.8-28.5 32.4-55.1 83.6-55.1 135.5 0 7.8 1.3 15.6 1.9 18.1 3.2.6 8.4 1.3 13.6 1.3 45.4 0 102.5-30.4 135.5-71.3z"
                        ></path>
                    </svg>
                </a>
                
            </div>
            </div>
            </div>

        </div>
    </div>


    <div class="content-container" id="contact" style="display: none;">

        <div class="body-text">
            <h1>
                Contact
            </h1>
    
            <p>
                Email: <a href="/cdn-cgi/l/email-protection#533237323e1332373e3b3b7d303c3e"><span class="__cf_email__" data-cfemail="1475707579547570797c7c3a777b79">[email&#160;protected]</span></a>
            </p>

            <p>
                Website: <a onclick="if (!window.__cfRLUnblockHandlers) return false; recurseSite()" data-cf-modified-02119b18052e9bef4a5439d5-="">https://admhh.com</a>
            </p>
        </div>
        
    </div>

    <button class="colour-box" onclick="if (!window.__cfRLUnblockHandlers) return false; chooseColour()" id="colour-box" title="colour-picker" data-cf-modified-02119b18052e9bef4a5439d5-=""></button>
    <div class="colour-picker" style="display: none;">
        <button id="colour-red" onclick="if (!window.__cfRLUnblockHandlers) return false; setColour('red')" style="position: fixed; bottom: 90px; right: 50px; width: 40px; height: 40px; cursor: pointer; background-color: var(--colour-red); border: none;" data-cf-modified-02119b18052e9bef4a5439d5-=""></button>
        <button id="colour-green" onclick="if (!window.__cfRLUnblockHandlers) return false; setColour('green')" style="position: fixed; bottom: 90px; right: 10px; width: 40px; height: 40px; cursor: pointer; background-color: var(--colour-green); border: none;" data-cf-modified-02119b18052e9bef4a5439d5-=""></button>
        <button id="colour-blue" onclick="if (!window.__cfRLUnblockHandlers) return false; setColour('blue')" style="position: fixed; bottom: 50px; right: 50px; width: 40px; height: 40px; cursor: pointer; background-color: var(--colour-blue); border: none;" data-cf-modified-02119b18052e9bef4a5439d5-=""></button>
        <!-- https://stackoverflow.com/questions/11167281/webkit-css-to-control-the-box-around-the-color-in-an-inputtype-color -->
        <div id="colour-picker-wrapper" style="position: fixed; bottom: 50px; right: 10px; width: 40px; height: 40px; cursor: pointer; background-color: var(--custom-colour); border: none;">
            <input type="color" id="colour-custom" value="#535353" onclick="if (!window.__cfRLUnblockHandlers) return false; setColour(this.value, false)" oninput="if (!window.__cfRLUnblockHandlers) return false; setColour(this.value, false)" onblur="if (!window.__cfRLUnblockHandlers) return false; setColour(this.value, true)" style="position: fixed; bottom: 50px; right: 10px; width: 40px; height: 40px; cursor: pointer; background-color: var(--custom-colour); border: none; opacity: 0;" data-cf-modified-02119b18052e9bef4a5439d5-="">
        
            <svg id="colour-picker-pen" xmlns="http://www.w3.org/2000/svg" viewBox="-22 -25 162.88 161.51"><title>Pick Colour</title>
                <path 
                    d="M28.66,1.64H58.88L44.46,16.71H28.66a13.52,13.52,0,0,0-9.59,4l0,0a13.52,13.52,0,0,0-4,9.59v76.14H91.21a13.5,13.5,0,0,0,9.59-4l0,0a13.5,13.5,0,0,0,4-9.59V77.3l15.07-15.74V92.85a28.6,28.6,0,0,1-8.41,20.22l0,.05a28.58,28.58,0,0,1-20.2,8.39H11.5a11.47,11.47,0,0,1-8.1-3.37l0,0A11.52,11.52,0,0,1,0,110V30.3A28.58,28.58,0,0,1,8.41,10.09L8.46,10a28.58,28.58,0,0,1,20.2-8.4ZM73,76.47l-29.42,6,4.25-31.31L73,76.47ZM57.13,41.68,96.3.91A2.74,2.74,0,0,1,99.69.38l22.48,21.76a2.39,2.39,0,0,1-.19,3.57L82.28,67,57.13,41.68Z"
                    fill="var(--secondary-colour)"    
                />
            </svg>
        
        </div>
    </div>

</div>

<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script language="JavaScript" type="02119b18052e9bef4a5439d5-text/javascript">

    // Get the root element
    var r = document.querySelector(':root');

    // trackers for frog image
    document.frog_index = 0;
    document.frog_prefix = '';

    // do links work?
    var navigation_enabled = true;

    // current page
    var current_page = 'main';

    // is navbar open
    var navbar_open = true;

    // decide whether to render in portrait (mobile) or landscape (desktop)
    document.getOrientation = function() {
        if (window.innerWidth <= 700 || (window.innerHeight / window.innerWidth) >= 2) {
            return 'portrait';
        } else {
            return 'landscape';
        }
    }

    function resize_links() {

        const orientation = document.getOrientation();

        if (orientation == 'portrait') {
            // hide all other navigation buttons
            var links_outer = document.querySelectorAll(".link-outer");
            for (var i = 0; i < links_outer.length; i++) {
                if (links_outer[i].id == current_page + "-link-outer") {
                    links_outer[i].style.display = "flex"
                } else {
                    links_outer[i].style.display = "none"
                }
            }

            navbar_open = false;
        
        } else {
            // show all navigation buttons
            var links_outer = document.querySelectorAll(".link-outer");
            for (var i = 0; i < links_outer.length; i++) {
                links_outer[i].style.display = "flex"
            }
        }

        var radius = 25;
        var link_height = 80;

        var link_width = Math.round(window.innerWidth / 5);

        if (orientation == 'portrait') {
            link_width = window.innerWidth - 100;

            var navbars = document.querySelectorAll(".navbar");

            // set navbar to vertical
            for (var i = 0; i < navbars.length; i++) {
                navbars[i].style.flexDirection = "column";
            }
        } else {
            var navbars = document.querySelectorAll(".navbar");

            // set navbar to horizonal
            for (var i = 0; i < navbars.length; i++) {
                navbars[i].style.flexDirection = "row";
            }
        }

        var links_outer = document.querySelectorAll(".link-outer");
        for (var i = 0; i < links_outer.length; i++) {
            links_outer[i].style.width = link_width + "px";

            links_outer[i].style.borderRadius = radius + "px";

            links_outer[i].style.height = link_height + "px";

            // center links if the screen is below a certain resolution
            if (window.innerWidth <= 700) {
                links_outer[i].style.margin = "auto";
            } else {
                links_outer[i].style.margin = "0px";
            }
        }

        var links = document.querySelectorAll(".link");
        for (var i = 0; i < links.length; i++) {
            links[i].style.width = (
                link_width - (2 * (radius - (radius / Math.sqrt(2)))) + 2
            ) + "px";

            links[i].style.height = (link_height - (2 * (radius - (radius / Math.sqrt(2)))) + 2) + "px";

            const link_text = links[i].childNodes[1];
            link_text.innerText = link_text.innerText.replace(' ▼', '');

            // add / remove triangles
            if (links[i].id == current_page + "-link") {

                links[i].className = "link active"

                if (orientation == 'portrait' && !navbar_open) {

                    link_text.innerText += ' ▼';
                }

            } else {
                links[i].className = "link"
            }
        }

        var navbars = document.querySelectorAll(".navbar");
        for (var i = 0; i < navbars.length; i++) {
            navbars[i].style.height = window.innerHeight;
        }

        // fudge wrapping of text in links
        // this is not very robust - only works at regular text size
        text = document.getElementById("main-link-text");

        if ((window.innerWidth <= 1072 && orientation == 'landscape') || window.innerWidth <= 345) {
            text.style.paddingTop = "0.24em";
        } else {
            text.style.paddingTop = "1.2em";
        }

        // text = document.getElementById("work-link-text");

        // if ((window.innerWidth <= 777 && orientation == 'landscape') || window.innerWidth <= 255) {
        //     text.style.paddingTop = "0.24em";
        // } else {
        //     text.style.paddingTop = "1.2em";
        // }
    }

    function showPage(key) {

        if (navigation_enabled) {

            // if in portrait mode, hide other headers
            const orientation = document.getOrientation();

            if (orientation == 'portrait' && navbar_open) {
                // hide all other navigation buttons
                var links_outer = document.querySelectorAll(".link-outer");
                for (var i = 0; i < links_outer.length; i++) {
                    if (links_outer[i].id == key + "-link-outer") {

                        links_outer[i].style.display = "flex"

                    } else {

                        links_outer[i].style.display = "none"
                        const arrow = document.getElementById('nav-arrow');
                        if (arrow != null && links_outer[i].id == key + "-link-outer") {
                            links_outer[i].removeChild(arrow);
                        }

                    }
                }

                navbar_open = false;

            } else {
                // show all navigation buttons
                var links_outer = document.querySelectorAll(".link-outer");
                for (var i = 0; i < links_outer.length; i++) {
                    links_outer[i].style.display = "flex"
                }

                navbar_open = true;
            }

            // update appearance of nav links
            var links = document.querySelectorAll(".link");
            for (var i = 0; i < links.length; i++) {

                const link_text = links[i].childNodes[1];
                link_text.innerText = link_text.innerText.replace(' ▼', '');

                if (links[i].id == key + "-link") {

                    links[i].className = "link active"

                    if (orientation == 'portrait' && !navbar_open) {

                        link_text.innerText += ' ▼';
                    }

                } else {
                    links[i].className = "link"
                }
            }

            var links_outer = document.querySelectorAll(".link-outer");
            for (var i = 0; i < links_outer.length; i++) {
                if (links_outer[i].id == key + "-link-outer") {
                    links_outer[i].className = "link-outer active"
                } else {
                    links_outer[i].className = "link-outer"
                }
            }

            // show / hide appropriate content
            var content_containers = document.querySelectorAll(".content-container");
            for (var i = 0; i < content_containers.length; i++) {
                if (content_containers[i].id == key) {
                    content_containers[i].style.display = "block"
                } else {
                    content_containers[i].style.display = "none"
                }
            }

            if (key == "work") {

                window.createScene();
            }
        }

        current_page = key;
        
        setCollapsibleHeights(false);

    }

    function cycleFrog() {
        const image = document.getElementById("dissertation-frog-image");

        document.frog_index += 1;
        if (document.frog_index > 19) {
            document.frog_index = 0;
        }

        image.src = "/imgs/frogs/" + document.frog_prefix + document.frog_index + ".png";

        const label = document.getElementById("frog-input-label");

        label.innerText = "Input [" + (document.frog_index + 1) + "/20]";
    }

    window.onresize = function() {
        resize_links();
    };

    window.onload = function() {
        // handle url params
        const queryString = window.location.search;

        const urlParams = new URLSearchParams(queryString);

        const colour = urlParams.get('colour');
        if (colour != null ) {
            setColour(colour);
        }

        const page = urlParams.get('page');
        if (page != null && (
            page == 'main' ||
            page == 'work' ||
            page == 'music' ||
            page == 'contact'
        )) {
            showPage(page);
        } else {
            // defaults to main
            showPage(current_page);
        }

        // scroll to an element
        const target = urlParams.get('target');
        if (target != null) {
            // get the element
            const element = document.getElementById(target);
            if (element != null) {
                element.scrollIntoView({block: "start", inline: "nearest"});
            }
        }

        resize_links();
        setCollapsibleHeights();
    };

    function toggleCollapsible(id) {
        const collapsible = document.getElementById(id + '-collapsible')

        if (collapsible.classList.contains('closed')) {
            // collapsible.style.height = 'auto'
            collapsible.style.maxHeight = collapsible.scrollHeight + 'px'
            // collapsible.style.display = 'block'
            collapsible.classList.remove('closed')
        } else {
            // collapsible.style.height = '0px'
            // collapsible.style.maxHeight = collapsible.scrollHeight + 'px'
            collapsible.style.maxHeight = '0px'
            // collapsible.style.display = 'none'
            collapsible.classList.add('closed')
        }
    }

    function setCollapsibleHeights(useTransition=true) {
        const collapsibles = document.querySelectorAll(".content-collapsible");
        for (var i = 0; i < collapsibles.length; i++) {
            const transition = collapsibles[i].style.transition
            if (!useTransition) {
                collapsibles[i].style.transition = ''
            }
            // collapsibles[i].style.maxHeight = collapsibles[i].scrollHeight + 'px'
            collapsibles[i].style.maxHeight = '10000px'
            collapsibles[i].style.transition = transition
        }
    }

    function recurseSite() {
        // turtles all the way down
        navigation_enabled = false;

        var content_containers = document.querySelectorAll(".content-container");
        for (var i = 0; i < content_containers.length; i++) {
            content_containers[i].style.display = "none"
        }

        var container = document.createElement('div');
        container.style.display = "block";
        container.style.textAlign = "center";
        container.style.paddingTop = '1.3em'

        var ifrm = document.createElement('iframe');
        
        const queryString = window.location.search;
        const urlParams = new URLSearchParams(queryString);
        var depth = urlParams.get('depth');
        if (depth == null) {
            depth = 0;
        }

        ifrm.src = "/index.html?depth=" + (depth+1) + "&colour=" + current_colour;
        ifrm.style.width = "80%";
        ifrm.style.height = "80vh";
        ifrm.margin = "10%";
        ifrm.display = "block";
        ifrm.style.border = "0.1em solid var(--main-colour)";

        var quit = document.createElement('a');
        // cross character
        // quit.innerText = '\u{2716}';
        quit.innerText = 'x';
        quit.style.textAlign = 'center';
        quit.classList.add('link-general');
        quit.style.marginLeft = 'calc(90% + 0px)';
        quit.style.marginRight = '10%';
        quit.style.marginBottom = '10px';
        quit.style.paddingRight = '6px';
        quit.style.paddingLeft = '6px';
        quit.style.marginTop = '-1.5em';
        quit.style.fontSize = 'larger';

        quit.onclick = function () {
            document.body.removeChild(container);
            navigation_enabled = true;
            showPage('contact');
        }
        quit.style.border = "0.07em solid var(--main-colour)";
        quit.style.textDecoration = 'none';

        container.appendChild(quit);
        container.appendChild(ifrm);
        document.body.appendChild(container);
    }

    </script>

<foreignObject><script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="02119b18052e9bef4a5439d5-|49" defer></script></foreignObject></body>
</html>                               

Whois info of domain

Domain Name: ADMHH.COM
Registry Domain ID: 2909546394_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.cloudflare.com
Registrar URL: http://www.cloudflare.com
Updated Date: 2024-08-20T16:13:29Z
Creation Date: 2024-08-20T16:13:26Z
Registry Expiry Date: 2025-08-20T16:13:26Z
Registrar: Cloudflare, Inc.
Registrar IANA ID: 1910
Registrar Abuse Contact Email: [email protected]
Registrar Abuse Contact Phone: +1.6503198930
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Name Server: MARLOWE.NS.CLOUDFLARE.COM
Name Server: QUINCY.NS.CLOUDFLARE.COM
DNSSEC: unsigned
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of whois database: 2025-05-03T12:56:17Z <<<
For more information on Whois status codes, please visit https://icann.org/epp
NOTICE: The expiration date displayed in this record is the date the
TERMS OF USE: You are not authorized to access or query our Whois
by the following terms of use: You agree that you may use this Data only
to: (1) allow, enable, or otherwise support the transmission of mass