Check server response of

Server response
NS records
Whois domain
Response headers
Request headers
Raw HTML code
308 Permanent Redirect - r3pwn.com
HTTP Status: 308
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
Cache-Control: public, max-age=0, must-revalidate
Content-Type: text/plain
Date: Sun, 04 May 2025 19:09:16 GMT
Location: https://www.r3pwn.com/
Refresh: 0;url=https://www.r3pwn.com/
Server: Vercel
Strict-Transport-Security: max-age=63072000
X-Vercel-Id: arn1::wbc5t-1746385756438-3c03e0750e90

HTTP Code 308 Permanent Redirect

308 Permanent Redirect is a permanent redirect that, unlike 301, ensures the request method remains unchanged.

When is Code 308 used?

  • When a resource is permanently moved while preserving the request method
  • When enforcing HTTPS without changing form submission behavior

What does Code 308 mean for the user?

The user is permanently redirected to the new URL, and the request method remains the same.

200 OK - https://r3pwn.com/
HTTP Status: 200
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
Age: 932854
Cache-Control: public, max-age=0, must-revalidate
Content-Length: 28840
Content-Type: text/html
Date: Thu, 24 Apr 2025 00:01:41 GMT
Server: Vercel
Strict-Transport-Security: max-age=63072000
X-Vercel-Cache: HIT
X-Vercel-Id: arn1::iad1::hfwfb-1746385756538-1337b1b1c480

HTTP Code 200 OK

