<!DOCTYPE html>
<html class="dark" lang="en">
  <head>
    <title>Tim Whitacre</title>
      <meta name="description" content="I help organizations turn ambitious ideas into reality, from AI strategy and implementation to full-stack architecture that actually ships">

    <meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="KJibZvkLBpyCxXGpZUfccIdgmpoK61i0hS2mIWlGVcn_XKmbLwkBTq1iDW33w11pp3kTx83_Hf-_8ZVRaHFa6g" />
    

    

        <meta name="viewport" content="width=device-width,initial-scale=1">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="application-name" content="Tim Whitacre's Website">
    <meta name="mobile-web-app-capable" content="yes">

    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Kode+Mono:wght@400..700&family=Work+Sans:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">

    <!-- Favicon & Touch Icons -->
    <link rel="icon" href="/icon.png" type="image/png">
    <link rel="icon" href="/icon.svg" type="image/svg+xml">
    <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="Tim Whitacre" />
    <link rel="manifest" href="/site.webmanifest" />

    <!-- OG Tags -->
    <meta property="og:title" content="Tim Whitacre">
    <meta property="og:type" content="article">
    <meta property="og:description" content="I help organizations turn ambitious ideas into reality, from AI strategy and implementation to full-stack architecture that actually ships">
    <meta name="og:image" content="/og-img.jpg">

    <!-- Twitter Tags -->
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:site" content="@timwco">
    <meta name="twitter:creator" content="@timwco">
    <meta name="twitter:title" content="Tim Whitacre">
    <meta name="twitter:description" content="I help organizations turn ambitious ideas into reality, from AI strategy and implementation to full-stack architecture that actually ships">
    <meta name="twitter:image" content="/og-img.jpg">    

    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-49577871-1"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());

      gtag('config', 'UA-49577871-1');
    </script>

    <link rel="stylesheet" href="/assets/application-8b441ae0.css" data-turbo-track="reload" />
<link rel="stylesheet" href="/assets/tailwind-f010a3c2.css" data-turbo-track="reload" />
    <script type="importmap" data-turbo-track="reload">{
  "imports": {
    "application": "/assets/application-fe23e16f.js",
    "@hotwired/turbo-rails": "/assets/turbo.min-ad2c7b86.js",
    "@hotwired/stimulus": "/assets/stimulus.min-4b1e420e.js",
    "@hotwired/stimulus-loading": "/assets/stimulus-loading-1fc53fe7.js",
    "motion": "https://esm.sh/motion@12.23.24",
    "theme": "/assets/theme-69964489.js",
    "controllers/application": "/assets/controllers/application-3affb389.js",
    "controllers/hello_controller": "/assets/controllers/hello_controller-708796bd.js",
    "controllers": "/assets/controllers/index-ee64e1f1.js"
  }
}</script>
<link rel="modulepreload" href="/assets/application-fe23e16f.js">
<link rel="modulepreload" href="/assets/turbo.min-ad2c7b86.js">
<link rel="modulepreload" href="/assets/stimulus.min-4b1e420e.js">
<link rel="modulepreload" href="/assets/stimulus-loading-1fc53fe7.js">
<link rel="modulepreload" href="https://esm.sh/motion@12.23.24">
<link rel="modulepreload" href="/assets/theme-69964489.js">
<link rel="modulepreload" href="/assets/controllers/application-3affb389.js">
<link rel="modulepreload" href="/assets/controllers/hello_controller-708796bd.js">
<link rel="modulepreload" href="/assets/controllers/index-ee64e1f1.js">
<script type="module">import "application"</script>
  </head>

  <body>
    <header class="fixed top-0 left-0 right-0 z-50 border-b site-header">
  <nav class="max-w-5xl mx-auto px-6 py-4" aria-label="Main navigation">
    <div class="flex items-center justify-between">

      <!-- Logo/Name -->
      <a href="/" class="text-lg font-semibold transition-opacity hover:opacity-70 font-heading"
         style="color: var(--base-text);">
        Tim Whitacre
        <div class="h-0.5 w-12 bg-secondary dark:bg-primary"></div>
      </a>

      <!-- Desktop Navigation -->
      <div class="hidden md:flex items-center gap-8">
        <a class="text-sm transition-opacity hover:opacity-70 text-secondary dark:text-primary font-heading" href="/">About</a>
        <a class="text-sm transition-opacity hover:opacity-70 font-heading" href="/now">Now</a>
        <a class="text-sm transition-opacity hover:opacity-70 font-heading" href="/book">Book</a>
        <a class="text-sm transition-opacity hover:opacity-70 font-heading" href="https://labs.timw.co">Labs</a>
      </div>

      <!-- Mobile Menu Button -->
      <button id="mobile-menu-toggle"
              class="md:hidden p-2 -mr-2"
              aria-label="Toggle menu"
              aria-expanded="false"
              aria-controls="mobile-menu">
        <svg class="w-6 h-6" style="color: var(--base-text-secondary);" fill="none" stroke="currentColor" viewBox="0 0 24 24">
          <path id="menu-icon" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path>
          <path id="close-icon" class="hidden" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
        </svg>
      </button>
    </div>

    <!-- Mobile Navigation -->
    <div id="mobile-menu"
         class="hidden md:hidden mt-4 pt-4 border-t"
         style="border-color: var(--base-border-tertiary);">
      <div class="flex flex-col gap-4">
        <a class="text-sm transition-opacity hover:opacity-70 text-secondary dark:text-primary font-heading" href="/">About</a>
        <a class="text-sm transition-opacity hover:opacity-70 font-heading" href="/now">Now</a>
        <a class="text-sm transition-opacity hover:opacity-70 font-heading" href="/book">Book</a>
        <a class="text-sm transition-opacity hover:opacity-70 font-heading" href="https://labs.timw.co">Labs</a>
      </div>
    </div>
  </nav>
