<!DOCTYPE html>
<html lang="en-AU">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="Steve Dalton (spidie), Gold Coast: film and screen technology consultant. Period computing, museum communications exhibits (Tweed Regional Museum), amateur radio VK4DMZ, authentic terminals and props.">
  <title>Steve Dalton (spidie) | Film & Screen Tech Consultant</title>
  <link href="/favicon.ico" rel="icon" type="image/x-icon">
  <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=JetBrains+Mono:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&display=swap" rel="stylesheet">
  <style>
    :root {
      --bg-deep: #070708;
      --bg-raised: #0e0f12;
      --text-primary: #e8e6e3;
      --text-muted: #9a9690;
      --accent: #b8ff3d;
      --accent-dim: rgba(184, 255, 61, 0.15);
      --border: rgba(232, 230, 227, 0.08);
      --font-mono: "JetBrains Mono", ui-monospace, "Cascadia Code", "Consolas", monospace;
    }

    *, *::before, *::after {
      box-sizing: border-box;
    }

    html {
      scroll-behavior: smooth;
    }

    body {
      margin: 0;
      min-height: 100vh;
      font-family: var(--font-mono);
      font-size: 0.9375rem;
      font-weight: 400;
      line-height: 1.65;
      color: var(--text-primary);
      background: var(--bg-deep);
      position: relative;
    }

    body::before {
      content: "";
      position: fixed;
      inset: 0;
      pointer-events: none;
      z-index: 9999;
      background: repeating-linear-gradient(
        0deg,
        transparent,
        transparent 2px,
        rgba(0, 0, 0, 0.12) 2px,
        rgba(0, 0, 0, 0.12) 4px
      );
      opacity: 0.35;
    }

    body::after {
      content: "";
      position: fixed;
      inset: 0;
      pointer-events: none;
      z-index: 9998;
      background: radial-gradient(ellipse 80% 50% at 50% -20%, rgba(184, 255, 61, 0.04), transparent 55%);
    }

    a {
      color: var(--accent);
      text-decoration: none;
      transition: color 0.2s ease, opacity 0.2s ease;
    }

    a:hover {
      color: #d4ff7a;
    }

    a:focus-visible {
      outline: 2px solid var(--accent);
      outline-offset: 3px;
    }

    .wrap {
      width: min(72rem, 100% - 2rem);
      margin-inline: auto;
      padding-block: 2rem 4rem;
      position: relative;
      z-index: 1;
    }

    @media (min-width: 768px) {
      .wrap {
        padding-block: 3rem 5rem;
      }
    }

    header.hero {
      padding-block: clamp(3rem, 12vw, 7rem) clamp(3rem, 8vw, 5rem);
      border-bottom: 1px solid var(--border);
    }

    .hero-grid {
      display: grid;
      gap: 1.75rem;
      align-items: start;
    }

    @media (min-width: 768px) {
      .hero-grid {
        grid-template-columns: 1fr minmax(200px, min(30vw, 300px));
        column-gap: clamp(1.5rem, 4vw, 3rem);
        row-gap: 1.5rem;
      }

      .hero-photo-wrap {
        grid-column: 2;
        grid-row: 1 / span 2;
      }

      .hero-text-block {
        grid-column: 1;
      }

      .hero-lower {
        grid-column: 1;
      }
    }

    .hero-photo-wrap {
      margin: 0;
      position: relative;
    }

    .hero-photo-wrap::before {
      content: "";
      position: absolute;
      inset: -6px;
      border: 1px solid var(--accent-dim);
      pointer-events: none;
      opacity: 0.9;
    }

    .hero-photo {
      display: block;
      width: 100%;
      height: auto;
      aspect-ratio: 1 / 1;
      object-fit: cover;
      object-position: center top;
      border: 1px solid var(--border);
      background: var(--bg-raised);
      filter: contrast(1.02) saturate(0.95);
    }

    .hero-label {
      font-size: 0.6875rem;
      letter-spacing: 0.22em;
      text-transform: uppercase;
      color: var(--accent);
      margin-bottom: 1.25rem;
      font-weight: 500;
    }

    h1 {
      font-family: var(--font-mono);
      font-weight: 700;
      font-size: clamp(2rem, 5vw, 3.25rem);
      line-height: 1.1;
      letter-spacing: -0.04em;
      margin: 0 0 0.5rem;
      color: var(--text-primary);
      text-transform: none;
    }

    .hero-title {
      font-family: var(--font-mono);
      font-weight: 500;
      font-size: clamp(0.8125rem, 1.5vw, 0.9375rem);
      color: var(--text-muted);
      margin: 0 0 1rem;
      letter-spacing: 0.14em;
      text-transform: uppercase;
    }

    .hero-tagline {
      font-family: var(--font-mono);
      font-size: clamp(0.9375rem, 2vw, 1.0625rem);
      color: var(--accent);
      margin: 0 0 1.75rem;
      font-weight: 500;
      letter-spacing: 0.02em;
    }

    .hero-intro {
      max-width: 42rem;
      color: var(--text-muted);
      margin: 0 0 2rem;
    }

    .cursor-line {
      display: inline;
    }

    .blink-cursor {
      display: inline-block;
      width: 0.55em;
      height: 1em;
      margin-left: 0.15em;
      vertical-align: text-bottom;
      background: var(--accent);
      animation: blink 1.05s step-end infinite;
    }

    @keyframes blink {
      0%, 100% { opacity: 1; }
      50% { opacity: 0; }
    }

    .hero-actions {
      display: flex;
      flex-wrap: wrap;
      gap: 0.75rem;
      align-items: center;
    }

    .btn {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      padding: 0.65rem 1.35rem;
      font-family: var(--font-mono);
      font-size: 0.8125rem;
      font-weight: 500;
      letter-spacing: 0.06em;
      text-transform: uppercase;
      border: 1px solid transparent;
      cursor: pointer;
      transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
    }

    .btn-primary {
      background: var(--accent);
      color: var(--bg-deep);
      border-color: var(--accent);
    }

    .btn-primary:hover {
      background: #d4ff7a;
      color: var(--bg-deep);
    }

    .btn-ghost {
      background: transparent;
      color: var(--text-primary);
      border-color: var(--border);
    }

    .btn-ghost:hover {
      border-color: var(--accent);
      color: var(--accent);
    }

    section {
      padding-block: clamp(3rem, 8vw, 5rem);
      border-bottom: 1px solid var(--border);
    }

    section:last-of-type {
      border-bottom: none;
    }

    h2 {
      font-family: var(--font-mono);
      font-weight: 700;
      font-size: clamp(1.35rem, 3vw, 1.85rem);
      letter-spacing: -0.03em;
      margin: 0 0 0.35rem;
      color: var(--text-primary);
    }

    .section-lede {
      font-family: var(--font-mono);
      font-style: italic;
      font-weight: 400;
      font-size: 0.9375rem;
      color: var(--text-muted);
      margin: 0 0 2rem;
      max-width: 36rem;
    }

    .cards {
      display: grid;
      gap: 1rem;
      grid-template-columns: 1fr;
    }

    @media (min-width: 600px) {
      .cards {
        grid-template-columns: repeat(2, 1fr);
      }
    }

    @media (min-width: 960px) {
      .cards {
        grid-template-columns: repeat(3, 1fr);
      }
    }

    .card {
      background: var(--bg-raised);
      border: 1px solid var(--border);
      padding: 1.35rem 1.25rem;
      transition: border-color 0.2s ease;
    }

    .card:hover {
      border-color: rgba(184, 255, 61, 0.25);
    }

    .card h3 {
      font-family: var(--font-mono);
      font-weight: 600;
      font-size: 1rem;
      letter-spacing: -0.02em;
      margin: 0 0 0.65rem;
      color: var(--text-primary);
    }

    .card p {
      margin: 0;
      color: var(--text-muted);
      font-size: 0.875rem;
      line-height: 1.6;
    }

    .numbered-list {
      margin: 0;
      padding: 0;
      list-style: none;
      counter-reset: help;
      display: flex;
      flex-direction: column;
      gap: 1.25rem;
      max-width: 44rem;
    }

    .numbered-list li {
      counter-increment: help;
      position: relative;
      padding-left: 3rem;
      color: var(--text-muted);
    }

    .numbered-list li::before {
      content: counter(help);
      position: absolute;
      left: 0;
      top: 0;
      width: 2rem;
      height: 2rem;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 0.75rem;
      font-weight: 600;
      color: var(--bg-deep);
      background: var(--accent);
      font-family: var(--font-mono);
    }

    .numbered-list strong {
      color: var(--text-primary);
      font-weight: 500;
    }

    .prose {
      max-width: 42rem;
      color: var(--text-muted);
    }

    .prose p {
      margin: 0 0 1.15rem;
    }

    .prose p:last-child {
      margin-bottom: 0;
    }

    .pull-quote {
      font-family: var(--font-mono);
      font-style: italic;
      font-size: 0.9375rem;
      color: var(--accent);
      margin: 2rem 0 0;
      padding-left: 1rem;
      border-left: 3px solid var(--accent-dim);
    }

    .contact-block {
      display: flex;
      flex-direction: column;
      gap: 1.5rem;
    }

    .contact-links {
      display: flex;
      flex-wrap: wrap;
      gap: 0.75rem;
      align-items: center;
    }

    .contact-links .btn-primary {
      text-decoration: none;
    }

    .contact-phone-hint {
      margin: 0 0 1.25rem;
      font-size: 0.875rem;
      color: var(--text-muted);
      max-width: 36rem;
      line-height: 1.55;
    }

    .contact-phone-hint a {
      font-weight: 500;
      color: var(--accent);
    }

    .contact-phone-hint .contact-phone-detail {
      display: block;
      margin-top: 0.4rem;
    }

    .background-grid {
      display: grid;
      gap: 2rem;
      align-items: start;
    }

    @media (min-width: 768px) {
      .background-grid {
        grid-template-columns: 1fr minmax(180px, min(28vw, 260px));
        column-gap: clamp(1.5rem, 4vw, 3rem);
      }
    }

    .fly-photo-wrap {
      margin: 0;
      position: relative;
    }

    .fly-photo-wrap::before {
      content: "";
      position: absolute;
      inset: -5px;
      border: 1px solid var(--accent-dim);
      pointer-events: none;
      opacity: 0.9;
    }

    .fly-photo {
      display: block;
      width: 100%;
      height: auto;
      aspect-ratio: 4 / 3;
      object-fit: cover;
      border: 1px solid var(--border);
      background: var(--bg-raised);
      filter: contrast(1.05) saturate(0.85);
    }

    .fly-caption {
      display: block;
      margin-top: 0.6rem;
      font-size: 0.6875rem;
      letter-spacing: 0.12em;
      text-transform: uppercase;
      color: var(--text-muted);
      font-style: normal;
    }

    footer.site-footer {
      padding-block: 2rem 3rem;
      border-top: 1px solid var(--border);
      margin-top: 0;
    }

    footer.site-footer p {
      margin: 0;
      font-size: 0.75rem;
      color: var(--text-muted);
      letter-spacing: 0.04em;
    }
  </style>