200 OK 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: r3pwn.com
Accept: */*
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="utf-8"><meta name="viewport" content="width=device-width"><meta name="generator" content="Astro v5.7.2"><link rel="icon" type="image/svg+xml" href="/favicon.ico"><link rel="preload" href="/_astro/fonts/1f54c887b25a1b4f.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="/_astro/fonts/addc625a50cbd961.woff2" as="font" type="font/woff2" crossorigin><style>@font-face {
	  font-family: DM Sans-4e5ff1c953015531;
  src: url("/_astro/fonts/1f54c887b25a1b4f.woff2") format(woff2);
  font-display: swap;
  font-weight: 100 1000;
  font-style: normal;
}
@font-face {
	  font-family: DM Sans-4e5ff1c953015531;
  src: url("/_astro/fonts/addc625a50cbd961.woff2") format(woff2);
  font-display: swap;
  font-weight: 100 1000;
  font-style: normal;
}
:root { --font-dm-sans: DM Sans-4e5ff1c953015531, sans-serif; }</style> <title>Home | r3pwn</title><meta name="description" content="I’m a Senior-level Software Engineer with a love for building awesome things in TypeScript, JavaScript, React, Vue, and .NET. Reach out if you want to build something cool together!"><meta property="og:title" content="Home | r3pwn"><meta property="og:description" content="I’m a Senior-level Software Engineer with a love for building awesome things in TypeScript, JavaScript, React, Vue, and .NET. Reach out if you want to build something cool together!"><meta property="og:url" content="/"><meta property="og:site_name" content="r3pwn"><meta property="og:image" content="https://storage.googleapis.com/r3pwn-com-turbo-media/r3pwn-com-turbo-homepage.png"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Home | r3pwn"><meta name="twitter:description" content="I’m a Senior-level Software Engineer with a love for building awesome things in TypeScript, JavaScript, React, Vue, and .NET. Reach out if you want to build something cool together!"><meta name="twitter:image" content="https://storage.googleapis.com/r3pwn-com-turbo-media/r3pwn-com-turbo-homepage.png"> <link rel="stylesheet" href="/_astro/_slug_.Dl8n7wTI.css">
<style>.rich-text-root>.content-image{width:100%;@media (min-width: 768px){width:80%;max-width:1024px;margin-left:auto;margin-right:auto}}.rich-text-root>*:is(h2,h3,h4,h5,h6){padding-top:1rem}.rich-text-root li>*:is(ul,ol){margin-top:0;margin-bottom:0}.rich-text-root li:has(ul,ol){list-style:none}
</style></head> <body class="flex flex-col min-h-screen"> <header class="bg-card border-b-2 md:flex">  <div class="flex justify-between"> <a class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground rounded-full p-1 m-2 w-12 h-12 max-md:ml-0 max-md:absolute max-md:left-1/2 max-md:-translate-x-1/2" aria-label="Home page" href="/">  <img src="/apple-touch-icon.png" alt aria-hidden="true" width="40" height="40" loading="lazy" decoding="async">  </a> <div class="block md:hidden"> <button id="astronav-menu" aria-label="Toggle Menu">  <svg fill="currentColor" class="inline-flex items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring hover:bg-accent hover:text-accent-foreground rounded-full p-3 m-2 w-12 h-12" width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> <title>Toggle Menu</title> <path class="astronav-close-icon astronav-toggle hidden" fill-rule="evenodd" clip-rule="evenodd" d="M18.278 16.864a1 1 0 01-1.414 1.414l-4.829-4.828-4.828 4.828a1 1 0 01-1.414-1.414l4.828-4.829-4.828-4.828a1 1 0 011.414-1.414l4.829 4.828 4.828-4.828a1 1 0 111.414 1.414l-4.828 4.829 4.828 4.828z"></path> <path class="astronav-open-icon astronav-toggle" fill-rule="evenodd" d="M4 5h16a1 1 0 010 2H4a1 1 0 110-2zm0 6h16a1 1 0 010 2H4a1 1 0 010-2zm0 6h16a1 1 0 010 2H4a1 1 0 010-2z"></path> </svg>  </button> </div> </div> <nav class="astronav-items astronav-toggle hidden md:hidden">  <ul> <li> <a class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 text-primary underline-offset-4 hover:underline h-9 px-4 py-2" href="/blog"> Blog posts<span class="ml-2 text-xs"> <svg width="16" height="16" font-size="inherit" data-icon="chevron-right">   <symbol id="ai:local:chevron-right" viewBox="0 0 15 15"><path fill="currentColor" fill-rule="evenodd" d="M6.158 3.135a.5.5 0 0 1 .707.023l3.75 4a.5.5 0 0 1 0 .684l-3.75 4a.5.5 0 1 1-.73-.684L9.566 7.5l-3.43-3.658a.5.5 0 0 1 .023-.707" clip-rule="evenodd"/></symbol><use href="#ai:local:chevron-right"></use>  </svg> </span>  </a> </li><li> <a class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 text-primary underline-offset-4 hover:underline h-9 px-4 py-2" href="/projects"> Projects<span class="ml-2 text-xs"> <svg width="16" height="16" viewBox="0 0 15 15" font-size="inherit" data-icon="chevron-right">   <use href="#ai:local:chevron-right"></use>  </svg> </span>  </a> </li><li> <a class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 text-primary underline-offset-4 hover:underline h-9 px-4 py-2" href="/hackathons"> Hackathons<span class="ml-2 text-xs"> <svg width="16" height="16" viewBox="0 0 15 15" font-size="inherit" data-icon="chevron-right">   <use href="#ai:local:chevron-right"></use>  </svg> </span>  </a> </li> </ul>  </nav> <nav class="astronav-items astronav-toggle hidden max-md:hidden md:flex">  <ul class="flex flex-row gap-2 mt-auto mb-auto ml-4"> <li> <a class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80 h-9 px-4 py-2" href="/blog"> Blog posts </a> </li><li> <a class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80 h-9 px-4 py-2" href="/projects"> Projects </a> </li><li> <a class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80 h-9 px-4 py-2" href="/hackathons"> Hackathons </a> </li> </ul>  </nav>  <script>(function(){const closeOnClick = false;

["DOMContentLoaded", "astro:after-swap"].forEach((event) => {
  document.addEventListener(event, addListeners);
});

// Function to clone and replace elements
function cloneAndReplace(element) {
  const clone = element.cloneNode(true);
  element.parentNode.replaceChild(clone, element);
}

function addListeners() {
  // Clean up existing listeners
  const oldMenuButton = document.getElementById("astronav-menu");
  if (oldMenuButton) {
    cloneAndReplace(oldMenuButton);
  }

  const oldDropdownMenus = document.querySelectorAll(".astronav-dropdown");
  oldDropdownMenus.forEach((menu) => {
    cloneAndReplace(menu);
  });

  // Mobile nav toggle
  const menuButton = document.getElementById("astronav-menu");
  menuButton && menuButton.addEventListener("click", toggleMobileNav);

  // Dropdown menus
  const dropdownMenus = document.querySelectorAll(".astronav-dropdown");
  dropdownMenus.forEach((menu) => {
    const button = menu.querySelector("button");
    button &&
      button.addEventListener("click", (event) =>
        toggleDropdownMenu(event, menu, dropdownMenus)
      );

    // Handle Submenu Dropdowns
    const dropDownSubmenus = menu.querySelectorAll(
      ".astronav-dropdown-submenu"
    );

    dropDownSubmenus.forEach((submenu) => {
      const submenuButton = submenu.querySelector("button");
      submenuButton &&
        submenuButton.addEventListener("click", (event) => {
          event.stopImmediatePropagation();
          toggleSubmenuDropdown(event, submenu);
        });
    });
  });

  // Clicking away from dropdown will remove the dropdown class
  document.addEventListener("click", closeAllDropdowns);

  if (closeOnClick) {
    handleCloseOnClick();
  }
}

function toggleMobileNav() {
  [...document.querySelectorAll(".astronav-toggle")].forEach((el) => {
    el.classList.toggle("hidden");
  });
}

function toggleDropdownMenu(event, menu, dropdownMenus) {
  toggleMenu(menu);

  // Close one dropdown when selecting another
  Array.from(dropdownMenus)
    .filter((el) => el !== menu && !menu.contains(el))
    .forEach(closeMenu);

  event.stopPropagation();
}

function toggleSubmenuDropdown(event, submenu) {
  event.stopPropagation();
  toggleMenu(submenu);

  // Close sibling submenus at the same nesting level
  const siblingSubmenus = submenu
    .closest(".astronav-dropdown")
    .querySelectorAll(".astronav-dropdown-submenu");
  Array.from(siblingSubmenus)
    .filter((el) => el !== submenu && !submenu.contains(el))
    .forEach(closeMenu);
}

function closeAllDropdowns(event) {
  const dropdownMenus = document.querySelectorAll(".dropdown-toggle");
  const dropdownParent = document.querySelectorAll(
    ".astronav-dropdown, .astronav-dropdown-submenu"
  );
  const isButtonInsideDropdown = [
    ...document.querySelectorAll(
      `.astronav-dropdown button, .astronav-dropdown label, .astronav-dropdown input,
	  .astronav-dropdown-submenu button, .astronav-dropdown-submenu label, .astronav-dropdown-submenu input,
	  #astronav-menu`
    ),
  ].some((button) => button.contains(event.target));
  if (!isButtonInsideDropdown) {
    dropdownMenus.forEach((d) => {
      // console.log("I ran", d);
      // if (!d.contains(event.target)) {
      d.classList.remove("open");
      d.removeAttribute("open");
      d.classList.add("hidden");
      // }
    });
    dropdownParent.forEach((d) => {
      d.classList.remove("open");
      d.removeAttribute("open");
      d.setAttribute("aria-expanded", "false");
    });
  }
}

function toggleMenu(menu) {
  menu.classList.toggle("open");
  const expanded = menu.getAttribute("aria-expanded") === "true";
  menu.setAttribute("aria-expanded", expanded ? "false" : "true");
  menu.hasAttribute("open")
    ? menu.removeAttribute("open")
    : menu.setAttribute("open", "");

  const dropdownToggle = menu.querySelector(".dropdown-toggle");
  const dropdownExpanded = dropdownToggle.getAttribute("aria-expanded");
  dropdownToggle.classList.toggle("hidden");
  dropdownToggle.setAttribute(
    "aria-expanded",
    dropdownExpanded === "true" ? "false" : "true"
  );
}

function closeMenu(menu) {
  // console.log("closing", menu);
  menu.classList.remove("open");
  menu.removeAttribute("open");
  menu.setAttribute("aria-expanded", "false");
  const dropdownToggles = menu.querySelectorAll(".dropdown-toggle");
  dropdownToggles.forEach((toggle) => {
    toggle.classList.add("hidden");
    toggle.setAttribute("aria-expanded", "false");
  });
}

function handleCloseOnClick() {
  const navMenuItems = document.querySelector(".astronav-items");
  const navToggle = document.getElementById("astronav-menu");
  const navLink = navMenuItems && navMenuItems.querySelectorAll("a");

  const MenuIcons = navToggle.querySelectorAll(".astronav-toggle");

  navLink &&
    navLink.forEach((item) => {
      item.addEventListener("click", () => {
        navMenuItems?.classList.add("hidden");
        MenuIcons.forEach((el) => {
          el.classList.toggle("hidden");
        });
      });
    });
}
})();</script> </header> <main class="page-container mb-4">   <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).load=e;window.dispatchEvent(new Event("astro:load"));})();;(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><div class="[&>p]:my-1 rich-text-root"> <p class="leading-7"></p><div class="flex flex-wrap gap-4 mb-10 max-sm:flex-col max-sm:flex-nowrap max-sm:w-fit"> <img src="https://storage.googleapis.com/r3pwn-com-turbo-media/gw_suit_cuff_links_101924.jpg" alt="Greg in a suit and adjusting his cuff links" class="w-[300px] h-auto aspect-square rounded-full max-sm:mx-auto"> <div class="[&>p]:my-1 sm:basis-[300px] grow"> <h1 class="scroll-m-20 tracking-tight text-4xl font-extrabold lg:text-5xl"><span class="leading-7">Hey there!</span></h1><p class="leading-7"><span class="leading-7">I’m a Senior-level Software Engineer with a love for building awesome things in </span><astro-island uid="Z2s28Ip" prefix="r0" component-url="/_astro/rotating-text.B7SeKq_I.js" component-export="default" renderer-url="/_astro/client.BO3Rm8ny.js" props="{&quot;texts&quot;:[1,[[0,&quot;TypeScript&quot;],[0,&quot;React&quot;],[0,&quot;Next.js&quot;],[0,&quot;Vue&quot;],[0,&quot;JavaScript&quot;],[0,&quot;.NET&quot;]]],&quot;mainClassName&quot;:[0,&quot;bg-[#00CCFF] text-current font-bold overflow-hidden px-2 py-0.5 justify-center rounded-lg&quot;],&quot;staggerFrom&quot;:[0,&quot;last&quot;],&quot;initial&quot;:[0,{&quot;y&quot;:[0,&quot;100%&quot;]}],&quot;animate&quot;:[0,{&quot;y&quot;:[0,0]}],&quot;exit&quot;:[0,{&quot;y&quot;:[0,&quot;-120%&quot;]}],&quot;staggerDuration&quot;:[0,0.025],&quot;splitLevelClassName&quot;:[0,&quot;overflow-hidden pb-0.5 sm:pb-1 md:pb-1&quot;],&quot;transition&quot;:[0,{&quot;type&quot;:[0,&quot;spring&quot;],&quot;damping&quot;:[0,30],&quot;stiffness&quot;:[0,400]}],&quot;rotationInterval&quot;:[0,2000]}" ssr client="load" opts="{&quot;name&quot;:&quot;RotatingText&quot;,&quot;value&quot;:true}" await-children><span class="inline-flex flex-wrap whitespace-pre-wrap relative bg-[#00CCFF] text-current font-bold overflow-hidden px-2 py-0.5 justify-center rounded-lg"><span class="absolute w-px h-px p-0 m-[-1px] overflow-hidden whitespace-nowrap border-none clip-none">TypeScript</span><span class="flex flex-wrap whitespace-pre-wrap relative" aria-hidden="true"><span class="inline-flex overflow-hidden pb-0.5 sm:pb-1 md:pb-1"><span class="inline-block" style="transform:none">T</span><span class="inline-block" style="transform:none">y</span><span class="inline-block" style="transform:none">p</span><span class="inline-block" style="transform:none">e</span><span class="inline-block" style="transform:none">S</span><span class="inline-block" style="transform:none">c</span><span class="inline-block" style="transform:none">r</span><span class="inline-block" style="transform:none">i</span><span class="inline-block" style="transform:none">p</span><span class="inline-block" style="transform:none">t</span></span></span></span><!--astro:end--></astro-island><span class="leading-7">.</span></p><div class="mx-4 my-4 pl-1 relative rounded-lg bg-muted py-[0.2rem] font-mono text-sm font-semibold overflow-x-auto text-nowrap empty:opacity-0"></div><p class="leading-7"><span class="leading-7">Reach out if you want to build something cool together!</span></p> </div> </div><div class="cards-block flex flex-wrap flex-row gap-4 max-sm:flex-col max-sm:flex-nowrap max-sm:w-fit max-sm:mx-auto"> <a href="/blog/release-iterate-repeat" class="flex"> <div class="rounded-xl border bg-card text-card-foreground shadow flex flex-col min-w-[150px] max-w-[350px] transition-colors hover:bg-muted"> <img src="https://storage.googleapis.com/r3pwn-com-turbo-media/revisions-1.png" alt="the revisions of the &#34;r3&#34; logo" width="350" height="175" loading="lazy" decoding="async" class="rounded-t-xl aspect-video object-cover"> <div class="flex flex-col space-y-1.5 p-6 mb-auto"> <h2 class="text-lg font-semibold leading-7">Latest blog post</h2> <p class="text-sm font-medium leading-5 text-muted-foreground !mt-0">A brief reflection on the evolution of my personal website, from a simple Jekyll theme to a modern NextJS and CMS-backed setup.</p> </div> <div class="flex items-center p-6 pt-0 justify-end"> <div class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground rounded-full h-9 w-9">  <svg width="32" height="32" viewBox="0 0 15 15" data-icon="chevron-right">   <use href="#ai:local:chevron-right"></use>  </svg>  </div> </div> </div> </a><a href="/blog" class="flex"> <div class="rounded-xl border bg-card text-card-foreground shadow flex flex-col min-w-[150px] max-w-[350px] transition-colors hover:bg-muted"> <img src="https://storage.googleapis.com/r3pwn-com-turbo-media/debugenabler-1.png" alt="DebugEnabler" width="350" height="175" loading="lazy" decoding="async" class="rounded-t-xl aspect-video object-cover"> <div class="flex flex-col space-y-1.5 p-6 mb-auto"> <h2 class="text-lg font-semibold leading-7">Blog posts</h2> <p class="text-sm font-medium leading-5 text-muted-foreground !mt-0">Blog posts about various findings and collaborations</p> </div> <div class="flex items-center p-6 pt-0 justify-end"> <div class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground rounded-full h-9 w-9">  <svg width="32" height="32" viewBox="0 0 15 15" data-icon="chevron-right">   <use href="#ai:local:chevron-right"></use>  </svg>  </div> </div> </div> </a><a href="/hackathons" class="flex"> <div class="rounded-xl border bg-card text-card-foreground shadow flex flex-col min-w-[150px] max-w-[350px] transition-colors hover:bg-muted"> <img src="https://storage.googleapis.com/r3pwn-com-turbo-media/hackriddle-2019.jpg" alt="HackRiddle 2019 Winners" width="350" height="175" loading="lazy" decoding="async" class="rounded-t-xl aspect-video object-cover"> <div class="flex flex-col space-y-1.5 p-6 mb-auto"> <h2 class="text-lg font-semibold leading-7">Hackathons</h2> <p class="text-sm font-medium leading-5 text-muted-foreground !mt-0">Some of the hackathons I&#39;ve participated in</p> </div> <div class="flex items-center p-6 pt-0 justify-end"> <div class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground rounded-full h-9 w-9">  <svg width="32" height="32" viewBox="0 0 15 15" data-icon="chevron-right">   <use href="#ai:local:chevron-right"></use>  </svg>  </div> </div> </div> </a><a href="/projects" class="flex"> <div class="rounded-xl border bg-card text-card-foreground shadow flex flex-col min-w-[150px] max-w-[350px] transition-colors hover:bg-muted"> <img src="https://storage.googleapis.com/r3pwn-com-turbo-media/PXL_20230712_161815859.jpg" alt="Philips Smart Outlet Close-up of microcontroller" width="350" height="175" loading="lazy" decoding="async" class="rounded-t-xl aspect-video object-cover"> <div class="flex flex-col space-y-1.5 p-6 mb-auto"> <h2 class="text-lg font-semibold leading-7">Projects</h2> <p class="text-sm font-medium leading-5 text-muted-foreground !mt-0">Some projects I&#39;ve worked on</p> </div> <div class="flex items-center p-6 pt-0 justify-end"> <div class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground rounded-full h-9 w-9">  <svg width="32" height="32" viewBox="0 0 15 15" data-icon="chevron-right">   <use href="#ai:local:chevron-right"></use>  </svg>  </div> </div> </div> </a> </div><p class="leading-7"></p> </div>   </main> <footer class="border-t-2 flex flex-col items-center mt-auto bg-card"> <div class="flex my-1 gap-1 flex-wrap"> <a class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80 rounded-full h-9 w-9" aria-label="Email me" href="mailto:[email protected]">  <svg width="1em" height="1em" class="inline-block w-[1em] h-[1em] text-2xl fill-current select-none" data-icon="email">   <symbol id="ai:local:email" viewBox="0 0 24 24"><path fill="currentColor" d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2m0 4-8 5-8-5V6l8 5 8-5z"/></symbol><use href="#ai:local:email"></use>  </svg>  </a><a class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80 rounded-full h-9 w-9" aria-label="Message me on Telegram" href="https://telegram.me/r3pwn" target="_blank">  <svg width="1em" height="1em" class="inline-block w-[1em] h-[1em] text-2xl fill-current select-none" data-icon="telegram">   <symbol id="ai:local:telegram" viewBox="0 0 24 24"><path fill="currentColor" d="m9.78 18.65.28-4.23 7.68-6.92c.34-.31-.07-.46-.52-.19L7.74 13.3 3.64 12c-.88-.25-.89-.86.2-1.3l15.97-6.16c.73-.33 1.43.18 1.15 1.3l-2.72 12.81c-.19.91-.74 1.13-1.5.71L12.6 16.3l-1.99 1.93c-.23.23-.42.42-.83.42"/></symbol><use href="#ai:local:telegram"></use>  </svg>  </a><a class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80 rounded-full h-9 w-9" aria-label="Visit my GitHub" href="https://www.github.com/r3pwn" target="_blank">  <svg width="1em" height="1em" class="inline-block w-[1em] h-[1em] text-2xl fill-current select-none" data-icon="github">   <symbol id="ai:local:github" viewBox="0 0 24 24"><path fill="currentColor" d="M12 1.27a11 11 0 0 0-3.48 21.46c.55.09.73-.28.73-.55v-1.84c-3.03.64-3.67-1.46-3.67-1.46-.55-1.29-1.28-1.65-1.28-1.65-.92-.65.1-.65.1-.65 1.1 0 1.73 1.1 1.73 1.1.92 1.65 2.57 1.2 3.21.92a2 2 0 0 1 .64-1.47c-2.47-.27-5.04-1.19-5.04-5.5 0-1.1.46-2.1 1.2-2.84a3.76 3.76 0 0 1 0-2.93s.91-.28 3.11 1.1c1.8-.49 3.7-.49 5.5 0 2.1-1.38 3.02-1.1 3.02-1.1a3.76 3.76 0 0 1 0 2.93c.83.74 1.2 1.74 1.2 2.94 0 4.21-2.57 5.13-5.04 5.4.45.37.82.92.82 2.02v3.03c0 .27.1.64.73.55A11 11 0 0 0 12 1.27"/></symbol><use href="#ai:local:github"></use>  </svg>  </a><a class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80 rounded-full h-9 w-9" aria-label="Follow me on Twitter" href="https://www.x.com/r3pwn" target="_blank">  <svg width="1em" height="1em" class="inline-block w-[1em] h-[1em] text-2xl fill-current select-none" data-icon="twitter">   <symbol id="ai:local:twitter" viewBox="0 0 24 24"><path fill="currentColor" d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></symbol><use href="#ai:local:twitter"></use>  </svg>  </a><a class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80 rounded-full h-9 w-9" aria-label="Visit my LinkedIn page" href="https://www.linkedin.com/in/greg-willard" target="_blank">  <svg width="1em" height="1em" class="inline-block w-[1em] h-[1em] text-2xl fill-current select-none" data-icon="linkedin">   <symbol id="ai:local:linkedin" viewBox="0 0 24 24"><path fill="currentColor" d="M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93zM6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37z"/></symbol><use href="#ai:local:linkedin"></use>  </svg>  </a> </div> <span class="text-sm font-medium leading-5 mb-1 text-muted-foreground">Made by Greg Willard, 2025</span> </footer> </body></html>                               

Whois info of domain

Domain Name: R3PWN.COM
Registry Domain ID: 2322352432_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.namecheap.com
Registrar URL: http://www.namecheap.com
Updated Date: 2024-09-17T07:53:31Z
Creation Date: 2018-10-17T04:58:40Z
Registry Expiry Date: 2025-10-17T04:58:40Z
Registrar: NameCheap, Inc.
Registrar IANA ID: 1068
Registrar Abuse Contact Email: [email protected]
Registrar Abuse Contact Phone: +1.6613102107
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Name Server: DNS1.REGISTRAR-SERVERS.COM
Name Server: DNS2.REGISTRAR-SERVERS.COM
DNSSEC: unsigned
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of whois database: 2025-05-04T19:09:03Z <<<
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