Fun with Firmware!

March 31st, 2009

I’d be lying if I didn’t admit that one of the neat things about mobile software development is being an early adopter: getting your hands on the coolest new phones as soon as possible after they’re released. In Canada, this typically means going with unlocked phones from other countries, because Rogers, our GSM monopolist, seems determined to not carry phones until they’ve been around for a year (or more!).

The downside of this is stuff like what I’ve just been through trying to upgrade the firmware on my unlocked Nokia 5800. The new v20 firmware for the 5800 has been out for quite a while, and I finally got around to installing it on my phone. However, trying to install the firmware via both Nokia Software Updater and Firmware Over-The-Air resulted in me being told that my phone, with v11 firmware, was up-to-date. A dastardly lie!

According to the product code on my phone, the device was intended for Malaysia, and some Googling confirmed that the v20 update should be available. But I also found reports of people in Malaysia having problems installing the firmware, and some recommendations to change the product code to a region for which the update was definitely available (along with the standard warnings about how this will void the warranty on your device). So I figured this is what I should try to do.

In the process, I discovered that the product code on my phone had already been changed, such that my 5800 thought it was from Hong Kong, not Malaysia. I assume that this was a product of the original unlocking, but was also causing some unintended problems (e.g. one method of changing the product code that I found on-line simply couldn’t find my phone). I followed these instructions to change my product code, which worked perfectly well for me (but Use At Your Own Risk; I take no responsibility for bricked phones!). Once that was done, Nokia Software Updater finally found my update, and I now have v20 firmware on my device.

The firmware upgrade process itself was wonderfully painless, but man was getting to that point ever a pain in the butt!


GDC Mobile Recap

March 30th, 2009

It’s been almost a week since GDC Mobile wrapped up, and just about as long since we got back to Winnipeg. Leaving San Francisco for the blizzard-like conditions we encountered when we landed was a bit of a bitter pill, let me tell you. Although we’re just glad that we could actually land – we’d been warned in Denver that the plane might have to land in Fargo, North Dakota if the conditions in Winnipeg wouldn’t permit a landing. Hmm, blizzard or flood zone? Anyway, it’s been a mad rush since we got back, which explains the lag between the end of the conference and this post. But my adoring public has been waiting for this, so here we go!

In the past couple of years, the main vibe at GDC Mobile has been a sense of frustration and disappointment with the state of mobile. If you’ve been in mobile for any length of time you’ll have a sense of the cause: mobile operators’ virtual stranglehold on access to consumers, porting, discoverability of games on the deck, etc. Of course, this year the shadow of the iPhone was cast over many of the sessions at GDC Mobile, and there was a greater sense of optimism because of how the App Store allows developers to go straight to the consumer and not have to worry about the mobile operators. However, I think the most striking thing for me was a sort of disconnect between developers who were new to mobile and targeting the iPhone exclusively, and people who have been around for a while and have perhaps a different perspective.

The opening keynote was from Neil Young, who left Electronic Arts to found ngmoco:), which is dedicated to developing iPhone games. He was obviously quite enthusiastic about the potential of the iPhone. It was kind of weird though: he announced during the keynote that the company closed its second round of funding ($10 million), and also relayed an anecdote about how “when we were in Apple headquarters to discuss our game”. As Jon Szeder from Mofactor pointed out in his talk later that day, they’re meeting with Apple; just how level is that playing field?

Other interesting moments:

  • In one session, one of the presenters said that their game is available through the App Store, and also on Verizon’s deck, and that they get as many sales in a week through Verizon as they get in a month on the App Store. He did note that they have been getting pretty good placement on Verizon’s deck.
  • In the session on social gaming, the presenter made reference to the idea of including some means of letting players recommend your game to their friends. He then pointed out the obvious problem of what to do if their friends don’t have a phone on which your game can be played. I swear this generated a few blank stares.
  • Jon Szeder’s presentation, entitled “Am I Dead Yet?”, was easily the most amusing session of the conference. As you might guess from the title, his perspective was not quite as sunny as Neil Young’s.

