Making of This Site

How I evolved the illustrations on this site, built a world, and experimented with parallax.

Step 01

Extracting a style from Moebius

I started with a mood board of Moebius drawings. I've always loved how Jean Giraud draws, with a clean line and the same care for a machine as for a mountain.

In Figma Weave I built a flow that read the mood board and wrote the style down in plain words. My imagine skill then combined that style with the idea of each essay to write the image prompts.

The first drawings came out looking like engineering drawings, with dimension lines, labeled callouts and a title block. Nine months later, the line drawings on the site use the same marks.

Fig. 1aIllustration flow · Figma Weave
Mood boardStyle extractionEssay/user imagineImage model
The resulting illustration

Hover a node to see what it does.

Fig. 1bStrategy, Systems, Craft
A three-legged stool drawn as a blueprint on graph paper, its legs built from a compass, a gear train and a carving chisel, labelled Strategy, Systems and Craft.
  • Design the System
  • Having a Perspective
  • Plan Your Career
  • Preparing for AI-First Design

Step 02

Better models, more variety

As the image models got better, I remade the illustrations with them. Each pass looked more accurate and more finished.

The set still didn't hang together. Every essay had its own look, and a style prompt run across all of them could swing too far. One pass asked for neo-futurism and bold signage and covered a print shop wall in slogans.

Drag the slider to see one illustration across five versions.

Fig. 2Strategy, Systems, Craft · five versions
Blueprint, Jan 26Isometric workshop, Apr 25

01 / Blueprint · Jan 26

A Moebius-style technical drawing on graph paper, with dimension lines and a title block.

Step 03

Pictures for every page

Then I wanted pictures for every page of the site, too. The homepage became a full-screen painting of the coast behind the text, and About, Writing, Speaking and Projects each got a scene of their own.

That added a lot more images to keep consistent.

Fig. 3The first homepage painting
The first homepage painting, a watercolor Pacific headland with a small lighthouse

Step 04

Building the Illustration Studio

With that many images I needed a better way to manage the prompts behind them. So I built the Illustration Studio, a local tool where I can write prompts, comment on images, and generate and compare options for every article and page in one place.

Over time it grew a video view, a parallax editor and a library for the world model. Click through its views.

Fig. 4Illustration Studio
Illustration Studio, Image view

Every version of every page and article in one library, with a prompt panel for the next version.

Step 05

Treating the images as a set

The studio made it fast to explore. I could try a direction on one image, compare versions side by side and keep the one I liked.

It also changed how I thought about the work. Once I could see every page and article together, I started treating the illustrations as one system with a shared style.

The homepage lighthouse shows that process. Most prompts kept the previous image and changed one thing. Step through the versions to see what I asked for and the prompt behind each one.

Fig. 5Homepage · eight versions
The homepage painting, version 1: Pacific Headland, Sep 5
1 / 8 · Pacific Headland · Sep 5

The ask · Sep 5

“almost like visualizing a beautiful vista using the style of the artwork that's published for my articles, and every time you load the site, there's a new vista”

The prompt · image_gen · pastel-clear-line

Create one sublime, breathtaking panoramic Pacific ocean vista viewed from an elevated coastal meadow … A very small, exquisitely drawn lighthouse stands on a right-side bluff … The leftmost 40% needs tranquil pale low-detail sky and ocean, enough visual quiet for dark website copy laid over it.

Step 06

Day and night versions

With every image in one place, I added day and night versions to the studio. Each night image keeps the composition of the day one and changes the light.

The site switches between them with its theme, which follows sunrise and sunset in San Francisco. Drag across the painting to compare them.

Fig. 6Homepage · day and night
The homepage harbor, dayThe homepage harbor, nightDayNight

Step 07

Video through Figma Weave

Having day and night pairs gave me an idea for video. I built a skill that sends an image from the studio to a Figma Weave workflow through its MCP, runs Google's Veo model, and brings the clip back into the studio.

Using the same image as the first and last frame makes the clip loop. This part worked well.

Fig. 7Homepage loop · Veo through Weave

Step 08

Parallax that didn't work

