Free TTC Mobile iPhone app @ bit.ly/ttcmobile (Support)

I launched my first Google App Engine hosted app! :-)

November 10th, 2009
I’ve been fascinated by server-side JavaScript since I first saw Jaxer in action. I’ve been investigating application-level JS for some time now, and so far jquery-claypool has impressed me the most for compatibility and completeness. A runner-up, that takes a different, novel approach is SproutCore, which while nearly impossible to use from a traditional HTML/CSS background, makes sense from an Objective-C or Flash/Flex approach: The JS does layout and everything, via absolute positioning, allowing for cached compiled HTML, CSS and JS, with client-side presentation and customization of server-side data, for uber-caching. In theory, I suppose with either, you could set up CouchDB or the Amazon JSON db you mentioned, and be done with it.
I have to admit, a ginormous draw for me is Google’s claim that with memcache and smart coding, you can handle 5 million pageviews a month, per app, FREE (!) on just Google App Engine. The only problem? My beloved Rails isn’t supported, and while I’ve DreamHost PS, I just can’t scale down Ruby’s memory use to keep the load at the minimum price. Price is the problem, as I’m almost between jobs while a university student.
So I’ve tried GAE’s integration with the Java GWT layer, but my dislike for long-winded Java RPC layers (JSON rocks!) and GWT’s SproutCore-style separation of design and code just ddn’t mesh well with me, even as I loved the JS compilation and shared client-server model. I did make a successful Python app, using Google’s built-in webapp framework and some jQuery with datejs. Compared to MVC, the code is quick-n-dirty, almost not worth publishing. But the fantastic thing is that the limited Mac-Python GAE app made deployment effortless, and despite some server troubles on GAE’s end a few hours ago, the app deployed instantly and worked flawlessly.
So now I’m torn, do I use hack-ish Python and jQuery, since it gets the job done? (ungh) Do I use JS-clientside only, since none of the JS libraries I’ve seen offer much by way of Rails-style DRY modelling at both a server and client level? (A goal that, thanks to Big Table and other GAE “features”, might be impossible) Do I try to run GAE-specific web frameworks, knowing they might be less complete or portable? Do I run other languages under Java? (But not Rails, it times out too often during load on GAE)
Part of what bugs me is the fact that the ideal web app is Gmail, with both advanced JS functions, iPhone db support and plain HTML mode. No framework I’ve seen can boast all three of those points — especially if I want one set of model files and amazing performance with both developer ease of use and complete control over the CSS and design. And did I mention shared JS client & server business logic, perhaps at a model layer? While dreaming, let’s add Facebook login support too!
What might your thoughts be on this? Where does jQuery fit? I haven’t even mentioned API-building support, which I suppose is a documentation layer over a JSON-based RESTful logic-containing model layer, with HTML interpretation as well as JS both, for controller/view generation. Of course, if I drop the HTML-requirement, my task becomes that much easier, but I could see server-side JS generating HTML as client-side JS does the same where possible — essentially that the JS-capable browser runs server-side instead of client-side to produce the HTML shown.

I’ve been fascinated by server-side JavaScript since I first saw Jaxer in action. I’ve been investigating application-level JS for some time now, and so far jquery-claypool has impressed me the most for compatibility and completeness. A runner-up, that takes a different, novel approach is SproutCore, which while nearly impossible to use from a traditional HTML/CSS background, makes sense from an Objective-C or Flash/Flex approach: The JS does layout and everything, via absolute positioning, allowing for cached compiled HTML, CSS and JS, with client-side presentation and customization of server-side data, for uber-caching. In theory, I suppose with either, you could set up CouchDB or the Amazon JSON db you mentioned, and be done with it.

I have to admit, a huge draw for me to want to use Google App Engine (GAE) is Google’s claim that with memcache and smart coding, you can handle 5 million pageviews a month, per app, FREE (!) on just GAE. The only problem? My beloved Rails isn’t supported (yet!), and while I’ve DreamHost PS, I just can’t scale down Ruby’s memory use to keep the load at the minimum price. Price is the problem, as I’m almost between jobs while a university student.

So I’ve tried GAE’s integration with the Java GWT layer, but my dislike for long-winded Java RPC layers (JSON rocks!) and GWT’s SproutCore-style separation of design and code just didn’t mesh well with me, even as I loved the JS compilation and shared client-server models. I did make a successful Python app, using Google’s built-in webapp framework and some jQuery with datejs. Compared to MVC, the code is quick-n-dirty, almost not worth publishing. But the fantastic thing is that the limited Mac-Python GAE app made deployment effortless, and despite some server troubles on GAE’s end a few hours ago, the app deployed instantly and worked flawlessly.

So now I’m torn, do I use hack-ish Python and jQuery, since it gets the job done? (ungh) Do I use JS-clientside only, since none of the JS libraries I’ve seen offer much by way of Rails-style DRY modelling at both a server and client level? (A goal that, thanks to Big Table and other GAE “features”, might be impossible) Do I try to run GAE-specific web frameworks, knowing they might be less complete or portable? Do I run other languages under Java? (But not Rails, it times out too often during load on GAE)

Part of what bugs me is the fact that the ideal web app is Gmail, with both advanced JS functions, iPhone db support and plain HTML mode. No framework I’ve seen can boast all three of those points — especially if I want one set of model files and amazing performance with both developer ease of use and complete control over the CSS and design. And did I mention shared JS client & server business logic, perhaps at a model layer? While dreaming, let’s add Facebook login support too!

And I haven’t even mentioned API-building support, which I suppose is a documentation layer over a JSON-based RESTful logic-containing model layer, with HTML interpretation as well as JS both, for controller/view generation. Of course, if I drop the HTML-requirement, my task becomes that much easier, but I could see server-side JS generating HTML as client-side JS does the same where possible — essentially that the JS-capable browser runs server-side instead of client-side to produce the HTML shown.

Oh well. I suspect web developers and designers have been searching for the “perfect” CMS for years now, since the days of PHP Nuke and earlier. :P


View Comments
blog comments powered by Disqus