Flash Lite was pretty much non-existent at the conference. I caught one passing reference to Flash in one of the Nokia-sponsored presentations (about Ovi, I think; I came in near the end). Also, in the social gaming session, the presenter noted the success of DeNA‘s Mobage-town and its use of Flash Lite for its games. DeNA recently launched a mobile portal in, um, not-Japan called MobaMingle, but it doesn’t leverage Flash Lite, due to low penetration of the player outside of Japan (which is what the DeNA guys said at last year’s GDC when I met them – not sure at what point they might revisit that decision). Anyway, this was taken as an indication, accurate or not, that Flash Lite isn’t particularly viable as a platform for social gaming.

The other bit of weirdness was that the little ‘mobile pavilion’ was somehow even smaller this year. In past years, there have been about 8 to 10 companies – Adobe among them – set up on folding tables right outside the trade show floor (which isn’t open on Monday or Tuesday), talking up their products. This year, there were only two companies set up on a couple of tables, tucked away down one hallway (Adobe was absent, but I think they had a booth on the trade show floor to push the latest release of Director). It was pretty depressing. Granted, companies like Nokia have very swishy booths on the main trade show floor, which I missed because we left on Wednesday morning, but it would have been nice to have something a little bigger and more integrated with the actual conference.

Otherwise, had some good meetings with some definite potential! And finally, for those who know Evan, his and Mary’s wedding was lovely, and went off without a hitch (from our perspective, at least). Be sure to congratulate him the next time you see him!


GDC Mobile Starts Tomorrow!

March 22nd, 2009

The title pretty much says it all! It’s been a great few days in San Francisco, seeing some things I haven’t seen before, some old faves, and eating some fantastic meals – and of course getting to do this all with my family has made it that much more fun.

About all that’s left is GDC Mobile on Monday and Tuesday, and we’re back to Winnipeg. Since this is the first conference I’ve attended since I started to use Twitter, I figure I’ll try my hand at live-tweeting the keynotes and sessions I attend. So feel free to follow along!

Hit area size on the 5800

March 15th, 2009

A while back on Twitter I asked if anybody had any recommendations on how large interactive UI elements should be in touch-based apps. The game that I’m currently working on has one variation in which a dozen different game pieces of varying shapes are on-screen at the same time, and the user needs to be able to select any one of them and manipulate it in various ways: dragging them around the screen, rotating them, and flipping them over. I’m not assuming that users will rely on the stylus, so making sure that the graphics are sized properly is obviously rather important.

One suggestion was to check out Nokia’s recommendations on this, as they most likely would have researched the issue in some depth in the course of developing the 5800. I got sidetracked and never looked further into the issue, but in reading the Flash Lite UI Design Guide for Keypad and Touch Devices I stumbled across some information about this. The Guide notes that the “S60 UI style defines the target minimum size for a UI element as … 7×7 mm with 1×1 mm gap for index finder …” so I thought I’d apply that to the 5800 and see what it means in terms of designing interactive elements in Flash.

The 5800′s screen is 360 pixels wide by 640 pixels high (assuming portrait mode). Physically, by my measurement it’s 40 mm wide by 70 mm high. As a result, the pixels per millimetre (ppm) is exactly 9 ppm horizontally and a little over 9 ppm vertically (so just call it an even nine).

So from this it seems like the hit area for UI elements should be a minimum of 63 pixels square. This actually seems rather large, especially in comparison to some of the UI elements on the phone. For example, the slider in the scroll bar appears to only be 2 mm (18 pixels) wide, and I find it relatively easy to use with my thumb (even though the S60 recommendation in that respect is even larger than for the index finger). I think the key thing to remember is the difference in hit area vs. the visible element itself – users will have some sense of ‘close enough’ if they try to interact with an object using their finger, so if the defined hit area of the element doesn’t take this into account – “I’m pressing the button, why isn’t it doing anything?” even though their finger isn’t actually ‘on’ the button – then the user experience will suffer. Ultimately the best course of action is to actually test your app on actual users to see whether you need to tweak your hit areas.

