DEV Community

Sara McCombs (they/them)
Sara McCombs (they/them)

Posted on • Originally published at Medium on

Robert Jordan’s Wheel of Time.. as a Ruby CLI Data Gem

Robert Jordan’s Wheel of Time… as a Ruby CLI Data Gem

A book set on top a bed with a pair of folded reading glasses on the book. Nearby is a laptop and a cup of coffee.
Photo by Nadine Shaabana on Unsplash

Heading into my first Flatiron portfolio project came with its anxieties and internal conflict. What do I create? How do I approach the problem? Is my idea possible within the given timeframe? All valid concerns.

I was assuaged of these concerns when I went to my favorite Wheel of Time summary website to prepare for book eight. I knew immediately that THIS data was perfect for a CLI data gem and something I would personally use.

Let’s start with a project overview.

Three screenshots that outline each level within the program’s interface: Book, Chapter, Summary.
Preview of each level within the gem.

This project provides an interactive list of books within Robert Jordan’s Wheel of Time series.

Upon selecting a book, an interactive list provides chapters within the chosen book.

At the chapter list level, a user can select a specific chapter for which they would like a summary.

Pretty simple and very helpful for someone like myself who struggles to keep all the details of a book series from one book to the next.

What am I most proud of with this project?

Honestly, the whole darn thing. The whole shebang. The whole kit-and-caboodle. The full monty. The meat and potatoes.

This project showed me I could put everything I have learned together and complete it within the timeframe given. Something that felt utterly unattainable when I first saw the assignment.

I needed a little help here and there and referenced tons of documentation when stuck, however, I feel proud to say that I completed this project relatively on my own.

What made me bang my head on the desk the most?

Coffee mug labeled with “ugh” being refilled with coffee.
Photo by Nathan Dumlao on Unsplash

My tpos. (See what I did there.)

Even with some fantastic VS Code extensions to help with the plethora of variable names, I still mistyped and misspelled them. I would also occasionally find an extra right parenthesis or double quote (the not so pleasant side to some VS Code extensions), which would lead me on a wild goose chase of tracking errors.

But these moments of frustration are great learning moments. We learn how specific and not-so specific error messages really are. We also learn to test more. To commit code more. To generally improve our workflow. These moments are where we learn why developing clean habits from the beginning are so important.

What did I learn, and what would I do differently?

I learned I know significantly more than I give myself credit and need to increase my confidence in myself and my abilities.

I learned how to plan a project from beginning to end. How best to break apart a seemingly large task into smaller, more manageable ones that quickly test and incorporate into the whole.

I learned more about heredocs and text justification methods (ljust and rjust) to output text to the command line in a much more presentable format.

But, most importantly, I learned how important it is to have a fantastic team of friends and peer/professional mentors to rubber duck with. There’s always going to be that one error or that one thing you can’t quite get past. Having that fresh set of eyes to talk things through is the best way forward.

If I could change anything, I would love to have paired with someone on this project. I thoroughly enjoyed coding on this and would like to see what two minds could have done differently.

What is the next step?

The next step is to finish scraping chapter summaries. I was able to complete the chapter summaries for book 0, the prequel, within the project time frame. For a minimal viable project, I think that’s a fair stopping point. However, this book series is 15 books long, and there’s a lot more information needed to flesh this out thoroughly.

Going forward, I plan to refactor and DRY my code as much as possible while adding this additional information. Past that, like any open source project, I’m open to ideas.

To take a peek at the repository for this project, and possibly contribute to its development, head over to GitHub.

Discussion (1)

neotamizhan profile image
Siddharth Venkatesan

Great work! as a big fan of the series... a huge thanks as well. :)