Archive for the ‘Interviews’ Category

NimbleKit – HTML & JavaScript iPhone Apps

Sunday, May 31st, 2009

The question has been coming up a lot lately: how can we build iPhone apps using the familiar medium of HTML and JavaScript? Already there are several options available to us, including the popular open source PhoneGap framework from Nitobi. Alexander Voloshyn wanted to take a stab at solving the problem too – the result of which was NimbleKit. His approach was more of a purpose-built framework specifically for iPhone than a general-purpose solution that could be applied to multiple devices. He’s also packaged his solution up with short-turnaround support all for just $99. I asked him some questions about NimbleKit by email. Here is our conversation:

Q. Tell me about the NimbleKit project. What problem are you solving?

There many people who have great ideas of iPhone applications but simply don’t know Objective-C, with NimbleKit it is easy to create own applications using just javascript and HTML. For those who know Objective-C NimbleKit is a huge time saver.

Q. What types of apps are best suited? Could you write a game? What are the limitations?

With NimbleKit it is possible to write wide range of applications, we can display text or image information, play audio, navigate between pages, read files and request any data from internet, interface elements have javascript callbacks to provide interactivity of interface, so to answer your question practically any application can be written using NimbleKit.
Unfortunately applications which use complicated drawing and OpenGL ES are not supported which means no complicated games, but of course you can do simple games on javascript using AJAX.

Q. What level of Objective-C knowledge is required to build a NimbleKit app?

None. However in version 2.0 we plan to give possibility to mix javascript and Objective-C, this way actually practically anything will be possible including OpenGL ES and WebKit mix.

Q. Are there any released apps or projects in the works now that use the framework?

NimbleKit is still very new so nothing yet in app store released, however we understand it is important for our customers to know they can release their apps without any problem, so we develop couple apps to release soon.

Q. Do you anticipate any problems having apps accepted into the App store?

Should not be, everything NimbleKit uses is allowed by Apple. However NimbleKit based on HTML and user may expect to load all app’s content from internet, but doing this will cause problems, most likely Apple won’t approve it because once it’s approved app’s content may change to adult or similar.

Q. Do you have any plans to port the library to non-iPhone platforms?

The library takes all advantages of it’s platform and should not exclude or complicate some features because it is required to be compatible. If we decide to make SDK for another platform we will make it from scratch using all it’s capabilities.

Q. How do you compare your framework to ones such as PhoneGap, Nemo, or Rhomobile?

Compare to similar frameworks NimbleKit has huge advantage in features, documentation, support and ease of use, only NimbleKit can provide you with working application in 3 clicks.

Also there is a big difference in architecture, NimbleKit made the way it can be extended to implement practically any feature, which is not possible with other frameworks.

Q. Right now you’re selling licenses for $99. What level of support do users get for that? Any other perks?

All general questions answered usually within 1 hour. For registered users we provide code level support. Also mailing list available and forum (launches 29 of May). All users can request any features, however registered users get their requests fulfilled first including personal pre-released patches available next day after problem appeared.

Free 30-day trials are available from the NimbleKit website.

Nemo Mobile Development Framework Interview

Thursday, April 16th, 2009

The other day I was made aware of a relatively new player in the mobile development ecosystem. A company called Everypoint has a Java-based tool set called Nemo that lets developer write mobile apps across a variety of devices in Java (including iPhone). Responses by Allan MacKinnon, President, Founder and CTO, Everypoint.

Q: Tell me about Everypoint.

Everypoint was founded with the goal of redefining mobile application development by creating a simple way for developers to create, distribute and manage rich, networked-enabled applications to Internet-ready mobile phones.

Over last three years, Everypoint has developed Nemo, a mobile application development platform, that lets developers graphically rich, always on applications to inexpensive feature phones. Nemo is a powerful and general-purpose solution that is suitable for developing mobile applications ranging from casual games to real-time social networking experiences.  Some example applications can be seen here: http://nemo.everypoint.com/wiki/Live .

Q: I’ve heard a little bit about your new mobile development framework called Nemo. Why should developers be interested in this?

Everypoint’s Nemo platform is the industry’s first mobile application development ecosystem to create, distribute and manage iPhone-quality applications for the over 1+ billion Internet-ready phones in use across the globe today, effectively increasing market potential by at least 100x.  Nemo empowers developers to create applications that have the power to transform the mobile consumer experience by dramatically improving the interactivity and graphical quality of new applications that run on existing Java-enabled mobile phones.

