ma7e0

HGV night driver. Builds things after the engine's off.

Service
◀ Back to the wall

CH 00 Service mode

Authorised engineers only

Picture
Motion
Sound
6
Phosphor
Tube wear
2
2
Desk lamp

Frame rate: measuring…

◀ Back to the wall

CH 01 ma7e0

HGV night driver. Builds things after the engine's off.

I'm ma7e0. At night I drive an HGV up and down the UK's motorways. Between shifts, and sometimes instead of sleeping, I build things.

Most projects start as "how hard can it be" in a services car park at 3am. A few of them get finished.

What's on the wall

  • Astrophotography. A Lumix S5II, a lot of patience and PixInsight.
  • Drone photography. Mostly coastline, from 120 metres up.
  • A homelab. A Mac mini running Jellyfin and Docker, stitched together with Tailscale.
  • 3D printing and CAD. CadQuery when it has to fit, Blender when it has to look good.
  • Retro games and emulation, plus game experiments in Godot and Unreal.
  • Local AI. Ollama and ComfyUI, on hardware I own.
  • A YouTube channel for the things that look better moving.
  • Browser apps. A painter, a model viewer, a maths quiz, an orrery and more, each on its own subdomain.

Every screen on this wall is live. It's rendered in your browser right now, from code. There are no video files and no stock footage. Pick a channel.

◀ Back to the wall

CH 02 Astro

Photons that set off before the lorry did

Some of this light left Andromeda two and a half million years ago. It ended up on a Lumix S5II in an English field, which is a poor end to the trip.

Wide-field Milky Way when the moon is out of the way. Deep-sky targets on long clear nights, which in the UK means about four a year. Then hours of stacking and stretching in PixInsight until the noise gives up.

Tonight's targets

Altitudes are worked out live in your browser for a generic Midlands sky. Anything below 0° is under the horizon, so try again in six months.

Deep-sky targets with their altitude right now
IDNameMagAltNow
M31Andromeda Galaxy3.4----
M33Triangulum Galaxy5.7----
M45Pleiades1.6----
M42Orion Nebula4.0----
NGC 2237Rosette Nebula9.0----
M101Pinwheel Galaxy7.9----
M13Hercules Cluster5.8----
NGC 6960Western Veil7.0----
NGC 7000North America Neb.4.0----
IC 1805Heart Nebula6.5----
M51Whirlpool Galaxy8.4----
M27Dumbbell Nebula7.5----

Gallery

Kit

  • Camera: Lumix S5II
  • Processing: PixInsight
  • Sky: whatever the weather allows
◀ Back to the wall

CH 03 Drone

The coast from 120 metres

Drone photography, mostly coastline. From straight above, a beach turns into a gradient and a car park looks like a circuit board. The UK ceiling is 120 metres, and that's plenty.

The set is showing a procedural coastline. The terrain comes from layered noise, the sea is a shader, and the flight path is a dashed spline the drone actually follows.

Gallery

◀ Back to the wall

CH 04 Homelab

A Mac mini doing the job of a rack

The homelab is a Mac mini running a stack of Docker containers. Jellyfin serves the film library. Tailscale ties the house, the phone and the laptop into one private network, so it all works from a services car park at 4am.

It's small and quiet, and it uses less power than the kettle.

Status

CPU
--
Memory
--
Temp
--
Uptime
--
Network
--
Tailnet
--
  • JellyfinUP2 streams
  • DockerUP12 containers
  • TailscaleUP4/5 peers
  • OllamaUPidle
  • ComfyUIIDLEqueue empty
  • BackupsUPlast 03:10

Reading telemetry…

The numbers come from homelab.json. For now that's a static file with a bit of jitter added so the graphs move. One day it'll be a live endpoint.

◀ Back to the wall

CH 05 Print

Layer 112 of 240

3D printing and CAD. Anything that has to fit something real gets designed in CadQuery. That's code-first CAD, so a bracket is a Python file and changing a hole size means editing one number. Blender comes out when a part has to look good instead.

The set is printing a vase. Vases print as one continuous spiral, and the nozzle on screen follows the real perimeter of each layer. This is the CadQuery version of the same vase:

import cadquery as cq

vase = (
    cq.Workplane("XY")
    .polygon(7, 60)
    .workplane(offset=120)
    .transformed(rotate=(0, 0, 40))
    .polygon(7, 90)
    .loft()
    .faces(">Z")
    .shell(-1.2)
)

Seven sides, twisted 40 degrees, 1.2 mm walls, and no supports.

◀ Back to the wall

CH 06 Games

Insert cartridge. Blow on it first.

Retro gaming and emulation, plus game experiments in Godot and Unreal that sometimes turn into games.

STAR HAUL is one of them, written for this page. It's a space shooter where you're a lorry.

HI 000000

  • Keyboard: arrow keys or WASD to steer, space to fire, P to pause.
  • Touch: drag to steer. It fires on its own.
  • Your best score is kept in this browser.

The cartridges on the set are made up. Any resemblance to real games comes from growing up in front of a CRT.

◀ Back to the wall

CH 07 Projects

Thirteen tabs worth opening

