African Tech News Tidbits – Week of July 22nd 2012

raindolf owusu
Raindolf Owusu, creator of Anansi, the first African Operating System

Welcome back to another edition! Don’t forget that we still need your help with training the next batch of African Software Engineers. And in Sunday’s African Tech Weekly, we will be interviewing Raindolf Owusu, creator of the Anansi Operating System, the first African Operating System.

That is all for this week.

Advertisements

Titanium Studio: package org.appcelerator.titanium does not exist

After updating to the latest 2.0.1 version of Titanium Studio, i got this error while trying to deploy my applications:

package org.appcelerator.titanium does not exist

import org.appcelerator.titanium.TiStylesheet;

Followed by a bunch of other errors related to missing Titanium libraries. And in the end, that’s just what it was. For some reason, Titanium Studio had set my SDK path to an invalid value. To fix this issue, go to Window -> Preferences -> Titanium and check that the Titanium SDK Home path is set to a correct value.

Speak Chic: Luxurious pronunciation has no price!

Speak Chic App
The Speak Chic App

I stumbled on this article from Twitter and after a chuckle, I had to post about it, both because it’s a great necessary idea, but with a great funny factor to me. Essentially after seeing foreign brand names getting their pronunciations slaughtered in countless reality shows, hip and pop songs and of course on Youtube (without forgetting obnoxious people at the mall), enter Speak Chic! For $1.99 please make sure that if you are obnoxious enough to bash people ears in with the brand names you own, at least you are pronouncing it correctly!

All jokes aside, this is a great idea and the app is designed by Rebelle a mobile app company founded by Monique Woodard whose main audience are fashion aficionados and insiders who might not always be up on the correct pronunciation for the latest names to make their appearance in the business. The app allow users to “quickly and discreetly search for the correct pronunciation, read the phonetic spelling, and listen to the audio”. Makes sense to me!

 

Titanium Mobile: java.net.UnknownHostException error when using the AVD emulator

Doing some local development with Titanium and I noticed that when using the xhr object to hit my localhost server (idxdot.dev), and testing using the emulator, I got this error:

(TiHttpClient-1) [7,236164] HTTP Error (java.net.UnknownHostException): idxdot.dev
E/TiHttpClient( 417): java.net.UnknownHostException: idxdot.dev
E/TiHttpClient( 417): at java.net.InetAddress.lookupHostByName(InetAddress.java:513)
E/TiHttpClient( 417): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:278)
E/TiHttpClient( 417): at java.net.InetAddress.getAllByName(InetAddress.java:242)
E/TiHttpClient( 417): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:136)
E/TiHttpClient( 417): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
E/TiHttpClient( 417): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
E/TiHttpClient( 417): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
E/TiHttpClient( 417): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
E/TiHttpClient( 417): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:653)
E/TiHttpClient( 417): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:637)
E/TiHttpClient( 417): at ti.modules.titanium.network.TiHTTPClient$ClientRunnable.run(TiHTTPClient.java:1017)
E/TiHttpClient( 417): at java.lang.Thread.run(Thread.java:1096)
I/TiHttpClient( 417): (TiHttpClient-1) [24,236188] Sending error idxdot.dev

I have idxdot.dev set up as a virtual host on my machine, and I can hit it fine doing my local development but not just from within the AVD and it hinted to me that it must be that the network setup in the AVD is not able to access my hosts file and apparently it’s because the address is used internally by Linux. A workaround is to use 10.0.2.2 if you are using Linux or your local WAN/LAN address if you are on Windows (192.168.1.x).

My first mobile Hackathon experience

