Background

In my spare time, I am developing a text editor application to support my novel writing efforts. It’s called TRWEdit, because it’s an editor and because I’m using it to edit my The Reunion War series. Why? Because it’s fun. I got the idea from TJ Mott, who has written several books using his own homemade text editor. I saw his work and, being the software engineer that I am, immediately wanted to make my own version from scratch to match my own idiosyncrasies.

When I refer to “Plot Elements”, I refer to the basic building blocks of a series of books. These are the series (multiple books), book, chapter, and scene.

Design Requirements

Mott has a feature in his editor that lets him visualize the size of each scene in his books and compare them to each other to help him understand the pacing of his stories. It’s a great idea, and I want to take it and tailor it to my own needs. His version is designed with his own needs in mind, so I won’t duplicate his design.

I want my pacing and flow visualizer to have the following features:

  • Ability to display books, chapters, and scenes proportionally, according to their word count.
  • Ability to filter based on individual series, books, or chapters, showing that particular item and child items while hiding all the others.
  • Ability to toggle visibility of each plot element type. For example, I may want to look at individual chapters in a book without seeing any other book or the scenes that compose the chapter. I may want to see everything.
  • Colors! The ability to toggle color schemes based on what I want to see.
    • Basic every other pattern like you might see in a video editor.
    • Heatmap based on length of a section of text.
    • Heatmap based on presence of specific words in that plot element. I might want to know when specific names or phrases are used at a glance.
  • For scenes, I want the ability to look at any amount of metadata for that scene at a glance in the visualizer. Think XKCD’s Movie Narrative Charts, but much simpler.
    • Presence of individual characters, places, events, items, or concepts that I previously associated with a scene.
    • Which subplots are being developed in each scene. (subplots aren’t a feature in the editor, yet…)
  • The UI must be zoomable, so I don’t have to use a 4K monitor to see every detail all at once (maybe I want to though). Visualizations for plot elements must be able to realign themselves based on their size, hiding their text if they can’t display it properly anymore.
  • Hyperlink like functionality so I can jump straight to a scene and start viewing it.
  • I’m sure there will be a lot of scope creep as I get new, amazing, and dubious ideas for features. I’ll add them to this article if that happens.

No problem, right? Right?

My gut instinct is that I could have such a feature complete in less than a standard 40 hour work week if I were working on it full time. It’s way more than a day’s worth of work though. I’d estimate this at 5 story points on a scale when 8 means I’m focused on a user story for an entire week.

Now, why is such a feature important to me? I imagine a time in the future when I’ve completed the rough draft and at least one revision and I need to look at the story as a whole to see if I like where it is. I’ll have a million questions to ask myself at that time and I want to not have to wade through 100,000 words of text to find my answers.

If I want to answer a question such as “where does this character talk about this plot device?”. I can do a global text search and know within a few seconds. That doesn’t tell me exactly where in a story that it happens though. With this feature, I can look at a book and have the relevant sections highlighted in no time at all. Maybe the time between one section and the next is so long that everybody will forget this crucial plot point that I tried to hint at? Maybe it’s good as it is? With this feature, I can find out everything I want to know about a novel at a 30,000 feet view and improve plots, characters, and Checkov’s gun style references that much faster.

UI Mockups

This feature is too complicated for me to do it all from the top of my head, so I made some mockups for reference as I sit down to implement this feature. I’ll make another post with the architecture and design process when I’ve completed the feature. It might be a few weeks, unless I somehow get enough motivation to work on this project during the work week.