<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- Primary Meta Tags -->
  <title>Sam Bloomberg-Rissman — Photography & Product</title>
  <meta name="title" content="Sam Bloomberg-Rissman — Photography & Product">
  <meta name="description" content="Sam Bloomberg-Rissman is a product leader at Salesforce and a photographer. A slow archive of frames made carefully — and a decade of shipping product.">
  <meta name="keywords" content="Sam Bloomberg-Rissman, photography, product management, Salesforce, Leica, visual storytelling, event technology">
  <meta name="author" content="Sam Bloomberg-Rissman">
  <meta name="robots" content="index, follow">
  <meta name="theme-color" content="#fbf7f0">

  <!-- Favicon -->
  <link rel="icon" type="image/x-icon" href="/assets/favicon.Cbx6Cu5A.ico">

  <!-- Open Graph -->
  <meta property="og:type" content="website">
  <meta property="og:url" content="https://sambr.com/">
  <meta property="og:title" content="Sam Bloomberg-Rissman — Photography & Product">
  <meta property="og:description" content="A slow archive of frames made carefully — and a decade of shipping product.">
  <meta property="og:image" content="https://sambr.com/images/gallery/S2501548.JPG">
  <meta property="og:image:width" content="1200">
  <meta property="og:image:height" content="630">
  <meta property="og:site_name" content="Sam Bloomberg-Rissman">
  <meta property="og:locale" content="en_US">

  <!-- Twitter -->
  <meta property="twitter:card" content="summary_large_image">
  <meta property="twitter:url" content="https://sambr.com/">
  <meta property="twitter:title" content="Sam Bloomberg-Rissman — Photography & Product">
  <meta property="twitter:description" content="A slow archive of frames made carefully — and a decade of shipping product.">
  <meta property="twitter:image" content="https://sambr.com/images/gallery/S2501548.JPG">
 
  <!-- Geo -->
  <meta name="geo.region" content="US">
  <meta name="geo.placename" content="San Francisco">

  <!-- Canonical -->
  <link rel="canonical" href="https://sambr.com/">
  <link rel="sitemap" type="application/xml" href="/sitemap.xml">

  <!-- Structured data -->
  <script type="application/ld+json">
  {"@context":"https://schema.org","@type":"Person","name":"Sam Bloomberg-Rissman","url":"https://sambr.com/","image":"https://sambr.com/images/gallery/S2509908.JPG","jobTitle":"Sr. Director, Event Technology PM","worksFor":{"@type":"Organization","name":"Salesforce"}}
  </script>

  <!-- Fonts: Fraunces (variable), Inter, JetBrains Mono — loaded async so they don't block render -->
  <link rel="preconnect" href="https://fonts.googleapis.com" crossorigin>
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;1,9..144,400;1,9..144,500&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400&display=swap" onload="this.onload=null;this.rel='stylesheet'">
  <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;1,9..144,400;1,9..144,500&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400&display=swap"></noscript>

  <!-- Preload LCP: first hero slide (AVIF). imagesrcset lets the browser pick
       the right-sized image per viewport/DPR; matches the <picture> in JS.
       `type` hint means browsers without AVIF skip this preload. -->
  <link rel="preload" as="image"
        imagesrcset="/images/gallery-optimized/S2509908-640w.avif 640w, /images/gallery-optimized/S2509908-800w.avif 800w, /images/gallery-optimized/S2509908-1600w.avif 1600w, /images/gallery-optimized/S2509908-1920w.avif 1920w"
        imagesizes="(max-width: 700px) 150vw, 100vw"
        type="image/avif"
        fetchpriority="high">

  <!-- Main stylesheet -->
  <script type="module" crossorigin src="/assets/main.mGhq4Zd2.js"></script>
  <link rel="stylesheet" crossorigin href="/assets/style.CCbDcphU.css">
</head>
<body>

  <!-- ── Nav ─────────────────────────────────────────────────────── -->
  <nav class="nav" id="nav" role="navigation" aria-label="Main navigation">
    <a href="#top" class="nav-brand" aria-label="Home">
      sam bloomberg-rissman <span class="dot" aria-hidden="true"></span>
    </a>
    <div class="nav-links">
      <a href="#frames">Frames</a>
      <a href="#about">About</a>
      <a href="#product">Product</a>
      <a href="#contact">Contact</a>
    </div>
    <div class="nav-right">
      <span class="nav-meta" aria-hidden="true">
        <span class="live-dot"></span>Roll 24 · SF
      </span>
    </div>
  </nav>

  <!-- ── Hero: Shuffle ───────────────────────────────────────────── -->
  <header class="hero hero-shuffle" id="top" itemscope itemtype="https://schema.org/Person">
    <div class="hero-bg" id="hero-bg" aria-hidden="true">
      <!-- 6 slides injected by JS -->
    </div>
    <div class="hero-scrim" aria-hidden="true"></div>

    <div class="hero-frame-indicator" aria-hidden="true">
      <span class="dot"></span>
      <span id="hero-frame-counter">01 / 06</span>
    </div>

    <div class="hero-inner">
      <span class="hero-eyebrow">§ 01 · Photography + Product</span>
      <h1 class="hero-title" itemprop="name">
        A slow archive of <em>quiet moments</em>,<br>held carefully in the frame.
      </h1>
      <p class="hero-sub" itemprop="description">
        I'm Sam Bloomberg-Rissman — a product leader at Salesforce and a photographer who sees the world through both lenses. This is where I put the frames worth keeping.
      </p>
      <div class="hero-cta">
        <a class="btn btn-accent" href="#frames">Open contact sheet</a>
        <a class="btn btn-on-dark" href="#about">About Sam</a>
      </div>
    </div>

    <div class="hero-meta" id="hero-meta" aria-hidden="true">
      <div><span class="k">TITLE&nbsp;</span><span id="hero-meta-title"></span></div>
      <div><span class="k">DATE&nbsp;</span><span id="hero-meta-date"></span></div>
    </div>

    <div class="film-edge" aria-hidden="true">
      <div class="sprocket"></div>
      <div class="sprocket"></div>
      <div class="sprocket"></div>
      <div class="label">SAMBR · 400 · 36EXP</div>
      <div class="sprocket"></div>
      <div class="sprocket"></div>
      <div class="sprocket"></div>
    </div>
  </header>

  <!-- ── Gallery: Contact sheet ──────────────────────────────────── -->
  <section id="frames" class="section-frames" aria-labelledby="frames-title">
    <div class="section">
      <div class="section-head">
        <div class="section-head-left">
          <div class="section-kicker"><span class="num">§ 02 · Recent Frames</span></div>
          <h2 class="section-title" id="frames-title">Quiet places, careful light.</h2>
          <p class="lead">A rolling selection from the last few years — film and digital, coast and city.</p>
        </div>
        <div class="section-meta">Leica M11 · SF + elsewhere</div>
      </div>
    </div>
    <div class="strips-wrap">
      <div class="strips-surface">
        <div class="strips-grid" id="gallery-grid" role="list" aria-label="Photography gallery">
          <!-- Populated by JS from gallery-manifest.json -->
        </div>
      </div>
    </div>
  </section>

  <!-- ── About ───────────────────────────────────────────────────── -->
  <section id="about" class="section-about" aria-labelledby="about-title" itemscope itemtype="https://schema.org/Person">
    <div class="about-inner">
      <div class="section-head">
        <div class="section-head-left">
          <div class="section-kicker"><span class="num">§ 03 · About</span></div>
          <h2 class="section-title" id="about-title">Two lenses on one world.</h2>
        </div>
        <div class="section-meta">Product &amp; Photography</div>
      </div>
      <div class="about-grid">
        <figure class="about-portrait">
          <div class="tile">
            <picture>
              <source type="image/avif" srcset="/images/gallery-optimized/S2509862-320w.avif 320w, /images/gallery-optimized/S2509862-640w.avif 640w, /images/gallery-optimized/S2509862-800w.avif 800w" sizes="(max-width: 900px) 90vw, 400px">
              <source type="image/webp" srcset="/images/gallery-optimized/S2509862-320w.webp 320w, /images/gallery-optimized/S2509862-640w.webp 640w, /images/gallery-optimized/S2509862-800w.webp 800w" sizes="(max-width: 900px) 90vw, 400px">
              <img
                src="/images/gallery-optimized/S2509862-640w.jpg"
                srcset="/images/gallery-optimized/S2509862-320w.jpg 320w, /images/gallery-optimized/S2509862-640w.jpg 640w, /images/gallery-optimized/S2509862-800w.jpg 800w"
                sizes="(max-width: 900px) 90vw, 400px"
                alt="Sam Bloomberg-Rissman — winter coast, Cambria CA"
                loading="lazy"
                decoding="async"
                itemprop="image">
            </picture>
          </div>
          <figcaption class="caption">SBR · 11.24 · Cambria, CA</figcaption>
        </figure>
        <div class="about-text">
          <p class="pullquote">
            Both practices are the same: decide what to keep in the frame, and <span class="drop">trust the rest.</span>
          </p>
          <p itemprop="description">I'm Sam. I live in Berkeley with my kid and a music setup that was definitely worth every penny (ask me again in a year). I spent most of my twenties traveling the world making photographs for a living, 20-something countries, a few Lonely Planet covers, and a frankly unreasonable amount of time in airports. Now I shoot because I can't stop, which turns out to be a better reason anyway.</p>
          <p>I'm drawn to the blue hour, books, and conversations that go longer than planned. I have strong opinions about lenses, records, and the right way to spend a Sunday — most of which involve walking somewhere without a particular destination, which my kid finds less charming than I do.</p>
          <p>I believe perfection is a useful compass but a terrible destination. The best photographs and the best products have this in common.</p>
          <p>Pull up a chair.</p>
          <div class="about-stats">
            <div class="about-stat">
              <div class="label">Years in product</div>
              <div class="value">15+</div>
            </div>
            <div class="about-stat">
              <div class="label">Camera of choice</div>
              <div class="value">Leica M11</div>
            </div>
            <div class="about-stat">
              <div class="label">Current role</div>
              <div class="value">Salesforce</div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </section>

  <!-- ── Product work ─────────────────────────────────────────────── -->
  <section id="product" class="section-product" aria-labelledby="product-title">
    <div class="section-head">
      <div class="section-head-left">
        <div class="section-kicker"><span class="num">§ 04 · Product</span></div>
        <h2 class="section-title" id="product-title">The other lens — over fifteen years of shipping.</h2>
        <p class="lead">Years of work in product management — mostly at Salesforce, Royal Caribbean and Disney, all digital. Everything below shipped to real customers.</p>
      </div>
      <div class="section-meta">Current: Event Tech @ Salesforce</div>
    </div>
    <div class="product-list">

      <div class="product-row">
        <span class="product-years">2025—</span>
        <div class="product-main">
          <h3 class="product-title">Sr. Director, PM — Event Technology</h3>
          <p class="product-desc">Leading product strategy for AI-native event experiences, deploying the Agentforce platform across the full attendee journey for Dreamforce, World Tour, and beyond. Building a global PM team to unify event tech strategy.</p>
        </div>
        <span class="product-role">Salesforce</span>
      </div>

      <div class="product-row">
        <span class="product-years">2023—2025</span>
        <div class="product-main">
          <h3 class="product-title">Sr. Director, PM — Marketing Localization</h3>
          <p class="product-desc">Scaled localization across Salesforce using generative AI and machine translation. Stood up a new localization ops function with tooling and process that sped delivery and widened global reach.</p>
        </div>
        <span class="product-role">Salesforce</span>
      </div>

      <div class="product-row">
        <span class="product-years">2020—2023</span>
        <div class="product-main">
          <h3 class="product-title">Director of Product Management</h3>
          <p class="product-desc">Led a team of six PMs building the tools behind salesforce.com — content management, site search, chatbots, and the broader marketing-web ecosystem.</p>
        </div>
        <span class="product-role">Salesforce</span>
      </div>

      <div class="product-row">
        <span class="product-years">2018—2020</span>
        <div class="product-main">
          <h3 class="product-title">Director, Digital Experience & PM</h3>
          <p class="product-desc">Ran a large-scale e-commerce overhaul with a dozen scrum teams. Managed 20+ PMs and 200+ developers shipping the call-center tool, guest-facing web app, and inventory/pricing platform. Rebuilt the terminal experience with facial recognition — got guests on vacation faster.</p>
        </div>
        <span class="product-role">Royal Caribbean</span>
      </div>

      <div class="product-row">
        <span class="product-years">2017—2018</span>
        <div class="product-main">
          <h3 class="product-title">Director, Ecommerce</h3>
          <p class="product-desc">Led product, design, and engineering for a tours-and-activities startup inside the group. Ran the SAP Hybris platform, the consumer site, and the back-office tooling; built APIs that made the product sellable on third-party platforms.</p>
        </div>
        <span class="product-role">Royal Caribbean</span>
      </div>

      <div class="product-row">
        <span class="product-years">2016</span>
        <div class="product-main">
          <h3 class="product-title">Digital Guest Experience Director</h3>
          <p class="product-desc">Led the overhaul of the FastPass+ system at Walt Disney World — guest satisfaction rose 10%, complaints dropped 50%. Managed 4–6 PMs shipping new digital experiences across the global portfolio.</p>
        </div>
        <span class="product-role">Disney Parks</span>
      </div>

      <div class="product-row">
        <span class="product-years">2013—2016</span>
        <div class="product-main">
          <h3 class="product-title">Manager, Digital Guest Experience & PM</h3>
          <p class="product-desc">Moved Disney PhotoPass from desktop-only to a mobile-app business — engagement up 64% YoY. Led design of a self-guided vacation setup tool, and owned homepage + global nav performance for each destination site.</p>
        </div>
        <span class="product-role">Disney Parks</span>
      </div>

      <div class="product-row">
        <span class="product-years">2013</span>
        <div class="product-main">
          <h3 class="product-title">Optimization Lead</h3>
          <p class="product-desc">Built the eCommerce digital optimization team from 2 to 6. In its first year, delivered $50M+ in incremental revenue. Institutionalized A/B testing as a practice across the org.</p>
        </div>
        <span class="product-role">Disney Parks</span>
      </div>

      <div class="product-row">
        <span class="product-years">2011—2013</span>
        <div class="product-main">
          <h3 class="product-title">Information Architect</h3>
          <p class="product-desc">On the UX/IA team. Played a key role in the design overhaul of disneyworld.com — still the basis for Disney Parks digital properties today. Helped design the planning tools for the MyMagic+ program.</p>
        </div>
        <span class="product-role">Disney Parks</span>
      </div>

      <div class="product-row">
        <span class="product-years">2003—2011</span>
        <div class="product-main">
          <h3 class="product-title">Photographer & Owner</h3>
          <p class="product-desc">A lifestyle and travel stock photography company with work from over 20 countries, represented by Getty Images. Photos appeared in major publications and on Lonely Planet Guidebook covers.</p>
        </div>
        <span class="product-role">SBR Photography</span>
      </div>

    </div>
  </section>

  <!-- ── Contact ──────────────────────────────────────────────────── -->
  <section id="contact" class="section-contact" aria-labelledby="contact-title" itemscope itemtype="https://schema.org/ContactPoint">
    <div class="contact-inner">
      <span class="contact-eyebrow">Let's talk</span>
      <h2 class="contact-display" id="contact-title">
        Let's make <em>something</em><br>together.
      </h2>
      <p class="contact-lead">For prints, commissions, PM conversations, or slow emails about coastal light — I read everything.</p>
      <div class="contact-rows">
        <a class="contact-row" href="mailto:website@sambr.com" itemprop="email">
          <span>
            <span class="cr-label">Email</span>
            <span class="cr-value">website@sambr.com</span>
          </span>
          <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17L17 7"/><path d="M9 7h8v8"/></svg>
        </a>
        <a class="contact-row" href="https://www.instagram.com/sambr/" target="_blank" rel="noopener noreferrer" itemprop="sameAs">
          <span>
            <span class="cr-label">Instagram</span>
            <span class="cr-value">@sambr</span>
          </span>
          <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17L17 7"/><path d="M9 7h8v8"/></svg>
        </a>
        <a class="contact-row" href="https://www.linkedin.com/in/sambloombergrissman/" target="_blank" rel="noopener noreferrer" itemprop="sameAs">
          <span>
            <span class="cr-label">LinkedIn</span>
            <span class="cr-value">Sam Bloomberg-Rissman</span>
          </span>
          <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17L17 7"/><path d="M9 7h8v8"/></svg>
        </a>
      </div>
    </div>
  </section>

  <!-- ── Footer ───────────────────────────────────────────────────── -->
  <footer class="footer">
    <div class="footer-inner">
      <span class="brand-mark">sam bloomberg-rissman<span class="dot">.</span></span>
      <nav class="footer-links" aria-label="Footer navigation">
        <a href="#top">Top</a>
        <a href="#frames">Frames</a>
        <a href="#about">About</a>
        <a href="#contact">Contact</a>
      </nav>
      <span>© 2026 Sam Bloomberg-Rissman</span>
    </div>
  </footer>

  <!-- Gallery manifest prefetch (non-blocking) -->
  <script>
    window.addEventListener('load', function() {
      var load = function() {
        fetch('/gallery-manifest.json')
          .then(function(r) { return r.json(); })
          .then(function(d) { window.__GALLERY_DATA__ = d; })
          .catch(function() {});
      };
      if ('requestIdleCallback' in window) {
        requestIdleCallback(load, { timeout: 2000 });
      } else {
        setTimeout(load, 500);
      }
    });
  </script>


</body>
</html>
