It's been quite a while since my last post, mostly due to all the work being put into litl's first product launch. We has come a long way and the team has definitely put together something special. As with most hardware product launches, people want to about the technical details of the software. They can range from architectural decisions at the start to interesting problems we've attempted to tackle along the way. The litl webbook has been given a lot of attention from it's unique hardware design and formfactor, but the software's use of the cloud has even larger implications. The litl's use of online photo services introduced a number of problems and challenges that I'd like to talk about.
designing for new photo services:
We needed to design our software to support multiple photo services. The litl currently tracks all of your photos stored in flickr and Shutterfly, but this is far from a complete list. Not requiring a client software update for every new service was key. Whenever a photo query is needed, send it off and let GAE do all the heavy lifting. The async nature of taskqueues allowed us to chop up and perform pretty large requests rather sanely. Having well-behaved OAuth and REST APIs made a huge difference.
the media wall:
Looking for that picture from last Thanksgiving? You don't need to remember which album it was filed in, or if you used this program or that photo service. Not only does the litl webbook display your photos stored in online services, it even aggregates all of them into a single timeline view, regardless of account.
Got new baby pictures that you want to send to your family and friends? Share a photo channel with them once, and have all subsequent uploads be included as well. Since the photos are already on the cloud, it's even easier to share. The huge amount of information required and tasks related to performing these searches forced us to change the way approached this problem several times.
This has been a very thought-provoking and challenging road. But one great thing about attempting to do something exciting and different is that the number of opportunities to learn and grow. It seems like this shift in focus to leveraging existing web services to handle and share our information with our friends and family instead of building larger machines to store everything locally is uncovering new types of problems to solve every day. Let's get cracking!
2 days ago