Nemo’s vector graphics engine and push-sync database enable development of powerful applications that can run on today’s feature phones. Nemo’s scripting language and development tools encourage developers to test their code immediately, facilitating iterative user experience refinement and rapid application development.  This allows developers to write code interactively, making development more efficient and productive.  Once applications are completed, Everypoint’s infrastructure automatically distributes them into the application catalog. For more developer benefits, visit: http://nemo.everypoint.com/wiki/NemoFeatures .

Q: How does Nemo fit together with Nemo Cloud Services and RepliSync

Everypoint’s Nemo Cloud Services support a built-for-mobile programming model providing real-time push notification and synchronization of content to mobile devices, the ability to manage the access rights and distribution of applications and detailed analytics. The same services used to synchronize content are also used to guarantee that applications are always up-to-date.

The Nemo runtime contains an embedded version of the RepliSync database and the Nemo programming language provides direct access to the Nemo Cloud Services.

Q: What does it cost to write a Nemo-powered app? In other words the inevitable question is how does Everypoint make money from this?

The Nemo Developer Environment and Nemo Mobile Runtime are both free to developers. Nemo supports both paid applications and advertising supported applications; it’s up to the developer to decide what model they use.  Developers can set their own prices for their apps – free apps are not charged fees by Everypoint, except when very generous resource thresholds are exceeded. If a developer chooses to restrict the delivery of the application, the developer must enter into agreement with Everypoint where, during the Preview Beta, we will charge 10% of the sale price or 10 cents (whichever is higher) for each application.

Q: How does Nemo compare to other mobile frameworks like J2ME or even PhoneGap? Are these fair comparisons?

First of all, Nemo is not a “framework”, rather it’s a complete development environment, programming language and tools with both client-side and server-side support infrastructure.  The Nemo platform is suitable for general-purpose application development.  Unlike other mobile solutions, the Nemo platform targets feature phones and above.  This means Nemo applications can reach a much larger audience.  Nemo brings an entirely new set of features to these mass market devices.

Frameworks like PhoneGap will only let you go so far. If your app can be presented in HTML and you need to bring it to several smartphones platforms, then it makes sense to use. But developers who want to develop more complex applications will continue to program in either Objective-C (iPhone), Java (Android), C++ (Symbian) , ActionScript (Flash in the browser) or Nemo (J2ME mass market devices).

Q: Anything else you’d like developers to know?

With Nemo, for the first time, developers can create “rich” interactive always-on applications for Java ME devices.  Nemo gives developers a rich presentation layer, infrastructure for pushing and syncing content in real time and an interactive scripting language that lets them try code out and break free of the “edit, compile, test and debug” loop of traditional mobile development.

Because Nemo is interactive, a developer can ease into development and try the language out from the command line.  The developer can draw anti-aliased text and graphics to the screen as well as create new definitions and test them immediately.  We’ve found this immediate feedback invaluable and conducive to rapid development of applications.

Finally, it’s worth noting that Nemo is written in itself.  The entire language, interpreter and compiler are written in Nemo.  We found this to be a great way to “bring up” a new language as well as prioritize features during early stages of the language’s development.

Q: Nemo is in beta right now, where do I go to check it out?

Nemo is available for preview beta via registration at nemo.everypoint.com. You can view demos of our apps at http://nemo.everypoint.com/wiki/Live

Cocoa – NSThread And Memory Management

Thursday, April 16th, 2009

As a C/C++ developer one tends to be acutely aware of the implications of dynamically allocating memory from the heap.  In the past couple of months I had decided to expand my horizons and engage in developing some applications for Mac OS X and iPhone using the Cocoa libraries and as such, Objective-C as my implementation language.

Everything was moving quite smoothly in my single threaded application.  At a certain point it became apparent that it was time to decouple the GUI and the data collection.  I had decided to implement the data collection in a thread.  A NSThread specifically.

As I began to implement the main function of my thread I began to notice some horrible messages showing up in the XCode console:

2009-04-15 20:51:35.030 HostWatch[18804:440b] *** _NSAutoreleaseNoPool(): Object 0x20f240 of class NSCFString autoreleased with no pool in place - just leaking

Stack: (0x9711373f 0x9701fe32 0x139e7 0x1441a 0x970267ed 0x97026394 0x962b1095 0x962b0f52)

2009-04-15 20:51:35.033 HostWatch[18804:440b] *** _NSAutoreleaseNoPool(): Object 0x276530 of class NSCFData autoreleased with no pool in place - just leaking