Next I wanted the images to feel a little interactive, so I tried parallax. I explored a lot of approaches and built some of them into the studio, and none of them worked well.

Each one guessed at layers in its own way and broke somewhere. In one version the lighthouse split in half. In another, the rocks slid across water that stayed still. The small drawings show how each approach modeled depth, with far at the top and near at the bottom.

Fig. 8Seven parallax attempts
  1. 01 · Sep 5

    Drift

    Three flat layers (sky, hills and foreground), each sliding at its own speed.

    “there are at least three different levels of parallax for each of the artwork”

    FARNEARRetired
  2. 02 · Sep 6

    Physics coast

    A Three.js simulation with moving water, physical clouds and plants you could drag.

    “I don't like the result. let's clean up this worktree and remove the code from the project.”

    FARNEARDeleted
  3. 03 · Sep 6

    Image to geometry

    Blender rebuilds the scene as meshes for Three.js.

    “delete all files associated with this thread.”

    FARNEARDeleted
  4. 04 · Sep 6

    Video to parallax

    A Seedance video, and later a 4K Veo clip, cut into five depth layers. I turned it into a skill.

    “nice! This looks perfect.”

    FARNEARKept
  5. 05 · Sep 15

    Segmentation cut-outs

    Still images cut into layers by depth, with the gaps painted in.

    “Notice how the lighthouse in the home image is broken. This cannot happen.”

    FARNEARRetired
  6. 06 · Sep 20

    Plate-native generation

    Ask the image model for the layers up front, then let agents isolate objects.

    “Parallax of any type is no longer necessary.”

    FARNEARRetired
  7. 07 · Oct 3

    Diorama

    The painting projected onto a 3D model of the harbor, with sprites and zoomable detail.

    “The system has been ineffective in determining objects to isolate.”

    FARNEARRetired

Step 09

Building a world

I still wanted the images to improve in a more consistent way, so I started looking into what goes into building a world. That led me to how Pixar manages assets across its films.

My world is a California of the future, where modern architecture blends into nature and people spend their time making things. It has workshop tools, architecture with a touch of Carlo Scarpa, Northern California native plants, landscapes from different biomes, household objects and a cast of characters.

The tools blend Braun and Teenage Engineering. I built a small research tool that gathered reference images of their products and pulled style rules out of them.

All of it lives in a world model I can add to and update. Each change flows into the prompt the studio uses for the page illustrations, so the pieces work as one system. The essay illustrations are next.

Fig. 9World component library

The library has 183 reference drawings. These are some of them. Pick a category to see the correction behind its rules.

  • Power drill

    TL-01

    Power drill

  • Ceramic printer

    TL-02

    Ceramic printer

  • CNC mill

    TL-03

    CNC mill

  • Robot arm

    TL-04

    Robot arm

  • Pottery wheel

    TL-05

    Pottery wheel

  • Resin printer

    TL-06

    Resin printer

  • Workbench

    TL-07

    Workbench

  • Mechanical bird

    TL-08

    Mechanical bird

  • Observation dish

    AR-01

    Observation dish

  • Coastal beacon

    AR-02

    Coastal beacon

  • Workshop pavilion

    AR-03

    Workshop pavilion

  • Pedestrian bridge

    AR-04

    Pedestrian bridge

  • Observation terrace

    AR-05

    Observation terrace

  • Learning hall

    AR-06

    Learning hall

  • City car

    MB-01

    City car

  • Hover motorcycle

    MB-02

    Hover motorcycle

  • Passenger launch

    MB-03

    Passenger launch

  • Hover platform

    MB-04

    Hover platform

  • Bollard

    LT-01

    Bollard

  • Pendant

    LT-02

    Pendant

  • Wall reveal

    LT-03

    Wall reveal

  • Coast live oak

    FL-01

    Coast live oak

  • Dudleya

    FL-02

    Dudleya

  • Manzanita

    FL-03

    Manzanita

  • Sagebrush

    FL-04

    Sagebrush

  • Buttercup

    FL-05

    Buttercup

  • Granite valley

    TR-01

    Granite valley

  • Coastal cliffs

    TR-02

    Coastal cliffs

  • Joshua tree woodland

    TR-03

    Joshua tree woodland

  • Sequoia grove

    TR-04

    Sequoia grove

  • Waterfront city

    PL-01

    Waterfront city

  • Redwood path

    PL-02

    Redwood path

  • Speakers

    HH-01

    Speakers

  • Teapot

    HH-02

    Teapot

  • Kettle

    HH-03

    Kettle

  • Cooktop

    HH-04

    Cooktop

  • Dining chair

    HH-05

    Dining chair

  • Mug

    HH-06

    Mug

  • Watering can

    HH-07

    Watering can

  • Basket

    HH-08

    Basket

  • Makers

    CH-01

    Makers

  • Family

    CH-02

    Family

  • Townspeople

    CH-03

    Townspeople

  • Learners and mentors

    CH-04

    Learners and mentors

  • Growers

    CH-05

    Growers

  • Travelers

    CH-06

    Travelers

