As a student in Flatiron School’s Online Software Engineering Program, I initially found the prospect of completing my first portfolio project to be a daunting one. There is a noticeable transition involved from doing guided lessons, code-along sessions, and small projects to creating a Ruby CLI Data Gem from scratch. Nevertheless, upon completing this project, I believe that I have I learned a lot from my experience and feel more confident in my ability to craft my own programs with little to no guidance going forward. Below, I would like to give a summary of some of the significant steps involved in my journey of creating my first Ruby CLI Data Gem, top_one_hundred_movies, https://github.com/dmaster18/top_one_hundred_movies. When first tasked with this project, I wanted to make a program that reflected my interests. As a movie lover, I thought that it would be interesting to create a program that could scrape a list of the best films ever. No such compilation is definitive, but I agreed with many of the choices from IMDb’s “Top 100 Greatest Movies of All Time, https://www.imdb.com/list/ls055592025/, so I decided to use this website for my source of information to scrape for my Ruby CLI Data Gem. Now that I had my movie data trove, I next needed to determine what specific information I wanted to scrape to craft my Movie objects. I ultimately decided to scrape the details that I would most like to know myself before making a decision of whether to see a movie. I decided that each Movie object would have the following attributes: title, director, year, rating, duration, and genres. All these details are essential to the formation any individual Movie object, and they can be easily found and gathered from the main index page https://www.imdb.com/list/ls055592025/ using a Scraper instance method called index_page. In addition to just collecting the most basic details, however, I wanted to also give my Ruby CLI Data Gem the ability to scrape and present more intricate and fascinating data about the top one hundred films of all time. Therefore, I created three additional Scraper instance methods called movie_page, trivia_page and quotes_page, each of which accesses separate associated IMDb URLs. While the movie_page method gives Movie objects access to tagline, cast, and plot details, the trivia_page and quotes_page methods amass trivia and famous film quotations, respectively. Because many of the films’ trivia and quotes’ URLs contain hundreds, and sometimes thousands, of lines of trivia and quotations, my gem only allows the user to see fifty interesting facts or famous quotes at a time, so as to not overwhelm the user or his CLI terminal. To increase the responsiveness and usability of top_one_hundred_movies, I made sure that the gem only scraped the data it absolutely had to at any given time. When first playing around with the program, I discovered that it would take far too much time for the gem to scrape and initialize one hundred films. It would be unreasonable to ask any user to wait such a long time. To solve this problem, I decided to present the user with the top one hundred best film titles sorted by IMDb ranking. Equipped with that information, the user can then choose any film he would like to learn more about by entering its associated IMDb ranking. The user would thus only have to wait a small period of time while his Movie object is being initialized with the basic details gathered from the Scraper instance method index_page. If the user decides he would like to know even more information about a particular Movie object, he can learn about its tagline, plot, or cast from the Scraper instance method movie_page, about its trivia from the Scraper instance method trivia_page, or about its quotes from the Scraper instance method quotes_page. Finally, I gave the top_one_hundred_movies gem with playlist functionality, so that a user can add any of the top one hundred films to a personal playlist, reminding him or her to watch a specific film, or films, in the future. In conclusion, the creation of top_one_hundred_movies has been a fun and educational journey for me. I hope that my gem top_one_hundred_movies addresses the needs of any film lover who would like to peruse and learn about the greatest films of all time.