Stack: (0x9711373f 0x9701fe32 0x97034505 0x97086a48 0x1443c 0x970267ed 0x97026394 0x962b1095 0x962b0f52)

2009-04-15 20:51:35.033 HostWatch[18804:440b] *** _NSAutoreleaseNoPool(): Object 0x276480 of class NSCFData autoreleased with no pool in place - just leaking

Stack: (0x9711373f 0x9701fe32 0x97034505 0x97086a48 0x14463 0x970267ed 0x97026394 0x962b1095 0x962b0f52)

Just leaking!!  Oh my!  My spider senses were tingling.  My heap sensitive programming sensibility in shambles!  Something had to be done.  No one wants a program that should theoretically be running for a long time (or any amount of time) haphazardly shedding dynamically allocated memory.

The solution turned out to be quite simple.  The main function of a NSThread should always be wrapped in an autorelease pool.  So, the solution in code might look similar to this:

- (void)threadMainFunc:(void *)data
{
   NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
   ...

   ...
   [autoreleasepool release];
}

Sweet relief.  All of the nasty message pointing to blatant leaking of memory had disappeared. The details of Cocoa’s requirements with respect to autorelease pools and threads can be found here:

Autorelease Pools

and more specifically on the topic of threads:

Autorelease Pools and Threads

I hope that this has been helpful for anyone who has had this sort of issue show up in their newly NSThread-ed code.  My intent is to continue posting as I encounter and solve problems in my current Cocoa development projects.

Interview with PhoneGap Creator Dave Johnson

Monday, April 13th, 2009

PhoneGap is an increasingly popular mobile development framework which lets developers write web apps that act like native iPhone, Blackberry, and Android apps – with access to native phone API’s like vibration, geolocation, and accelerometer. I asked one of the creators, Dave Johnson, about it and some of their plans.

Full Disclosure: Dave’s my bud and I know many of the PhoneGap crew, although I have no business stake in any of this and have never written a PhoneGap application (yet).

Q: I’ve heard a lot about your mobile framework called PhoneGap. Why should developers be interested in this?

PhoneGap is an open source, cross platform mobile development framework that enables developers to write applications for mobile phones using open web standards like HTML, CSS and JavaScript yet still having access to all native functionality of the device like geolocation, accelerometer and notifications. The essence of it is that it is a write once, run anywhere mobile framework.

Q: What devices does it run on?

Currently PhoneGap works on IPhone, Android and BlackBerry with varying degrees of functionality. We are also working to get things working on Symbian OS, Windows Mobile and the Palm Pre webOS.

Q: How does a PhoneGap app compare to a native app running on a phone.

PhoneGap apps can look very good and be nearly indistinguishable from native apps at first glance. There are some places where PhoneGap can’t compete at the moment like OpenGL yet on platforms like IPhone we can take advantage of hardware accelerated CSS transitions that make the experience almost as good as native.

Q: What does it cost to write a PhoneGap app? Who makes money off this?

Since PhoneGap is an MIT licensed open source project it costs nothing to use. Nitobi, the company where the creators of PhoneGap work, does offer their expertise in the form of support and services around the framework.

Q: What is the relationship between PhoneGap and other mobile frameworks like J2ME or even Nemo?

PhoneGap is completely unrelated to any underlying mobile development framework be it J2ME (or any of its variants from companies like Google and RIM) or Objective-C. PhoneGap is great in that sense since most web developers would rather use the tools they know rather than learn some new esoteric mobile framework. However, we are looking at how to best collaborate with other mobile API specifications like that of WHATWG / HTML 5, W3C, and BONDI.

Q: Where are you guys going with this in the future? What cool new features are coming down the pipe?

Being an open source project the feature set is really up to the community. I think that with the basics done personally I would really like to see the Contacts API better supported on all platforms and native Mapping features. Then there is a whole bunch of cool stuff to be done around being able to make phone calls and send SMS messages.

Q: What are some of your favorite PhoneGap apps?

screen-capture-2Blok-Buster is certainly an amazing game build using PhoneGap and the Vancouver transit application is also very good. However, my personal favorite is Coovents which directs you to the nearest happy hour in New York.

Q: Is PhoneGap in beta or is it ready for prime time?

If the APIs that are currently available are good enough for your project then it is ready for prime time otherwise you will have to wait or contribute some code.

Q: Thanks!

Here are some relevant links:



© All rights reserved.