On Saturday October 15th 2011 I attended the ATT Mobile App Hackathon held at the AOL headquarters in Dulles Virginia. It was quite a drive for me to get there, on top on waking up early on a Saturday morning but I figured it was worth it, I was already on a roll attending the UM Technology Startup Bootcamp the day before, which was informative in its own right. So i got to the AOL building a little after 10:00 enjoying 45 minutes or so of good reggae in my car and when I got into the building I was surprised by the “hipness” of it all. The event was held on the fifth floor and getting to the actual conference room just confirmed what I suspected at that point: AOL means business now. I met TeamAOL’s main man Christopher Gibson who gave me a card right away and let me know AOL was hiring mobile developers (A good man, if you are looking for a solid mobile dev gig, email Christopher.Gibson@teamaol.com ). After a healthy fruit based breakfast, I milled around, networking with the other developers and met others who like me were there for the first time.

At around 11:00am is my memory serves me right, presentations started and the first one was by AppMobi, who were introduced by Alex Donn of the  ATT Developer Program who did a good job introducing the platform. I got to play with their PhoneGap SDK offered as a Chrome plugin and was impressed by the whole package. Deploy to cloud options, emulators for different platforms including Iphone, Ipad and Droid among others. That presentation was followed by one from Apigee, which like AppMobi I had never heard of before and was actually impressed by their offering. OAuth seems to be giving everybody trouble coding and they offered a streamlined simplified API to work with, definitely something to consider for me in the future. There were other presentations from Pearsons who introduced their new API, and ViaFo , App47 and Sierra Wireless. To not also was the demo of the new Android app by the Winamp team of AOL Music and I have to say it was impressive software.

I got lunch (Thai s’il vous plait) and sat around, until Chris got me in touch with Omar and Amira who had ideas for apps but no technical know how, so together with Kyle, a developer from Fort Washington, and Rajish, we became Team Fresh and decided on a Recipe Finder app that would search for recipes entered by users and find a list of ingredients and nearby stores where they can be purchased. Since I was the de-facto tech lead, i set out to first find our data source and wound up on the PunchFork site which provides a recipe API with some paid extra features. I decided to go wit AppMobi as my dev platform and my first task was to get data from PunchFork. It turned out to take longer than I expected due to my inexperience with the AppMobi aUX API. Kyle left around 3:00PM followed by Omar and Amira around 5:00PM and I was left to figure things out with Rajish, who although being a backend .Net developer helped me along and was quite a good conversation partner. I went back and forth with the AppMobi support team (John and Tyler) who were gracious and very helpful. John ended sending me code for a sample app that was actually very similar in structure to what we were trying to achieve but by that time, I was already headachy and hacking the code would have taken too long to meet the 7:00PM deadline for app submission.

It was the end of the day for me, I was mad I could not finish, but the learning experience was invaluable. It made me happy to be around other developers and geek out to the fullest. It’s an environment where as a developer you are understood and it was welcomed for a change. AOL has some very fancy offices and breakout rooms, and as I told Chris Gibson and Chida Chidambaram who were our very gracious hosts, this event helped turned around my opinion of AOL. From the media coverage I assumed i would be going into old offices, populated by old people who were not in with what’s current, even dismissing calls from recruiters about possible opportunities at AOL (which is physically too far for me in any case), but it was quite the contrary. The dynamism I have seen from Chris Gibson and his team, their helpfulness, and the Winamp demo helped me change my mind. They might have taken a fall but they are definitely working their way back up and I am sure I will hear soon in the future about the things that will get done by their mobile development team. If you are counting AOL out, all I know is, as far as their mobile team, you might be surprised so hold judgement.

I left the venue a little after 7:00PM and went home happy with my day. It was productive and I learned a lot. I got some free tee shirts, something for the wife, some stickers and got to play with a Windows 7 phone, which I hadn’t had the opportunity to do yet. My advice for first timers:

  • Attend, don’t be afraid, there are other people like whose first time it is as well, so you won’t stand out, believe me.
  • BRING A LAPTOP, otherwise, you will be bored and are defeating the purpose.
  • Come prepared, if you are a developer, having an idea is good, to really make the most of your time, if you already have a time, plan it all out before hand and use the hackathon time as a collaborative development time to actually get it done.
  • Hackathon organizers: make it easier for devs/business people to create teams before hand so that time spent on design is reduced and we can get a finished product at the end of the day.
  • Fail if needed like I did, you will learn along the way. Nobody is expecting a shiny new app at the end of the day with all the bells and whistles. You’ll see that just having something that works is very satisfying.
  • Attend another one

