Literal Dev Diary - June 28th, 2020


This week my focus was to resolve several issues within what is currently the core feature in Literal - creating an annotation from a screenshot. There remain several improvements that I'd like to make, but the bugs fixed this week include:

  • tag editor broken on android
  • when an annotation is created, display the annotation with the final edited text, rather than the initial text we parsed from the screenshot
  • do not display a notification if the annotation was deleted as part of the creation flow
  • improvements to loading: increased speed, display splash screen on boot and skeletons when loading data
  • in tag autocomplete, do not display duplicates
  • when associating a tag, check if it's in cache to determine if we need to create it
  • improvements to error handling: if an image cannot be parsed to an annotation (a more common error case currently than I'd like), route to the annotation text editor and display an error message

I want Literal to do one thing and do it well - textual annotation management. In this, I will continue to invest time over the coming weeks to polish the core flows. I do not perceive this need for depth as mutually exclusive with conventional startup philosophy of shipping a minimum viable product (MVP) and iterating, but I do feel that far too many make the mistake of ignoring the "viable" (and in some cases, even the "product" [1]) part of a "minimum viable product".

I will codify this directly within Github, but the high-level roadmap I perceive as to what needs to happen to bring Literal to an MVP and initial release is as follows:

  • Improve the screenshot parser. Currently the implementation is heavily biased towards the relatively limited diversity of training set data, and frequently misapplies crops in screenshots made within PDF readers.
  • Implement the W3C Web Annotations specification as the core API.
  • Implement a targeted set of tag contextualization functionality: view annotations organized by tag and related tags.

Of course there is functionality I intend to support beyond what's indicated above, but this list captures what I think needs to happen to have a minimum viable product and something that's worth circulating and soliciting feedback on.

Finally, here's a short video that shows the core creation flow as it exists today, and some of the potential areas of improvement: