Tuesday, March 30, 2010

Renewing My Developer Certificate

We've been deep in development and sleep deprivation for our first iPad app. It just added to the stress level when we noticed that the Development and Distribution certificates will expire next week. Apple's documentation is very complete about how to create the initial certificate but less clear on what to do about a renewal. I think it shows how new the whole iPhone OS process is.

The best step-by-step I've found so far is at Alex Winston's blog so I've posted it here. With all of these certificates expiring and renewing, I wonder if there will be apps that drop from the app store. Carter's Coin Flip could use a little less competition. A search for "coin flip" turns up 66 apps. We don't appear on the initial page of six, but we are in row six (of 17) when someone clicks the "Show All" link.

So far, we don't think that there are any Massage Therapist Notebook type applications, so hopefully that will be more of a blue ocean for us.

Saturday, March 20, 2010

Using Static HTML Pages in TapLynx

As I've been experimenting more with adding plug-ins to TapLynx I started to think about how some of the other iPhone libraries work. In those libraries, they are basically wrapping javascript and HTML pages with some iPhone classes so that the application will compile into a binary that can be sold on the Apple App store. Today we're going to make a little form that will sit in our TapLynx application and then post itself up to a .php file on our server for rendering.

If you do not have TapLynx and want to see the files that I'm using you can navigate to the html form from this link and you can grab the .php file that processes the POST from this link (form_process.php). The initial form will take two text fields as input and the .php processing form will echo the values of those fields back to the user.

An interesting thing to note as you design your pages, TapLynx uses a custom web controller so you cannot take advantage of the mobile Safari controls. You will need to give the person a way to get back to the launching page or else TapLynx will get stuck.

As with many things in TapLynx, the instructions for adding the HTML file are well documented in the supporting wiki. For this example, we make a configuration change to the NGConfig in our TapLynx project so that we can show the controller and have it display a file called form_test.html which we have copied into our XCode project. Our NGConfig looks like this:


The form_test.html file is a pretty simple html file and the code for the file looks like this:


Finally, here is the code for the .php file that is processing the data. Notice that I have included a little javascript link tag to take the person back to the initial form.


Any other issues? Well, the initial page needs to be local to the system. This is sort of contrary to a big part of TapLynx where you can have the configuration file remote and the rss feeds remote so you can make changes without resubmitting the application for approval by Apple. Also, my .php processing form is not on the phone, it's on my server. You can have your file link to other files on the phone (they will all be in the same directory on the phone regardless of if you have them in different folders in XCode). However, I can't think of a real reason in the context of a TapLynx application where I would want to do this. The .php file won't execute on the phone because the phone is just a browser.

So, if you're working on a TapLynx application and you want a few little things to be custom and you know some html and javascript, you can get the job done and extend your application and still not have to learn Objective-C (which is kind of the point, right?). I'm thinking of making a little glossary and dictionary for one of my applications and this is going to be just the thing.

Converting My Developer Account

I have started the process to convert my personal account to a business account over at Apple. Originally, I had wanted to create a separate business account but there is not a clean way to move the applications I already have published to the new account. The whole App Store process seems oddly manual. However it's been getting better over the last few months. I'm generally pleased with how the back end of the App Store runs. For the conversion, they keep asking me to fax documents rather than asking me to send PDF's. It's hard to find a fax machine. So, for last night's request, I tried out a free version of faxzero.com's service. I should research some other services for the next time, but I was in a hurry.

During this process, I'm shut out of my developer portals over at Apple. The timing is making me nervous as Apple sent out an announcement yesterday (Mar 19) that any iPad projects submitted by March 27 would be considered for the Grand Opening of the iPad store. Having a project in that store would be a great marketing boost for this little company.

Tuesday, March 16, 2010

Version 1.7 of CCF Approved and Thoughts About iPad

That was record time. By Monday afternoon it was approved. Maybe with updates it's easier for Apple. I also notice that the app is "approved for the iPad". This development I don't care for so much. I've been working on an iPad version but trying to make it actually be different on the iPad.