(Of course, if you have a reason to believe that your users will definitely use the stylus, then presumably this isn’t an issue.)

(Still haven’t fully resolved the issue to my satisfaction in the current project, however!)


Button problems on the 5800

March 11th, 2009

I’ve noticed a bit of weirdness when using button in Flash Lite projects on the Nokia 5800. These sample files illustrate the problem. Here’s how to reproduce the problem:

  1. Start ’5800ButtonTest.swf’ on your 5800;
  2. Press the ‘submenu’ button to go to the submenu;
  3. Press the ‘back’ button to go back to the main menu;
  4. When you get back to the main menu, you’ll notice that the ‘quit’ button is in the ‘over’ state, which shouldn’t be the case.

If you then perform the same test using ’5800ButtonTestFixed.swf’, the problem is fixed. If you check out the .fla file, you’ll notice that the fix involved moving the ‘quit’ button over by one frame, so that it is not on the frame targeted by the ‘back’ button. If you do this, the ‘quit’ button behaves the way you would expect it to.

With the ‘broken’ version, the quit button will still work, although in other situations I’ve found that the code attached to that button may not fire at all. (Note also that the problem exists whether you use buttons or movie clips.)


GDC Mobile just around the corner

March 10th, 2009

It’s been kind of sneaking up on me, but we’ll be leaving for San Francisco in one week. It’ll be a fun trip – the first time that the whole family will be travelling to SF, and we’re planning some actual tourist time as part of the trip. While it’ll be about my seventh trip to San Francisco in the last few years, it’ll be the first time that I’ll actually get to spend some time not in conference mode. And of course a couple of days will be busy with wedding fun.

And of course, after all that fun, there’s the business reason for attending: GDC Mobile. This year’s conference should be interesting – as you can tell from a quick glance at the schedule of sessions, it’ll be an iPhonerrific couple of days. Given the pervading sense of doom and gloom that hung over the conference in the last couple of years, it isn’t surprising that mobile developers are latching onto any possible way of getting out from under the mobile operators’ thumbs. As Dale’s recent post highlights, dealing with Apple isn’t necessarily all sunshine and puppy dogs, so it’ll be interesting to see if there are any critical voices in the audience. (But this reminds me of the old joke about running away from a bear: you don’t have to be faster than the bear, just faster than the other people running away from the bear.)

I’m guessing that outside of a few attendees, Flash Lite will get little to no visibility this year. At last year’s event, there was nary a mention of FL in the sessions, except in the preso from Dave Collier at Pikkle. A recent email from Adobe about upcoming events listed the GDC, but only made reference to Director, and no mention of Flash Lite (or even Flash).

In any event, if you’re in or around SF between March 19th and 24th, drop me a note! Would be good to organize a little get-together of Flash mobile folks (assuming I’m not the only one wandering around Moscone :)


Flash Font Bugs (again)

March 4th, 2009

Perhaps my Mac is just plain cursed. A while back I reported on a bug that affected authoring Flash Lite 1.1 content on my Mac using Flash CS3, in which embedded fonts simply would not show up (looks like I never blogged about it). A handful of other people have experienced this as well. I reported the bug to Adobe, but nothing came of it, presumably because it’s not happening to everybody with a Mac. So I’m not sure exactly what the cause might be.

Anyhow, Flash CS4 came along, and the problem was (magically) fixed, so I didn’t think much of it. But now it seems like the curse has returned: when publishing content for Flash Lite 3.x using Flash CS4 on my Mac, dynamic text fields set in the IDE to center the text do not do so. The text is instead left-justified. Changing the publishing settings to something else (e.g. FL 2.x) results in centered text.

My guess is that this is yet another hard-to-reproduce bug and, although I’ve reported it to Adobe, will be impossible to reproduce short of my shipping my Mac to them. As it happens, there’s a workaround: use ActionScript to create a TextFormat object, set the align property to “center” and apply that to the text field. Bit of a pain in the butt, but at least things are showing up the way they should!