{% import "post_macros.html" as post_macros %}

<p><standout>I'm Luna! Nice to meet you.</standout> <span style="float: right;">Focus areas: ROCm×Nix · Linux GPGPU · NixOS · Rust · Java bytecode minutia</span></p>

<p>A better future is fundamentally possible and worth striving for.<br/>
<a href="https://www.givingwhatwecan.org/">Give some of your money to effective charities</a> <small>if you're well off!</small></p>

<p>I will demonstrably maintain an entire machine learning ecosystem if that's what it takes to use my local training cluster.</p>

<p>If you're interested in hiring me for a west coast hybrid or US remote role, contact me at <a href="mailto:jobs26@lunnova.dev">jobs26@lunnova.dev</a>.<br/>
I'm particularly interested in ML & Nix, generally open to exciting opportunities with a good mission statement.</p>

<style>
.featured-grid {
  display: grid;
  --max-cols: 2;
  --min-item: 300px;
  --gap: 1rem;
  --max-item: calc((100% - (var(--max-cols) - 1) * var(--gap)) / var(--max-cols));
  grid-template-columns: repeat(auto-fill, minmax(max(var(--min-item), var(--max-item)), 1fr));
  gap: var(--gap);
  margin-bottom: 1.5rem;
}
.featured-card {
  border: 1px solid var(--luna_mane_purple, #555);
  border-radius: 4px;
  padding: 1rem;
  text-decoration: none;
  color: inherit;
  display: block;
  transition: border-color 0.15s;
	font-size: 120%;
	color: var(--white_pure);

	&:visited {
		color: var(--white_pure);
	}
}
.featured-card:hover {
  border-color: var(--blue_light, #aaa);
}
.featured-card .card-title {
  font-weight: bold;
  margin-bottom: 0.25rem;
}
.featured-card .card-desc {
  font-size: 0.9rem;
  opacity: 0.8;
}
.featured-card.rocm-card {
  --eva-serif: 'Times New Roman', 'Didot', 'Bodoni MT', 'GFS Didot', 'Noto Serif Display', 'Georgia', 'Palatino Linotype', serif;
  border-top: 4px solid #d32f2f;
  border-bottom: 4px solid #d32f2f;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.rocm-card .rocm-hero {
  line-height: 1;
  margin-bottom: 0.5rem;
}
.rocm-card .rocm-title {
  font-family: var(--eva-serif);
  font-size: 3rem;
  font-weight: 900;
  letter-spacing: 0.05em;
  transform: scaleX(0.75);
  transform-origin: left;
}
.rocm-card .rocm-title .emboss-m {
  text-shadow: 0.11em 0.07em 0 #d32f2f;
}
.rocm-card .rocm-ver {
  font-family: var(--eva-serif);
  font-size: 2.5rem;
  font-weight: 700;
  color: #d32f2f;
  letter-spacing: 0.1em;
  transform: scaleX(0.75);
  transform-origin: left;
}
.rocm-card .rocm-ver .dot { opacity: 0.3; }
.rocm-card .rocm-sub {
  font-family: var(--eva-serif);
  font-size: 2.5rem;
  font-weight: 700;
  color: var(--white_pure);
  transform: scaleX(0.70);
  transform-origin: right;
  text-align: right;
  white-space: nowrap;
}
.rocm-card .rocm-sub .sub-red { color: #d32f2f; }
.blade-card {
  display: flex;
  flex-direction: column;
  position: relative;
  overflow: hidden;
}
.blade-card .card-title {
  position: relative;
  z-index: 2;
}
.blade-card .card-subtitle {
  font-size: 0.8rem;
  opacity: 0.6;
  position: relative;
  z-index: 2;
}
.blade-card .card-desc {
  position: relative;
  z-index: 2;
}
.blade-visual {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.blade-svg {
  height: 100%;
  width: auto;
  display: block;
  opacity: 0.85;
  position: absolute;
  right: 0;
  top: 0;
}
.blade-card:hover .blade-svg { opacity: 1; }
.blade-airflow {
  position: absolute;
  top: 0;
  left: 0;
  right: 30%;
  bottom: 0;
  opacity: 0.4;
}
.blade-card:hover .blade-airflow { opacity: 0.6; }
.exp-list {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.exp-header {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
}
.exp-years {
  margin-left: auto;
  font-size: 0.85rem;
  opacity: 0.6;
  white-space: nowrap;
}
.exp-desc {
  font-size: 0.9rem;
  opacity: 0.8;
  padding-left: 0.25rem;
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
}
.exp-langs {
  margin-left: auto;
  font-size: 0.8rem;
  opacity: 0.5;
  font-style: italic;
  white-space: nowrap;
}
</style>

<h3>Featured</h3>
<div class="featured-grid">
  <a class="featured-card rocm-card" href="/articles/rocm-711-you-can-not-build/">
    <div class="rocm-hero">
      <div class="rocm-title">ROC<span class="emboss-m">m</span></div>
      <div class="rocm-ver">:7.1<span class="dot">.</span>1</div>
      <div class="rocm-sub"><span class="sub-red">You can </span>(not)<span class="sub-red"> build.</span></div>
    </div>
    <div class="card-desc">Issues encountered while building and maintaining ROCm packages</div>
  </a>
  <a class="featured-card blade-card" href="/articles/cve-2018-7118-bladesystem-root/">
    <div class="card-title">Rooting your HP BladeSystem</div>
    <div class="card-subtitle">CVE-2018-7118</div>
    <div class="card-desc">Too loud? Guess we have to hack it.</div>
    <div class="blade-visual">
      <!-- <div class="blade-airflow">
        <svg viewBox="0 0 160 200" width="100%" height="100%" xmlns="http://www.w3.org/2000/svg">
          <defs>
            <marker id="af" viewBox="0 0 6 6" refX="3" refY="3" markerWidth="10" markerHeight="10" orient="auto-start-reverse">
              <path d="M0,0.5 L6,3 L0,5.5 Z" fill="#888" opacity="0.6"/>
            </marker>
          </defs>
          <g stroke="#888" stroke-width="0.7" fill="none" opacity="0.4">
            <path d="M0,15 L40,22 L80,35 L120,50 L160,65" marker-mid="url(#af)" marker-end="url(#af)"/>
            <path d="M0,30 L40,38 L80,52 L120,70 L160,90" marker-mid="url(#af)" marker-end="url(#af)"/>
            <path d="M0,50 L40,58 L80,73 L120,92 L160,110" marker-mid="url(#af)" marker-end="url(#af)"/>
            <path d="M0,115 L40,123 L80,137 L120,153 L160,170" marker-mid="url(#af)" marker-end="url(#af)"/>
            <path d="M0,135 L40,145 L80,161 L120,177 L160,193" marker-mid="url(#af)" marker-end="url(#af)"/>
            <path d="M0,155 L40,165 L80,181 L120,197 L160,213" marker-mid="url(#af)" marker-end="url(#af)"/>
          </g>
        </svg>
      </div> -->
      <img class="blade-svg" src="/articles/cve-2018-7118-bladesystem-root/bladesystem-rear.svg" alt="HP BladeSystem c7000 rear view with 10 large fans">
    </div>
  </a>
  <a class="featured-card" href="/articles/pattern-wishcast/">
    <div class="card-title">pattern-wishcast: enum pattern types in 2025 rust</div>
    <div class="card-desc">Approximating a cool upcoming? language feature</div>
  </a>
  <a class="featured-card" href="/articles/ryzen-slow-short-rep-mov/">
    <div class="card-title">Zen 3's Amazing Slow Short Rep Mov</div>
    <div class="card-desc">Zen 3 signals Fast Short Rep Mov support. It's disastrously slow for unaligned data.</div>
  </a>
</div>

<h3>Recent <a href=/articles>articles</a></h3>
<div class="page-list">
{% for p in all_pages | get(key="articles/") | get(key="children") | slice(end=5) %}
    {{ post_macros::page_in_list(page=p) }}
{% endfor %}
</div>

<h3>Experience</h3>
<div class="exp-list">
  <div class="exp-item">
    <div class="exp-header"><strong>Staff Software Engineer,</strong> Block <span class="exp-years">2022–2026</span></div>
    <div class="exp-desc">Cloud platform, notifications at scale, cost optimization
			<br/>Resolved critical cross-team payment SEV (8 figures/mo at risk) in an unfamiliar codebase after others had exhausted their leads<span class="exp-langs">Java, Go, Kotlin, Python</span></div>
  </div>
  <div class="exp-item">
    <div class="exp-header"><strong>GPGPU Compute & Builds,</strong> NixOS <span class="exp-years">2022–present</span></div>
    <div class="exp-desc">Nixpkgs: 4 significant ROCm version upgrades, PIE/ASLR hardening, ML ecosystem fixes <span class="exp-langs">Nix, CMake, Python</span></div>
    <div class="exp-desc">Upstream: Blackwell codegen corrections & new ISA support in Triton, entirely too many ROCm segfaults & UB fixes<span class="exp-langs">C, C++, Rust</span></div>
  </div>
  <div class="exp-item">
    <div class="exp-header"><strong>Senior Software Engineer,</strong> Digital Science <span class="exp-years">2014–2021</span></div>
    <div class="exp-desc">Static analysis tooling, led CI & CD adoption across org, grant management UI, ultra-fast ORM rearchitecture <span class="exp-langs">C#, Rust, T-SQL</span></div>
  </div>
  <div class="exp-item">
    <div class="exp-header"><strong>Founder,</strong> hobby project <span class="exp-years">2009–2010</span></div>
    <div class="exp-desc">Reverse engineered a game protocol as a preteen, built a server emulator from scratch, scaled to 1k concurrent users before receiving a C&D from the publisher <span class="exp-langs">PHP</span></div>
  </div>
</div>
<p>Having room for growth as an IC is important to me, and I'm not looking for positions with direct reports.</p>
<p>Detailed <a href="/oss-contributions/?v=3">OSS contributions index</a> available here, resume available on request at <a href="mailto:jobs26@lunnova.dev">jobs26@lunnova.dev</a>.</p>