</header>

<!-- Spacer to prevent content from hiding under fixed header -->
<div class="h-16"></div>

<script>
  // Mobile menu toggle
  function initializeMobileMenu() {
    const menuToggle = document.getElementById('mobile-menu-toggle');
    const mobileMenu = document.getElementById('mobile-menu');
    const menuIcon = document.getElementById('menu-icon');
    const closeIcon = document.getElementById('close-icon');

    if (menuToggle) {
      // Remove existing listener if any (prevent duplicates)
      const newMenuToggle = menuToggle.cloneNode(true);
      menuToggle.parentNode.replaceChild(newMenuToggle, menuToggle);

      newMenuToggle.addEventListener('click', () => {
        const isExpanded = newMenuToggle.getAttribute('aria-expanded') === 'true';

        newMenuToggle.setAttribute('aria-expanded', !isExpanded);
        mobileMenu.classList.toggle('hidden');
        menuIcon.classList.toggle('hidden');
        closeIcon.classList.toggle('hidden');
      });
    }

    // Close mobile menu when clicking outside
    document.addEventListener('click', (e) => {
      const currentMenuToggle = document.getElementById('mobile-menu-toggle');
      const currentMobileMenu = document.getElementById('mobile-menu');

      if (currentMobileMenu && !currentMobileMenu.classList.contains('hidden')) {
        const isClickInside = currentMenuToggle.contains(e.target) || currentMobileMenu.contains(e.target);
        if (!isClickInside) {
          currentMobileMenu.classList.add('hidden');
          document.getElementById('menu-icon').classList.remove('hidden');
          document.getElementById('close-icon').classList.add('hidden');
          currentMenuToggle.setAttribute('aria-expanded', 'false');
        }
      }
    });

    // Close mobile menu on escape key
    document.addEventListener('keydown', (e) => {
      const currentMobileMenu = document.getElementById('mobile-menu');
      const currentMenuToggle = document.getElementById('mobile-menu-toggle');

      if (e.key === 'Escape' && currentMobileMenu && !currentMobileMenu.classList.contains('hidden')) {
        currentMobileMenu.classList.add('hidden');
        document.getElementById('menu-icon').classList.remove('hidden');
        document.getElementById('close-icon').classList.add('hidden');
        currentMenuToggle.setAttribute('aria-expanded', 'false');
      }
    });
  }

  // Initialize on both DOMContentLoaded and Turbo navigation
  document.addEventListener('DOMContentLoaded', initializeMobileMenu);
  document.addEventListener('turbo:load', initializeMobileMenu);
</script>

    <main>
      <div class="max-w-5xl mx-auto px-6 py-20 md:py-24">
        
<!-- Hero Section -->
<section class="mb-24">
  <h1 class="heading-1 leading-13">
    I turn ambitious ideas into reality, from AI strategy to architecture that ships.
  </h1>
</section>

<!-- About Section -->
<section class="mb-24">
  <h2 class="heading-2">About Me</h2>

  <div class="space-y-6">
    <div class="content"><p>Hi! I'm a Kansas City-based software architect and entrepreneur with over two decades of experience building impactful products and helping businesses cut through the hype and ship technology that actually works. I love ideating and building, and I bring both technical depth and people skills to everything I do — my background includes counseling alongside the engineering.</p>

<p>Through <a href="https://sunsetlabs.io" target="_blank" rel="noopener noreferrer">Sunset Labs</a> &amp; <a href="https://hopeware.com" target="_blank" rel="noopener noreferrer">Hopeware</a>, I work with startups and growing companies on architecture, AI strategy, and the messy realities of getting things built. Previously, I led technology at <a href="https://newstoryhomes.org" target="_blank" rel="noopener noreferrer">New Story</a>, a housing non-profit recognized by Fast Company as one of the World's Most Innovative Companies, while I was leading the tech, including the work behind the world's first <a href="https://l.timw.co/3dfirst" target="_blank" rel="noopener noreferrer">3D-printed community</a> (Apple even filmed a <a href="https://tv.apple.com/us/episode/mexico/umc.cmc.vw8qwc1j4ld8jr3itsc0b3wy" target="_blank" rel="noopener noreferrer">documentary</a> about it). Before that, I helped launch and taught at <a href="https://linkedin.com/school/the-iron-yard/" target="_blank" rel="noopener noreferrer">The Iron Yard</a>, at the time the largest code school in the world.</p>
</div>
  </div>
