Thursday, December 29, 2011

Mobile, Tablet and Desktop Development: Application Craft

Overview
When I initially thought about writing a web application that addressed a specific problem I considered a miriad of possibilities. I could use any of a number of development strategies that addressed specific implementations.  I could learn each mobile device specific development environments and create a solution for each.

Instead, I wanted a development environment that helped me leverage technology in a way that maximized my efforts. What I was interested in was the reduction or limitation of rewriting a solution to fit the intended deployment platform. I didn't want to solve the same problem in multiple languages. Who would?

I did a lot of searching.

When I search I don't just look at the results of the top 10. I page through them all. And I read the comments. By chance I found this review: http://sixrevisions.com/javascript/mobile%C2%A0web-development-frameworks/ and buried in the comments I found a reference to Application Craft. That tool is the focus of this blog.

Cloud based
What immediately drew me to AC was the ability to *not* have to install anything.  That freed me from a specific box.  I could work on my app from anywhere, home, office, coffee shop.  That's huge.

JSLint
Once I started working w/ AC I discovered additional hidden gems.  For example, when I edit the javascript code, JSLint is running.  What that means is that my JS code is being analyzed while I program - I don't have to complete my code and then run JSLint.  Instead, I see syntactical errors almost instantaneously.  What more could a girl want?

Revisions
Another wonderful gem is the saving of application state.  Every save is revisioned.  This is not the same as undo.  This is make multiple changes and realize that some time ago the version you were working on was the best.  With AC you simply recover that particular revision and you're back at it.

Forum
Another great benefit that isn't obviously apparent is the forum support.  But that is probably true with any quality software product.  What I like about AC is they use Get Satisfaction.  It's a quality product that hosts product support capabilities.  AC made a good decision to leverage GS.  And maybe it's just me, but I'm impressed when the founder/CEO is also involved with responding to questions.  It says a lot to me and a lot about the  company.

Mobile devices
The next benefit was having a single code base that could be deployed as a native app to multiple smart phones.  Whether or not this was the absolute best run-time performing solution or the optimal mobile phone solution didn't concern me.  I am most interested in minimizing my development time.  I didn't anticipate that my final solution would require such native phone performance that it would be an issue.

When I considered deploying my app to mobile devices I was pleased to see that AC had seemless integration with PhoneGap.  I didn't know anything about PG and following clear instructions in the AC User Guide I set up a PG account and entered that info into AC for my project.  I was then able to generate the native phone apps for the major phones other then iPhone.  For a small fee AC will setup the requirements that Apple has so that a iPhone app can also be generated.  I only tested Android and it worked perfectly.

Responsive Design
Following the guide lines I was able to make one application that would render correctly on any device.  That's huge.  I didn't have to detect what device I was running on and compensate for it.  The components, if laid out correctly, will adjust to the dimensions of the device and render appropriately.  By that I mean the components will flow smoothly.  If for example the components are contained in a Panel that is horizontal layout, if the size constrains them such, the components will stack.  It plays nice.

Summary
AC is a viable solution to not only web application development but also tablet and mobile devices.  There is more that I too need to investigate and I look forward to it.