ffilm.org / fieldnotes Field Notes

ffilm.org / fieldnotes

A living log of builds, rooms, evidence, experiments and weather from the workbench.

Showing notes tagged build. Clear filter
Art build diary music

24 Jul 2026

Faetime: A Human-Scale Social Network

Faetime is an invite-only social network capped at 100 members. No algorithms, no performance metrics, no infinite scroll. The feed is chronological. The community is small enough that names become familiar and quiet posts matter.

...read more

Each member receives three invitations to pass on carefully until the hundred places are filled. The constraint is the point: at human scale, a social platform doesn't need engagement mechanics to stay alive. People just talk to each other.

What it does

Members post fragments of life (thoughts, images, weather, passing moments) and respond using moon-phase symbols rather than conventional reactions. The interface changes through the day: blue sky and moving clouds in daylight, violet at dusk, stars at night. The moon overhead reflects the current real-world phase and sign.

Live chat runs alongside the feed for real-time conversation.

Synastry and lunar timing

Each member's birth details feed a synastry system that maps relationships between participants. Daily reflections draw on lunar timing and personal chart data. This isn't horoscope content: it's computed from ephemeris data and presented as one way of noticing time differently, together.

The synastry integration means the platform understands the relational space between its members, not just individual profiles.

Why it's built this way

Most social platforms optimise for scale. Faetime optimises for presence. A chronological feed means nobody has to perform for an algorithm. A hard cap of 100 means the community can self-regulate without moderation infrastructure. Invite-only distribution means growth is deliberate, not viral.

The result is a social space shaped by time, atmosphere, and attention rather than engagement metrics.

Technical

Built on the ffilm.org infrastructure stack. Features include image posts, YouTube embeds, nested replies, friendship synastry, live chat, real-time atmospheric rendering, and lunar phase tracking. Launched March 2026.

Originally posted on Contra: https://contra.com/p/R6MQs7BA-faetime-a-human-scale-social-network

24 Jul 2026

Personal Sky: Data-Driven Astrology App

Personal Sky is a data-driven astrology browser app that lets you search your chart and talk with your sky. It uses an accurate ephemeris, a deterministic PHP data interpretation layer, and only then does the AI do its interpretation pass, keeping the conversation grounded in the calculated facts of the chart.

...read more

The Problem

Most astrology apps either oversimplify (daily horoscope generators) or let an LLM freestyle with no grounding in actual astronomical data. I wanted to build something where every claim the AI makes is backed by a real, calculated chart position, and where the app works perfectly well without AI at all.

What I Built

Ephemeris-Driven Chart Engine

Birth place and time are resolved into coordinates and timezone data. PHP builds and validates the natal chart, current transits, houses, aspects and geometric patterns from ephemeris data. Unknown birth times automatically disable houses and angles, so the app never shows data it can't verify.

Interactive SVG Chart

The natal and present-day transit charts are overlaid in a fully interactive SVG wheel. You can explore planets, aspects, houses and patterns directly.

AI Grounded in Calculated Facts

The verified chart context is selectively passed to Claude, so the model explains calculated facts rather than inventing them. A deterministic fallback works without AI for users who prefer it.

Sky Passport subscriptions

Personal Sky is live in beta. Visitors can explore their chart and ask up to 5 free questions; Sky Passport costs £3/month and adds unlimited follow-up questions, saved charts, and access across devices.

Collaboration

Built in collaboration with astrologer Kelfin Oberon, who designed the astrological structure and interpretation framework that the deterministic layer implements.

The Stack

PHP, JavaScript, SVG, Claude API, Stripe. Originally launched through Ffilm.org, now live at PersonalSky.net.

Visit at personalsky.net

Originally posted on Contra: https://contra.com/p/B2OlkMBX-personal-sky-data-driven-astrology-app

24 Jul 2026

LiveRoom: Browser-Based Private Video Conversations

LiveRoom is a browser-based platform for private video conversations, built as part of Ffilm.org. Hosts create a room and share a link; guests join without installing anything. Live video, chat, screen sharing and consent-based recording, all running in the browser.

...read more

The Problem

Video calling tools are either bloated with features nobody asked for or locked behind app installs and accounts. I wanted something stripped back: create a room, share a link, talk. No downloads, no sign-ups for guests, no ambiguity about whether you're being recorded.

What I Built

