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.
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.
| ID | Name | Mag | Alt | Now |
|---|---|---|---|---|
| M31 | Andromeda Galaxy | 3.4 | -- | -- |
| M33 | Triangulum Galaxy | 5.7 | -- | -- |
| M45 | Pleiades | 1.6 | -- | -- |
| M42 | Orion Nebula | 4.0 | -- | -- |
| NGC 2237 | Rosette Nebula | 9.0 | -- | -- |
| M101 | Pinwheel Galaxy | 7.9 | -- | -- |
| M13 | Hercules Cluster | 5.8 | -- | -- |
| NGC 6960 | Western Veil | 7.0 | -- | -- |
| NGC 7000 | North America Neb. | 4.0 | -- | -- |
| IC 1805 | Heart Nebula | 6.5 | -- | -- |
| M51 | Whirlpool Galaxy | 8.4 | -- | -- |
| M27 | Dumbbell Nebula | 7.5 | -- | -- |
Gallery
No photos on this channel yet. Transmission resumes when they land in public/gallery/astro/.
Kit
- Camera: Lumix S5II
- Processing: PixInsight
- Sky: whatever the weather allows
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
No photos on this channel yet. Transmission resumes when they land in public/gallery/drone/.
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.
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.
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.
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.
- 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)
- 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)
- PainterTOOLLayers, blend modes, brushes, selections and filters. An image editor written from scratch.painter.ma7e0.xyz (opens in a new tab)
- MathQuestLEARNA colourful maths quiz across a small galaxy, made for young explorers.math.ma7e0.xyz (opens in a new tab)
- Synthwave Night DriveGAMEAn endless neon highway at midnight. Weave through traffic, punch turbo, watch wrecks shatter.synth.ma7e0.xyz (opens in a new tab)
- Beyond the NightPHOTODeep-sky, lunar and nocturnal astrophotography. Long exposures of things very far away.astro.ma7e0.xyz (opens in a new tab)
- TriForgeTOOLA 3D modeller in a browser tab. Edit mode, extrude, snap, outliner, GLB export.3d-editor-gamma.vercel.app (opens in a new tab)
- Brick LabBUILDSnap bricks together in a small 3D workshop.lego-silk-nu.vercel.app (opens in a new tab)
- 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)
- 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)
- Sky Arena RollerGAMERoll across floating arenas above the clouds and collect every star.bobball.ma7e0.xyz (opens in a new tab)
- Traffic ClosuresDATAA daily road-closure dashboard, rebuilt every morning from live highway data.traffic.ma7e0.xyz (opens in a new tab)
- Codex Web LabLABA workshop for small ideas, useful interfaces and digital experiments.codex-six-gilt.vercel.app (opens in a new tab)
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.
| Planet | Longitude | From Sun | Year |
|---|---|---|---|
| Mercury | -- | -- | -- |
| Venus | -- | -- | -- |
| Earth | -- | -- | -- |
| Mars | -- | -- | -- |
| Jupiter | -- | -- | -- |
| Saturn | -- | -- | -- |
| Uranus | -- | -- | -- |
| Neptune | -- | -- | -- |
The full version has real ephemerides, thirty moons, eclipses and a proper star sky.
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.
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.
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.
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.
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.
CH 14 Terminal
nightsh 2.6. Type help.
nightsh 2.6 on ma7e0 OS. Type help and press Enter.