jQTouch over Dashcode?

I've been on a mobile/iPhone webapp kick lately. It seems like a nice area to work in, and it's forced me to pick up a lot more JavaScript than I had before which is good.

There are some amazing frameworks for making iPhone webapps. The first one I came across was jQTouch, which is a jQuery plug-in and is really really awesome. It makes it straightforward to make an app that looks and behaves pretty much iPhone-native, without learning ObjectiveC or signing up for an iPhone dev key. jQTouch's future is a bit uncertain right now - it's being merged in with a company that apparently has a bit of a bad history for changing licences and leaving people in the lurch. The jQuery guys have said that if it looks like jQTouch might be 'lost' they'll either fork it or develop a replacement, so I'm not terribly worried. There's a demand for this kind of framework, so someone will fill it.

After playing around with jQTouch a little, I discovered Dashcode lurking away in my Mac OS X developer tools. And then I discovered that it provides an Interface Builder-like interface for designing your app. And then I raved about how awesome this was to everyone at work, even though no one cared because we don't do mobile development at all in any way.

It seemed so much better to me to be able to specify the layout in a visual drag-and-drop way, especially since this kind of webapp is really targeted at a single platform with a single screen resolution. You can take liberties that you'd never get away with on a traditional app. Dashcode also provides a lot of really good widgets and code snippets that could make apps look a lot slicker and speed up development.

So if Dashcode is so awesome why have the only two real mobile webapp projects I've done/am doing used jQTouch?

Part of it is familiarity. jQTouch works using normal HTML and JavaScript files which I can edit in TextMate. Dashcode is an entire IDE and it would take time to learn how to use it effectively. I struggle to find time and energy to work on this stuff as it is, and the extra overhead from learning an IDE might kill my wee projects before they even get started.

But I don't think that's the main reason. Both jQTouch and Dashcode have a high degree of magic to them - they both just work to produce slick iPhone webapps, but jQTouch's magic is more accessible. You have to create the view structure and links yourself out of HTML and this gives you a handle on how jQTouch is doing what it does. The GUI approach taken by Dashcode hides that and makes it less immediately obvious.

Part of the reason I'm doing these projects is to learn new skills. jQTouch exposes more traditional JavaScript than Dashcode does. By using jQTouch I've been able to grok unobtrusive JavaScript, a skill that will be useful on my next non-mobile web project. The extra magic in Dashcode might be awesome and shiny and wonderful - but it gets in the way of learning how it all really works.

I think Dashcode can serve some people really really well: people who are experienced JavaScript developers and don't need to take time to develop their skills, and people who are very inexperienced and don't want to take time to develop their skills. If you just want to drag-and-drop an iPhone webapp together without learning how to use JavaScript properly, it's definitely a viable option. If you've already been doing JavaScript development and want to learn a new IDE and use a graphical UI builder, it's pretty awesome.

As for my new projects: one is a private app, but the other one will be getting a beta release soon. Expect more posts on that and the technology used, including client-side SQLite databases, which are both awesome and frustrating.