Alex Bosworth's Weblog

developing software, living the expat life in beijing, other fun stuff!

previous projects: alchemy, swik, open source stuff, now adylitica.

Memo Notepad

In 2012, my company Adylitica made a very big switch.

We made the decision to focus our development efforts on building Apps we really believed in. This meant that instead of concentrating on our profits, we would concentrate only on projects we really believed in.

The list of these projects is varied, but at the top of our list was our most successful and widely used App “Do it (Tomorrow)

In building the sync system for Do it (Tomorrow), I learned a lot of lessons about what an enormous challenge sync is to get right. Even though Do it (Tomorrow) sync seems simple, there are many, many things that can go wrong, it is very complex, and there are various deficiencies that were a result of compromises or incorrect decisions.

In 2012 my goal was to build a successor to the Do it (Tomorrow) sync system (which was already on v2). This new sync system would power the next generations of our Apps, which were on track to be much more complex.

Another goal of mine was to set up the next generation of our Web Apps. Currently there is a huge mismatch between Web App capabilities and smartphone App capabilities. The differences are vast, but we really want to support access to our Apps on the desktop, and via the web.

Finally, in my everyday life, I have a lot of ideas that I want to get down. Things to do go into Do it (Tomorrow). My weekly plans and appointments go into Everyday Notes. Bugs and ideas for improvements of our Apps go into our Github. But a lot of what I want to get down is more free-form: sketches, or simple general notes.

To match all of these goals: a next generation sync system, a next generation web app framework, and an App that captures my day to day thinking and notes, I began work on an App called “Memo Notepad”. This would be a general purpose notepad, that could be randomly edited, would work without loading times or delays, and allow for me to solve my problem of keeping track of my thoughts.

I finished the new sync system and Memo Notepad by the summer of 2012, and I shipped it to the Google Chrome store in September.

If you have Google Chrome, you should check it out!
https://chrome.google.com/webstore/detail/memo-notepad/nmoihkoninaoanjobiiknmgenhpaecec

The sync system that powers Memo Notepad syncing is based on Amazon’s DynamoDb service, which is a very limited sort of database that is however extremely fast and reliable. It is based on flash memory drives, which are much faster than the hard disk drive system we were previously using. At least 5 times as fast in our testing, up to 10 times faster.

The Web framework that I made for Memo Notepad is also based on a new database product, but this one is a new web standard called IndexedDb. IndexedDb is definitely the way forward for building web apps that can keep pace with smartphone Apps, as it allows you to read and write data without the delays or costs of a server connection for every data access. Local Storage APIs already exist, but in building my Twitter App TweetBe.at, I realized that Local Storage is never going to work for a serious standalone web app data model due to critical performance and API design problems.

Unfortunately, Firefox and Safari are not completely on board the IndexedDb standard. Firefox has implemented IndexedDb, but its implementation is not good, in my continued testing of Firefox Nightlies, it continues to fail in critical ways that would prevent me from using it in a production web App. Safari hasn’t even touched the standard. Google Chrome on the other hand has pretty good support for IndexedDb, and does a lot to support web Apps with its App Market, so Memo Notepad is a Google Chrome exclusive for the time being.

Since Memo Notepad launched a few months ago, it has been featured by Google on their App Market, and has attracted a lot of nice reviews and ratings.

Since then I’ve also added a few cool features to the project:
1. Two way sync with Google Drive
2. Two way sync with Dropbox
3. Variable fonts support
4. Tumblr post integration

Although we plan to support mobile access of Memo Notepad notes, building those Apps is going to take us significant time, so I decided to create Google Drive sync as a way to access my notes on the go.

My key takeaway from Google Drive is that it is not a product I would endorse. Although it has some really key strengths and I was very impressed with its product offering and API, its ability to do even its normal job of syncing properly interfered with my development process, and contributed to souring me on the product. Google support on issues encountered was true to Google form, virtually non-existent or comically unhelpful.

After Google Drive failed to service my ‘notes on the go’ concept, I tried Dropbox. I’ve always been wary of Dropbox due to their viral marketing, it basically turned me off the entire product as I didn’t want to get sucked into some multi-level marketing scheme. However the Dropbox OSX App, general service and API has been unexpectedly delightful, albeit with a few scary bumps on the development road (dealing with making nice filenames across various operating systems for example).

Finally, today I completed work on Tumblr integration (which hosts this blog). And today I am using for the first time Memo Notepad to write this blog post :)

So far the new sync system, the new web framework have worked quite well, which should set us up very well for 2013, and expect to see some very ambitious projects out of Adylitica that use this new sync system, some web apps that really push the boundaries of how we can use our new web framework, and a little camera project we are working on to deal with your sketches and drawings!

Comments (View)
blog comments powered by Disqus