new backend
Detexify now uses MongoDB as backend storage. Why? Detexify did not really need all the things that CouchDB is great for. No concurrency - only one server process that needs to load all data into memory on boot. No need for MapReduce views. Instead it needs to do the initial loading fast so that downtimes are short. This was considerably faster with MongoDB. In addition I use MongoDB’s capped collections to cache the container for the samples that permanently stay in memory. This container functions identically to MongoDB’s capped collections so they were a perfect match. If you tried to use detexify in the past few days you will have noticed the extremely slow startup times. If it needs a restart now it should be up again in less than two minutes.
new server
Another problem was that the app was recently restarted very often on Heroku. I guess this was due to the high memory usage (I did not ask the guys at Heroku, though). To be able to control everything I have now setup the service on a 512 slice and everything is very stable since then so I can start working on improvements and new features. Sadly I had to give up the cloud™ for now. I hope to find a classifier that does not need as much memory as the nearest neighbour classifier and return to Heroku. The web frontend is still on Heroku. Unfortunately the slice ist not very cheap so I encourage you to donate a small amount if detexify helps you.
android app
I am happy to announce that Robin Baumgarten, a good friend of mine, has helped (actually he did most of the work) to develop a native android app to interface detexify. It is already available on the android market and free but there is also a supporter version for £1.00. You can buy it if you want to support us in doing mobile development. An iPhone app in the works, too.