Showing posts with label Handheld Development. Show all posts
Showing posts with label Handheld Development. Show all posts

Sunday, 23 March 2008

iPhone SDK

Just like six million other bloggers out there, I feel it is important to discuss the iPhone SDK. Since it's finally giving people the opportunity to write native applications for the widely anticipated handset, I think it's worth a look just at how Apple have approached this developing perspective.

To start with, I log onto the iPhone Dev Center website at http://developer.apple.com/iphone/. Fair enough, it's a page that says "Hi, you can have the iPhone SDK", but not before "registering to become an iPhone Developer". As if having to log in with an Apple ID wasn't bad enough, they actually expect people to register their interest as a developer before they will be allowed to even read the introductory documentation. A typical hobbyist developer with an undeveloped interest in the iPhone SDK would immediately be put off at this point by the need to hand over their details. What's the deal? And as much as people like to complain about the Windows Mobile platform, let's face it. There's none of this registration rubbish. MSDN openly provides documentation about the Windows Mobile platform, the programming APIs and whatever you need to get started.

But then we move onto the following problem. After you've learned how to write your program, deploying it is the next step. As well as your application being only available through the iTunes Store at Apple's discretion, Apple also want to make sure that you aren't making any programs that include IM functionality (goodbye, MSN and AIM), voice chat functionality (goodbye, Skype) and anything that interprets anything else (goodbye, Java). Now, let's think carefully about this. Where's the interest in a "breakthrough Internet device" that doesn't let you send or receive instant messages, or place internet calls? These are two vital parts of modern Internet use, yet Apple don't want you doing those things.

The bottom line of it is that if Apple don't want you to, you aren't in a position to argue, since your offending program will be taken off the iTunes Store like a shot when they find out it's violating the "agreement". Because it's no longer on the iTunes Store, nobody can download it and use it.

It's important to understand that the whole iPhone relationship from consumer to manufacturer to mobile operator is a very fragile one. Apple have a very expensive handset that they want people to use. This means the network operator needs an incentive to carry the handset on their network. Now what better incentive is there to a network than to make them money? Why let people send IMs when they can send text messages instead? Why use Skype when they can make phone calls? It's all a part of the greater plan, and without these benefits to the network, it's not in their interest to carry such an expensive fashion utility. By letting people distribute their applications outside of the iTunes Store, this means that people can invent IM software and get away with it - Apple aren't a part of the chain so they can't stop it. If Apple can't stop IM software from being produced, operators won't even consider taking on such an expensive product.

But surely this is true of Windows Mobile handsets too, that come preloaded with Windows Live Messenger? Not quite. Y'see, the Windows Mobile approach is quite different. Microsoft create the Windows Mobile OS and release all the specs, and say to the manufacturers, "there you go, create something". The manufacturers then create the handset and market it to operators just like any other phone. They aren't so expensive as to require extra subsidizing like the iPhone does. Because the typical Windows Mobile handset won't come with an "unlimited" data plan, then people's use of Windows Live is at their own expense. If they want the privilege of "unlimited" use, they have to pay for it. Because the iPhone is religiously marketed with unlimited data plans, though, people realise that there's an opportunity for abuse there. Why send expensive text messages when I can send IMs for free, for example.

What's better about the Windows Mobile approach is that the operator doesn't need to maintain a relationship with the manufacturer; if someone wants to install a program on their handset, it is the customer's responsibility. End of story. It's for this reason that the freely available documentation and resources approach works for Windows Mobile, and that's because the operator and the manufacturer don't need to get involved for it to work. Providing the handset they create can run the Windows Mobile OS, they've already done everything they need to do to accommodate the installable applications too. Now, let's imagine that iPhone SDK users were allowed to create and distribute programs as they please. Would this reduce the interest in the handset because it would be costly to operators, or would it increase the interest because it's that extra bit of personal freedom?

The iPhone SDK programme is a strange one, and let's face it, it's a totally undesirable solution. But unfortunately, because of it's symbol status in the phone world, punters will fall to it's feet and obey. The iPhone has a long way to go before it will ever match up in terms of market share, but in the mean time, at least Apple have inspired other manufacturers to create equally innovative and more affordable alternatives.

It's not very often that I would put Microsoft above Apple, but this time, Microsoft have got the right idea whereas Apple have got it all very wrong.

Thursday, 7 February 2008

The Perfect Mobile Social Situation

Mobile social networking is awesome. At least, the concept of mobile social networking is awesome. I'm one of those Windows Mobile device owners, with a data plan that supports Windows Live Messenger being almost permanently signed in, and an awful lot of visits to Facebook. I'm going to explore what I believe creates the perfect mobile social network, and why the existing services just don't quite cut it.