That last point is well taken. I will be at the Education Hackday in Baltimore next month, and they have actually started building teams around ideas, so make sure to attend if you are in the area.

Sencha Touch MVC Application Tutorial

I have been catching up on the work of CAM, who has an excellent, so far 3 part series on how to build a MVC mobile application using Sencha Touch. The Sencha Touch tutorials seem to leave a lot of people confused so CAM hand holding and informative approached is quite refreshing. Head over to the site:

http://www.onlinesolutionsdevelopment.com/blog/mobile-development/creating-a-sencha-touch-mvc-application-from-scratch-part-1/

Leverage your web developer skills for mobile development

In the world of mobile application development, you can either build applications the standard way, which means using Objective-C to write Apple iOs applications, or Java with the Android SDK for your Android applications etc etc, you get the point. But a new paradigm has appeared that is very appealing to web developers like me as complementary to a skill set I already possess: writing mobile applications using HTML, CSS and Javascript. The tool that makes this magic possible is called PhoneGap and version 1.0 has just been released to I bet, the delight of many mobile developers out there. The concept behind PhoneGap is simple:

  • Build your app using HTML and Javascript
  • Access the native phone APIs through the PhoneGap wrappers
  • Deploy to multiple platforms

The appeal here is reminiscent of the early Java slogan, “Write Once Run Anywhere” or WORA, for those who still remember, and PhoneGap is even lauching a beta for PhoneGap Build, a service that will allow you to “write your app using HTML, CSS or JavaScript, upload it to the PhoneGap Build service and get back app-store ready apps for Apple iOS, Google Android, Palm, Symbian, BlackBerry and more”.  There are a  number of Javascript frameworks out there that can be used to build apps in conjunction with PhoneGap, the  two most popular are JQuery Mobile and Sencha Touch. Both are very capable frameworks that make use of the latest advances in CSS3 and HTML5. Your choice in a guttural way would depend on your familiarity with their browser counterpart (JQuery or ExtJS). What you have to understand at the end of the day with the PhoneGap architecture is that your finished app would basically be a web page running within a browser. Here are a couple tutorials to get you going either on Sencha Touch or JQuery Mobile.

Combined as I mentioned earlier with the fact that by using HTML, CSS and Javascript the learning curve for a web developer is suddenly cut into mere hours instead of the days or even weeks required to learn and master a new heavy language like Objective C or Java, you have to wonder how come every mobile developer out there is not rushing to adopt PhoneGap. Well there are limitations when it comes to building an application using PhoneGap and here is a shortlist (By no means exhaustive, feel free to inform me of more in the comments, I will add them to the list) :

  • Running from within a browser your app won’t have the native built-in styles available unless you use CSS to mimic them. There are frameworks that have been created to that effect. Sencha Touch comes with two default themes for iOs and Android and there are JQuery Mobile Themes available as well.
  • Performance will take a hit because of the extra layer between the app and the OS.
  • Access to the some of the native phone high level functionality is sometimes limited.
  • Support is sometimes hard to come by for specific issues, since this is a community supported project.

Those issues withstanding, I still think that PhoneGap is only poised to get better, and improve support for more native functionality. I think it is complimentary to my web development skills and allow me to expand into a new market without really stepping out of my comfort zone. If you are worried about native feature support or exploiting more of the native SDK, you should definitely look into Titanium, from Appcelerator which offers to “translates your hard won web skills into native applications that perform and look just like they were written in Objective-C [iPhone and iPad] or Java [Android]”.

Here is a list of links I found useful on the matter: