---
title: "A little more personality on the homepage"
description: "Building a cursor-following portrait for this website, inspired by Claire Vo."
canonical: https://alexpolonsky.com/posts/interactive-portrait/
published: 2026-10-04
---

# A little more personality on the homepage

Building a cursor-following portrait for this website, inspired by Claire Vo.

The portrait on my [homepage](https://alexpolonsky.com/) now looks toward your cursor. Click it and I pull a face.

The inspiration came from Claire Vo, one of my favourite podcast hosts (check out [How I AI](https://howiaipod.com/)). She [wrote about how she built the cursor-following portrait on her website](https://clairevo.com/notes/2026-09-14-my-homepage-photo-follows-your-cursor), sharing the process, prompts, and code. Her post gave me a starting point for trying something similar on my own site.

<figure class="post-media">
  <video aria-label="Portrait demo showing cursor movement, a click reaction, and both colour themes" controls playsinline preload="none" poster="/posts/interactive-portrait/demo-poster.webp" width="960" height="640">
    <source src="/posts/interactive-portrait/demo.mp4" type="video/mp4">
    <a href="/posts/interactive-portrait/demo.mp4">Watch the portrait demo</a>.
  </video>
  <figcaption>Following the cursor, reacting to a click, and switching to warm duotone.</figcaption>
</figure>

I started with my profile photo and worked with Codex to create a front-facing portrait with a monochrome bitmap treatment. We then made matching versions looking left, right, up, and down.

On mobile, there’s no cursor to follow, so I added a small Easter egg: tap the portrait for a different expression.

The portrait is monochrome in light mode and warm duotone in dark mode. Both themes use the same images; only the colours change.

Underneath, it’s nine saved images and a little JavaScript choosing which one to display. AI helped create the images during the build; the interaction itself runs entirely in the browser.

The initial portrait is about 21 KB, and the full image set is about 186 KB. The remaining images load as you start interacting, and switching themes doesn’t require another download. Keyboard activation works too, and automatic cursor following respects reduced-motion settings.