</section>


<!-- Contact Section -->
<section class="mb-20">
  <h2 class="heading-2">Get In Touch</h2>

  <div class="space-y-6">
    <div class="content"><p>I'm always interested in hearing about new projects and opportunities. Whether you have a question or just want to say hi, feel free to reach out.</p>
</div> 

    <div class="pt-4">
      <a href="/cdn-cgi/l/email-protection#ff8b9692bf8c8a918c9a8b939e9d8cd19690" class="button">
        Let's Connect
      </a>
    </div>

  </div>
</section>

      </div>
    </main>
    <footer class="border-t" style="border-color: var(--base-border-tertiary);">
  <div class="max-w-5xl mx-auto px-6 py-12">
    <div class="grid grid-cols-1 md:grid-cols-3 gap-12">

      <!-- Left Column: About/Copyright -->
      <div class="space-y-4">
        <p class="text-sm font-semibold font-heading" style="color: var(--base-text);">
          Tim Whitacre
        </p>
        <div class="flex gap-4">
          <a href="https://github.com/timwco"
    target="_blank"
    rel="noopener noreferrer"
    aria-label="GitHub"
    class="transition-opacity hover:opacity-70"
    style="color: var(--base-text-secondary);">
  <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
    <path fill-rule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clip-rule="evenodd" />
  </svg>
</a>
<a href="https://x.com/timwco"
    target="_blank"
    rel="noopener noreferrer"
    aria-label="Twitter"
    class="transition-opacity hover:opacity-70"
    style="color: var(--base-text-secondary);">
  <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
    <path 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" />
  </svg>
</a>
<a href="https://www.linkedin.com/in/twhitacre/"
    target="_blank"
    rel="noopener noreferrer"
    aria-label="LinkedIn"
    class="transition-opacity hover:opacity-70"
    style="color: var(--base-text-secondary);">
  <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
    <path d="M20.5 2h-17A1.5 1.5 0 002 3.5v17A1.5 1.5 0 003.5 22h17a1.5 1.5 0 001.5-1.5v-17A1.5 1.5 0 0020.5 2zM8 19H5v-9h3zM6.5 8.25A1.75 1.75 0 118.3 6.5a1.78 1.78 0 01-1.8 1.75zM19 19h-3v-4.74c0-1.42-.6-1.93-1.38-1.93A1.74 1.74 0 0013 14.19a.66.66 0 000 .14V19h-3v-9h2.9v1.3a3.11 3.11 0 012.7-1.4c1.55 0 3.36.86 3.36 3.66z" />
  </svg>
</a>
        </div>
        <p class="text-xs" style="color: var(--base-text-disabled);">
          © 2026 Tim Whitacre
        </p>
      </div>

      <!-- Middle Column: Navigation Links -->
      <div class="space-y-4">
        <p class="text-sm font-semibold font-heading" style="color: var(--base-text);">
          Other Things 
        </p>
        <nav class="flex flex-row justify-start gap-2 items-center" aria-label="Footer navigation">
          <a class="text-sm transition-opacity hover:opacity-70 font-heading" href="/music">Music</a>
          <span style="color: var(--base-text-tertiary);">•</span>
          <a class="text-sm transition-opacity hover:opacity-70 font-heading" href="/tools">Tools</a>
          <span style="color: var(--base-text-tertiary);">•</span>
          <a class="text-sm transition-opacity hover:opacity-70 font-heading" href="/speaking">Speaking</a>
        </nav>
      </div>

      <!-- Right Column: Social & Theme Toggle -->
      <div class="space-y-6">
        <!-- Theme Toggle -->
        <div class="space-y-4">
          <p class="text-sm font-semibold font-heading" style="color: var(--base-text);">
            Theme
          </p>
          <div class="flex gap-2" role="group" aria-label="Theme selection">
  <button id="theme-light"
          class="p-1.5 rounded-lg transition-all text-black bg-gray-button"
          aria-label="Light mode"
          title="Light mode">
    <!-- Sun Icon -->
    <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" />
    </svg>
  </button> 
  <button id="theme-dark"
          class="p-1.5 rounded-lg transition-all text-black bg-gray-button"
          aria-label="Dark mode"
          title="Dark mode">
    <!-- Moon Icon -->
    <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z" />
    </svg>
  </button>
  <button id="theme-system"
          class="p-1.5 rounded-lg transition-all text-black bg-gray-button"
          aria-label="System theme"
          title="System theme">
    <!-- Monitor/Computer Icon -->
    <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" />
    </svg>
  </button>
</div>
        </div>
      </div>
    </div>
  </div>
</footer>

  <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script></body>
</html>
