The Story of App #2

Buoyed by the success of getting app #1 approved, I decided to go with another fairly utilitarian app. Quadratic functions are so fully understood that it explains why there are so many apps for them! I knew my app would have to differentiate itself from what was already out there, and I chose to do that by producing results in exact form, that is, in terms of integers and fractions and radicals, rather than opting for the quick and easy decimal results. After all, I anticipated a math student using it to check his or her work, and they’re not going to get their results in decimal form if they’re doing it by hand.

With the development of Quadratix I also wanted to learn some new coding skills. The first was the tab bar, but like the flipside view, it was all in Xcode so there really wasn’t anything to learn except how to make graphics for the tab bar, and more importantly, how to get one view to share its data with another. That was actually a fairly complicated task, but once again, I found someone on iPhoneDevSDK who did the whole thing. I invested a lot of time in finding and implementing this solution, but I know it was worth it in case I ever need to do it again.

The next skill I learned was graphing. Also a good skill to have for math-related apps! Installing and implementing Core Plot took a lot of time and a lot of research, but again the information was readily available and it was more a matter of making sense of what I was doing. So now I had a nifty app that does algebra in one view and a graph in the other.

Finishing touches included a segmented control (easy!) and better graphics than app #1 had. I discovered the gradient tool in Photoshop and had a lot of fun with that for the backgrounds. The logo I did in Microsoft Word with Word Art, and then save the file as a web page to get the logo as a png. The decision to add an iAd banner came towards the end, as I had always anticipated selling my app for 99ยข.

How I came to decide to make the app free is that, first, I asked my daughter’s opinion and she said it should be free. I didn’t agree right away. Then I heard a great speech by Theo Gray of Wolfram about how his coffee table book The Elements came to be an iPad app, and if his amazing app is only $13.99 then there was no way I could ever charge anything for my app. So I made some room and added an iAd. It was the right thing to do.

All in all, I’m pretty pleased with how it came out. I did forget one big thing: when I submitted the app I forgot to enable iAds, so I missed out on any ad revenue with the initial jump in downloads. But since I make almost nothing with the ads it really didn’t make much difference. When I discovered my error about a month later I was prompted to move a lot more quickly on getting out my first update for Quadratix, which came about right after I submitted app #3. But with the update I also made a nice improvement in the coding, adding the ability to read fractions, so I think it will end up being a worthwhile update. I added that capability to Slant Asymptote Shortcut and will be submitting that update very soon, too.

Posted in Uncategorized | Leave a comment

My Little Checklist for Deploying to 3.1

I’ve been setting my apps to run from iOS 3.1 onward since my own 1st gen iPod Touch runs 3.1.3. There are a few things I need to remember to do to accommodate those earlier systems, as I discovered last night when I tried to load app #3 on my iPod.

1. Remember to weak-link the iAd framework. This was prompted by the error message

mi_cmd_stock_list_frames: Not enough frames in stack

To weak-link, go to Project Settings and add “-weak_framework iAd” to “Other Linker Flags.” And remember to do that for all the Build configurations!

2. In the viewDidLoad method for adding an ad banner, change the line

self.adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;

to

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.2) {
self.adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
}
else {
self.adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
}

since the “320×50″ property is deprecated.

3. Remember to adjust the deployment target to iOS 3.1 in ALL of the configurations. This one had me going for a little while because it kept telling me to adjust it in the plist. But you adjust it in Build in Project Settings, of course, I had just not done it for a Device.

Posted in Uncategorized | Leave a comment

Coding as a hobby…

I learned to write computer programs in a Fortran class in 1983. I didn’t like the class, and I got a C in it. I had a hard time staying awake for the recorded lectures of Prof Carnahan shown on the monitors. Fortran (IV or 77, I can’t remember which) was a prickly b!tch, but I could be thankful since ours was the first year that we didn’t have to use punchcards. Punchcards! I remember seeing people carrying boxes of punchcards and I wondered what would happen if they dropped that box. But Fortran stayed with me and, like typewriting class in junior high, a class that I thought was a waste of time ended up being far more important than I ever could have imagined at that time.

I got better at using Fortran over the years, and it got a little less prickly, and I coded for fun and for school. I had a demo Fortran compiler (to buy it would have been a few hundred dollars, as if). I remember writing a simple Mastermind game with it, running Monte Carlo simulations of card games I was developing, and played around with genetic algorithm codes. I also used it to model rarified gas flows in grad school. Eventually, though, as I got into html and web design, I knew I had to move to a newer programming language. So I took a class in Java.

My first Java code had one large method main. My instructor showed me how to break it out into blocks with specific tasks and purposes, and I began to see how to reorganize my thinking into compartmentalized organization, rather than the linear, serialized way I had been coding in Fortran. It wasn’t a difficult adjustment and I really took to object-oriented programming, although much of my code starts out pretty linear and I end up busting out smaller blocks as it evolves to some final state.

From Java I began using JavaScript more often because it is less prickly. After setting up my card games online I got distracted by other things, mainly, I think, the expansion of my part-time teaching career in online learning, a very natural outgrowth given my inclination to all things online. When I think back over about the last ten years, I’ve learned to program different things, and I’ve learned a few of different computational tools.

I can program a Ti graphing calculator, and I can write custom questions in MathXL, which I consider to be a kind of programming. For computational tools I like, foremost, Microsoft Excel. A friend introduced me to Excel not long after I graduated and I consider that one of the most important gifts I have ever received. I have been using it regularly ever since. I also use GeoGebra and Mathematica. That’s a short list, but to me it seems like I have a good variety of tools in my toolbox that enables me to do a good many different things.

Coding to me is a creative activity. The actually code-writing part is left-brain, logic and puzzle-solving type thinking. Deciding what an app is going to look like is more right-brain. SAS has very lame graphics. With app #2 I knew I needed to jazz it up a bit. Apple gives a lot of support in this area; as I read somewhere, the professional app builders don’t want to be surrounded by a bunch of amateurish apps in the App Store, and I get that. They set a high standard but they also provide guidelines for a good user interface, and a lot of ways to customize the look of an app. Interface Builder with it’s blue guidelines is so helpful to me. I’ve always been aware of good website design and good page design, and many of the main ideas (such as thoughtful use of blank space and using color without overusing color) are important also to app design. Whatever the item, it should be very quick and easy for the user to find what s/he is looking for, and the design should be obvious enough that the user can get started right away, or nearly so.

So coding for the iPhone seems to be the next logical step in my ongoing education in programming. I wonder what the next step will be, but I’m in no hurry to get there because I still have so much to learn. I haven’t even gotten to touches and gestures yet.

Posted in Uncategorized | Leave a comment