| This is Sandeep (co-founder of Ravid). My co-founder (keithba) and I found that sending private, asynchronous video messages on mobile devices is way more difficult than it should be. We created Ravid to solve this problem. Note: US-only for now & requires a phone (so no tablets.) The stack & tools: * Rails 3 (MRI) for our API servers.
* Worker nodes running Sinatra (JRuby) w/ Resque
* Monit for monitoring services / Fabric for quick provisioning
* The Android client is typical Java (using IntelliJ)
* iPhone development w/ Monotouch!
* S3 for storage, and our public website using Jekyll
* C2DM message delivery (our Gem: https://github.com/sghael/speedy_c2dm)
Lessons learned so far:- Fragmentation on Android is a b. Especially when dealing with hardware stuff like cameras, expect to do a lot of device specific coding. Front-facing cameras are a perfect example. Gingerbread solves these problems in theory, but not in practice. - Uploading video files over mobile connection is non-trivial (duh) - We've put a lot of work towards reliable and efficient uploads and downloads (intelligent packetization, retry logic, etc). We solve for the "elevator scenario". User sends a message, but steps into an elevator half way through delivery. Aside from Gmail, most mobile apps suck at this. - On the positive side, 4G+ speeds are really impressive. - Creating a portrait oriented camera application for Android is way harder than it should be (really poor API implementation around camera rotations). Contrast to iOS where it's super easy. - UX matters - A friction-free UX required a lot of work. We had many alpha testers (both family and friends & paid services like usertesting.com/mobile) that helped us find the sticking points. We'd love your feedback on anything! |