I have been looking at the various touch/tablet platforms. It seems to me that the JavaScript/HTML5 stuff is way out past the frontier of civilization. There is a saying that when armchair warriors meet they talk about strategy and tactics, but when generals meet they talk about logistics. Likewise when someone shows me a new programing language/platform I am not interested in syntax or semantics or architecture. Instead I care most about three things: first the API docs; second the rename refactoring; and third the debugger. The further you get from the civilized regions of programming the less developed these crucial logistics become. This is entirely a matter of personal preference. There are a lot of young gun-slinger programmers who relish operating out where law and civilization haven’t yet reached. I did too back when my Testosterone level was higher. But now I value more highly my time and effort, as they are depleting resources.
Specifically, I looked briefly at PhoneGap, Jquery Mobile, and Sencha Touch, which appear to be the main ways to do cross-platform mobile programming today. You can pretty much forget about having a real debugger, or even a simulator. The API’s are changing way too fast to be properly documented. JavaScript IDE’s are still very much a work in progress, although IntelliJ looks like it might be usable. JavaScript itself is roiled in an endless civil war over the foundational libraries needed to work around its congenital brain damage.
At the other end of the spectrum is iOS, which is the most highly developed touch platform. Unfortunately it is a Fascist state that has outlawed programming language development as a seditious activity. Apparently being able to execute a program downloaded from the internet is a threat to Apple’s plans for world domination.
Midway between these two extremes is Android, which therefore seems like my best bet at the moment. I tend to think that JavaScript or a descendant will be the platform of choice in the long run. But I’ll wait till the armies of young mostly male programmers have sweat and bled to civilize it. Same as it ever was.
What about…Windows? Sure, the tablets aren’t really here yet, but the hardware that is shipping now (like the Samsung) is beefy enough for idea development. The only question is…is Microsoft going to be like Apple or like Google with their app store? ARM tablets (the ones that will have great battery life and will be cheap) won’t run non-store software, so this is a very important question. I have no idea at this point.
Well I would certainly expect Microsoft to offer an industrial strength development platform for Metro. And it would be foreign to Microsoft’s culture to lock it down as much as Apple. But what shape is it in now? When do you plan to switch over your own work?
As soon as I can get a Samsung tablet. I saw one today, they are very very nice and only ~$1000 or so.
I’ve heard that Metro will be as locked down as iPad, but I have no details yet. Javascript might be the best route to go to be free. Win8 will support that also, at least, though they have a separate API for Javascript Metro apps .
On the plane back from SPLASH I sat next to a Windows 8 intern and he said you need app store credentials to run in Metro. But they wouldn’t go so far as to ban programming languages like Apple has, would they? I suppose it has to do with opening a backdoor to bypass the app store. But since JavaScript is already a backdoor what is the point?
The Windows Phone Certification Requirements do not appear to restrict language interpreters. That might be a precedent for how the Windows App Store will work.
The big problem is not interpretation (iOS allows this), but interpretation of code downloaded via a side channel (not included with the app). iOS has that problem, no side channel scripts. In other words, users can’t really share code very easily.
If they allow interpretation of code via side channels, you could conceivably subvert the entire vetting process (e.g., porn scripts). They would need some rules to prevent that, these would be more complicated than just banning the side loading of code.
Apps can be side loaded for enterprise and dev users. I don’t think that channel will be very easy though, it will probably require some sort of special license though. As for Javascript, I have no idea, I know iOS nerfs Javascript in apps by using a weaker interpreter (fixed in iOS 5, supposedly). There are possibly other restrictions on Javascript.
Crazy times. I have no idea what the Win8 restrictions are yet, I’m not privy to any private info.
Side loading will be allowed
The jQuery stuff and Sencha stuff is garbage. Not designed by people who understand design. Never heard of PhoneGap. Just 2 cents.
Yep, Apple no longer bans programming languages, only applications that execute code downloaded over the network. JavaScript is definitely a backdoor, particularly given some of the recent work on compiling other languages to JavaScript, the much higher performance of current JavaScript implementations (including Apple’s own Nitro engine), and the ability of HTML5 to use local storage on the device. There are also shim apps that let you access the camera and other hardware. I tend to agree that JavaScript is the way forward.
As I understand it, it’s not that Apple deliberately crippled JavaScript in web apps, it’s just that the Nitro engine wasn’t rolled out for web apps until recently (supposedly fixed in iOS 5, as Sean notes).
PhoneGap is okay, but Titanium by Appcelerator is much faster in my experience. It does actual JavaScript compilation, while PhoneGap relies on interpreted JavaScript (here again the performance difference may have changed recently; I haven’t tried PhoneGap under the Nitro engine on iOS 5). As with the others that Jonathan mentioned, the docs for Appcelerator aren’t always up-to-date — expect to do a lot of groveling through the user forums.
“The jQuery stuff and Sencha stuff is garbage. Not designed by people who understand design.”
Which design aspect? Care to elaborate in more detail?
I’ve seen some pretty sophisticated stuff being done with Sencha Touch that works cross platform.
I meant the Touch-stuff. Overall, parts of Sencha are well-designed, and other parts are not. I like how they do procedural data binding, and learned a lot from their design there. But Touch was designed by someone different.
As for working “cross platform”, what does that even mean in a world with a zillion browser (vendor, version, mime-type) pairs to test for correct rendering behavior?
Have you seen Mono touch and Mono for Android? … Not exactly same source running on iOS and Android but fairly promising, plus they let you use Visual Studio and more importantly C#. … Mono-project.com
Thanks, but compiles to Assembly, so subject to iOS restrictions against “side loading”, which rules out general programming environments.
Unless the device has been jailbroken, right?
Software development on new platforms has always been a frontier. I don’t see why Touch would be any different. It takes time to the APIs to settle down and effectively capture new patterns enabled by new capabilities or for people to figure out how to make the old ones work on the new tech. I remember developing Netscape plugins and ActiveX controls with just the documentation in header files and a single piece of example code that only handled the simple case. Compared to the pre-web era, Javascript and HTML5 are less like a “wild west” and more like an overgrown backyard with mama’s lemonade close by when you need it (in the form of blog posts that document a large number of variations of language and API).
I also find it disturbing that Apple ToS seems to exclude software creation tools for its tablets, limiting the device as a tool of creation and preventing it from becoming a platform for teaching kids to code. However, I also recognize that before Apple opened its platform for independent developers with a low cost of entry and an effective market for applications, it was near impossible for a solo engineer or small development shop to make a go of it.
Sure, it’s a frontier, but an interesting one. Not sure that gender plays a role in the creation of a civilization, though individuals of all genders certainly do — it’ll need all of us to make it happen. We’re seeing the use of technology through mobile devices spread through a wider swath of the population than ever before.
Not everyone is comfortable working with the primitive tools and face-paced change of the frontier. I agree we have a long way to go before it is figured out and folks like you who feel comfortable only when there is a set of modern tools and APIs to work with can join us later 🙂
Sherry Turkle (at MIT?) has done some great work on gender and technology, with some insights in programming. Specifically, she makes the observation that girls tend to prefer less structured bottom-up “bricolage” creation experiences while boys are more comfortable with logical top-down creation. I don’t think this is completely explained by gender; plenty of guys like bricolage-style programming also.
When designing a programming experience for a tablet, perhaps its time for us to rethink the programming experience in multiple other dimensions; e.g., support more bricolage-style programming, utilize social networks in the coding experience, apply what we now know about machine learning, and so on. I think its a good opportunity to start with a clean “slate,” so to speak, since the input problem is so large that conventional programming are so poorly suited to the device anyways.
Well said Sean. The key dimension to me is the axis of analytical/verbal/logical vs synthetic/visual/metaphorical. Programming is extremely prejudiced towards the former, but I believe this is mostly for historical and cultural reasons and not necessarily so. Perhaps tablets are the disruption we need to introduce some new ideas. I am liking the idea more the more we talk about it. Maybe it’s time to revive Subtext. Subtouch?
I believe these touch devices are just an exciting distraction from the big dream.
Perhaps, but it helps us start thinking beyond the keyboard, which will be useful when we finally get our hands on neurally interfaced cyberdecks.
When we can play football in Madden Suits across the globe, I will so challenge you.