Signalling and Real-Time Infrastructure The React/Vite frontend uses WebSockets for signalling, role management, admission control, presence tracking and ephemeral chat. Browser-native WebRTC handles all media streams, with TURN support for reliable connections behind restrictive networks.

Consent-Based Recording Recording is off by default and clearly indicated in the UI at all times. With participants' explicit agreement, the host can make a local desktop recording that composites the stage video, a chat ticker and mixed room audio using the MediaRecorder API. Nothing is uploaded automatically.

Room Access and Roles Hosts control admission, so uninvited visitors can't join. The room model supports distinct host and guest roles with appropriate permissions for each.

Cloudflare Durable Objects Room state is managed through Cloudflare Durable Objects, keeping signalling fast and co-located with the WebSocket connections.

The Stack

React, Vite, WebRTC, WebSockets, Cloudflare Durable Objects, MediaRecorder API, TURN.

LiveRoom Interface

Visit at ffilm.org/liveroom

Originally posted on Contra: https://contra.com/p/32cEROkm-live-room-browser-based-private-video-conversations

24 Jul 2026

Zoneout: Shared Rooms for Real-Time Listening

Zoneout.net is a shared room for real-time listening. Choose tracks from the SoundCloud library, chat, and ponder the WebGL orb in a room with others. Built for musicians and listeners who want to share the experience of hearing something at the same time.

...read more

Why This Exists

Sending someone a music link is a weak way to share music. Half the time it disappears into a tab, or gets saved for later and never heard. Being in a room with someone while a track actually plays is different: you feel the reaction as it happens, even if nobody says much.

Listening to music together online usually means someone screen-shares a Spotify window or pastes links in a chat. I wanted a dedicated space where a group of people are genuinely synchronised on the same track, at the same moment, with a shared visual atmosphere. Something collective rather than privately fed through headphones.

The Build

I began in the usual modern way, with a heavier stack in mind: Next, Prisma, all the expected machinery. It quickly became obvious that was the wrong direction for where I wanted this to live. It never properly ran in a way worth keeping.

The real build was the lean version: Express, static pages, polling, signed cookies, one server file, no unnecessary weight. That part was satisfying because everything had to justify itself. Rooms first, then queue logic, then all the little social questions hidden inside queue logic: whose track, whose right to remove it, what happens when nobody adds anything when the current one ends.

Ghost Tracks

That last question was the one I liked solving most. For the Procrastinatrix room, I didn't want anyone arriving into silence, so it now quietly pulls from my own Headphone Candy playlist and drops in ghost tracks when the queue is empty. They arrive without an owner attached and anyone can skip them instantly. It means the room is already doing something before anyone decides what comes next.

Authoritative Server-Side Sync

The Node.js/Express server maintains the authoritative room state: current track, queue, play/pause state and start timestamp. Every browser seeks to the correct playback point on connect and stays synchronised throughout the session. The SoundCloud Widget API handles actual audio playback.

Real-Time Everything

Socket.IO carries chat, presence, reactions, queue changes and skip votes over the same live connection. The room feels immediate because everything is.

Queue and Voting

Anyone in the room can queue tracks from SoundCloud. Skip votes let the room collectively move on from a track without giving any single person veto power.

The Visualiser Rabbit Hole

Then I got dragged sideways into the visualiser and lost hours there. A blob first, then a torus knot, then flame, then another version because the flame looked wrong, then a separate shader page because once you start editing fragment code directly it becomes dangerous to do it inside the live room. Bass, mids, highs, hue, fullscreen, mouse tilt, chat over the top. A WebGL2 orb that became the shared visual atmosphere: the thing you stare at while you listen, a campfire for the room.

Everything Underneath

Scheduled events, admin controls, presence snapshots, skip votes, creator permissions, visitor graphs: all the practical parts that make a room behave properly once people are inside it. Cursor and Claude Code helped with velocity, but only under strict supervision: prompting, rejecting, steering, checking what they wrote, making them strip things back when they got bloated or made bad assumptions. It still feels less like pressing a button and more like conducting a very fast, slightly unruly assistant.

Who It's For

Musicians who want to play their SoundCloud tracks to an audience without the awkwardness of just throwing links around. People who want to hang out remotely and chat while playing bangers. And for the orb ponderers, there are visuals.

After six tracks you unlock creator status, which means you can make your own room, schedule events, and start shaping the place yourself. The whole point is that it grows by being used.

Visit at zoneout.net

Originally posted on Contra: https://contra.com/p/vvgFkMPO-zoneout-shared-rooms-for-real-time-listening