3d computer animation, open source technology, software application development, IT network security, and random awesomeness!

From the Blog

As corny as it may sound, I’ve always wanted to get my foot in the door with my own $0.99 app in the marketplace.  As my friends, family, and colleagues can testify, I’m a die-hard Apple fanatic!  But there have been a few snags in getting my feet wet with iOS app development.

For starters, I do not own an Intel-based Macintosh, which is absolutely required for developing on the iOS platform.  My latest Mac purchase was my Dual 2.7GHz PowerMac G5.  It sports an amazing Motorola PowerPC processor.  A few months after I signed away my first born child (err, I mean purchased), Apple had this ingenious idea to switch to Intel.  And it’s been a pretty rough downhill ride with my PowerPCs from that point on.

So, I’ve pointed my direction into a different Mobile market.  Powered by another one of my favorite tech companies, Google, the Android OS has been taking the mobile industry by storm.  From phones to tablet PC’s, it’s continuing development at a rapid rate.  So after accepting that I would need to learn a new programming language, since ObjectiveC wasn’t going to do me much good in a Java world, I started looking for easy ways to get started.

My initial thought was to make a web app.  I already have an extensive background in HTML and CSS web development, so it would only seem logical to make a move in the direction.  It would be platform independent since it would reside in a web browser, but I think that simple fact was my biggest turnoff.  Web applications had a lot of restrictions when it boiled down to native device functionality.  I also wanted a native application that I can publish into the marketplace.  Something to make a little extra cash on the side, but also something that I would enjoy doing as a hobby.

My first find was Google App Inventor (http://appinventor.googlelabs.com).  It looks very promising and, most importantly, easy to use!  Practically no coding needed!  And that’s exactly what became it’s downfall.  It truly lacked a lot of the features I was hoping for (ironically the ability to publish the created applications in the Android Marketplace).  It took a little bit of work to setup at first, but it was pretty straightforward once I was started.  I was able to make a simple application called “time2eat”, which collected a custom set of contact numbers and allowed you to create a text message that you could send en masse to everyone listed (essentially letting them know it was time to eat).  I don’t even own an Android phone, so I used my parents Motorola Droid X to test it, and I was happier than a kid with new puppy when I successfully sent myself a text message!

I felt almost like Charley Kline at UCLA sending the word “login” across ARPANET.

But, the victory was short lived when I discovered I couldn’t take this freshly created App and publish it in the Android Marketplace.  Perhaps I’ll make another post someday explaining why, but maybe by then Google will have gotten their act straightened out and redesign this cool tool.

So, after this small bit of success, I wanted to dive into the Java pool and swim with the code! … Ok, so not quite in the literal meaning, but you get the idea.  I found some awesome references, downloaded the Android SDK (http://developer.android.com/sdk/index.html) along with the Eclipse IDE (http://www.eclipse.org/).  I was able to successfully setup multiple Android Virtual Devices (AVDs) running practically every version of Android available from the SDK, and I was set to go!  Or so I thought … By the way, I may make a tutorial about this someday, because documentation on the Internet about it seemed somewhat hard to obtain.

Java is a whole different world for me.  I’m slowly learning the ins and outs of the overall development process, but it’s been quite the learning process to say the least.  For anyone looking to get started, I could easily make a few suggestions and pointers.

  1. Get to know how Android works!  If the terms linux kernel, Dalvik, Java, Activity classes, etc. scare the crap out of you, then I’d suggest knowing what they are before beginning.
  2. Learn and understand the Android Application Life Cycle.  From onCreate() the whole way to onDestroy().  It is vital to understanding how Applications work with Android.
  3. Start small!  Almost straight out of the gate, you should be able to make a simple Hello World app.  Take tiny steps and learn how everything pieces together.

Since I haven’t had much time lately, and this really is just a hobby for me, I found another application that looked just as cool as Google App Inventor, called Illumination Software Creator (http://radicalbreeze.com/).  My first impressions before purchasing were thinking I was getting into another Google App Inventor mess, and I wouldn’t be able to take my apps into the Marketplace.  I was completely blown away when I discovered that it actually generates and provides the full Java code in an Eclipse project format, ready to compile out of the box.  Completely detailing the scope of this application would take a whole post in itself, so I won’t continue rambling about it more then I need to, but so far I’ve found it to be an amazing tool for application development across the board.
Nov
26
Posted by BrianH at 11:55 pm

So, I was bored today and decided to check out Ogre3D.  Being more of an artist then programmer, jumping into this whole world of graphics engines was a little bit confusing at first.  First of all, I haven’t touched C++ in ages, and even back then it was merely doing simple arithmetic.  So, I downloaded the latest release of Ogre3D from www.ogre3d.org (which was 1.6.0).  Being lazy, I decided to take the “Prebuilt SDK” route.  Well, everything went great until I tried to compile the sample applications and I got an error “You can’t open the application ‘Application’ because it’s not supported on this architecture.”  I assumed the XCode file was setup to build for the Intel architecture, so I checked to make sure but it’s set to build Universal Builds.  I poked my head around the forums a bit and found out that the OSX Prebuilt SDK available for download is only for Intel macs.

So now it’s time to stop being lazy.  I decided to compile the SDK myself and downloaded the Ogre3D source code for the SDK.  However, to save some time in compiling every single dependancy, I found the Universal Binary’s for them instead.  I slapped them in every spot on my drive that made any logical sense (i.e. /Library/Frameworks, /System/Library/Frameworks, etc.) and it still wasn’t recognizing the dependancies.  By coincidence, I hovered my mouse over one of them and noticed they were pointing to “ogre/Dependencies/…”.  Since the directory in the SDK source didn’t even exist, I would have never thought to put it there.  To make a long story short, I discovered if the dependency displays in red text in XCode, then it can’t find it.  *sigh*.

Now that all the pieces are in the puzzle, I started the long compiling and linking process.  Everything seemed to be going well, aside the 160 warnings, until this  error occurred:

error: The file “OctreeZone Plugin-Info.plist” does not exist.

The file is clearly there, so I don’t know what XCode is throwing a fit about.  So in frustration, I’ve set aside my interest in Ogre for now.  I’ll come back to it again some other day.

EDIT (27 November 2008): I’m pretty well known to never give up on something, so I’ve looked into the issue a little further after sleeping on it last night.  I found that the OctreeZone plugin is using an absolute path which is set to “/Users/steve/projects/Shoggoth/ogre/Mac/Ogre/./plist/OctreeZone Plugin-Info.plist”.  To fix it, it needs changed to “./plist/OctreeZone Plugin-Info.plist”.  If you’re looking to change this yourself, you can find the setting by clicking on the OctreeZone plugin under the Target group > Get Info > scroll under the Build tab and you’ll find it listed in there.