# SOCIAL — social.fps.network > SOCIAL is a live "weather map of conversations": every node on the canvas is a conversation thread happening right now on the Bluesky firehose. Hot threads swell as replies arrive; cold ones fade and shrink. It's a map instead of a feed — the prototype lens for a node-graph way of seeing social media. Part of fps.network, so it filters to gaming conversations by default, with an ALL escape hatch. In LIVE mode (the default) the data is real: your browser connects directly to the public Bluesky Jetstream firehose — there is no server-side relay; this server only hands you the page. Faint "dust" is new posts nobody has answered yet; most fade, some ignite into threads. Edges appear between threads when the same people move between conversations or when one thread quotes another, and edges decay too. If the live firehose can't be reached, the page falls back to SIM mode — a preferential-attachment simulation (rich-get-richer replies, heat decay, thread mitosis, and a "breaking story" button) built to demonstrate the same dynamics. The size toggle is the whole argument: WEATHER sizes nodes by recent activity with decay, so the map shows *now*; ARCHIVE sizes them by total replies ever — leave it running and watch big cold ghosts dominate while the actual action happens elsewhere. The topic toggle gates what flows onto the map: GAMING keeps only conversations that mention games (keyword-matched client-side, in your browser), ALL is the whole firehose. In Chrome, a translate menu renders the reading panel in your language using the browser's built-in on-device translator — post text never leaves your machine. It's a static page: plain JavaScript and Canvas 2D, zero dependencies, no backend, no build step. Interaction: drag to pan, scroll or pinch to zoom, click a node to read the thread, recenter if you get lost, pause to freeze the map while data keeps flowing. ## Pages - [SOCIAL](https://social.fps.network/) — the map itself; this is a single-page app, and the in-page "?" help card explains what you're looking at ## Key facts - Data source: the public Bluesky Jetstream firehose (app.bsky.feed.post events), consumed directly by the visitor's browser over WebSocket; endpoints rotate on failure, with a simulation fallback - No accounts, no tracking, nothing stored — the server only serves the static page - Default topic filter: GAMING (it's fps.network); switch to ALL for the whole firehose - Two sizing modes: WEATHER (recent activity with decay — shows now) vs. ARCHIVE (total replies ever — shows accumulated mass) - Threads are keyed by their root post; replies heat a thread and heat decays exponentially, so inactive conversations cool and shrink - Optional on-device translation of the reading panel (Chrome's built-in Translator API, feature-detected; hidden where unsupported) - Tech: plain JS + Canvas 2D, zero dependencies, static files, no backend