For the iPad version I want to do more with the statistics mode and let people download that data into a spreadsheet, so that they can really do their math homework with the tool. The niche target audience for that part of CCF is only possible in this era: I'm targeting students in secondary schools and colleges who are in the one or two week unit of their math course focusing on probability and who are doing the bonus question that asks them what happens if they flip a coin 1000 times. I'm also thinking that we can put in some information about each of the coins but that is more so I can torture Carter with tasks (doing the research) that will make him a better person.

Not every cool application for the iPhone is going to translate well to the iPad I predict.

Saturday, March 13, 2010

Carter's Coin Flip Version 1.7 Submitted to the App Store

In version 1.7 of CCF we changed from using the random function we were using to using arc4random. I think that in a number of cases, the random seed was not working correctly but I couldn't prove it to my satisfaction. So, I just chucked the whole thing and used arc4random which seeds itself.

Also I got an actual German speaker to help me change the German words for heads and tails. This whole translation part is easy to do on the technical side and much harder on the language side. For example. I originally used Vorderseite and R├╝ckseite for Heads and Tails since I found those terms in a German coin collecting site. Lots of effort, but I later found out that those words are really just "front" and "back". When a German speaker is flipping a coin the call will be either Kopf or Zahl. I'm happy to make the change. As I translate into more and more languages I don't speak, I think it's a matter of time before my screenshots show up on a site like Engrish Funny or something.

Spanish is going to be a little more of a challenge as I'm told that each country uses words that are specific to the actual images on their coins.

I'm translating this application as I add new coins for a few reasons. The first is because it's a fun way for Carter and me to learn about new countries and their coins. The second is to honor the people in each country who have purchased the application. The last is because Apple has a nifty little deal going (for them) in that they don't pay you until you net about $250 worth of sales for any one region (for me at 70 cents a copy this might take a while). If they are smart, they are collecting interest on the money while they wait for me and all of the other developers to meet the minimum. So, the handful of purchases in Great Britian for example will probably never be paid to me. The rest of the EU is lumped together (I think), so I'm trying to translate into Spanish, French, German, Italian, etc. in order to try to get enough sales in that area to actually get paid for any of them.

A Cyclist Who Writes Software

An issue I have with having been a cyclist before I started writing software for the iPhone is that all of the objects that deal with graphics utilize the Core Graphics framework and their names start with CG. That's a problem because all of the great cycling races have a General Classification. The guy in the yellow jersey at the Tour de France is the leader of the General Classification or GC.

When I compile things I can almost guarantee at this point that I will get some errors because I'm trying to talk to GCAffineTransform or GCColor. The fingers and the brain just can't seem to get on the same page.

Friday, March 12, 2010

Source Control in OS X I'm Using Mercurial

I'm starting to use Mercurial for my source control and so far I'm liking it. I had been trying to get Subversion to work within Xcode but I could never get it to behave like I wanted. Apple has placed the nice SCM menu in Xcode so I assumed that the whole thing would be seamless. Perhaps I was using the system incorrectly, but I read the documents and still items would get dropped from my repository and I got odd error messages.

The big change for me with Mercurial, is that I'm using it with the command line outside of Xcode. Maybe Subversion would work better if I also used it this way. Unfortunately for Subversion, the experience with it integrated into Xcode has colored my perception of how good it is.

Mercurial hasn't been perfect. I can't get the .hgignore file to work the way I think it is supposed to yet. I really like the fact that Mercurial has its own web server so that I can look at things somewhat graphically when I want and that I can clone repositories across the net.

Thursday, March 4, 2010

Three20 Framework

I am looking at making some more plug-ins for the TapLynx framework. At issue for me is that I've been leveraging the Three20 framework which is an extensive set of view controllers and functions for the iPhone and iPad. I am worried that after someone adds the TapLynx library (3.9M) and the Three20 library (4.3M) that they are too close to the 10M limit that the App store imposes.