Mark Zuckerberg created Facemash, the precursor to Facebook, in 2003 while studying at Harvard. Facemash was a website that compared photos of university students and allowed users to vote on who was "most attractive". Here is a summary of the logic, the algorithm and an idea of how the code could have been developed. ![facemash](https://assets.sutori.com/user-uploads/image/d27325e7-7942-44d1-8601-3d88ae865065/cfc303962bca7db043b19743cebb06a4.png) ## <br>facemash logic + **Data collection**: Facemash used photos of Harvard students. These photos were extracted from student directories, known as "facebooks". + **Image comparison**: The site displayed two photos side by side and asked users to vote on who they found more attractive. + **Ranking**: Based on the votes, a ranking was created to show who was considered more attractive. ## <br>Algorithm Facemash's basic algorithm would be simple, consisting of: + **Random Display**: Select two random photos from the database. + **Voting**: Capturing the user's vote and storing the result. + **Ranking update**: With each vote, the ranking of people would be updated based on the choices made by users. ## <br>Code: The code was written in Perl (a popular language for web scripting at the time) and used HTML for the interface. Below is a simplified idea of how it could be implemented in PHP, since we don't have the original code: ```php <?php // Connect to the database $conn = new PDO("mysql:host=localhost;dbname=facemash", "user", "password"); // Select two random photos $query = "SELECT id, photo FROM students ORDER BY RAND() LIMIT 2"; $stmt = $conn->query($query); $photos = $stmt->fetchAll(PDO::FETCH_ASSOC); // Display the photos for voting echo "<img src='".$photos[0]['photo']."' alt='Photo 1'>"; echo "<img src='".$photos[1]['photo']."' alt='Photo 2'>"; // Capture the vote and update the ranking if (isset($_POST['vote'])) { $vote = $_POST['vote']; $query = "UPDATE students SET votes = votes + 1 WHERE id = :id"; $stmt = $conn->prepare($query); $stmt->bindParam(':id', $vote); $stmt->execute(); } ?> <form method="post"> <button name="vote" value="<?php echo $photos[0]['id']; ?>">Vote for Photo 1</button> <button name="vote" value="<?php echo $photos[1]['id']; ?>">Vote for Photo 2</button> </form> ``` ### <br>Considerations: + **Database**: The database would have a students table with fields such as `id`, `photo`, and `votes`. + **Security**: Zuckerberg's Facemash caused controversy because he obtained the photos without authorization, violating the students' privacy.