Everything here runs in a browser tab, with no installs and no accounts. Each card on the set is a live 3D preview, not a screenshot.

  1. Kepler OrrerySPACEThe Solar System in real time. Real ephemerides, thirty moons, eclipses and a real star sky.solarsystem-tawny.vercel.app (opens in a new tab)
  2. 3D ExplorerTOOLDrop in STL, OBJ, FBX, STEP, glTF and more. Parsed and rendered right in the tab.stl.ma7e0.xyz (opens in a new tab)
  3. PainterTOOLLayers, blend modes, brushes, selections and filters. An image editor written from scratch.painter.ma7e0.xyz (opens in a new tab)
  4. MathQuestLEARNA colourful maths quiz across a small galaxy, made for young explorers.math.ma7e0.xyz (opens in a new tab)
  5. Synthwave Night DriveGAMEAn endless neon highway at midnight. Weave through traffic, punch turbo, watch wrecks shatter.synth.ma7e0.xyz (opens in a new tab)
  6. Beyond the NightPHOTODeep-sky, lunar and nocturnal astrophotography. Long exposures of things very far away.astro.ma7e0.xyz (opens in a new tab)
  7. TriForgeTOOLA 3D modeller in a browser tab. Edit mode, extrude, snap, outliner, GLB export.3d-editor-gamma.vercel.app (opens in a new tab)
  8. Brick LabBUILDSnap bricks together in a small 3D workshop.lego-silk-nu.vercel.app (opens in a new tab)
  9. Voxel AtelierBUILDShape tiny worlds one cube at a time. A voxel editor with ready-made models.voxel-three.vercel.app (opens in a new tab)
  10. Lotus 3D SprintGAMEA retro arcade sprint. Hold the throttle, read the road, beat your best distance.lotus3-clone.vercel.app (opens in a new tab)
  11. Sky Arena RollerGAMERoll across floating arenas above the clouds and collect every star.bobball.ma7e0.xyz (opens in a new tab)
  12. Traffic ClosuresDATAA daily road-closure dashboard, rebuilt every morning from live highway data.traffic.ma7e0.xyz (opens in a new tab)
  13. Codex Web LabLABA workshop for small ideas, useful interfaces and digital experiments.codex-six-gilt.vercel.app (opens in a new tab)
◀ Back to the wall

CH 08 Orrery

Real positions. Distances not to scale.

A compact Kepler orrery. Each planet's position comes from its orbital elements for today's date, so Mars on the set is in the direction Mars really is. Distances are log-scaled, otherwise Neptune would be in the next room.

Heliocentric positions of the planets today
PlanetLongitudeFrom SunYear
Mercury------
Venus------
Earth------
Mars------
Jupiter------
Saturn------
Uranus------
Neptune------

The full version has real ephemerides, thirty moons, eclipses and a proper star sky.

Open the Kepler Orrery (opens in a new tab)

◀ Back to the wall

CH 09 VHS

Recorded over something important

The YouTube channel is for the projects that look better moving than in a screenshot.

The set is playing a star-trail timelapse over a parked lorry. The stars wheel round Polaris because the Earth turns, not because the tape's stretched.

▶ Watch on YouTube (opens in a new tab)

◀ Back to the wall

CH 10 Local AI

Inference at the kitchen table

Language models run through Ollama and image generation through ComfyUI, all on my own hardware. Nothing leaves the house, there's no subscription, and the only thing that complains is the fan.

The set is faking a diffusion sampler: noise in, picture out, thirty steps. Real samplers are slower and less predictable. They also give lorries too many wheels.

◀ Back to the wall

CH 11 Call-in

Lines are open. Calls cost nothing.

The best way to reach me is GitHub. Issues, pull requests and "how did you do that" are all welcome.

I reply between shifts, so it can take a while.

◀ Back to the wall

CH 12 Colophon

How this was made

Seventeen sets, one canvas. Every screen is rendered live in a single WebGL context. Each channel draws into its own small render target. The room then composites them through one shared CRT shader: barrel distortion, scanlines, phosphor mask, chromatic aberration, flicker, roll and tear. Each set is tuned to its age, so the old ones look worse.

  • Built with: Vite, TypeScript and three.js. No framework.
  • Fonts: VT323 and Press Start 2P (SIL Open Font License 1.1). Text inside the screens uses a hand-made 5×7 bitmap font and twenty hand-drawn katakana.
  • Assets: none. Models, textures, the test card, logos and sounds are all generated in code.
  • Light: each screen's average colour is computed on the GPU every frame and lights the wall, the desk and the dust in the air.
  • Sound: WebAudio synthesis. The hum is 50 Hz because this is the UK. The whine is 15.625 kHz, the PAL line rate. You might not hear it, and that's authentic.
  • Moon: the one in the window shows tonight's real phase.

Test Card M is original. The M is for ma7e0.

◀ Back to the wall

CH 13 Screensaver

Burn-in prevention since 1989

After thirty seconds of nothing, the wall gets bored. Sets start channel-surfing, the big one switches to Flying Lorries, and the lamp flickers once.

The little one on the wall counts how often its logo hits a corner exactly. Corners are rarer than you'd think.

Press any key to stop it. Or don't.

◀ Back to the wall

CH 14 Terminal

nightsh 2.6. Type help.

nightsh 2.6 on ma7e0 OS. Type help and press Enter.