guiWords is a Windows desktop application based on the popular Latin dictionary application, Whitaker's Words. I recently corrected many data problems I previously missed. There is a lot of data here and there is a chance I still managed to miss some issues. These will be made manifest only through use.

I've ported the application to be a web application using AngularJS. You can find it here.


  1. Over 30,000 Latin words and their English meanings are included in this dictionary.
  2. Dictionary form, definition, and parsing information displayed in sets which can be expanded or closed as needed.
  3. Search for multiple forms at a time.
  4. Complete search history can be displayed at any time.
  5. A link to Perseus Latin Word Tool for every form.
  6. An additional window will be show all forms of the Latin word.
  7. Easily copy and paste the search results.
  8. It looks sexy.

Development Process

  1. Converted fixed-width flat files into usable tsv in order to import into MSSQL Server.
  2. Designed and built a database structure making use of existing keys and creating new ones as necessary to keep data normalization and integrity.
  3. Created 4 stored procedures which use the raw, unformatted data to create indexed tables. Stored procedures can be run multiple times without errors.
  4. Designed a parsing stored procedure which includes steps to query multiple words.
  5. Designed a UI using Windows Presentation Foundation.
  6. Using LINQ, wrote a function to query the database for the forms and return a result set.
  7. Wrote a function in C# to dynamically display search results in a panel.
  8. Wrote an enumerable class instantiated as a search history object. The system stores each search within a session history which can be displayed in the result panel.
  9. Deployed necessary tables to a remote SQL server and relinked the application.
  10. Added a link to the Perseus Tufts dictionary resource.
  11. Developed a process to display all of the forms of a word in a single window partitioned out into reasonable groupings.
  12. Refactored the entire thing to increase efficiency.

Planned Features

  1. I want to add support for English to Latin searches. This is a really complicated process mostly because the dictionary files themselves really don't lend themselves to this sort of thing. It is in the plan eventually, however.
  2. After reaching a point where I'm like, "Yeah, I'm done with this." I still have other plans for this...