<!-- 
slug: /index
title: Home
-->
<!DOCTYPE html>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Home | Jonathan Giles</title>

    <link rel="canonical" href="https://jonathangiles.net/${path}" />
    <meta property="og:type" content="website" />
    <meta property="og:title" content="Home | Jonathan Giles" />
    <meta property="og:description" content="Principal Architect at Microsoft. Java Champion. Open source contributor. Writing about API design, developer experience, and software engineering." />
    <meta property="og:url" content="https://jonathangiles.net/${path}" />
    <meta property="og:site_name" content="Jonathan Giles" />
    <meta property="og:image" content="https://jonathangiles.net/images/bio/jonathan-headshot-lowquality.jpg" />

    <meta name="twitter:card" content="summary" />
    <meta name="twitter:site" content="@JonathanGiles" />
    <meta name="twitter:domain" content="jonathangiles.net" />
    <meta name="twitter:title" content="Home | Jonathan Giles" />
    <meta name="twitter:image" content="https://jonathangiles.net/images/bio/jonathan-headshot-lowquality.jpg" />

    <link rel="alternate" type="application/rss+xml" title="Jonathan Giles Website Feed" href="/rss.xml" />

    <!-- Favicon -->
    <link rel="icon" type="image/svg+xml" href="/images/favicon.svg" />

    <!-- Preconnect to CDN -->
    <link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin />
    <link rel="preconnect" href="https://fonts.googleapis.com" />
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />

    <!-- Inter font (headings only) -->
    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&display=swap" />

    <!-- Bootstrap 5 -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.2/css/bootstrap.min.css" integrity="sha512-b2QcS5SsA8tZodcDtGRELiGv5SaKSk1vDHDaQRda0htPYWZ6046lr3kJ5bAAQdpV2mmA/4v0wQF9MyU6/pDIAg==" crossorigin="anonymous" referrerpolicy="no-referrer" />

    <!-- Site styles -->
    <link rel="stylesheet" href="/css/jonathangiles.net.css" />

    <!-- Syntax highlighting -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/androidstudio.css" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
    <script>hljs.highlightAll();</script>

    <!-- YouTube gallery (media page) -->
    <link rel="stylesheet" href="/css/ytprefs.min.css" />
    <script src="/js/ytprefs.min.js"></script>
</head>

