<!DOCTYPE html><html lang="en" class="h-full antialiased"> <head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Jason Gilmore - Technologist, entrepreneur, bestselling author</title><meta name="description" content="My name is Jason Gilmore, and I am a technologist, entrepreneur, and bestselling author."><link rel="canonical" href="https://wjgilmore.com/"><!-- Open Graph --><meta property="og:title" content="Jason Gilmore - Technologist, entrepreneur, bestselling author"><meta property="og:description" content="My name is Jason Gilmore, and I am a technologist, entrepreneur, and bestselling author."><meta property="og:type" content="website"><meta property="og:url" content="https://wjgilmore.com/"><meta property="og:site_name" content="W. Jason Gilmore"><meta property="og:image" content="https://wjgilmore.com/android-chrome-512x512.png"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><!-- Twitter --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Jason Gilmore - Technologist, entrepreneur, bestselling author"><meta name="twitter:description" content="My name is Jason Gilmore, and I am a technologist, entrepreneur, and bestselling author."><meta name="twitter:creator" content="@wjgilmore"><meta name="twitter:image" content="https://wjgilmore.com/android-chrome-512x512.png"><!-- RSS --><link rel="alternate" type="application/rss+xml" title="W. Jason Gilmore" href="https://wjgilmore.com/feed.xml"><!-- Favicons --><link rel="icon" href="/favicon.ico" sizes="32x32"><link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16"><link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><!-- Google Analytics --><script async src="https://www.googletagmanager.com/gtag/js?id=G-S89EVCE388"></script><script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'G-S89EVCE388');
    </script><link rel="stylesheet" href="/_astro/about.BVs6L1KC.css"></head> <body class="flex h-full bg-zinc-50"> <div class="flex w-full"> <div class="fixed inset-0 flex justify-center sm:px-8"> <div class="flex w-full max-w-7xl lg:px-8"> <div class="w-full bg-white ring-1 ring-zinc-100"></div> </div> </div> <div class="relative flex w-full flex-col"> <div class="bg-teal-500"> <div class="sm:px-8"> <div class="mx-auto w-full max-w-7xl lg:px-8"> <div class="relative px-4 sm:px-8 lg:px-12"> <div class="mx-auto max-w-2xl lg:max-w-5xl py-2"> <p class="text-center text-sm font-medium text-white"> <a class="underline" href="/articles/goodbye-software-guilds-hello-software-factories">Thoughts on the state of software development and AI</a> </p> </div> </div> </div> </div> </div> <header class="pointer-events-none relative z-50 flex flex-none flex-col" id="site-header" data-is-home="true"> <div id="avatar-ref" class="order-last mt-[calc(theme(spacing.16)-theme(spacing.3))]"></div>
    <div class="sm:px-8 top-0 order-last -mb-3 pt-3" id="avatar-container"> <div class="mx-auto w-full max-w-7xl lg:px-8"> <div class="relative px-4 sm:px-8 lg:px-12"> <div class="mx-auto max-w-2xl lg:max-w-5xl">  <div class="top-[var(--avatar-top,theme(spacing.3))] w-full" id="avatar-inner"> <div class="relative"> <div class="absolute left-0 top-3 origin-left transition-opacity h-10 w-10 rounded-full bg-white/90 p-0.5 shadow-lg shadow-zinc-800/5 ring-1 ring-zinc-900/5 backdrop-blur" id="avatar-border" style="opacity: var(--avatar-border-opacity, 0); transform: var(--avatar-border-transform)"></div> <a href="/" aria-label="Home" class="pointer-events-auto block h-16 w-16 origin-left" id="avatar-link" style="transform: var(--avatar-image-transform)"> <img src="/_astro/avatar.CkO0jQnx_1JU0Rf.webp" srcset="/_astro/avatar.CkO0jQnx_1wqn91.webp 64w" alt loading="eager" decoding="async" fetchpriority="auto" width="400" height="400" class="rounded-full bg-zinc-100 object-cover h-16 w-16"> </a> </div> </div>  </div> </div> </div> </div> <div class="top-0 z-10 h-16 pt-6" id="header-bar"> <div class="sm:px-8" id="header-inner"> <div class="mx-auto w-full max-w-7xl lg:px-8"> <div class="relative px-4 sm:px-8 lg:px-12"> <div class="mx-auto max-w-2xl lg:max-w-5xl">  <div class="relative flex gap-4"> <div class="flex flex-1">  </div> <div class="flex flex-1 justify-end md:justify-center"> <!-- Mobile Navigation --> <div class="pointer-events-auto md:hidden" id="mobile-nav-wrapper"> <button type="button" class="group flex items-center rounded-full bg-white/90 px-4 py-2 text-sm font-medium text-zinc-800 shadow-lg shadow-zinc-800/5 ring-1 ring-zinc-900/5 backdrop-blur" id="mobile-nav-button" aria-expanded="false">
Menu
<svg viewBox="0 0 8 6" aria-hidden="true" class="ml-3 h-auto w-2 stroke-zinc-500 group-hover:stroke-zinc-700"> <path d="M1.75 1.75 4 4.25l2.25-2.5" fill="none" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </button> <!-- Mobile nav overlay --> <div class="fixed inset-0 z-50 bg-zinc-800/40 backdrop-blur-sm hidden" id="mobile-nav-overlay"></div> <!-- Mobile nav panel --> <div class="fixed inset-x-4 top-8 z-50 origin-top rounded-3xl bg-white p-8 ring-1 ring-zinc-900/5 hidden" id="mobile-nav-panel"> <div class="flex flex-row-reverse items-center justify-between"> <button aria-label="Close menu" class="-m-1 p-1" id="mobile-nav-close"> <svg viewBox="0 0 24 24" aria-hidden="true" class="h-6 w-6 text-zinc-500"> <path d="m17.25 6.75-10.5 10.5M6.75 6.75l10.5 10.5" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </button> <h2 class="text-sm font-medium text-zinc-600">Navigation</h2> </div> <nav class="mt-6"> <ul class="-my-2 divide-y divide-zinc-100 text-base text-zinc-800"> <li> <a href="/about" class="block py-2">About</a> </li><li> <a href="/articles" class="block py-2">Articles</a> </li><li> <a href="/books" class="block py-2">Books</a> </li><li> <a href="/ironman-diary" class="block py-2">Ironman Diary</a> </li><li> <a href="/projects" class="block py-2">Projects</a> </li><li> <a href="/speaking" class="block py-2">Speaking</a> </li> <li><a href="https://linkedin.com/in/wjgilmore" class="block py-2">LinkedIn</a></li> <li><a href="https://twitter.com/wjgilmore" class="block py-2">Twitter</a></li> </ul> </nav> </div> </div> <!-- Desktop Navigation --> <nav class="pointer-events-auto hidden md:block"> <ul class="flex whitespace-nowrap rounded-full bg-white/90 px-3 text-sm font-medium text-zinc-800 shadow-lg shadow-zinc-800/5 ring-1 ring-zinc-900/5 backdrop-blur"> <li> <a href="/about" class="relative block px-3 py-2 transition hover:text-teal-500"> About  </a> </li><li> <a href="/articles" class="relative block px-3 py-2 transition hover:text-teal-500"> Articles  </a> </li><li> <a href="/books" class="relative block px-3 py-2 transition hover:text-teal-500"> Books  </a> </li><li> <a href="/ironman-diary" class="relative block px-3 py-2 transition hover:text-teal-500"> Ironman Diary  </a> </li><li> <a href="/projects" class="relative block px-3 py-2 transition hover:text-teal-500"> Projects  </a> </li><li> <a href="/speaking" class="relative block px-3 py-2 transition hover:text-teal-500"> Speaking  </a> </li> </ul> </nav> </div> <div class="flex justify-end md:flex-1"> <div class="pointer-events-auto flex items-center gap-2"> <a href="https://linkedin.com/in/wjgilmore" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn" class="inline-flex items-center justify-center rounded-full bg-[#0077B5] p-1.5"> <svg viewBox="0 0 24 24" class="h-4 w-4 fill-white"> <path d="M18.335 18.339H15.67v-4.177c0-.996-.02-2.278-1.39-2.278-1.389 0-1.601 1.084-1.601 2.205v4.25h-2.666V9.75h2.56v1.17h.035c.358-.674 1.228-1.387 2.528-1.387 2.7 0 3.2 1.778 3.2 4.091v4.715zM7.003 8.575a1.546 1.546 0 01-1.548-1.549 1.548 1.548 0 111.547 1.549zm1.336 9.764H5.666V9.75H8.34v8.589zM19.67 3H4.329C3.593 3 3 3.58 3 4.297v15.406C3 20.42 3.594 21 4.328 21h15.338C20.4 21 21 20.42 21 19.703V4.297C21 3.58 20.4 3 19.666 3h.003z"></path> </svg> </a> </div> </div> </div>  </div> </div> </div> </div> </div> </header> <div class="flex-none" style="height: var(--content-offset)"></div> <script type="module">const u=document.getElementById("mobile-nav-button"),S=document.getElementById("mobile-nav-close"),y=document.getElementById("mobile-nav-overlay"),b=document.getElementById("mobile-nav-panel");function k(){y?.classList.remove("hidden"),b?.classList.remove("hidden"),u?.setAttribute("aria-expanded","true")}function g(){y?.classList.add("hidden"),b?.classList.add("hidden"),u?.setAttribute("aria-expanded","false")}u?.addEventListener("click",k);S?.addEventListener("click",g);y?.addEventListener("click",g);b?.querySelectorAll("a").forEach(i=>{i.addEventListener("click",g)});const d=document.getElementById("site-header");if(d?.dataset.isHome==="true"){let i=function(n,t,a){const c=Math.min(t,a),r=Math.max(t,a);return Math.min(Math.max(n,c),r)},e=function(n,t){document.documentElement.style.setProperty(n,t)},v=function(n){document.documentElement.style.removeProperty(n)},p=function(){if(!l)return;const{top:n,height:t}=l.getBoundingClientRect(),a=i(window.scrollY,0,document.body.scrollHeight-window.innerHeight);if(f&&e("--header-position","sticky"),e("--content-offset",`${o}px`),f||a<o)e("--header-height",`${o+t}px`),e("--header-mb",`${-o}px`);else if(n+t<-B){const L=Math.max(t,a-B);e("--header-height",`${L}px`),e("--header-mb",`${t-L}px`)}else n===0&&(e("--header-height",`${a+t}px`),e("--header-mb",`${-a}px`));n===0&&a>0&&a>=o?(e("--header-inner-position","fixed"),v("--header-top"),v("--avatar-top")):(v("--header-inner-position"),e("--header-top","0px"),e("--avatar-top","0px"));const c=1,r=36/64,w=0,m=2/16,I=o-window.scrollY;let s=I*(c-r)/o+r;s=i(s,c,r);let h=I*(w-m)/o+m;h=i(h,w,m),e("--avatar-image-transform",`translate3d(${h}rem, 0, 0) scale(${s})`);const $=1/(r/s),N=(-m+h)*$;e("--avatar-border-transform",`translate3d(${N}rem, 0, 0) scale(${$})`),e("--avatar-border-opacity",s===r?"1":"0"),f=!1};const M=document.getElementById("avatar-ref"),l=document.getElementById("header-bar"),E=document.getElementById("avatar-container"),x=document.getElementById("avatar-inner");let f=!0;const o=M?.offsetTop??0,B=64;d&&(d.style.height="var(--header-height)"),d&&(d.style.marginBottom="var(--header-mb)"),l&&(l.style.position="var(--header-position)"),E&&(E.style.position="var(--header-position)"),x&&(x.style.position="var(--header-inner-position)"),p(),window.addEventListener("scroll",p,{passive:!0}),window.addEventListener("resize",p)}</script> <main class="flex-auto">  <div class="sm:px-8 mt-9"> <div class="mx-auto w-full max-w-7xl lg:px-8"> <div class="relative px-4 sm:px-8 lg:px-12"> <div class="mx-auto max-w-2xl lg:max-w-5xl">  <div class="max-w-2xl"> <h1 class="text-4xl font-bold tracking-tight text-zinc-800 sm:text-5xl">
Software nerd, technology executive, entrepreneur, bestselling
        author, and <span style="text-decoration: line-through">horrible</span> mediocre 1/2 marathon runner.
</h1> <p class="mt-6 text-base text-zinc-600">
I'm Jason Gilmore, a technologist with a deep background in technical due diligence, SaaS, and technical sales. I'm the Technical Partner at
        the private equity firm Xenon Partners, former CEO of the online
        coding school Treehouse, and am the author of ten books on
        databases, web development, e-commerce, and killer SaaS sales demos.
</p> <div class="mt-6 flex gap-6"> <a href="https://www.twitter.com/wjgilmore" aria-label="Follow on X" class="group -m-1 p-1"> <svg viewBox="0 0 24 24" aria-hidden="true" class="h-6 w-6 fill-zinc-500 transition group-hover:fill-zinc-600"> <path d="M13.3174 10.7749L19.1457 4H17.7646L12.7039 9.88256L8.66193 4H4L10.1122 12.8955L4 20H5.38119L10.7254 13.7878L14.994 20H19.656L13.3171 10.7749H13.3174ZM11.4257 12.9738L10.8064 12.0881L5.87886 5.03974H8.00029L11.9769 10.728L12.5962 11.6137L17.7652 19.0075H15.6438L11.4257 12.9742V12.9738Z"></path> </svg> </a> <a href="https://www.github.com/wjgilmore" aria-label="Follow on GitHub" class="group -m-1 p-1"> <svg viewBox="0 0 24 24" aria-hidden="true" class="h-6 w-6 fill-zinc-500 transition group-hover:fill-zinc-600"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 2C6.475 2 2 6.588 2 12.253c0 4.537 2.862 8.369 6.838 9.727.5.09.687-.218.687-.487 0-.243-.013-1.05-.013-1.91C7 20.059 6.35 18.957 6.15 18.38c-.113-.295-.6-1.205-1.025-1.448-.35-.192-.85-.667-.013-.68.788-.012 1.35.744 1.538 1.051.9 1.551 2.338 1.116 2.912.846.088-.666.35-1.115.638-1.371-2.225-.256-4.55-1.14-4.55-5.062 0-1.115.387-2.038 1.025-2.756-.1-.256-.45-1.307.1-2.717 0 0 .837-.269 2.75 1.051.8-.23 1.65-.346 2.5-.346.85 0 1.7.115 2.5.346 1.912-1.333 2.75-1.05 2.75-1.05.55 1.409.2 2.46.1 2.716.637.718 1.025 1.628 1.025 2.756 0 3.934-2.337 4.806-4.562 5.062.362.32.675.936.675 1.897 0 1.371-.013 2.473-.013 2.82 0 .268.188.589.688.486a10.039 10.039 0 0 0 4.932-3.74A10.447 10.447 0 0 0 22 12.253C22 6.588 17.525 2 12 2Z"></path> </svg> </a> <a href="https://www.linkedin.com/in/wjgilmore/" aria-label="Follow on LinkedIn" class="group -m-1 p-1"> <svg viewBox="0 0 24 24" aria-hidden="true" class="h-6 w-6 fill-zinc-500 transition group-hover:fill-zinc-600"> <path d="M18.335 18.339H15.67v-4.177c0-.996-.02-2.278-1.39-2.278-1.389 0-1.601 1.084-1.601 2.205v4.25h-2.666V9.75h2.56v1.17h.035c.358-.674 1.228-1.387 2.528-1.387 2.7 0 3.2 1.778 3.2 4.091v4.715zM7.003 8.575a1.546 1.546 0 01-1.548-1.549 1.548 1.548 0 111.547 1.549zm1.336 9.764H5.666V9.75H8.34v8.589zM19.67 3H4.329C3.593 3 3 3.58 3 4.297v15.406C3 20.42 3.594 21 4.328 21h15.338C20.4 21 21 20.42 21 19.703V4.297C21 3.58 20.4 3 19.666 3h.003z"></path> </svg> </a> </div> </div>  </div> </div> </div> </div>  <div class="mt-16 sm:mt-20"> <div class="-my-4 flex justify-center gap-5 overflow-hidden py-4 sm:gap-8"> <div class="relative aspect-[9/10] w-44 flex-none overflow-hidden rounded-xl bg-zinc-100 sm:w-72 sm:rounded-2xl rotate-2"> <img src="/_astro/image-1.DZKcWYk4_t0EiM.webp" srcset="/_astro/image-1.DZKcWYk4_Z12d5jK.webp 176w, /_astro/image-1.DZKcWYk4_2bhg66.webp 288w" alt sizes="(min-width: 640px) 18rem, 11rem" loading="lazy" decoding="async" fetchpriority="auto" width="800" height="799" class="absolute inset-0 h-full w-full object-cover"> </div><div class="relative aspect-[9/10] w-44 flex-none overflow-hidden rounded-xl bg-zinc-100 sm:w-72 sm:rounded-2xl -rotate-2"> <img src="/_astro/image-2.CHeUfZMy_1Me9Ft.webp" srcset="/_astro/image-2.CHeUfZMy_FuUVo.webp 176w, /_astro/image-2.CHeUfZMy_ZEpQkQ.webp 288w" alt sizes="(min-width: 640px) 18rem, 11rem" loading="lazy" decoding="async" fetchpriority="auto" width="800" height="600" class="absolute inset-0 h-full w-full object-cover"> </div><div class="relative aspect-[9/10] w-44 flex-none overflow-hidden rounded-xl bg-zinc-100 sm:w-72 sm:rounded-2xl rotate-2"> <img src="/_astro/image-3.DMbqnp50_Z1QFWzW.webp" srcset="/_astro/image-3.DMbqnp50_26LWtT.webp 176w, /_astro/image-3.DMbqnp50_KQacE.webp 288w" alt sizes="(min-width: 640px) 18rem, 11rem" loading="lazy" decoding="async" fetchpriority="auto" width="800" height="600" class="absolute inset-0 h-full w-full object-cover"> </div><div class="relative aspect-[9/10] w-44 flex-none overflow-hidden rounded-xl bg-zinc-100 sm:w-72 sm:rounded-2xl rotate-2"> <img src="/_astro/image-6.aiQ7mwlo_IISGw.webp" srcset="/_astro/image-6.aiQ7mwlo_Z10ms0V.webp 176w, /_astro/image-6.aiQ7mwlo_2d7SoU.webp 288w" alt sizes="(min-width: 640px) 18rem, 11rem" loading="lazy" decoding="async" fetchpriority="auto" width="800" height="800" class="absolute inset-0 h-full w-full object-cover"> </div><div class="relative aspect-[9/10] w-44 flex-none overflow-hidden rounded-xl bg-zinc-100 sm:w-72 sm:rounded-2xl -rotate-2"> <img src="/_astro/image-5.48f0r0HT_23P7ql.webp" srcset="/_astro/image-5.48f0r0HT_jIKHS.webp 176w, /_astro/image-5.48f0r0HT_Z1wX1Fc.webp 288w" alt sizes="(min-width: 640px) 18rem, 11rem" loading="lazy" decoding="async" fetchpriority="auto" width="800" height="800" class="absolute inset-0 h-full w-full object-cover"> </div> </div> </div> <div class="sm:px-8 mt-24 md:mt-28"> <div class="mx-auto w-full max-w-7xl lg:px-8"> <div class="relative px-4 sm:px-8 lg:px-12"> <div class="mx-auto max-w-2xl lg:max-w-5xl">  <div class="mx-auto grid max-w-xl grid-cols-1 gap-y-20 lg:max-w-none lg:grid-cols-2"> <div class="flex flex-col gap-16"> <article class="group relative flex flex-col items-start">  <h2 class="text-base font-semibold tracking-tight text-zinc-800"><div class="absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl"></div> <a href="/articles/opening-files-faster-with-vim"> <span class="absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"></span> <span class="relative z-10">Opening Files Faster In Vim with fzf</span> </a></h2> <time datetime="2026-05-19" class="relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 pl-3.5"><span class="absolute inset-y-0 left-0 flex items-center" aria-hidden="true"> <span class="h-4 w-0.5 rounded-full bg-zinc-200"></span> </span>May 19, 2026 </time> <p class="relative z-10 mt-2 text-sm text-zinc-600"> Quickly open any file in Vim using the fzf fuzzy finder </p> <div aria-hidden="true" class="relative z-10 mt-4 flex items-center text-sm font-medium text-teal-500"> Read article <svg viewBox="0 0 16 16" fill="none" aria-hidden="true" class="ml-1 h-4 w-4 stroke-current"> <path d="M6.75 5.75 9.25 8l-2.5 2.25" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </div>  </article><article class="group relative flex flex-col items-start">  <h2 class="text-base font-semibold tracking-tight text-zinc-800"><div class="absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl"></div> <a href="/articles/migrating-a-corporate-marketing-site-to-astrojs-and-cloudflare-pages-using-claude-code"> <span class="absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"></span> <span class="relative z-10">Migrating a Corporate Marketing Site to AstroJS and Cloudflare Pages Using Claude Code</span> </a></h2> <time datetime="2026-05-15" class="relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 pl-3.5"><span class="absolute inset-y-0 left-0 flex items-center" aria-hidden="true"> <span class="h-4 w-0.5 rounded-full bg-zinc-200"></span> </span>May 15, 2026 </time> <p class="relative z-10 mt-2 text-sm text-zinc-600"> Cloudflare Pages and Claude Code can dramatically reduce corporate marketing site hosting costs while increasing productivity </p> <div aria-hidden="true" class="relative z-10 mt-4 flex items-center text-sm font-medium text-teal-500"> Read article <svg viewBox="0 0 16 16" fill="none" aria-hidden="true" class="ml-1 h-4 w-4 stroke-current"> <path d="M6.75 5.75 9.25 8l-2.5 2.25" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </div>  </article><article class="group relative flex flex-col items-start">  <h2 class="text-base font-semibold tracking-tight text-zinc-800"><div class="absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl"></div> <a href="/articles/chess-timman-vs-larsen-1980"> <span class="absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"></span> <span class="relative z-10">Timman vs Larsen - Sicilian Defense</span> </a></h2> <time datetime="2026-05-09" class="relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 pl-3.5"><span class="absolute inset-y-0 left-0 flex items-center" aria-hidden="true"> <span class="h-4 w-0.5 rounded-full bg-zinc-200"></span> </span>May 9, 2026 </time> <p class="relative z-10 mt-2 text-sm text-zinc-600"> Perhaps my favorite example of the Sicilian Defense. A masterpiece game. </p> <div aria-hidden="true" class="relative z-10 mt-4 flex items-center text-sm font-medium text-teal-500"> Read article <svg viewBox="0 0 16 16" fill="none" aria-hidden="true" class="ml-1 h-4 w-4 stroke-current"> <path d="M6.75 5.75 9.25 8l-2.5 2.25" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </div>  </article><article class="group relative flex flex-col items-start">  <h2 class="text-base font-semibold tracking-tight text-zinc-800"><div class="absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl"></div> <a href="/articles/overanalyzing-my-half-marathon-performance"> <span class="absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"></span> <span class="relative z-10">Overanalyzing My Poor 1/2 Marathon Performance</span> </a></h2> <time datetime="2026-04-27" class="relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 pl-3.5"><span class="absolute inset-y-0 left-0 flex items-center" aria-hidden="true"> <span class="h-4 w-0.5 rounded-full bg-zinc-200"></span> </span>April 27, 2026 </time> <p class="relative z-10 mt-2 text-sm text-zinc-600"> I&#39;m not obsessing I swear. </p> <div aria-hidden="true" class="relative z-10 mt-4 flex items-center text-sm font-medium text-teal-500"> Read article <svg viewBox="0 0 16 16" fill="none" aria-hidden="true" class="ml-1 h-4 w-4 stroke-current"> <path d="M6.75 5.75 9.25 8l-2.5 2.25" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </div>  </article> </div> <div class="space-y-10 lg:pl-16 xl:pl-24"> <!-- Resume --> <div class="rounded-2xl border border-zinc-100 p-6"> <h2 class="flex text-sm font-semibold text-zinc-900"> <svg viewBox="0 0 24 24" fill="none" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="h-6 w-6 flex-none"> <path d="M2.75 9.75a3 3 0 0 1 3-3h12.5a3 3 0 0 1 3 3v8.5a3 3 0 0 1-3 3H5.75a3 3 0 0 1-3-3v-8.5Z" class="fill-zinc-100 stroke-zinc-400"></path> <path d="M3 14.25h6.249c.484 0 .952-.002 1.316.319l.777.682a.996.996 0 0 0 1.316 0l.777-.682c.364-.32.832-.319 1.316-.319H21M8.75 6.5V4.75a2 2 0 0 1 2-2h2.5a2 2 0 0 1 2 2V6.5" class="stroke-zinc-400"></path> </svg> <span class="ml-3">Work</span> </h2> <ol class="mt-6 space-y-4"> <li class="flex gap-4"> <dl class="flex flex-auto flex-wrap gap-x-2"> <dt class="sr-only">Company</dt> <dd class="w-full flex-none text-sm font-medium text-zinc-900">Adalo</dd> <dt class="sr-only">Role</dt> <dd class="text-xs text-zinc-500">CTO</dd> <dt class="sr-only">Date</dt> <dd class="ml-auto text-xs text-zinc-400" aria-label="2024 until Present"> <time datetime="2024">2024</time>  <span aria-hidden="true">—</span>  <time datetime="2026">Present</time> </dd> </dl> </li><li class="flex gap-4"> <dl class="flex flex-auto flex-wrap gap-x-2"> <dt class="sr-only">Company</dt> <dd class="w-full flex-none text-sm font-medium text-zinc-900">Xenon Partners</dd> <dt class="sr-only">Role</dt> <dd class="text-xs text-zinc-500">Partner</dd> <dt class="sr-only">Date</dt> <dd class="ml-auto text-xs text-zinc-400" aria-label="2024 until Present"> <time datetime="2024">2024</time>  <span aria-hidden="true">—</span>  <time datetime="2026">Present</time> </dd> </dl> </li><li class="flex gap-4"> <dl class="flex flex-auto flex-wrap gap-x-2"> <dt class="sr-only">Company</dt> <dd class="w-full flex-none text-sm font-medium text-zinc-900">Roaming Hunger</dd> <dt class="sr-only">Role</dt> <dd class="text-xs text-zinc-500">Board Member</dd> <dt class="sr-only">Date</dt> <dd class="ml-auto text-xs text-zinc-400" aria-label="2024 until Present"> <time datetime="2024">2024</time>  <span aria-hidden="true">—</span>  <time datetime="2026">Present</time> </dd> </dl> </li><li class="flex gap-4"> <dl class="flex flex-auto flex-wrap gap-x-2"> <dt class="sr-only">Company</dt> <dd class="w-full flex-none text-sm font-medium text-zinc-900">Treehouse</dd> <dt class="sr-only">Role</dt> <dd class="text-xs text-zinc-500">CEO</dd> <dt class="sr-only">Date</dt> <dd class="ml-auto text-xs text-zinc-400" aria-label="2021 until 2024"> <time datetime="2021">2021</time>  <span aria-hidden="true">—</span>  <time datetime="2024">2024</time> </dd> </dl> </li><li class="flex gap-4"> <dl class="flex flex-auto flex-wrap gap-x-2"> <dt class="sr-only">Company</dt> <dd class="w-full flex-none text-sm font-medium text-zinc-900">DreamFactory</dd> <dt class="sr-only">Role</dt> <dd class="text-xs text-zinc-500">CTO</dd> <dt class="sr-only">Date</dt> <dd class="ml-auto text-xs text-zinc-400" aria-label="2018 until 2021"> <time datetime="2018">2018</time>  <span aria-hidden="true">—</span>  <time datetime="2021">2021</time> </dd> </dl> </li><li class="flex gap-4"> <dl class="flex flex-auto flex-wrap gap-x-2"> <dt class="sr-only">Company</dt> <dd class="w-full flex-none text-sm font-medium text-zinc-900">Nomorobo</dd> <dt class="sr-only">Role</dt> <dd class="text-xs text-zinc-500">Lead Developer</dd> <dt class="sr-only">Date</dt> <dd class="ml-auto text-xs text-zinc-400" aria-label="2015 until 2018"> <time datetime="2015">2015</time>  <span aria-hidden="true">—</span>  <time datetime="2018">2018</time> </dd> </dl> </li><li class="flex gap-4"> <dl class="flex flex-auto flex-wrap gap-x-2"> <dt class="sr-only">Company</dt> <dd class="w-full flex-none text-sm font-medium text-zinc-900">Agricola Antumalal</dd> <dt class="sr-only">Role</dt> <dd class="text-xs text-zinc-500">Lead Developer</dd> <dt class="sr-only">Date</dt> <dd class="ml-auto text-xs text-zinc-400" aria-label="2014 until 2015"> <time datetime="2014">2014</time>  <span aria-hidden="true">—</span>  <time datetime="2015">2015</time> </dd> </dl> </li><li class="flex gap-4"> <dl class="flex flex-auto flex-wrap gap-x-2"> <dt class="sr-only">Company</dt> <dd class="w-full flex-none text-sm font-medium text-zinc-900">GatherApp</dd> <dt class="sr-only">Role</dt> <dd class="text-xs text-zinc-500">Lead Developer</dd> <dt class="sr-only">Date</dt> <dd class="ml-auto text-xs text-zinc-400" aria-label="2014 until 2015"> <time datetime="2014">2014</time>  <span aria-hidden="true">—</span>  <time datetime="2015">2015</time> </dd> </dl> </li><li class="flex gap-4"> <dl class="flex flex-auto flex-wrap gap-x-2"> <dt class="sr-only">Company</dt> <dd class="w-full flex-none text-sm font-medium text-zinc-900">Fondriest Environmental</dd> <dt class="sr-only">Role</dt> <dd class="text-xs text-zinc-500">Lead Developer</dd> <dt class="sr-only">Date</dt> <dd class="ml-auto text-xs text-zinc-400" aria-label="2011 until 2012"> <time datetime="2011">2011</time>  <span aria-hidden="true">—</span>  <time datetime="2012">2012</time> </dd> </dl> </li> </ol> </div> </div> </div>  </div> </div> </div> </div>  </main> <footer class="mt-32 flex-none"> <div class="sm:px-8"> <div class="mx-auto w-full max-w-7xl lg:px-8"> <div class="border-t border-zinc-100 pb-16 pt-10"> <div class="relative px-4 sm:px-8 lg:px-12"> <div class="mx-auto max-w-2xl lg:max-w-5xl"> <div class="flex flex-col items-center justify-between gap-6 sm:flex-row"> <div class="flex flex-wrap justify-center gap-x-6 gap-y-1 text-sm font-medium text-zinc-800"> <a href="/about" class="transition hover:text-teal-500"> About </a><a href="/articles" class="transition hover:text-teal-500"> Articles </a><a href="/books" class="transition hover:text-teal-500"> Books </a><a href="/ironman-diary" class="transition hover:text-teal-500"> Ironman Diary </a><a href="/projects" class="transition hover:text-teal-500"> Projects </a><a href="/speaking" class="transition hover:text-teal-500"> Speaking </a> </div> <p class="text-sm text-zinc-400">
&copy; 2026 W. Jason Gilmore. All rights reserved.
</p> </div> </div> </div> </div> </div> </div> </footer> </div> </div> </body></html>