feat(presentations): FUTO progress talk "Apps Without Platforms"#71
Merged
Conversation
New reveal.js deck for Ian's July 17, 2026 FUTO talk, modeled on the existing presentation framework (content md + per-slide HTML partials under static/slides/futo/, reusing common/questions). 21 slides covering: the protocol-to-platform shift, browser onboarding (/try), the app ecosystem and an honest status table, River + private rooms, a polite Signal contrast, the shared contract pattern, Delta / Atlas / freenet-git, what's next (Mail / Raven / Harvest), and the substrate (contracts, Renegade routing, demand-driven hosting, the AI issue-prioritizer). Speaker notes in Ian's voice on every slide. App maturity and the install command were verified against the actual repos and the /try and /river pages rather than taken from the handoff: Harvest framed as early-design (not "nearly ready"), Mail as pre-alpha, Atlas as a first running version, install shown as the install.sh one-liner. Honest-claims guidance applied throughout (no "beats Signal", private rooms protect content not metadata, hosting redesign is partly in progress). Layout verified by rendering all 21 slides headless at 1280x720 with fragments revealed; dense slides tightened so nothing overflows. Dated 2026-07-17, so Hugo hides it until the talk day (same convention as the Feb deck); preview locally with `hugo server -F`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01APANYMksRuqvGqrjcevNyQ
Four-slide Atlas section (A1 discovery / A2 how-it-works-today / A3 the-line-it-draws / A4 how-it-decentralizes) built as the reference implementation of the reusable per-app template: what it is / grounded reality today / the architectural line it draws / how it grows. Grounded against the atlas source (verified): the index is provenance-agnostic (contract checks signature + schema only), so many crawlers/describers into one index is an off-network change; single-writer key today, so independent contributors are new work; the user-choice/ranking layer is roadmap. A4 marks real vs new-work vs roadmap explicitly so nothing overclaims. Standalone review deck: content/presentations/atlas-section-draft.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01APANYMksRuqvGqrjcevNyQ
Content was pinned to the top half on desktop because sections used
height:100vh (the browser window, not the 720px slide) and, more
fundamentally, reveal.js overwrites the shown slide's inline
display:flex with display:block — so the flex column never flexed and
content collapsed to the top.
Fix (both the FUTO deck and the Atlas-section draft):
- section height:100vh -> 100% (resolves to the slide, not the window)
- customCss forces the visible slide back to a centered flex column:
.reveal .slides section.present { display: flex !important;
flex-direction: column; justify-content: center; }
which centers content slides (title stays at top via the flex:1 body)
and the title slide (grouped + centered), at any viewport size.
Verified by rendering both decks headless at 1280x720, 1920x1080,
1680x1050 and 2560x1440.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01APANYMksRuqvGqrjcevNyQ
"Discovery Without a Platform" was vague and formulaic. Reframe A1 as "Discovery Without a Gatekeeper": lead with the real stakes — on the web, whoever runs discovery (Google, the app store, the feed) decides what you can find, and answers to advertisers, not you. Atlas is a public, verifiable index no company sits behind, with rankings you choose. Frame no-gatekeeper as the goal (A2 then admits today the gatekeeper is us). Bookend the section: A3 closes "why discovery here needs no gatekeeper"; A4 closes "Discovery with no gatekeeper — because judgment was never the network's to hold." Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01APANYMksRuqvGqrjcevNyQ
A1 becomes a two-column slide: the gatekeeper framing on the left, the actual live Atlas discovery UI (from the atlas repo README) framed as a card on the right, captioned "The live Atlas UI, running on Freenet today". Grounds the "first version is real" claim with the real product. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01APANYMksRuqvGqrjcevNyQ
Swap the light-theme Atlas UI screenshot for a dark-mode capture (Ian's, 2026-07-13) that matches the deck — no more white card clashing with the dark background, just a subtle border. Also newer: shows the current 24 entries vs 17. Softened the border/shadow accordingly. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01APANYMksRuqvGqrjcevNyQ
The deck's reveal config is width:"100%" (responsive, not fixed-scale), so the layout reflows with window width. A1's screenshot had a fixed ~540px width and flex-shrink:0, so on narrower windows it kept its size and starved the text column into a squished sliver. Cap the screenshot at max-width:40% of the row (shrinks with the window) and give the text a min-width; text now stays readable from ~1100px up, and the wide view is unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01APANYMksRuqvGqrjcevNyQ
New full-talk title slide: "Apps Without Platforms" + subtitle/author on the left, the freenet.org "How Freenet Works" small-world ring animation (peers on a ring, message particles) as the hero on the right. - network-hero-dark.js: a copy of the homepage hero script with isDark() forced true (the deck is always dark; the canvas is transparent so it sits directly on the slide's dark gradient). - title.html mounts #network-hero + the script, and re-kicks canvas sizing on Reveal ready/slidechanged (reveal lays out after the hero's initial sizing). Responsive: ring capped at 44% width, text has a floor. - title-preview.md renders just the title for review. Verified at 1920x1080 and 1100x850 (canvas sizes + renders, no console errors). This title.html is also slide 0 of the main deck. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01APANYMksRuqvGqrjcevNyQ
One deck to avoid confusion. Fold the reworked 4-slide Atlas section (discovery / today / the-line / decentralizes) into the main FUTO deck, replacing the old single futo/atlas slide. Delete the standalone review decks (atlas-section-draft, title-preview) and the now-orphaned old futo/atlas.html. Result: presentations/2026-07-17-apps-without-platforms is the single source of truth — 24 slides, opening on the ring-animation title. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01APANYMksRuqvGqrjcevNyQ
New title (a nod to Freenet, and a step on from last year's "Freenet Lives"). Subtitle is descriptive rather than a pitch: names the core internet services now running on Freenet (group chat, publishing, search, mail) and calls out try.freenet.org as the no-install way in. Updated the deck front-matter title/description to match. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01APANYMksRuqvGqrjcevNyQ
…ide redesign, deck-wide layout fix, cue notes
- Add "The Hands-Off Era Is Over" (why now: verified UK/FR/EU/US censorship
facts plus the YouTube recommender escalation), before the intro
- Add "Services Without Servers" newcomer intro; beat 3 answers the threat
("No one runs it")
- Redesign the try.freenet.org slide: drop the before/after, add the
encryption-at-rest and one-click-export substance
- Deck-wide: justify/align "safe center" so slide content never overlaps the
title at short window heights
- Rewrite speaker notes across ~18 slides into scannable delivery cues, with
BACKUP blocks where a slide carries facts/caveats for Q&A
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JPWBra4TVGs4MCpbnkVQEg
sanity
marked this pull request as ready for review
July 15, 2026 01:56
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Ian is giving a Freenet progress talk at FUTO on July 17, 2026. He asked for a polished slide deck built in this repo, following the existing presentation framework (the Feb "Freenet Lives" deck and the April Renegade deck). There was no deck yet.
Approach
A new reveal.js deck,
Apps Without Platforms, built the same way as the existing ones: a content markdown file listing slide partials, plus per-slide HTML<section>files understatic/slides/futo/(reusingcommon/questions). 21 slides + speaker notes on every slide, written in Ian's voice.Narrative (from the handoff): Freenet has crossed from protocol to platform. River is the demo anchor (private rooms are the new capability), followed by the wider app ecosystem, a careful Signal contrast, the shared contract pattern, and the substrate (contracts, Renegade routing, demand-driven hosting, the AI issue-prioritizer).
Accuracy over the handoff. Before writing, app maturity and key facts were verified against the actual repos and the live
/tryand/riverpage content, and several handoff claims were corrected so nothing overstates:curl -fsSL https://freenet.org/install.sh | sh(notcargo install freenet).Testing
hugo --buildFuturebuilds the page with 0 "Slide not found" and all 21 sections rendered.customCss+ rewrites so nothing overflows the projector frame.--buildFuturethe deck is correctly hidden until its 2026-07-17 date (same convention as the Feb deck).Notes for review
cd hugo-site && hugo server -F(the-F/--buildFutureis needed until July 17, since the deck is dated for the talk day).[AI-assisted - Claude]