Tombstone
File Sharing Accelerator
Dec 2000 โ Jun 2001 ยท age 18โ19
What it was
A multi-source file transfer client and its index service, built by one teenager in MFC and PHP3 over six months. An index told you who had a file, identified by checksum and size rather than name, so renamed copies pooled together; the client then pulled that file from several people at once in 64 KB chunks, each checked by CRC. A plain string of chunk ranges, saved to a local database after every chunk, recorded what was still missing, so a crashed download resumed where it stopped. Searches fanned out across several federated index servers. It had an installer, an auto-updater, an EULA and terms of service. Six weeks in, the monolithic client was rewritten as four DLLs with clean exported APIs, and the server moved to a single I/O thread over many sockets. The beta shipped; peer authentication was still a stub, and it stopped in June 2001.
Wins, for the age
- At nineteen, Jeff built resumable multi-source downloads with a persisted range manifest ahead of BitTorrent (2001), by two to six months, as a shipped beta. A nineteen-year-old primate, alone, was reasoning about swarms.
- Identified files by checksum and size, alongside eDonkey2000's ed2k hashes (2000), so the swarm formed around content, not names.
- Found the reactor pattern by needing it, rediscovering what ACE (1995) had already written down.
- Client, protocol, server, installer, updater and legal text, alone, then a rewrite into modules. Most people that age are still deciding on a major.
What it taught
- Sockets for real: partial reads, overlapped I/O, and what a wire protocol needs, which is magic, lengths and checksums.
- Module boundaries on purpose, as a C-style API per DLL, the instinct that paid off for the rest of a career.
- One critical section per concern beats nine numbered ones.
- Parameterize queries, authenticate before transferring, never spin on an error, and finish the security before the installer. The search script could have dropped the database.
Genealogy
Ancestors: Znetfs: the first-generation monolithic client, rebuilt here as four DLLs. Descendants: Async Serialization: length-prefixed messages pushed down a socket, again.
Epitaph
Here lies File Sharing Accelerator, which could fetch a file from four strangers at once and could not tell any of them apart.