Step 10

Line art and the Line Studio

Around then I redesigned my Patterns app (an app I use to experiment with interactive Three.js and WebGL visualizations) in pure line art, and I really liked how it looked. I wanted the same for the illustrations, with the color and gradients taken away and each scene drawn only in black and white lines and hatching.

I asked for it in a way that interrogated each image, with several ways to explore and interact with it, including parallax. That became its own tool, the Line Studio.

Open the Line Studio →

Fig. 10Line Studio · six of its plates
Line Studio, Contour plate

ContourOutlines weighted by distance, creases as hairlines.

Step 11

Finding the planes and objects

One of the Line Studio's tools turned out to segment an image into planes and objects really well.

It measures a painting once with a depth model and a segmentation model. After that it knows where the edges are, how far away each pixel sits and what everything is made of. Move the lens across the painting to see each measurement.

Fig. 11About · what the painting is made of
The About painting: a coastal workshop with beehives, a pottery shelf and a longboard on the bench.Reading the painting…

Canny on log depth and luminance, tracedOutlines and creases, stored as lines of points that each carry a depth.

Step 12

Parallax that works

So I applied the same technique to the paintings themselves and used it for parallax, and it worked really well. Every point has its own depth, so the painting moves point by point, with nearer objects always in front.

The parallax on every page of the site now comes from this system. Click the line icon next to the theme toggle on any page to see the outlines, contours and objects it found. This is the homepage engine, running live.

Fig. 12Homepage engine · live
Live · move across the painting
Line drawing
  1. 01 · Depth per pixel

    The shader looks up how far away each pixel is and moves it by that amount. Nearer paint always covers farther paint.

  2. 02 · Edges match the paint

    Depth edges are snapped to the painting's own edges, so nothing leaves a halo when it moves.

  3. 03 · Flat things stay flat

    Walls, floors and people are fitted to flat planes, so they move as solid objects.

  4. 04 · Lines hide the seams

    Each outline moves with the object in front of it, which covers the spot where the depth jumps.

Step 13

Stepping into the About painting

Once the About painting had a depth for every pixel, I wanted to step inside it. On a laptop or desktop, choose View Only on the About page and then Go deeper. The painting shrinks back and fades into the terrace it shows, built in 3D so you can turn it, visit its stops and walk around.

The plan comes from the painting. A script turns its measured depth into a top-down plan and writes down where 15 points in the picture sit, in metres. I tidied those into a terrace plan, with the hives on a level 0.9 m up and the pavilion at 2.2 m. It is all built in code, mostly from boxes, rods and turned shapes, and the kit that makes them runs to about 4,900 lines.

It's drawn in ink to match the line drawings. Hard surfaces take three flat tones and plants take five, then a second pass inks the edges and adds a little paper grain. Four of the stops share their names and notes with the painting's callouts. First person lets you walk it, on a walk map I wrote by hand with every floor height, stair and planting bed.

Two objects open in a studio of their own, where they keep running. The orrery's arms each turn at their own pace, and the filament printer prints a stepped part, clears the plate and starts again. The terrace follows the site's day and night, and when frames run long it steps down a ladder of eight quality levels to hold 60 fps.

