Every second of every day.
Someone is typing.
Somewhere, a server is running.
- 12,000+ servers
- 3 data centers
- 99.99% uptime
Right now. This second.
The network that carries it all.
485 submarine cable systems. 1.3 million kilometers of fiber.
5.4 billion people.
Connected.
67% of the world's population, online.
Someone built this.
gsap.registerPlugin(ScrollTrigger);
gsap.to(".stat-block__number", {
scrollTrigger: {
trigger: "#numbers",
start: "top center",
pin: true,
scrub: 1,
},
innerText: 3400000,
snap: { innerText: 1 },
duration: 2,
ease: "power2.out",
});
It never stops.
Every second, someone connects for the first time.
5.4 billion voices. One network. No off switch.
How I built this
Why ScrollTrigger scrub over custom scroll listeners
scrub: 1 ties animation progress directly to scroll position via GSAP's internal RAF loop, avoiding scroll event throttling, jank from layout thrashing, and manual lerp implementations. Custom listeners on window.scroll fire on the main thread and can't be composed the way ScrollTrigger.normalizeScroll handles iOS momentum — where native scroll events don't fire at all during the deceleration phase.
How mobile performance was handled
gsap.matchMedia() dynamically imports animation modules only for the active breakpoint — not just disabling them, but skipping the import() entirely so the JS is never parsed. Parallax on mobile causes forced reflow on every frame; skipping parallax-building.js and parallax-people.js completely keeps the bundle lean. The SVG submarine cable count also drops from 10 → 4 on mobile, eliminating the most expensive paint operations.
The typewriter effect without a library
terminal.js splits the visible code block into individual <span class="char"> elements at runtime, then reveals them with gsap.to at a 0.008s stagger per character. Spaces are replaced with plus a letter-spacing adjustment to preserve monospace column alignment. For reduced-motion and mobile the characters remain visible via CSS — no JS fallback needed.
SVG stroke animation
Each submarine cable path starts invisible: strokeDasharray and strokeDashoffset are both set to the path's total length via getTotalLength(), called once on init and cached. GSAP then animates strokeDashoffset to 0 as the section scrubs into view — an operation the browser can composite on the GPU without triggering layout recalculation.