Writing essays on Shakespeare for English class is hard enough without having to hold your book open in one hand and type in a long, strangely formatted quotation with the other.

What it does

Just select your quotation text, then paste it into your desired location, quotation marks and line numbers included. It's that easy.

How I built it

Versions of Shakespeare's plays available in XML were parsed into data structures in memory. Then, they were displayed using a JavaFX text area. The contents of the clipboard when the user copies a selection are used to determine line numbers. We later found out that parsing the XML is not entirely necessary, and that with a small bit of effort, the XML could be converted to much-better-looking HTML and CSS. The idea was to build a javascript version, but we ran out of time before anyone could learn javascript.

Challenges I ran into


Java XML parsing is incredibly strange compared to the ease of JSON parsing with external libraries. After constructing a DocumentBuilderFactory to produce a DocumentBuilder to produce a Document to produce an Element, the resultant XML would often be filled with unexpected behaviour and extra whitespace. Strange things like it being perfectly acceptable to have a "child node" which is really just text with node name "#text" really put me off XML. Furthermore, getChildren() returns a NodeList, instead of a List , and node.value() returns null in all situations.


"Frailty, thy name is [JavaFX]." (I.ii.146) Any functionality built into JavaFX is thoroughly calcified; attempts to customize trivial GUI details were repelled. Unspeakable things were done, for example, to hide a certain vertical scroll bar that was obscuring content. The scroll bar was slain by, of all steels, a single line of CSS: we set its opacity to 0. The users cannot tell that it is there. But I can. I know. It haunts me.

Accomplishments that I'm proud of


Found the perfect shade of charred cobalt blue to match the light steel grey background. Found the perfect pairing of the standout Open Sans with the relatively reserved, yet still modern Source Serif Pro.


I'm proud of our time-management skills. We finished the project to our goal of quasi-mediocrity early this morning, thereby allowing us to focus on polish. This is when I decided to display the pear-shaking gif in the menu screen. There is something deeply comforting about the steady rythme of the pear-shaking, like the regular sway of a grandfather clock in the living room of one's grandparents.

What I learned


This experience was my first experience into the arcane magic of GIT. I still do not know what commit, push, or pull exactly does. If one operation gave an error, I tried one of the other two. Eventually, most code was snychronized. Some critical pieces of code were sent over Facebook messenger, to avoid Git. I would like to learn how to use Git so that in the future I can avoid needing to copy the code to a secure location, reverting changes, then pasting every couple of commits.

What's next for Shakes Pear

Shakes Pear is embarking for the webs, with pear in oscillating hand. We are confident that with HTML5, CSS, and JavaScript we can construct a more asthetically pleasing (aka functional, right?) GUI than the current desktop app.

Built With

Share this project: