<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" />
    <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
    <link rel="shortcut icon" href="/favicon.ico" />
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
    <meta name="apple-mobile-web-app-title" content="PeterDedene" />
    <link rel="manifest" href="/site.webmanifest" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, interactive-widget=resizes-content" />
    <meta name="description" content="Peter Dedene — AI & Tech Explorer and full-stack software engineer with 15+ years of experience. Founder & engineer at zenjoy, an AI-first digital product studio in Leuven, Belgium." />
    <meta name="author" content="Peter Dedene" />
    <meta name="robots" content="index, follow" />
    <link rel="canonical" href="https://peterdedene.com/" />

    <!-- Open Graph / Social -->
    <meta property="og:title" content="Peter Dedene | AI & Tech Explorer, Software Engineer" />
    <meta property="og:description" content="Full-stack software engineer, 15+ years building meaningful software. Founder & engineer at zenjoy, an AI-first digital product studio." />
    <meta property="og:type" content="website" />
    <meta property="og:url" content="https://peterdedene.com/" />
    <meta property="og:site_name" content="Peter Dedene" />
    <meta property="og:locale" content="en_US" />
    <meta property="og:image" content="https://peterdedene.com/og-image.png" />
    <meta property="og:image:width" content="1200" />
    <meta property="og:image:height" content="630" />
    <meta property="og:image:type" content="image/png" />
    <meta property="og:image:alt" content="Peter Dedene — AI & Tech Explorer, terminal portfolio" />

    <!-- Twitter -->
    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:creator" content="@dedene" />
    <meta name="twitter:title" content="Peter Dedene | AI & Tech Explorer, Software Engineer" />
    <meta name="twitter:description" content="Full-stack software engineer, 15+ years building meaningful software. Founder & engineer at zenjoy." />
    <meta name="twitter:image" content="https://peterdedene.com/og-image.png" />

    <title>Peter Dedene | AI & Tech Explorer, Software Engineer</title>

    <!-- Structured data: Person schema for richer search results -->
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Person",
      "name": "Peter Dedene",
      "url": "https://peterdedene.com/",
      "image": "https://peterdedene.com/og-image.png",
      "jobTitle": "Software Engineer",
      "description": "Full-stack software engineer with 15+ years of experience, founder and engineer at zenjoy, an AI-first digital product studio.",
      "knowsAbout": ["Software Engineering", "Artificial Intelligence", "Cloud Infrastructure", "Security", "Ruby on Rails", "TypeScript", "Swift", "Go", "Elixir"],
      "worksFor": {
        "@type": "Organization",
        "name": "zenjoy",
        "url": "https://zenjoy.be"
      },
      "sameAs": [
        "https://github.com/dedene",
        "https://x.com/dedene",
        "https://linkedin.com/in/dedene",
        "https://threads.net/@dedene"
      ]
    }
    </script>

    <!-- Privacy-friendly analytics by Plausible -->
    <script async src="https://plausible.zenjoy.be/js/pa-veuJTvcwzpMWSnUJ6x1dm.js"></script>
    <script>
      window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}};
      plausible.init()
    </script>
    <script type="module" crossorigin src="/assets/index-oHtjY7S2.js"></script>
    <link rel="stylesheet" crossorigin href="/assets/index-DFoDlzDT.css">
  </head>
  <body>
    <!--
      Crawlable content for search engines, social scrapers and screen readers.
      The visible experience is an interactive terminal (rendered into #root by React),
      whose content only appears after a visitor types a command — invisible to crawlers.
      This block mirrors that content as semantic HTML. It is visually hidden but fully
      present in the DOM, so it also gives assistive-tech users a real, navigable page.
      Keep this in sync with src/commands/* (the /seo-audit skill checks for drift).
    -->
    <main style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:normal;border:0;">
      <h1>Peter Dedene — AI &amp; Tech Explorer, Software Engineer</h1>
      <p>
        Peter Dedene is a full-stack software engineer with 15+ years of experience,
        bringing together technical expertise, a passion for human-centered design, and a
        creative flair to craft innovative solutions. He turns messy problems into things
        people actually enjoy using — software that is functional, intuitive, engaging, and
        delightful to use.
      </p>

      <h2>zenjoy — AI-first digital product studio</h2>
      <p>
        Peter is founder and engineer at <a href="https://zenjoy.be">zenjoy</a>, an AI-first
        digital product studio based in Leuven, Belgium, trusted by 250+ customers — from
        startups to multinationals like the Red Cross and universities like KU Leuven. The
        team builds meaningful digital products, websites, mobile apps, and custom software.
      </p>

      <h2>Tech stack</h2>
      <p>
        Languages: Ruby, Elixir, JavaScript, TypeScript, Swift, and Go. Domains: cloud
        infrastructure, security, networking, and mobile &amp; web. 15+ years across
        full-stack development, scalable backends, UI/UX, technical leadership, and digital
        creativity.
      </p>

      <h2>Now</h2>
      <ul>
        <li>Exploring where AI actually helps — Claude Code, Codex, and custom agents.</li>
        <li>Growing zenjoy and running the engineering side.</li>
        <li>Scaling Nimbu: 250+ projects, 50 million monthly page views on Ruby, Rails, and Kubernetes.</li>
        <li>Building Zentty, a native macOS terminal for agent-native development, built on Ghostty.</li>
      </ul>

      <h2>Side projects</h2>
      <ul>
        <li><a href="https://github.com/dedene/zentty">zentty</a> — a native macOS terminal for agent-native development</li>
        <li><a href="https://github.com/dedene/claw-wrap">claw-wrap</a> — secure credential proxy for CLI tools and HTTP APIs</li>
        <li>Open-source CLI tools: <a href="https://github.com/dedene/notion-cli">notion-cli</a>, <a href="https://github.com/dedene/frontapp-cli">frontapp-cli</a>, <a href="https://github.com/dedene/raindrop-cli">raindrop-cli</a>, <a href="https://github.com/dedene/harvest-cli">harvest-cli</a>, <a href="https://github.com/dedene/irail-cli">irail-cli</a>, and more on <a href="https://github.com/dedene">github.com/dedene</a>.</li>
      </ul>

      <h2>Connect</h2>
      <ul>
        <li><a href="https://github.com/dedene">GitHub</a></li>
        <li><a href="https://x.com/dedene">X / Twitter</a></li>
        <li><a href="https://linkedin.com/in/dedene">LinkedIn</a></li>
        <li><a href="https://threads.net/@dedene">Threads</a></li>
      </ul>
    </main>

    <div id="root"></div>
  </body>
</html>
