Bringing Handwriting into the Digital Era
Carbo is a project we’ve been working on for the last two years with on-and-off’s, as Hydra took most of our limited resources last year. We’re proud to release it in the next few days, finally!
Scope: Handwriting
Carbo is before anything else about handwriting. For people who love using pen and paper.
Our goal was to make a simple and approachable app that would take the essence of handwriting, and at the same time would allow useful digital-world features (cloud storage, tags, annotations, styling…). Design-wise, @benoitsan and I wanted to use modern iOS design codes of course, like transparency, dynamics with rebounds, parallax, etc. and simultaneously put the emphasis on note contents as much as possible.
And that’s what we came up with:
Camera Input
Steve Jobs was making it clear that nobody wants a stylus to interact with this new generation of devices. But when we think about the particular case of handwriting & sketching, the dual assertion is also true: we don’t want to draw or sketch with a finger. OK, it’s quick and handy, but it’s not nearly as expressive nor accurate as actual pen & paper.
Creativity needs as few constraints as possible to express itself. When you need to investigate and design a new user interface, when you need to design next generation algorithms, think about house plans, make a storyboard, when you need to prepare a talk or podcast, you typically do this with your favorite pen in a notebook. They are so approachable and easy to grasp. They set you free, ready to create.
Lots of efforts have been made to build styluses for iPad (and iPhone). Some of them are quite good, but most don’t allow the same kind of precision, speed, and expressiveness that we get with real pen & paper. They can even be awkward sometimes (palm handling, etc.). Things have been different with Wacom tablets for a long time, and more recently on other platforms like the Surface, where the stylus is really part of the entire experience, and not an afterthought. And sure we keep the door open for those in Carbo, we’ll happily integrate them if we can reach the same kind of accuracy & expressiveness.
That was the starting point of the reflection. We needed a way to efficiently capture real pen & paper writings and drawings. We opted for camera-based capture.
Workflow: Capture / View / Edit
The problem with photos is that they offer a limited resolution: you see pixels when you zoom in, and that’s not cool. It ruins the entire experience. Some companies like Adobe propose to vectorize the image, but these also come with their own limitations: you lose some expressiveness in the process, and further editing the result can be so unnatural and hard (think Bézier curves handles).
We tried something different in Carbo. A hybrid approach. As easy to edit as pixel-based images, as sharp as vector contents when you zoom in. We’re back to monochrome contents. Carbo’s promise is that it will preserve as much expressiveness as there is in the original drawing, making a storage-efficient version of it (think of 400KB per note, instead of a 2.5 MB JPEG per picture).
Carbo provides fast (60 FPS) & natural scrolling of note contents, and it really shines on Retina displays. As for editing: you can lasso-select some parts that you can move, resize, make thicker/thinner or delete. An eraser tool is also available, and they all come with unlimited undo.
Carbo also offers cloud-based syncing, and fully embraces digital workflows with tagging and annotations + styling & sharing.
Styling
Because rendering is performed directly on the GPU, we thought it could be interesting to have some kind of export styles. We added a number of those, from simple colored styles, to chalk on blackboard, blueprint, letterpress, Skitch-like, and even a Warhol inspired one. The colored styles can export with transparent background, making it handy to integrate into a Keynote presentation.
Cloud Syncing
People have multiple devices nowadays, and we wanted to propose cloud storage from the start in Carbo. I was very interested in the posts from Brent Simmons about Vesper Sync Diary. We had to solve very similar issues with one big difference though: we wanted to use existing cloud services.
Carbo offers 3 options: Dropbox, Evernote, and iCloud. Those services have their own forces and weaknesses. The goal was to provide a smooth experience throughout Carbo, that is, enable full editing even if network isn’t available. This implies that we have to keep an offline cache of every operation locally on the device until network becomes reachable. This comes with all kinds of associated problems of atomicity, finding a common clock for conflict resolution, etc. that needs to be implemented as some abstraction on top of services APIs.
We could have done it entirely on iCloud. We actually started with file-based iCloud 18 months ago, but moved immediately to CloudKit when it was announced at WWDC’14. (And even implemented the entire CloudKit backend in Swift, but that’s another story).
Carbo is a 1.0, let’s see how cloud syncing goes. Feel free to let us know about sync issues. We are marking Evernote support as beta because we think some users might run into rate limit, but let’s see how it goes. Also, for CloudKit, we would have loved to support a faster and more efficient push-based updates, but current API requires that we ask push notification authorisation to users with no way of explaining it. So we opted for polling instead for now.
Wrapping up
That’s it guys. Play with Carbo when it’s available over the next few days and let us know. Hope you’ll enjoy it!
Writing by @rsebbe.