<!DOCTYPE html><html lang="en" class="antialiased break-words"> <head><!-- High Priority Global Metadata --><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Opposable Thumbs</title><meta name="generator" content="Astro v4.16.13"><!-- Fonts --><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=Libre+Baskerville:ital,wght@0,400;0,700;1,400&display=swap" rel="stylesheet"><!-- Low Priority Global Metadata --><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="sitemap" href="/sitemap-index.xml"><link rel="alternate" type="application/rss+xml" href="/rss.xml" title="RSS"><!-- Page Metadata --><link rel="canonical" href="https://opposable-thumbs.net/"><meta name="description" content="Miscellaneous content—both personal rambling and work related—from the mind of Thomas Lockney. "><!-- Open Graph / Facebook --><meta property="og:type" content="website"><meta property="og:url" content="https://opposable-thumbs.net/"><meta property="og:title" content="Opposable Thumbs"><meta property="og:description" content="Miscellaneous content—both personal rambling and work related—from the mind of Thomas Lockney. "><meta property="og:image" content="https://opposable-thumbs.net/Thomas.jpg"><meta property="og:image:alt" content="Thomas Lockney"><!-- X/Twitter --><meta property="twitter:card" content="summary_large_image"><meta property="twitter:url" content="https://opposable-thumbs.net/"><meta property="twitter:title" content="Opposable Thumbs"><meta property="twitter:description" content="Miscellaneous content—both personal rambling and work related—from the mind of Thomas Lockney. "><meta property="twitter:image" content="https://opposable-thumbs.net/Thomas.jpg"><meta name="twitter:image:alt" content="Thomas Lockney"><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="animate"><link rel="stylesheet" href="/_astro/_slug_.CJP1xMO9.css"><script type="module" src="/_astro/hoisted.DCjgUn5T.js"></script></head> <body class="bg-main text-main"> <div class="flex flex-col min-h-screen px-4 md:px-8"> <nav class="w-full max-w-3xl mx-auto min-h-10 pt-4 pb-12 relative sm:min-h-14 sm:pb-24 md:pt-8" data-astro-cid-dmqpwcec> <div class="relative" data-astro-cid-dmqpwcec> <button class="menu-toggle w-8 h-8 -ml-1 flex items-center justify-center relative z-30 md:hidden" aria-label="Open Menu" aria-expanded="false" aria-controls="menu-items" data-astro-cid-dmqpwcec> <span class="menu-toggle-icon w-6 h-px relative bg-current" data-astro-cid-dmqpwcec></span> </button> <ul id="menu-items" class="menu flex gap-6" data-astro-cid-dmqpwcec> <li class="py-1" data-astro-cid-dmqpwcec> <a class="text-xl font-serif text-main hover:underline hover:underline-offset-2 hover:decoration-1 md:text-base underline underline-offset-2 decoration-1" href="/" data-astro-cid-dmqpwcec> Home </a> </li><li class="py-1" data-astro-cid-dmqpwcec> <a class="text-xl font-serif text-main hover:underline hover:underline-offset-2 hover:decoration-1 md:text-base" href="/posts" data-astro-cid-dmqpwcec> Blog </a> </li><li class="py-1" data-astro-cid-dmqpwcec> <a class="text-xl font-serif text-main hover:underline hover:underline-offset-2 hover:decoration-1 md:text-base" href="/about" data-astro-cid-dmqpwcec> About </a> </li><li class="py-1" data-astro-cid-dmqpwcec> <a class="text-xl font-serif text-main hover:underline hover:underline-offset-2 hover:decoration-1 md:text-base" href="/contact" data-astro-cid-dmqpwcec> Contact </a> </li> </ul> </div> <div class="absolute right-0 top-4 z-10 md:top-8" data-astro-cid-dmqpwcec> <button id="theme-toggle" class="w-8 h-8 -mr-2 flex items-center justify-center" aria-label="Change color scheme"> <svg width="1em" height="1em" data-icon="mdi:circle-half-full">   <symbol id="ai:mdi:circle-half-full" viewBox="0 0 24 24"><path fill="currentColor" d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 2a8 8 0 0 1 8 8a8 8 0 0 1-8 8z"/></symbol><use href="#ai:mdi:circle-half-full"></use>  </svg> </button>   </div>   </nav> <header class="w-full max-w-3xl mx-auto mb-12 sm:mb-16"> <a class="font-serif text-2xl leading-tight font-medium text-theme-foreground sm:text-4xl" href="/"> Opposable Thumbs </a> <p class="text-sm leading-tight mt-1">My home on the web</p> </header> <main class="grow w-full max-w-3xl mx-auto">  <section class="w-full flex flex-col gap-8 mb-16 sm:mb-24"><h1 class="text-3xl leading-tight font-serif font-medium sm:text-5xl sm:leading-tight">Welcome!</h1><figure><img class="w-full" src="/Thomas.jpg" loading="lazy" decoding="async" alt="A person sitting at a desk in front of a computer"></figure><div class="max-w-none prose prose-dante sm:prose-lg"><p>Hi, I’m Thomas Lockney—an Oregon-based engineering leader with a lifelong passion for learning, problem-solving, and building impactful technologies. I thrive when working with diverse teams to tackle complex challenges, combining collective expertise to deliver solutions that make a real difference for customers and businesses alike.</p>
<p>With a deep product-oriented mindset and a generalist’s perspective, I’ve spent my career building platforms that scale, empower users, and drive measurable success.</p>
</div><div class="flex flex-wrap gap-4"><a href="/about" class="inline-flex items-center justify-center px-6 py-2 font-serif text-sm leading-tight text-main bg-main border border-main rounded transition hover:bg-muted">Learn more about my background and journey</a><a href="/contact" class="inline-flex items-center justify-center px-6 py-2 font-serif text-sm leading-tight text-main bg-main border border-main rounded transition hover:bg-muted">Get in Touch</a></div></section> <div class="mb-16 sm:mb-24"> <h2 class="mb-12 text-xl font-serif italic sm:mb-16 sm:text-2xl">Writing</h2> <a class="flex justify-between items-start gap-8 group mb-10 sm:mb-12" href="/posts/2021/06/looking-back/"> <div class="grow"> <h3 class="text-xl leading-tight font-serif font-medium group-hover:underline group-hover:decoration-dashed group-hover:underline-offset-4 group-hover:decoration-1 sm:text-2xl">Looking Back</h3> <div class="mt-1 text-sm leading-normal"> <time datetime="2021-06-09T00:47:59.000Z"> June 9, 2021 </time>  </div>  </div> <div class="hidden font-serif italic opacity-0 transition group-hover:opacity-100 sm:inline-flex sm:gap-1 sm:items-center sm:shrink-0">
Read Post <svg width="1em" height="1em" data-icon="mdi:arrow-right">   <symbol id="ai:mdi:arrow-right" viewBox="0 0 24 24"><path fill="currentColor" d="M4 11v2h12l-5.5 5.5l1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5L16 11z"/></symbol><use href="#ai:mdi:arrow-right"></use>  </svg> </div> </a><a class="flex justify-between items-start gap-8 group mb-10 sm:mb-12" href="/posts/2012/08/a-few-akka-posts/"> <div class="grow"> <h3 class="text-xl leading-tight font-serif font-medium group-hover:underline group-hover:decoration-dashed group-hover:underline-offset-4 group-hover:decoration-1 sm:text-2xl">A few Akka posts</h3> <div class="mt-1 text-sm leading-normal"> <time datetime="2012-08-16T00:00:00.000Z"> August 16, 2012 </time>  </div>  </div> <div class="hidden font-serif italic opacity-0 transition group-hover:opacity-100 sm:inline-flex sm:gap-1 sm:items-center sm:shrink-0">
Read Post <svg width="1em" height="1em" viewBox="0 0 24 24" data-icon="mdi:arrow-right">   <use href="#ai:mdi:arrow-right"></use>  </svg> </div> </a><a class="flex justify-between items-start gap-8 group mb-10 sm:mb-12" href="/posts/2011/11/a-jvm-based-developers-reading-list/"> <div class="grow"> <h3 class="text-xl leading-tight font-serif font-medium group-hover:underline group-hover:decoration-dashed group-hover:underline-offset-4 group-hover:decoration-1 sm:text-2xl">A reading list for JVM-based developers</h3> <div class="mt-1 text-sm leading-normal"> <time datetime="2011-11-25T00:00:00.000Z"> November 25, 2011 </time>  </div>  </div> <div class="hidden font-serif italic opacity-0 transition group-hover:opacity-100 sm:inline-flex sm:gap-1 sm:items-center sm:shrink-0">
Read Post <svg width="1em" height="1em" viewBox="0 0 24 24" data-icon="mdi:arrow-right">   <use href="#ai:mdi:arrow-right"></use>  </svg> </div> </a> <div class="mt-12 sm:mt-16"> <a href="/posts" class="inline-flex items-center justify-center px-6 py-2 font-serif text-sm leading-tight text-main bg-main border border-main rounded transition hover:bg-muted">View All Posts</a> </div> </div> </main> <footer class="w-full max-w-3xl mx-auto pt-12 pb-10 sm:pt-24 sm:pb-14">  <div class="pt-6 flex flex-col gap-4 border-t border-dashed border-main sm:flex-row-reverse sm:justify-between sm:items-center"> <div class="flex flex-wrap gap-x-4 gap-y-1"> <a class="inline-flex items-center justify-center text-sm hover:underline hover:underline-offset-2" href="https://bsky.app/profile/tlockney.net" target="_blank" rel="noopener noreferer"> <svg width="1em" height="1em" data-icon="simple-icons:bluesky">   <symbol id="ai:simple-icons:bluesky" viewBox="0 0 24 24"><path fill="currentColor" d="M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565C.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479c.815 2.736 3.713 3.66 6.383 3.364q.204-.03.415-.056q-.207.033-.415.056c-3.912.58-7.387 2.005-2.83 7.078c5.013 5.19 6.87-1.113 7.823-4.308c.953 3.195 2.05 9.271 7.733 4.308c4.267-4.308 1.172-6.498-2.74-7.078a9 9 0 0 1-.415-.056q.21.026.415.056c2.67.297 5.568-.628 6.383-3.364c.246-.828.624-5.79.624-6.478c0-.69-.139-1.861-.902-2.206c-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8"/></symbol><use href="#ai:simple-icons:bluesky"></use>  </svg> </a><a class="inline-flex items-center justify-center text-sm hover:underline hover:underline-offset-2" href="https://www.linkedin.com/in/thomaslockney/" target="_blank" rel="noopener noreferer"> <svg width="1em" height="1em" data-icon="simple-icons:linkedin">   <symbol id="ai:simple-icons:linkedin" viewBox="0 0 24 24"><path fill="currentColor" d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037c-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.85c3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.06 2.06 0 0 1-2.063-2.065a2.064 2.064 0 1 1 2.063 2.065m1.782 13.019H3.555V9h3.564zM22.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 0z"/></symbol><use href="#ai:simple-icons:linkedin"></use>  </svg> </a><a class="inline-flex items-center justify-center text-sm hover:underline hover:underline-offset-2" href="https://fosstodon.org/@tlockney" target="_blank" rel="noopener noreferer"> <svg width="1em" height="1em" data-icon="simple-icons:mastodon">   <symbol id="ai:simple-icons:mastodon" viewBox="0 0 24 24"><path fill="currentColor" d="M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127C.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611c.118 1.24.325 2.47.62 3.68c.55 2.237 2.777 4.098 4.96 4.857c2.336.792 4.849.923 7.256.38q.398-.092.786-.213c.585-.184 1.27-.39 1.774-.753a.06.06 0 0 0 .023-.043v-1.809a.05.05 0 0 0-.02-.041a.05.05 0 0 0-.046-.01a20.3 20.3 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.6 5.6 0 0 1-.319-1.433a.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546c.376 0 .75 0 1.125-.01c1.57-.044 3.224-.124 4.768-.422q.059-.011.11-.024c2.435-.464 4.753-1.92 4.989-5.604c.008-.145.03-1.52.03-1.67c.002-.512.167-3.63-.024-5.545m-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976c-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35c-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102q0-1.965 1.011-3.12c.696-.77 1.608-1.164 2.74-1.164c1.311 0 2.302.5 2.962 1.498l.638 1.06l.638-1.06c.66-.999 1.65-1.498 2.96-1.498c1.13 0 2.043.395 2.74 1.164q1.012 1.155 1.012 3.12z"/></symbol><use href="#ai:simple-icons:mastodon"></use>  </svg> </a> </div> <p class="text-sm">
&copy; 2024&nbsp;<a class="hover:underline hover:underline-offset-2" href="/">Opposable Thumbs</a>. All rights reserved.
</p> </div> </footer> </div> </body></html>