My post the other day about Justin's Manhattan traffic app in Flash Lite caused quite the ruckus amongst the Mobitopians. In response Christopher and then Jim created a couple Python scripts with similar functionality, including this killer London version above:
Russ posted about a Flash Lite application for Series 60 that displays recent images from New York City traffic cameras on your phone. Not to be outdone Christopher Schmidt had a quick play at writing a similar app in Nokia's Series 60 Python, the result is this Traffic Cam Proof Of Concept written in about 1 hour 20 minutes!
It's a nice app, but not being in New York it's of little use to me, fortunately the BBC's Travel News page has a load of traffic cams, so I grabbed the BBC's list of London traffic cams and hacked up a London variant of Chris's app. You can find my version here - http://feetup.org/code/py/traffic.lon.py.txt
In keeping with the RAD theme, I timed how long it took me to create, 30 minutes to find the url's of the cameras and put them into a text file, 20 minutes to hack these urls into the code, and I'd got a functional app. Now it's not that pretty; the location names are all in uppercase, and the image sizes from the BBC site (320x240 and around 40k bytes) mean that you need to wait around 10 seconds for the picture to load (at a cost of about 10p for the average UK GPRS user), and zoom in to get the best view, but as a proof of concept it's great.
This is pretty great. Let's compare/contrast with both Flash and J2ME development. Creating a list of names and URLs and grabbing an image is nothing new in the J2ME world, but look at some of the niceties that Python adds to what Jim calls a "not that pretty" app. First, there's tabs at the top of the screen for the different sections of the city. This makes navigating what would be a very long list a lot cleaner. Secondly, the images are displayed using the *native* image viewer. This adds dozens of options that would need to be explicitly added to either a J2ME or Flash app. For example, you can zoom into the photos (which are much bigger resolution than their original thumb), save, rotate and you can also send to a friend which is exactly what you want to do if you see something interesting. This shows the real power of a scripting language built directly in the OS.
Now, the thing that Flash adds is that level of what I'll call "consumer-grade visual quality." The functionality isn't that different, but the Flash version seems much more compelling, no? It just has that WOW factor that mobile apps need, but which usually are either impossible to do or take months of hard development work. That's why I'm such a big Flash booster, because of how great everything looks at the end. Most mobile apps I've seen really lack that visually compelling aspect which is what Flash adds, with very little effort.
Where Flash also wins when compared to both Python and J2ME is in terms of running the app. I believe that the inbox is going to be the primary navigation app for mobile users because the phone is first and foremost a communication device. They go there first to do most things, and will return to the inbox later to find something they liked. Now, when I send over a J2ME .jar, Series 60 prompts me to install it, goes through a lengthy multi-step install process, then dumps me back into the inbox without a clue as to how to start the app I just painfully installed. I then have to go hunt for the icon which is at the very *bottom* of all the other icons in the main menu screen. This, as you can imagine is not particularly user-friendly.
Python is only marginally better. The install process is only one step, but asks you very confusingly whether the file you have in your inbox is a "script" or a "module". Duhhh, huh? Once you've picked one, you're once again dumped unceremoniously back into the inbox. You have to then go hunt down the Python app and run the script (which is itself a multi-part process). Now you could install a Python script as a Symbian .sis app, but then you're basically recreating the experience of J2ME above. I mean, it's a *script* damnit, why do I need to *install* it?
Flash, however, works just like it should. You click on the attached file in your inbox and *poof*, it starts playing, no install necessary. This is a killer feature and was immediately noticable when I was showing around Justin's app the other day. In fact, playing with Flash apps on Series 60 phones has been the most quick and enjoyable experience I've had with mobile apps. I send them to my phone from my PC via Bluetooth or download them via a Mobile Web page and they immediately start up and look great. Macromedia took their damns sweet time getting Flash out there, but they did such a great job.
All that said, the rapid-development time and power of Mobile Python has really shown itself in the scripts above. I mean, most of the development time for these guys was organizing the URLs. I'll see if I can whip up a J2ME traffic app as well and see how long that takes me. ;-)