---
layout: post
title: Im in ur phonez
tags:
- Software Development
created: 1177929000
---
In a weird sort of cosmic coincidence, I happened to be researching some of the mobile developer tools available after a weekend of toying with the Windows Mobile 5.0 framework (which is pretty cool by itself) within Visual Studio 2005, and while I was doinking around on the internet, I came across Nokia's Open C platform. By itself Open C is pretty impressive, but after digging around some more the entire Nokia development platform is certainly not what I expected. Quicker than you can say OMIGOSHSYMBIANSUCKS I found myself immersed in whitepapers and code all targetted at developing for the gigantic mobile market.
Before I dive into Windows Mobile, I must first disclaim that I'm a relatively big fan of the .NET platform, usually by means of the Mono Project. The .NET Compact Framework (referred to as .NET CF) is merely an extension of the .NET framework meaning you can use a lot of the same code and know-how for developing Windows Forms interfaces for Windows Mobile enabled smart phones as well as already existing code for the backend of your embedded application (there is also an interesting extension on .NET CF available at OpenNETCF). The power of this sort of portability should go without saying, but why not say it anyways? Because of .NET CF I can write the same services and network interoperability code that can be used in my desktop application and take it straight over to my embedded application with zero or minimal hassle (optimizing your bloated desktop code for an embedded application is always a good idea). In addition the normal trimmings of .NET, the Microsoft.WindowsMobile namespace offers a myriad of device-specific APIs for sending messages, interacting with a smart phone's contacts, calendaring, camera, media player and all the rest that comes stock on modern Windows smart phones. With a saturday afternoon spent in an empty office pouring over API documentation and hacking furioiusly on some test applications, I could send messages, take pictures, play with contact information and do some G-rated damage to a Windows smart phone (Rory Blythe's screencasts on the subject are a fantastic resource as well). The obvious downside is that it is Windows (Mobile) and that the consumers that tend to own Windows smart phones tend to be business types who walk around with suits and have the word "synergy" tattooed on their buttocks. Not my cup of tea, nor my target market. Next!
On the other side of the world to Nokia. Nokia's S90 platform is expansive to say the least, and runs on quite a few devices as well. While I'm certainly not "in the biz" with regards to mobile device development, the sheer size of the entire S90 platform and the varying means of using it surprised me. Nokia's S90 platform builds on top of Symbian (ick!) which, fortunately, powers more than half the mobile market but, unfortunately, sucks. You know it, I know it, even Symbian Ltd. knows it, so let's stop pretending. With regards to Nokia's developer tools though, they offer a relatively stock Java API for developers to use (eSWT? gross!), their Carbide C++ framework which builds on top of Symbian's own C++ libraries, and even a Python API for their SDKs (the Maemo work is worth a look too). Most interesting to me was their Open C project which borrows some of the best bits and pieces from a few open source projects and brings them to the mobile platform. While Nokia obvious doesn't have a clue with device design they do seem to be with it in terms of the open source world. Open C is built primarily on top of OpenBSD and OpenSSL libraries with a bit of libz and GNOME thrown in there as well.
libc | OpenBSD |
libcrypt | OpenSSL |
libcrypto | OpenSSL |
libglib | GNOME |
libm | OpenBSD |
libpthread | OpenBSD |
libssl | OpenSSL |
libz | libz |