But first, we need to understand what makes up existing mobile social networks. Facebook, in this case, is a fine example. It provides two methods of being used on a mobile phone: either by SMS, or by using your phone's browser to access a cut-down version of the website. The former proves to be an incredibly frustrating experience, and the 160 character limit to an SMS doesn't even pretend to help the situation. The latter, however, is a much nicer experience, providing a greater amount of functionality and overall usability. But even then, you still have to reload the page every time you click something, and even on EDGE 200kbps connections, that can be quite a slow experience.

Windows Live Messenger on Windows Mobile, however, takes a slightly different approach. They have their Messenger and email functionality as native applications running on the handset, which connect to the Windows Live servers and stay updated for the duration of the session. This makes for an incredibly pleasant IM and email experience, as messages are delivered to you instantly and you have a lovely speedy responsive client, but obviously, Windows Live Messenger is lacking the sorts of social functions provided by others like Facebook. After all, Windows Live's Spaces are all going back to the browser's "Reloading the page for every function" problem, which is neither fun, nor cost-effective.

So, what exactly would make an ideal mobile social network application?

The application, first of all, must be a native clientside application running on the device. Windows Live Messenger does this very well, and it means that data is only transferred by the client when necessary, and that the rest of the time, the client is responsive and infinitely more interactive.

Secondly, it must also provide the sort of functionality that people have come to expect from social sites. The ability to snap a photo and quickly upload it, tag photos, send both single messages and broadcast messages, update statuses, send out and respond to event invitations, y'know.

Thirdly, the network must be straight-forward and integrated into other functions of the phone where possible. Windows Live Messenger on Windows Mobile has the advantage of integrating itself with your contacts list. If you add someone's MSN address to a contact, you can IM them just as easily as you can send them a text message. Because mobile devices are, generally speaking, small (and therefore with small screens), the user interface must be finely tweaked so that keypresses are kept to a minimum, while being able to keep a small but sufficient amount of data on the display at any given time.

Finally, the user shouldn't have to check themselves for messages. There should be instant delivery options by default, so that the device alerts the user of a message being sent to them, or being tagged in a photo, or being invited to an event. There's nothing more handy than having the option to be notified when the event is actually happening.

So, have any of the networks quite got there yet? Facebook certainly hasn't, nor has MySpace, and despite Windows Live's forward-thinking attitude, it's still not quite there either due to a lack of social functionality. However, an experimental project by Microsoft called "SLAM", is quite promising, providing many features you'd expect from a social network while still being straight-forward to use, and with a nice clientside interface.

Mobile social networking is popular already, and in an increasingly portable world, will continue to grow. Therefore, it's just as important that the network operators and the developers make a conscious effort to bring a smooth technology to the subscribing userbase.

Friday, 12 October 2007

Why Windows Mobile developers suck

There is a simple reason that I just hate people who write software for Windows Mobile and Pocket PC devices. Is it that thy write bad code? No. Is it that they deploy bad user interfaces? No. Is it that the programs just suck? No.

It's that these developers keep distributing their programs in Windows-only .EXE installers, which means that any Mac or Linux user in the world can't install their programs onto their devices. It's important to remember that not everyone is using Windows, and not everyone has access to ActiveSync software which these .EXE installers are depending upon.

Sure, you're probably thinking "You should have bought a Palm; it is supported much better on a Mac". Quite frankly, I don't like Palm devices. I think that Palm OS is clumsy and is not intuitive, and I would prefer to use Windows Mobile over Palm anyday.

So, why should you distribute your Windows Mobile applications in .CAB files?

Simple. Because it solves many problems quite easily.

  • Any computer in the World can then send the file to your device (be it using Infrared, Bluetooth, Serial or USB cable, or even a memory card) without having to worry about whether the installer will work or not.
  • The device already knows what to do with the .CAB installer file. The user only has to tap it on their device and it'll install itself.
  • It makes it so much less frustrating when Mac and Linux users can actually install your program. Remember, we can't run Windows .EXE files, and if your application is packed inside of one, that means we can't install it.
  • It makes it possible to provide "OTA" downloads. This means that it's damn easy and fast for people who are downloading the file straight onto their device using a wireless connection, instead of people downloading the file onto their computer first.

The solution?

Don't distribute your Windows Mobile applications in .EXE files; .CAB files are clearly the way forward. It's frustrating when people using other operating systems can't use your software due to laziness in packing and distributing the software, and a bit of well-thought out distribution of .CAB files can make it easier for everyone to use your software.