<body>
    <script type="application/ld+json">
    {
        "@context": "https://schema.org",
        "@type": "Person",
        "name": "Jonathan Giles",
        "url": "https://www.jonathangiles.net",
        "image": "https://www.jonathangiles.net/images/bio/jonathan-headshot-lowquality.jpg",
        "jobTitle": "Principal Architect",
        "worksFor": { "@type": "Organization", "name": "Microsoft" },
        "sameAs": [
            "https://github.com/JonathanGiles",
            "https://linkedin.com/in/JonathanGiles"
        ]
    }
    </script>
      <a href="#main" class="skip-link">Skip to content</a>
  <nav class="navbar navbar-expand-lg navbar-dark" aria-label="Main navigation">
    <div class="container-fluid">
      <a class="navbar-brand d-lg-none" href="/index.html">Jonathan Giles</a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarSupportedContent">
        <ul class="navbar-nav mx-auto">
          <li class="nav-item"><a class="nav-link" href="/index.html">Home</a></li>
          <li class="nav-item"><a class="nav-link" href="/posts.html">Posts</a></li>

          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownProjects" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              Projects
            </a>
            <ul class="dropdown-menu" aria-labelledby="navbarDropdownProjects">
              <li><a class="dropdown-item" href="/jbp/index.html">Java Best Practices</a></li>
              <li><a class="dropdown-item" href="/pcb/index.html">Circuit Boards</a></li>
            </ul>
          </li>

          <li class="nav-item"><a class="nav-link" href="/media.html">Media</a></li>
          <li class="nav-item"><a class="nav-link" href="/presentations.html">Presentations</a></li>

          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownAbout" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              About
            </a>
            <ul class="dropdown-menu" aria-labelledby="navbarDropdownAbout">
              <li><a class="dropdown-item" href="/bio.html">Bio</a></li>
              <li><a class="dropdown-item" href="/contact.html">Contact</a></li>
            </ul>
          </li>
        </ul>
      </div>
    </div>
  </nav>


    
    <section class="landing-hero">
        <div class="container">
            <div class="landing-hero-inner">
                <div class="landing-hero-photo">
                    <img src="/images/bio/jonathan-headshot-lowquality.jpg" alt="Jonathan Giles" class="profile-photo" loading="eager" width="200" height="200" />
                </div>
                <div class="landing-hero-text">
                    <h1>Jonathan Giles</h1>
                    <p class="tagline">Principal Architect at Microsoft &middot; Java Champion &middot; Open Source Contributor</p>
                    <p class="intro">I live in New Zealand and have spent two decades building developer tools and platforms at Microsoft, Sun Microsystems, and Oracle. I'm passionate about API design, developer experience, and getting my code onto almost every computer on the planet.</p>
                    <div class="landing-hero-links">
                        <a href="https://github.com/JonathanGiles" aria-label="GitHub">
                            <svg viewBox="0 0 24 24" width="22" height="22" fill="currentColor"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg>
                        </a>
                        <a href="https://linkedin.com/in/JonathanGiles" aria-label="LinkedIn">
                            <svg viewBox="0 0 24 24" width="22" height="22" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
                        </a>
                        <a href="/cdn-cgi/l/email-protection#28424746495c40494668424746495c4049464f41444d5b06464d5c" aria-label="Email">
                            <svg viewBox="0 0 24 24" width="22" height="22" fill="currentColor"><path d="M24 5.457v13.909c0 .904-.732 1.636-1.636 1.636h-3.819V11.73L12 16.64l-6.545-4.91v9.273H1.636A1.636 1.636 0 010 19.366V5.457c0-2.023 2.309-3.178 3.927-1.964L5.455 4.64 12 9.548l6.545-4.91 1.528-1.145C21.69 2.28 24 3.434 24 5.457z"/></svg>
                        </a>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- ─── Highlight Cards ─── -->
    <section class="landing-highlights">
        <div class="container">
            <div class="highlight-grid">
                <a href="/posts.html" class="highlight-card">
                    <div class="highlight-icon">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 013 3L7 19l-4 1 1-4L16.5 3.5z"/></svg>
                    </div>
                    <h3>Blog Posts</h3>
                    <p>Thoughts on Java, API design, developer tools, and software engineering from two decades in the industry.</p>
                </a>
                <a href="/jbp/index.html" class="highlight-card">
                    <div class="highlight-icon">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5A2.5 2.5 0 016.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 014 19.5v-15A2.5 2.5 0 016.5 2z"/></svg>
                    </div>
                    <h3>Java Best Practices</h3>
                    <p>A comprehensive guide to Java API design and library development best practices, distilled from years of experience.</p>
                </a>
                <a href="/presentations.html" class="highlight-card">
                    <div class="highlight-icon">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/></svg>
                    </div>
                    <h3>Presentations</h3>
                    <p>Conference talks from JavaOne, Devoxx, and events around the world. Recognised as a JavaOne Rockstar speaker.</p>
                </a>
            </div>
        </div>
    </section>

    <!-- ─── Awards Strip ─── -->
    <section class="landing-awards">
        <div class="container">
            <img src="/images/awards.png" alt="Java Champion, Duke's Choice Award Winner, and JavaOne Rockstar" loading="lazy" />
        </div>
    </section>

            <footer class="footer">
            <div class="social-icons">
                <a href="https://github.com/JonathanGiles" aria-label="GitHub">
                    <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg>
                </a>
                <a href="https://linkedin.com/in/JonathanGiles" aria-label="LinkedIn">
                    <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
                </a>
                <a href="/rss.xml" aria-label="RSS Feed">
                    <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415a3.3 3.3 0 013.293 3.295A3.303 3.303 0 013.283 24C1.47 24 0 22.526 0 20.71a3.286 3.286 0 013.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg>
                </a>
                <a href="/cdn-cgi/l/email-protection#b9d3d6d7d8cdd1d8d7f9d3d6d7d8cdd1d8d7ded0d5dcca97d7dccd" aria-label="Email">
                    <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M24 5.457v13.909c0 .904-.732 1.636-1.636 1.636h-3.819V11.73L12 16.64l-6.545-4.91v9.273H1.636A1.636 1.636 0 010 19.366V5.457c0-2.023 2.309-3.178 3.927-1.964L5.455 4.64 12 9.548l6.545-4.91 1.528-1.145C21.69 2.28 24 3.434 24 5.457z"/></svg>
                </a>
            </div>
            <div class="footer-tagline">&copy; Jonathan Giles</div>
        </footer>

        <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.2/js/bootstrap.bundle.min.js" integrity="sha512-X/YkDZyjTf4wyc2Vy16YGCPHwAY8rZJY+POgokZjQB2mhIRFJCckEGc6YyX9eNsPfn0PzThEuNs+uaomE5CO6A==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <!-- Cloudflare Pages Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "9e79fbbd4fb3425fb39b06f11814e271"}'></script><!-- Cloudflare Pages Analytics --></body>
</html>