Next I'm rebuilding the terrace to look real, with the light baked in Blender.

Walk the terrace →

Fig. 13aThe painting and the world
The About painting, a limestone terrace above a bay where a man shapes a surfboard beside two hives and a pottery shelf

The painting

The same terrace built in 3D and drawn in flat tones with ink outlines, the surfboard bench in front of the hives and stairs

The world, from about the same spot

Fig. 13bFour stops on the terrace
  • The longboard stop in the About world

    Longboard

  • The hives stop in the About world

    Hives

  • The pottery shelf stop in the About world

    Pottery shelf

  • The library stop in the About world

    Library

Step 14

Making the world real

Before rebuilding the terrace, I ran a look test. A script takes the illustrated world's blockout, 137,843 objects in an 88 MB file, and rebuilds it in Blender with scanned textures, plants and rocks from Poly Haven. Cycles renders it from the painting's camera.

Two AI judges score the renders. The realism judge sees them shuffled in with 16 real photographs and has to say which is which. It called every look test still a render and scored them 3 to 4 out of 10, against 9.9 for the photos and 1.2 for the toon world. The lighting judge scored the toon world's light higher, for its leaf dapple, lamp pools and blue moonlight. Cycles' sun was flat and hazy.

Then I built the whole scene and ran the judges four times, fixing what they listed after each run. Run 1 had black shrubs across the headland, because the scanned leaves pointed at colour maps with no transparency. Two dark discs on the paving were the shadows of stool seats floating at knee height. By run 4 the realism median was 4.5 by day and 4.0 at night, against a bar of 6, and none of the 24 frames passed for a photo. The lighting averages are closer, at 5.3 and 5.8, and still fail. Much of what's left is the objects themselves, like the library's tube sofa and blob chair.

For the browser, the light is baked in Blender into textures called lightmaps. The first ones came out almost black, with under 1% of each texture holding light, because my hand-written packer couldn't fit tens of thousands of loose triangles. xatlas, the unwrapper game engines use, filled about three quarters on the first try. Before packing, the bake drops the faces nobody can see, buried under paving or sealed inside walls, about 660,000 of 1.65 million.

The night picked the encoding. In its darkest shadows, 8-bit RGBM's steps reached ten times the light itself, and a step over about 4% shows as banding. Half float's steps are 0.1%, so the lightmaps ship in half float. At 2K, 24 of them (twelve atlases, day and night) would be 55 MB, near the budget for the whole world, so they ship at 1K, about 0.6 MB each.

Fig. 14aOne camera, four looks
The About painting of the terrace, the surfboard bench in front of the hives

The painting

The terrace in flat tones and ink outlines, from the painting's camera

The toon world

The first Cycles render of the terrace, with scanned paving, olive trees and a boulder floating behind the hives

Cycles look test

A later Cycles render of the terrace, with a lighthouse behind the upper terrace

Cycles, run 4

Fig. 14bFour runs past the judges
The terrace from above in the first full Cycles run, with black shrubs scattered across the headland

Run 1 · Black leaf cards on the hill and floating shrubs

The terrace from above in the fourth run, with green shrubs on the headland and foam along the sea wall

Run 4 · Leaves cut out, shrubs on the ground, foam at the wall

RunRealism, day / nightCalled a photoLighting, day / night
13.5 / 4.00 of 244.0 / 4.8
23.5 / 3.00 of 245.2 / 5.2
34.0 / 3.50 of 244.6 / 5.7
44.5 / 4.00 of 245.3 / 5.8

Scores out of 10. The bar to pass is 6.

Fig. 14cThe bake
One lightmap atlas, day on the left and night on the right, packed with small pieces of the terrace
One lightmap atlas, day and night
The terrace drawn in the browser with baked light, its plants still far too large
The first frame the browser drew with baked light, from a quick test bake

Step 15

Next, video inside the parallax

My next step is to bring the video work into the parallax, with looping video on different planes so each scene has more life and depth.

← All projects

Fig. 15Speaking loop · material for the next step