As is clear through this blog, I am an avid reader. I read a lot of non-fiction, and when reading I often want to take a note or jot something down. This proved to be difficult, so I decided to build something to help the process. In this post I'll detail the why, the how and the result.
I am a fan of Ryan Holiday and really enjoyed The Obstacle Is The Way and Ego Is The Enemy, both books having a strong stoic foundation. Ryan is a massive reader, far more so than even the average author, and I came across how he manages to not only get through so many books, but also how he remembers what he reads.
The Notecard System is what he uses to organise his notes, even including categories. This involves some time and effort and when I was using it I found it time consuming:
- Underline in pencil what interests you
- At the end of every chapter, go back through the chapter and transcribe the underlined notes
- Repeat until the end of the book
Some of the annoyances actually come more from the practicalities of this - the transcription of the note (on a laptop in my case) while trying to hold the book open was frustrating.
I knew the system would be really beneficial, but I was sure there was a smoother way to handle the note taking part.
Idea for an app
I started to workt through how this could be done more easily. What if you could just open up an app, take a picture of the book and highlight the words you wanted to save, like you do on Kindle? You then save the note to a book and you can view all the notes linked to that book.
The aim of the app would be simplicity: how do you get from wanting to save a note to having the note saved in as few steps as possible.
I came up with a flow that worked well on paper, and then reached out to my trusted designer to get the idea brought to life. I loved the results and after a few short iterations I was happy to move forward and get this built.
Building the app
My first approach is to try and build something myself as a learning exercise. I want to learn SwiftUI, so I find a project I can use to get the learning done with a goal. This generally ties in to the languages and frameworks I am interested in learning.
I started learning Swift with UIKit, and then learned SwiftUI. The resources I was using to do so were really good, but my attempt to learn and do myself fell apart in two ways.
Competing interests: I have had a few things going on and the level of dedication needed to do something that turned out to be a fair amount more difficult than I thought.
Opening technical difficulty: the main part of the app, OCR and drag to select text, turned out to be a sufficient hurdle for me to not make sufficient progress to build momentum.
After sitting on the idea for too long (around 12 months) I decided to accept my fate and get someone else to help me. I found an outsourced company in India, and they built the app for next to nothing (relative to UK prices, about 1/10th of the cost) and had a version 1 done within three months and many debugged versions published.
For those interested, the technical challenges that caught me off-guard were the below:
- Syncing. We use CloudKit for storage of the notes, but the app can be offline (the next iteration it have be full offline capability) but this leads to potential syncing issues. What if you changed a note on another phone, which note takes precedence? Lots of fun.
- Payments. The biggest pain with the payments was testing. As I come in compeltely blind to this side of development, I had to trust my outsourced partners and we were testing in production left right and centre. Not ideal but it got the job done.
- OCR. It was easiest to use Apple's built-in VisionKit but it's not that flexible and the process can be clunky from time to time.
We soft released the application last week and so far the response has been really positive, we also have about a 5% conversion rate which I think will end up at 10% as people use the app (the model is that the first 10 notes are free, from there you need to pay).
We're also looking at adding the following functionality:
- Better OCR and text selection
- Follow friends and get a feed of their quotes
- Desktop and iPad apps (thanks SwiftUI)
Also, we are looking to build and release an Android App which is exciting.
Honestly, I am not sure when this will come to fruition as this is funded personally by me and a good friend. Once we have more validation of the actual product we will double down and maybe get some help involved ("friends and family" funds, grants or crowdfunding).