Monster Memory for iPad

May 24, 2010, 10:36 pm

Monster Memory is the classic memory game Concentration, with a literacy twist.

Half the cards in each game show 64 of the most commonly used words in the English language. When your child flips over one of these key word cards, they hear the word read aloud and try to memorize its position. The other half of the cards are cartoon monsters to keep your child coming back.

This process will build familiarity with words that appear in almost every sentence they will see. This familiarity translates into confidence that will be invaluable as they learn to read.

The game supports multiple levels of difficulty, single player and two player modes.

Permalink - Comments - Tags: Development,iPad,App

Respirapedia on the iPhone

April 23, 2010, 8:36 pm

I was very happy to be involved in the development of Respirapedia. It's a glossary of respiratory care terms.

Now available on Android.

Over 1500 important respiratory care terms, for class, clinic, or home, all at your fingertips! An interactive glossary version on the book "Respiratory Care Lexicon" by Kenneth M. Bretl, Professor Emeritus at College of DuPage in Glen Ellyn, Illinois. An invaluable resource for the health care professional, the medical, respiratory, or nursing student, or the health care consumer. Practical, easy to use, and authoritatively accurate.

From apnea to zarfirlukast, from bardycardia to Yankauer, this lexicon serves all of your respiratory care needs and knowledge.

Glossary Engine Developed by Cannonade.Net. Distributed under contract for College of DuPage Press by Gnu Ventures Company and J&S Tech Designs

Permalink - Comments - Tags: Development,iPhone,App,Glossaries

Filtering pages with a Chrome extension

April 15, 2010, 8:00 am

I decided to dip my toe into the sordid world of browser extension development. Being a Google fan boy, I naturally decided to check out the newly minted Chrome extension framework. The illicit rush I received programmatically messing with other people's web content, is everything I imagined it would be.

I am a lurker and occasional contributor on Mahalo, specifically in the history tag of the Q&A section of the site. Some time ago Mahalo set up a relationship with another Q&A site, Conundrum Land, and are pulling their questions into the Mahalo answers stream. I wouldn't really have a problem with this, except that the questions tend to be pretty inane and are consistently miss categorized as history questions:

Are you better able to forgive yourself or to forgive another person?

I have tried to bring this up with the Mahalo team and haven't got much attention. So, armed with the gleaming scalpel of a browser extension framework, I have taken matters into my own hands.

This extension is extremely simple. It creates an icon in the address bar that, when clicked, will hide/show any questions that link to Conundrum Land. The icon is only visible if you are on a Mahalo Answers page.

If you also find the incessant drone of "conundrums" distracting, then you can find my extension in the gallery.

If you are interested, this is the business end of my extension:

function filterLink (question, i, hide) { // called for each question and featured question div in the tree var href = question.find(".question-link").attr("href"); // if this is a Conundrum Land question, then hide or show it (based on the UI toggle) if (href && href.length >= 34 && href.substring (0, 33) == "http://www.whatsyourconundrum.com" && hide) question.css("display","none"); else question.css("display",""); } var toggle = true; function showAll () { toggle = (toggle ? false : true); $(".question").each ( function (i) { filterLink ($(this), i, toggle); } ); $(".featured-question").each ( function (i) { filterLink ($(this), i, toggle); } ); chrome.extension.sendRequest({}, function(response) { showAll (); }); } // initially, hide everything $(".question").each ( function (i) { filterLink ($(this), i, toggle); } ); $(".featured-question").each ( function (i) { filterLink ($(this), i, toggle); } ); // send a message to background.html so we can get a callback when the user clicks the icon chrome.extension.sendRequest({}, function(response) { showAll (); });

Permalink - Comments - Tags: Development

Chomp Connect

April 9, 2010, 11:29 pm

I am a big fan of Chomp. It's social network driven software for iPhone app discovery. I think there are very real pain points with the app store and Chomp does a pretty good job of resolving those issues:

  • Negative Bias - Currently users are offered the option to rate apps when they are deleting them, so it is logical that there is a strong negative bias in ratings.
  • Barriers to review - I don't tend to review apps on the store because the UI is not available in the app.

With Chomp Connect I was able to add some UI to my about box which lets a user leave a review without closing my app. There is the initial barrier of a Chomp signup (if the user doesn't already use Chomp), but I think this barrier is still less than the multiple steps needed to review something on the app store.

The code to implement this functionality was trivial. I just had to include a bundle ,containing the code to show the Chomp dialog and some resources. Then add a few lines attached to my "Review on Chomp" button to show the dialog:

NSString *appID = [infoDictionary valueForKey:@"CFBundleIdentifier"]; ChompDialog *cDialog = [[[ChompDialog alloc] initWithApiKey:@"" forApp:appID] autorelease];

I did encounter a rather obscure problem when I went to submit my newly Chomified apps to the store. When I submitted the new binary, I got the dreaded generic submission message:

The binary you uploaded was invalid. The signature was invalid, or it was not signed with an Apple submission certificate.

If I didn't include the Chomp bundle, I was fine. With the Chomp bundle, I got the error. The Chomp dev team were extremely helpful sorting out this issue, which they hadn't seen for any of the numerous devs who had submitted apps without the problem. They asked me to check the contents of the bundle for any hidden files that might be screwing up the signature. What I found was quite interesting:

I downloaded the bundle, unzipped it, checked for hidden files and found everything ok. Then I copied the bundle from the downloads folder (on my MacOS HFS drive) to my dev directory (on a Windows drive). Boom! Suddenly there was a bunch of hidden files in the bundle. It turns out, when you copy from an HFS drive to a FAT32, MacOS needs to create a hidden file for some additional metadata that it can't put in a FAT32 file (fork data attributes).

So mystery solved. For any other lunatics out there that keep there source code on a FAT32 partition of their macbook, beware the lurking fork data attribute files.

Permalink - Comments - Tags: Development,iPhone

Programming Paragon

March 16, 2010, 1:25 pm

A very old friend of mine Phill Joyce has recently started a games development journal at pegwars.blogspot.com. As a programmer, Phill has been a source of inspiration since my very first days as a fledging programmer and I am looking forward to reading about his game development exploits.

The image is a 3D render of the ship model that Phill built for Pegwars v1. it occasionally reappears as my desktop background.

Permalink - Comments - Tags: links