Skip to content

feat(presentations): FUTO progress talk "Apps Without Platforms"#71

Merged
sanity merged 11 commits into
mainfrom
talk-futo-2026-07
Jul 15, 2026
Merged

feat(presentations): FUTO progress talk "Apps Without Platforms"#71
sanity merged 11 commits into
mainfrom
talk-futo-2026-07

Conversation

@sanity

@sanity sanity commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

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 under static/slides/futo/ (reusing common/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 /try and /river page content, and several handoff claims were corrected so nothing overstates:

  • Install shown as curl -fsSL https://freenet.org/install.sh | sh (not cargo install freenet).
  • Harvest = early design (repo says scaffolding, subsystems not implemented), not "nearly ready".
  • Mail = pre-alpha (deployed, post-quantum, "don't store anything you'd mind losing").
  • Atlas = a first version running (repo-claimed; not "solved decentralized search").
  • Private rooms described precisely (AES-256-GCM room secret, ECIES/X25519 key distribution, weekly + on-ban rotation) with an explicit slide that they protect content, not metadata, and are not Signal-style per-message ratcheting.
  • Signal contrast framed as "different question, different trade-off", never "River beats Signal".
  • Demand-driven hosting framed honestly as a direction that's partly live, partly in progress.

Testing

  • hugo --buildFuture builds the page with 0 "Slide not found" and all 21 sections rendered.
  • All 21 slides rendered headless at 1280×720 with fragments revealed; dense slides (app-status table, Signal table, the AI pipeline, private-rooms cards) were tightened via a per-deck customCss + rewrites so nothing overflows the projector frame.
  • Without --buildFuture the deck is correctly hidden until its 2026-07-17 date (same convention as the Feb deck).

Notes for review

  • Preview: cd hugo-site && hugo server -F (the -F / --buildFuture is needed until July 17, since the deck is dated for the talk day).
  • Please double-check live before the talk: that the Atlas contract actually loads on the network, and that you're comfortable calling Mail "pre-alpha, deployed" on stage.
  • Backup demo screenshots/recordings (try page, River public + private room, Atlas, Delta) still need to be captured against a running node — not included here, since I won't fabricate app screenshots.

[AI-assisted - Claude]

sanity and others added 11 commits July 8, 2026 09:42
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
sanity marked this pull request as ready for review July 15, 2026 01:56
@sanity
sanity merged commit 1884cf7 into main Jul 15, 2026
3 checks passed
@sanity
sanity deleted the talk-futo-2026-07 branch July 15, 2026 02:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant