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.

Android Application Development has always been a fun hobby of mine. Most recently, I got my hands on Illumination Software Creator (which, by the way, is absolutely awesome!). Wanting to get my hands dirty with playing connect-the-dots and making an Android app with practically no work, I found everything to be extremely limited as far as the internal building blocks go. And most disappointingly, it creates depreciated <AbsoluteLayout> XML by default … *Ugh!* … Wanting to get a simple LinearLayout implemented, I dived into the Custom Blocks feature, and found some relief.  Since Illumination Software Creator won’t allow me to edit the XML manually, I pitched it all together and made it call a function that adds the layout elements programatically.  The only problem I see with this is being able to add UI elements (like buttons, etc.) in a modular manner instead of hard-coding them into the Custom Block.

Below is the code I’m using for the Custom Block.  If anyone knows a better way to do this, I’m eager to learn!

Block Name: LinearLayout
Category: Layout
Input: Open
Target: Android

Import Statements:

import android.widget.LinearLayout;
import android.view.ViewGroup;

public void LinearLayout() {

LinearLayout layout = new LinearLayout(this);
layout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
Button button = new Button(this);
button.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
button.setText("my button");
layout.addView(button);
setContentView(layout);

}