</head>
<body>
  <header class="hero wrap" id="top">
    <div class="hero-grid">
      <div class="hero-text-block">
        <p class="hero-label">Gold Coast, Australia</p>
        <h1>Steve Dalton (spidie)</h1>
        <p class="hero-title">Film &amp; Screen Tech Consultant</p>
        <p class="hero-tagline">I make technology look right on screen<span class="cursor-line"><span class="blink-cursor" aria-hidden="true"></span></span></p>
      </div>
      <figure class="hero-photo-wrap">
        <img
          class="hero-photo"
          src="steve.jpg"
          alt="Steve Dalton"
          width="512"
          height="512"
          fetchpriority="high"
          decoding="async">
      </figure>
      <div class="hero-lower">
        <p class="hero-intro">
          Thirty years of hands-on technology, from IBM mainframes and early Ethernet through Linux kernel builds in 1994, British home computing, and the full retro ecosystem. Founder of Gold Coast TechSpace (2011), one of Australia's first hackerspaces. Licensed amateur radio operator <strong>VK4DMZ</strong> with a working knowledge of RF from vintage kit to modern hardware. If your production needs to know what a Unix terminal looked like in 1987, how a hacker actually moves at a keyboard, or how to build a prop that genuinely works on camera, that is exactly the job.
        </p>
        <div class="hero-actions">
          <a class="btn btn-primary" href="#contact">Get in touch</a>
          <a class="btn btn-ghost" href="#background">My background</a>
        </div>
      </div>
    </div>
  </header>

  <main>
    <section class="wrap" id="capabilities" aria-labelledby="capabilities-heading">
      <h2 id="capabilities-heading">What I can do for your production</h2>
      <p class="section-lede">Detail that survives a cinema screen and a pause button.</p>
      <div class="cards">
        <article class="card">
          <h3>Period-accurate computing</h3>
          <p>Every era from 1960s mainframes to 1990s desktops: hardware, software, screen layouts and how operators actually behaved.</p>
        </article>
        <article class="card">
          <h3>Hacker and sysadmin authenticity</h3>
          <p>Real terminal work, genuine workflows, authentic on-screen code. The <cite>Mr Robot</cite> benchmark, not the Hollywood caricature.</p>
        </article>
        <article class="card">
          <h3>British home computing</h3>
          <p>ZX Spectrum, BBC Micro and the broader British bedroom computing scene of the late 70s and 80s.</p>
        </article>
        <article class="card">
          <h3>Networks and datacentres</h3>
          <p>Hands-on knowledge across every era: thicknet coaxial and vampire taps through structured cabling to modern facilities.</p>
        </article>
        <article class="card">
          <h3>Electronics and working props</h3>
          <p>Sourcing advice, hardware authentication, and fabrication where it needs to actually work on camera. Museum and gallery interactives, including communications history exhibits.</p>
        </article>
        <article class="card">
          <h3>The network</h3>
          <p>Thirty years in the global tech community. If I do not know the answer, I know who does.</p>
        </article>
      </div>
    </section>

    <section class="wrap" id="how-i-help" aria-labelledby="how-heading">
      <h2 id="how-heading">How I can help</h2>
      <p class="section-lede">From script to wrap.</p>
      <ol class="numbered-list">
        <li><strong>Script consulting</strong> for technical plausibility before cameras roll.</li>
        <li><strong>On-set technical advisor</strong> for real-time decisions on screens, props and actor behaviour.</li>
        <li><strong>Screen content creation</strong>: period-accurate interfaces, terminals and dashboards built to spec.</li>
        <li><strong>Props sourcing and authentication</strong>: identifying and verifying real hardware for the era.</li>
        <li><strong>Working prop fabrication</strong>: electronics that actually function on camera.</li>
        <li><strong>Actor coaching</strong> on interacting with period hardware authentically.</li>
      </ol>
    </section>

    <section class="wrap" id="background" aria-labelledby="background-heading">
      <h2 id="background-heading">Background</h2>
      <p class="section-lede">Not a CV. Context.</p>
      <div class="background-grid">
        <div class="prose">
          <p>It started with 8-bit home computers as a kid, then pre-internet bulletin boards -- the kind of rabbit hole that, once you fall in, you never really climb out of. I was lucky enough to start university the year the first web browser was released, right as the internet was taking off. My university specialised in computer vision, early AI and robotics, so I was genuinely in the right place at the right time.</p>
          <p>From there: <a href="https://www.ibm.com" rel="noopener noreferrer">IBM</a>, learning networking from the people who built it, then <a href="https://en.wikipedia.org/wiki/3Com" rel="noopener noreferrer">3Com</a> during the internet-fuelled dotcom boom. Linux from 1994, rebuilding kernels nightly because that was just the deal. In 2011 I founded <a href="https://gctechspace.org" rel="noopener noreferrer">Gold Coast TechSpace</a>, the Gold Coast&apos;s first hackerspace and coworking space, connected to the global network. These days I run Refactor, an engineering and IoT consultancy -- software and contract electronics production, with projects spanning museums, galleries and the arts.</p>
          <p>I missed the 1960s mainframe era by about a decade, but I have worked on mainframes and learned the earlier years directly from engineers who were there. I hold an amateur radio licence under callsign <strong>VK4DMZ</strong> -- handy when a script needs radio culture or RF hardware talked about with any credibility. Based on the Gold Coast, right in the middle of Queensland&apos;s growing film corridor. My son <a href="https://jarondalton.com/film" rel="noopener noreferrer">Jaron</a> has studied film and worked on productions. Our household watches with genuine attention: <cite>Brazil</cite>, <cite>The Godfather</cite>, <cite>Sneakers</cite>, <cite>Reservoir Dogs</cite>, <cite>Groundhog Day</cite>, <cite>Arrival</cite>, <cite>Time Bandits</cite>, <cite>Firefly</cite>, <cite>Dark</cite>, <cite>Star Trek</cite>, <cite>Monty Python</cite>. Asimov&apos;s <cite>Foundation</cite> and Stephenson&apos;s <cite>Snow Crash</cite> are old favourites.</p>
          <p>That kind of eye notices when the technology is wrong -- and cares about getting it right.</p>
          <p class="pull-quote"><cite>Sneakers</cite> (1992) remains the benchmark. Every production should aim for that level of technical honesty.</p>
        </div>
        <figure class="fly-photo-wrap">
          <img
            class="fly-photo"
            src="fly.jpg"
            alt="A fly resting on a circuit board"
            width="600"
            height="450"
            decoding="async"
            loading="lazy">
          <figcaption class="fly-caption">A bug in the system</figcaption>
        </figure>
      </div>
    </section>

    <section class="wrap" id="contact" aria-labelledby="contact-heading">
      <h2 id="contact-heading">Let&apos;s talk about your production</h2>
      <p class="section-lede">Based on the Gold Coast. Available for remote consulting, on-set work and travel. Happy to have a confidential conversation.</p>
      <div class="contact-block">
        <p class="contact-phone-hint">
          <a href="tel:+61414464564">+61 414 464 564</a>
          <span class="contact-phone-detail">If you call, send a text first so I know to pick up.</span>
        </p>
        <div class="contact-links">
          <a class="btn btn-primary" href="/cdn-cgi/l/email-protection#fb88bb9f9a978f88d5989496"><span class="__cf_email__" data-cfemail="41320125202d35326f222e2c">[email&#160;protected]</span></a>
          <a class="btn btn-ghost" href="https://www.linkedin.com/in/dalton" rel="noopener noreferrer">LinkedIn</a>
          <a class="btn btn-ghost" href="https://archive.dalts.com" rel="noopener noreferrer">Blog archive</a>
        </div>
      </div>
    </section>
  </main>

  <footer class="site-footer wrap">
    <p>&copy; Steve Dalton (spidie). dalts.com</p>
  </footer>

  <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script>
    document.querySelectorAll('a[href^="#"]').forEach(function (anchor) {
      anchor.addEventListener('click', function (e) {
        var id = this.getAttribute('href');
        if (id.length > 1 && document.querySelector(id)) {
          e.preventDefault();
          document.querySelector(id).scrollIntoView({ behavior: 'smooth', block: 'start' });
          history.pushState(null, '', id);
        }
      });
    });
  </script>
</body>
</html>
