Archive | December, 2010

First Impressions of @apparatio

14 Dec

I've been raving about the possibilities of and for the past month. These are two tools that let you convert HTML5 into mobile apps, entirely in the cloud. Finally got a moment to try out tonight. Quick notes, hopefully useful to @nonken (who I caught up with at Chrome Web Store launch in London, earlier this week, and talked Apparatio) and the other Uxebu developers:


* It works! It really works! It took me 45 mins or so to get a "Hello World" app working and on my phone. That's including refamiliarising with GitHub, signing up with Apparatio etc. If I wanted to make a new app and I was familiar with everything, I think it would take me 5-10 minutes to have an Android "Hello World" APK on my phone.
* It takes about 2-3 minutes or so to iterate, decent. Git add/commit/push from the command-line, then visit Apparatio and tell it to rebuild. I had a problem logging into Apparatio from the mobile, but once that's fixed, it will be a lot easier, you can just click on an APK link and run it. A short URL for each build might also be worth considering.
* I hope Apparatio will provide command-line tools in the future, to make the develop-debug-test even faster. Such a tool could be just a simple layer on top of curl or similar library.
* One thing I'm not sure about is how you'd work with phonegap.js, the shim library that gives access to all the native phone features. You can normally try this out with an emulator, but with Apparatio, the whole point is you don't have to install SDK or emulator, so you need to try it on the phone itself. At current speed, this means a 2-3 minute wait, which could prove difficult if you're making heavy use of PhoneGap. Let's see if Apparatio has an answer.
* I made an app with jQuery Mobile. The integration was fine and seamless. For convenience purposes, I also uploaded it to a server. Since I'm not using phonegap.js, it works fine as a regular website; and ongoing development is easier this way.

In more detail …

* Logging in from the beta email was easy
* Pointing to a github repo was a bit more effort than it needed to be. I fed it the URL of my fresh "hello world" project,??, and it gave me an error message. After some trial-and-error (I'm not a git expert by any means!), I discovered it wants?? ("http" and ".git". I think some extra parsing would make this distinction unnecessary, though I recognise this may be overkill at this early beta stage.
* Next, I chose iOS and Android, which both require cert/key info. My main feedback here is when you go to production, provide as much info about these as possible, because most HTML5 developers just have some pretty HTML and JS, and that's it. I realise the real world makes it necessary for developers to have to obtain and input this info, so Apparatio should be making it as dead-simple as possible.
* For Android, the "password" input field should be of type "password".

For Android, I went and learned about the key store process, described at?? Ignore the rest of this article, it's my personal notes and I still had a problem with the cert. So for now, I'm using the "debug" mode app which doesn't require signing.

You need to download the Android SDK for this, but it should be just a one-time installation to generate the keys required by Apparatio; you're not going to compile with it and you won't need to use Eclipse either! Even cooler if Apparatio or a third-party provided a cloud gateway to do the keygen, based on the Android "keytool" script. Apparatio needs to know your key password details anyway (something I didn't think about initially), so it wouldn't be any additional security concern if Apparatio were to provide this functionality for people like me, who've never built a production Android app. Anyway, for future reference, the command I issued was:

????keytool -genkey -v -keystore mahemoff.keystore -alias mahemoff -keyalg RSA -keysize 2048 -validity 100000

There's a level of indirection here – you're not just creating a one-time key, but you're also specifying (and creating if it doesn't exist) a key store for all of your keys (or at least a group of related keys) – that's mahemoff.keystore. This tool will then prompt you for a password for the key, and another for the store. If you're feeling lazy *cough* you can just use the same password for both. Having done this, I specify the outputted key store file, mahemoff.keystore on Apparatio's file input, provide the password I provided on the command line, the alias being "mahemoff" (so Apparatio can look inside the key store and find the right key), the other password (which is really the same password for lazy-heads) and a package name, which I chose to be com.mahemoff.


update to branch “v4” and commit with mercurial

9 Dec
hg pull
hg update v4
hg commit -m "yada yada"
hg push