Studio J Online Scrapbooking
Scrapbooking just went from crafty women huddled around piles of paper shreds to online digital awesomeness. Not that crafty women or piles of paper shreds aren’t awesome. Nay. But for many, this translates into finding babysitters or a willing spouse; finding large blocks of time; purchasing a gajillion expensive scissors, stamps, buttons, papers, and ribbons; finding storage for such paraphernalia; and discovering craftiness from within. I mean, seriously, does this or this look fun to clean up? I’ll pass.
Here’s how it works. Hop onto Studio J. You don’t even need an account. You can log in anonymously on the left side of the login page. Once the application opens, create a project. Upload some photos. Choose the kit (set of papers) you would like to use. Choose the pattern (orientation of papers). Choose from a few pre-designed mixes that will get you started out with a great-looking scrapbook spread. Now drop in photos, brads, clasps, ribbons, and stickers. Distress or swap papers at will. Add some text. The amount of customization possible for each of these elements really is amazing and Close To My Heart did their best to make it a powerful experience. Once your spread is complete, you can order a copy that will be printed using CTMH’s super-high-quality printing process and materials and it will be shipped to your door.
I know it may sound like a sales pitch, but I really do think is a fantastic application of technology and CTMH put a lot of focus on giving customers what they want. It was really fun to work on an app that gives users so much control. To read a very fair review of Studio J, check out this article by Craft Critique.
The Juicy Details
You know how much I just loooove to talk about scrapbooking. But oh how I love to talk tech so much more. Here are some interesting tech aspects of Studio J particularly related to the frontend since that’s the portion with which I’m most acquainted:
For the most part, StudioJ is developed in Flex for the frontend and PHP on the backend. The backend and assets are hosted on Amazon’s cloud infrastructure. This provided some unique challenges but resulted in big scalability benefits. For speed, some assets like user photos are uploaded directly to the cloud which requires an ActionScript Amazon API adapter and a little trickery for integration with the rest of the backend.
To store a user’s spread data to be later edited and printed, we utilize SVG. Every element on the spread in ActionScript has a counterpart element in an SVG document. This translation and all the rotating, scaling, panning, colorizing, and other editing tools are provided by our in-house Rain SVG library. This to me is the most powerful and distinctive part of the app.
To improve the user experience, we developed a queuing and caching system. It allows us to cache assets (re-use the same bitmap data in multiple parts of the app and avoid Flex image item renderer flickering issues), prioritize HTTP requests (make sure whatever the user is viewing gets top priority), and even trigger timeouts and/or retry requests. I talked in-depth about this system at the 360|Flex conference and Adobe is adding a similar system to the new Spark image component in Flex 4.5.
The new Text Layout Framework was used in providing text editing functionality on user spreads. This got a little tricky when loading fonts at runtime. It got even trickier when consolidating the undo history for multiple text flows into the spread’s overall undo/redo system. Then we integrated custom support for sizing text to a container.
We used modules to reduce some of the initial app size and provide some domain logic distinction. We added image editing tools so you don’t have to drop into Photoshop to make some simple tweaks to your photos. And the list goes on.
In the end, it’s an ambitious application and I’m glad I could contribute. We have a lot of ideas for additional features and improvements and wish the best for its success. Now go try it out and let me know what you think!