The Magic Camera is Up on the App Store!

I outsourced my first iOS app, and it is now live here. The Magic Camera lets you take a picture of someone, but instead of taking the picture, the app actually presents a picture from a set of images of people from around the world, animals, etc.

I had a few goals in putting this together--first, I thought it would be a fun app, and it seems like the kids really enjoy it. Second, I wanted to get something new in the App Store, but I did not have time to write it myself. Finally, I wanted to develop a relationship with an outsourced team to develop more app in the future.

The experience was a great one--the developer that I found on oDesk did a great job, and was extremely professional. Compared to costs that I have seen others describe for app development, I got this developed for an outstanding rate. And I think the quality of the final version is high.

Anyway, it was a great first experience outsourcing the app. And if you have kids, they would probably enjoy this app, like my kids do! And it's free!

Dynamic WordPress content - getting content from another database

I am currently working on a research project to catalog a number of events from recent history. The goal was to be able to create these events in one database and display them. Due to the sophistication and layout capabilities of WordPress, this seemed like a great framework to put the presentation into. But there are a few hurdles I needed to overcome--essentially, how could I create pages in WordPress in advance, and then, when they were requested, source events them from another database.

The concept may or may not seem interesting, but my goal was to dig deeper into WordPress to understand some of the inner workings. Thanks to tons of great web sites where people share their knowledge (most notably John Faulds code example here), and WordPress's own outstanding documentation, it was easy to develop some simple code to perform the function.

First off, let me explain my approach. It was to create all the pages in WordPress first programmatically, placing an identifier into the content section. My goal would be to read this content section later, be able to determine what content to get from my secondary database based on this information, and then retrieve and display my new information.

All you need to do is go into your functions.php page and introduce code like the following (note John Faulds' runSQL function copied here almost verbatim):

function dynamic_content() {

$content = get_the_content();

echo "


$sql = "select description from dates where date = '" . $content . "'";
$results = runSQL($sql);

//echo $sql;

while ($row = mysql_fetch_array($results)) {
echo $row[0];
echo "



function runSQL($rsql) {
$dbcnx = @mysql_connect('localhost',$user,$rootpasswd,true);
if (!$dbcnx) {
echo '
Unable to connect to the database server at this time.
mysql_select_db($db, $dbcnx);
$result = mysql_query($rsql) or die ('test');
return $result;

This requires some explanation first. You will notice in your loop template pages that there are regular calls to "the_content". This function actually outputs content--and since my goal was to read this and replace it, the_content() is not acceptable.

Review: Android Blows

Understand a few things first. I love competition. I firmly believe that competition is what makes people and companies strive to be better. More than anything, I wanted iPhone to have a strong competitor to keep it honest. Anyone who lived through the glorious chip revolution of the 1990's and saw the birth of PowerPC (who?) and AMD challenge the supremacy of Intel and the resulting monumental gains in chip technologies knows the good that comes out of companies fighting for their lives.

Second, understand that dollar or dollar, I own more Google stock than I own Apple stock. Google is an amazing company, I genuinely believe they try to do all the right things, and I know if I was presented with some of the interview questions posed to potential Google employees, I would probably curl up, wimpering, into a fetal position.

But I have to be honest. After almost five months of desperately wanting to just *like* the Android phone, I have to conclude that it is frustrating on a par with my Windows machines at work. Yes, it's that bad.

Let's start with some specifics. I am using the Samsung Fascinate from Verizon. Specs appear to be about on par with most Android phones--1GHz Hummingbird processor, 384M of RAM. I love the sleek design and slim size--it is very iPhone-esque. A co-worker showed me, and between his positive review, my love of Google, general public praise for Android, and being able to get a smart phone with Verizon service, I could not pass it up.

But it only took a few times of turning it on for me to be annoyed--the phone was about as responsive as a Pentium Pro circa 1998 running Windows Vista.

So I went back to my co-worker, and he explained that you pretty much HAD to run a utility (he recommended the free version of Advanced Task Killer) that would aggressively kill applications in memory that were no longer needed. With a lot of experience with iPhone and iPad development, I was immediately skeptical. Does the operating system manage everything so poorly that third party apps need to be bolted on to make the experience bearable? Has Google made the equivalent of Windows for the smart phone????

Advanced Task Killer immediately created it own set of problems. Since I installed it, I notice my keypad disappears at awkward times when I am using it mid-phone call--like when I am trying to enter my PIN to access my voicemail. I tried disabling ATK for the obvious tasks--like the phone--but that did not fix the problem. Turning down the aggressiveness of the task killing (I normally have it set to "Aggressive", not the top setting of "Crazy") does help, but then my phone is no longer responsive in any way again. I would call it a catch-22, but my keypad would disappear after I type the first 2.

Next comes the most common app I would use on the phone, Mail. Strangely enough, the native mail app was so slow and sluggish, I switched over to the official Yahoo! mail app. This, let me tell you, is a real piece of work. Not only does it suffer from the absolutely embarrassing performance, it has weird quirks that you need to be aware of. For example, there is an Outbox. Once I sent an email, watched the message appear on the screen saying it was waiting to be sent, then waited until it disappeared. No problem. The next day, I found this not STUCK IN MY OUTBOX. I had synched mail probably 50 times. And of course I discovered this handy problem with an important email. Today, I just figured out the work around. When messages get stuck in your Outbox, start up the aforementioned Advanced Task Killer, kill Yahoo Mail, restart it, and hope for the best. It only took me 15 minutes to send this email today. Of course, in the future, I know I can just kill the application and restart it to actually send a note. Does this sound more and more like Windows to you???? (OK, you are thinking, Google is not responsible for what Yahoo publishes, right? I think I am within my rights to list this because (1) it is actually better than the native mail app, (2) I am sure the poor performance has something to do with the operating system since every Android app seems to suffer from it.) Oh, and did I mention the performance? If you are retrieving mail, don't even bother trying to scroll the display or even use the home button to get out of the app. If an app does not want to give up control to the operating system, you might as well set the phone down and let it do its thing for the 7 minutes--because it will NOT respond.

Oh, and then let's talk about browsing. If I try to launch my My Yahoo! page in the native browser, the application crashes. I guess that is good, because I don't have to load up ATK to do it for me. In desperation, I switched to the Dolphin browser, which can be downloaded free. It is pretty good, has not crashed on me, and seems to perform pretty well. I recommend Google or Verizon (whoever is packaging the native browser on the Fascinate) switch to Dolphin. It would have saved me hating something else about the Android. And you would not have needed to read this paragraph.

I had a lot of confidence in Android's overall approach. Be open. Run on all kinds of hardware. Open source the code so it can be understood, and possibly improved. But I would contend after 5 months of serious use that it is simply not finished. Android, if it will ever be a contender, is going to need either a major overhaul, a significantly higher hardware requirement to offset the unacceptable performance of the apps, or some combination of the two. The iPhone outshines it in so many ways, it is not even a contest. But the biggest way--it is just plain usable. Sure, bad connection speeds are a fact of life when you are not in wi-fi range. The iPhone is cool with that--maybe you can't get your mail right then, but you can scroll through the mail you do have, even press the home button to go do something else if mail isn't getting retrieved fast enough for you. Try doing this with an iPhone, then with your shiny new Android. You will want to put your Android through the nearest window.

So, if you are in the market for a smart phone, PLEASE think carefully before you get an Android. If you are patient and like waiting on your devices, or if you are getting it for free and would have to pay for anything else, or you have never used a peripheral in your life that was not powered by Windows, you might be happy with it. But if you do not fit into one of these three categories, you owe it to yourself to look at all the choices out there....