Archive for the ‘iPhone Development’ Category

OnScreen QB Stats: A New iPhone App for Evaluating Quarterbacks During and After a Game

Wednesday, December 30th, 2009

OK, having spent several weeks working on OnScreen QB Stats™, a sports-category iPhone app that just made it to the iTunes App Store about a week ago, I want to say something about it and how it came to be. As its name will probably imply to most readers, the app concerns American football (I’d forgotten the field has a different length in Canada, so Canadian football must wait), specifically the player that is most important on most teams, the quarterback (QB). He’s the player that handles the ball on virtually every play and has the biggest chance of deciding who wins the game through his ability to move the ball down the field in big jumps by completing passes, including some that score touchdowns. Of course the quarterback can also squander a down by throwing a pass that can’t be caught or, much worse, he can give the ball to the other team by throwing a pass that’s intercepted. Naturally people would like to quantify quarterback performance, so, in addition to being a very important player, the quarterback is the player for which there are the most statistics recorded and calculated. OnScreen QB Stats enables one to record a quarterback’s raw passing results during the course of a game and review the derived stats such as completion percentage as well. It can be used to record and display on an iPhone or iPod Touch the passing stats of every quarterback in the game for each team.

The full set of quarterback statistics recorded and calculated by OnScreen QB Stats is shown below.

The User’s Guide for OnScreen QB Stats is available as a pdf file. There every button and display is briefly explained.

After finishing my first app, OnScreen Pitch Count™, I had begun to think about making a version for the iPhone of OnScreen DNA (my virtual model of the double helix molecule of life, which runs on Macs and Windows PCs). I had already started experimenting with OpenGL ES toward that end, when it occurred to me that a lot of the nitty gritty coding I’d already done for OnScreen Pitch Count, which allows a user to record and review the results of baseball pitchers’ pitches, could be easily adapted to an app that followed quarterbacks’ passing results. That is, the machinery for saving and restoring the passing results, for reviewing those results, and for setting up the data storage for the results of individual quarterbacks on the two opposing teams, would be but a minor change from that already developed for the pitchers in OnScreen Pitch Count. That actually turned out to be pretty true. One modification was that I had to allow for the possibility that a quarterback might re-enter the game after being replaced for a time, which is not something that happens in baseball.

I had also assumed that the actual data entry by tapping buttons on the screen would be at least as simple for the pass results as for the pitch results. I thought the bookkeeping involved would be simpler for football, since I wouldn’t have to worry about strikeouts, walks, outs, base runners, and innings (not to mention complications such as charging runs to pitchers after they’d left the game). I thought I’d be able to write the football app in three weeks or so, finishing it in time to justify working on it for the current season. Since every high school, peewee, and non-bowl college game in the country (as far as I know) had been played before the app finally became available, I obviously misjudged the complexity of the task. All in all, when I consider things like the extra choices that had to be coded for undoing an action (e.g. completely wipe out a touchdown pass, call it incomplete, or place the ball short of the goal line), and the numerous states to which the app might need to be restored after an interruption (e.g. awaiting line of scimmage determination after a pass completion) the quarterback app seems to have been more work than the pitching app.

There is less to record for a quarterback than for a pitcher. We need to record attempted passes, completed ones, and intercepted ones. Then we need to keep track of the yards gained passing and the number of touchdown passes. Those are the basics. I added quarterback sacks and longest completed pass for good measure, but from the basic pass statistics we can calculate derived quantities such as yards gained per passing attempt and the rather arcane numbers called quarterback rating in the NFL and passing efficiency in the NCAA. Both of these rating methods use pass completion percentage, yards per attempt, interceptions, and touchdown passes to come up with a number that serves as a basis for comparison among quarterbacks. Although, the number is much less meaningful in a single game than in a season, it can be of interest to know what it is for a game, and OnScreen QB Stats will calculate and display whichever measure of quarterback performance the user desires.

Although the data to be recorded might seem at first glance to be simple, in practice it is more complicated. Someone sitting in a press box with a spotter to provide the details of each play could get by with an app that recorded completions, incompletions, yards gained, interceptions, and touchdowns. But for someone watching a game from the sidelines or stands or even on television, there is the problem of determining how many yards were gained on a given play. The only way to do that with full confidence is to keep track of where the ball is after each play, since one doesn’t know in advance which plays are going to be passes. Once a play is underway, it is difficult to note the line of scrimmage from which play started and then calculate yards gained by noting where the receiver was brought down. It’s a lot to take in and keep straight in a short time, even assuming one has a good view of the sideline yard markers, which is often not the case when watching a game on television. The additional challenge is to do all the data entry on the iPhone without recourse to pencil and paper or on-the-spot mental calculations.

OnScreen QB Stats solves the problem of passing yardage calculation by making it easy to record the new line of scrimmage after each play; and if the play leading to the change of field position is a completed pass, the app automatically calculates the corresponding gain in yards and adds it to the total for the game, while adjusting all other stats that depend on passing yardage as well.

It took me a lot of trial and error to come to this easy way of recording the new line of scrimmage after each play (or penalty). At one point I had thought that using a slider control to just slide a pointer along a representation of the 100 yards of the field to mark the current line of scrimmage would be both intuitive and fast. I ran into two problems with the slider method. For one thing it was hard to quickly obtain the precision I needed down to the yard, which is only 1% of the length of the control. So, I added a second fine-tuning slide control to move the pointer just within plus or minus a couple of yards of where the full-field control pointed. This solution worked, but frequently required using both controls, which was a nuisance. I might have decided to live with it, given the intuitiveness of the slider, but the controls turned out not to be reliably responsive on an actual device. Sometimes the sliders were easy to drag, sometimes they seemed in need of a squirt of WD-40. It was hard to ditch all the work that I had put into that method of yard line setting, but I decided I had no choice but to code a new method.

The solution I came up with can be seen below.
The screen above shows how one enters the new line of scrimmage after a play has been completed. This screen appears whenever the user taps a button to record a play from scrimmage or a penalty (or simple need to adjust the current setting for the line of scrimmage). In the example shown the team with the ball has reached its opponent’s eleven yard line. Note that the “Defense’s End” is highlighted in the top control to indicate which end of the field the ball is in. That control also adjusts so that the ends of the field in the sense of right and left correspond to what the user sees, assuming the initial setup has been made correctly and the correct quarter has been maintained. Whenever the ball goes to the other team (currently called Defense), the labeling of the top control reverses (Offense becomes Defense and vice versa), so that the field situation is correctly mirrored. At the end of the first quarter, for example, the same switch takes place.

The yard marker for the current line of scrimmage is shown to be 11, and that choice has been made by tapping the tens place control (blank to 5) on its “1” and the ones place control (0 to 9) also on its “1”. There is no keyboard to deal with, and for short yardage plays only the ones place control needs to be adjusted in many cases.

The number 24 beside the “Check Gain” button shows that the user has tapped that button in order to see how many yards will be recorded as having been gained, assuming the ball is marked at the 11 yard line. The previous line of scrimmage must have been the opposing team’s 35. The “Record Pass” button is to be tapped once the user is satisfied with the choice of yard line (here the 11) and need not be tapped until the final spot has been made to minimize the need for adjustments. The button’s title being “Record Pass” indicates that the play just over was a completed pass. On a running play (or pass by someone other than the quarterback), it would be reading “Record Gain” (or “Record Loss”). The “Touchdown” button’s use is obvious, and in the case of a touchdown pass, there is no need to set the yard line button by hand.

The screen below shows the most basic results of the quarterback’s passes and also contains the buttons for registering which type of play has occurred. The pass results shouldn’t need description. The four buttons stacked in the lower right are for recording pass results or for canceling out the previously recorded play (“Undo”). We are especially interested in eliminating the chance for accidental recording by unconscious taps for these four buttons, so they all require a double tap to work. Double-tapping the “Incomp” button just increments the number of passes and the Down, which is displayed in the yellow area along with the yards needed to make a first down and the current location of the ball, which is the opponent’s 42-yard-line. The display of the “42” in red indicates the team with the ball has crossed midfield into the other team’s territory.
The down and yard marker are kept up to date by the app as a way of providng a check on whether the user has entered any data incorrectly. For example, if the user had failed to register that the team had crossed midfield, and had chosen the 42 yard line in the quarterback’s team’s end of the field, the display would be in black instead of red. As a further means of insuring ball movement is recorded in the proper direction, the user has two buttons to choose between for plays from scrimmage other than quarterback passes—”Other Loss” and “Other Gain”. If a gain has been chosen, then the new line of scrimmage must be in the right direction for a gain. The other buttons are to be used for what you’d expect given their titles. Kicks and turnovers lead to the other team having the ball, as do touchdowns. The “Go on Def.” button also gives the other team the ball, but shouldn’t be used except to correct a user mistake or when there’s been a fumble lost after a turnover of some kind not on a play from scrimmage (e.g. fumble lost on punt return).

Using OnScreen QB Stats just amounts to keeping track of the line of scrimmage and recording pass results. The app does all the calculations, including yards gained on passes. Recording pass results for a game on television can be challenging because so few announcers now state where the ball is after every play (I’d guess less than 25%). The line of scrimmage is often not shown until right before the snap, and it can often be difficult to see where a runner was tackled due to the camera angle when the tackle occurred (followed by the three replays with no view of the sideline markers). Even a televised game can be followed smoothly, though, after a little practice.

I think I can safely say that as of now there is not another app that allows one to record all of these passing results and view these stats for quarterbacks during the course of a game. So I’m hoping word gets out to those crazy folks (like me) that might like to have that power. If you know one, pass the word. It’s on the iTunes App Store here.

IPhone App Updates and Experiences

Tuesday, December 22nd, 2009

The biggest news on the app front is that OnScreen Science’s second iPhone app, OnScreen QB Stats, an app for recording, calculating, and reviewing the passing statistics of quarterbacks during and after football games, is now available on the iTunes App Store. I’ll devote another post to that soon, maybe tomorrow, but I want to catch up here on app number one, OnScreen Pitch Count.

OnScreen Pitch Count went on sale from the iTunes Apps Store August 26. I won’t go into the details of the typo I had in the press release I sent out or dwell on how the video I posted to show the app in action worked fine on a Mac or Windows PC, but not an iPhone. That’s all in the distant past, fixed and forgotten.

Once the app had made it to the iTunes App Store, I was looking to find reviewers for it to help get the word out. I’d had magazine reviews of my science education software in the past, all of them quite favorable (a four-star Macworld review of OnScreen Particle Physics caused a major uptick in sales years ago), but not in a long time and never, of course, for an iPhone app. My number one hope was that the Macworld web site would post a review. As luck would have it, Macworld had not long ago reviewed another pitch count app. That showed they had someone sufficiently interested and knowledgeable to do a review, but it might also make it less likely they’d want to devote space to another example in this little niche, even one that was better than the first, especially so late in the baseball season.

Apple provides every developer of an app forty “promo codes” for the free downloading of each new app or update. I sent a promo code with a review request to the email address of the Macworld reviewer, but never got so much as an acknowledgement. I hadn’t counted on a Macworld review anyway and had found other iPhone review sites (a good number of which are devoted solely to games) and approached a few of them. One or two review sites responded with the suggestion that I expedite a review by paying them. That I wasn’t about to do, and I wouldn’t really trust their reviews after knowing how they operate. A couple of reviewers took the trouble to download the app, test it thoroughly, and write a review of it, for which I am grateful.

The two iPhone app review sites that reviewed OnScreen Pitch Count were AppGirlReviews and JustAnotherMobileMonday (JAMM). I ran across the AppGirl on Twitter, and she was happy to take on the review (actually to pass it on to someone on her staff). I learned of the JAMM site via Google. JAMM had reviewed iScore, a baseball scorebook app, for the iPhone. This review showed the reviewer to be a baseball fan who liked to keep score during a game, which I thought, correctly as it turned out, made him a good candidate to review OnScreen Pitch Count.

Even though I felt the app was solid, and it had passed Apple’s review, I still felt some anxiety over the possibility, however unlikely, that a reviewer would uncover a crashing or data-scrambling bug. On that score I was quite relieved, as both reviewers had nothing but good experiences to report. There was plenty of agreement on the performance and power of the app and its ease of use, really, despite complaints about interface. The JAMM reviewer in particular disliked its looks, and I can’t blame him. I had used Apple’s Interface Builder’s oddly minimalist, totally two-dimensional rounded-rect default buttons for the interface.

My hope was that someone wanting to track a kid’s pitches wouldn’t be totally repelled by the looks, and I didn’t want to delay the app’s launch any more than I had to. Of course an unappealing interface can indicate overall lack of care, which by assumption might carry over to the actual functioning of the app. Fortunately, the reviewers used the app enough to see how well it worked. The JAMM reviewer couldn’t stand the app’s looks, but acknowledged that “like the story of the Ugly Duckling, there really is a fantastic and robust app hidden inside there.” In addition to general aesthetic objections, he wanted a more graphical interface (instead of labeled buttons presumably), but I confess I don’t know how to come up with something that would convey “ball” as well as the word. And so on. A great deal of experimentation went into button placement in fact during development.

For opposite reasons, which is interesting, both reviewers emphasized the limited market for OnScreen Pitch Count. The (male) AppGirl reviewer, in particular, seemed downright offended that I suggested in the app’s description that a normal fan might enjoy tracking pitches in a game he or she was watching. My claim was based on my own experience in testing the app, but the reviewer really took exception to the idea, noting that nonetheless he would let it pass and only report on how the app functioned. That is basically what he did, and he had plenty of good things to say, recommending it without qualification for coaches and parents of pitchers. But in closing he came back to say that otherwise it was of interest only to “fanatics,” and that it was “burdensome” to record pitch results. Despite all the positive things he’d said in the middle of the review (the only serious complaint was lack of email capability, which he thought was a “glaring” defect), he gave the app a mediocre numerical score.

The JAMM reviewer, on the other hand, felt the app would be of limited interest because a regular (not a fanatical) baseball fan wants to record much more than pitching data, as in a full scoring of batting and baserunning results. Clearly there is a wide range of fan interest in keeping personal track of what’s happening in a baseball game, from nothing to everything. I still think there are some that may want pitching stats in particular, since pitching is so important, especially when it comes to managers’ decisions.

I was so happy that both reviewers (real world people I’d never met) had found the app to work perfectly and to be of great potential use to its primary audience that I didn’t let any negative comments bother me. Really.

A little after the reviews appeared someone posted a user review on the iTunes App Store, which gave OnScreen Pitch Count five stars, but also mentioned the need for email. My first update would add email. This update (version 1.1) was approved and posted for sale on the iTunes App Store on September 17. After the update had been posted, I noticed the iTunes summary said that iPhone OS 3 was required for my app. Since I had gone to quite a bit of work (following Apple’s guidelines faithfully) to use the improved emailing capability of version 3, while providing downward compatibility with OS 2.2 (through use of weak binding and conditional execution, for the cognoscenti), I was not happy about this. My query to Apple was unanswered. I decided to live with it and move on to requiring OS 3 or greater for future updates. This affects iPhone customers almost not at all, but about half the iPod Touch users have yet to upgrade the OS, since they have to pay to do so. I recently discovered an iPhone developer discussion thread about this very problem of OS-requirement change as being due to an Apple bug.

Another user rating led to version 1.2. This user expressed the desire to see pitch results expressed in percentage form as well as total numbers. The update incorporating this new feature was posted for sale October 15. Finally, I addressed the ugliness issue and made the minimal, but significant, change to the use of better-looking buttons. The new buttons, while not photo-realistic, are pleasing I think, looking a bit like they’ve been rendered by colored pencil shading. Version 1.2.1 with the new look was approved as I wrote this.

UPDATE: See also “OnScreen Pitch Count 1.3 Is Now on the iTunes App Store”.

OnScreen Pitch Count Now On Sale on iTunes App Store!

Saturday, August 29th, 2009

OnScreen Pitch Count, my iPhone “app” for recording pitch results in a baseball or softball game has been approved for placement on the iTunes App Store and is now available for purchase, in the Sports department, naturally. The past couple of posts here (OnScreen Pitch Count: An iPhone App Preview and How I Made a Quick-and-Dirty Six-Minute Demo Video of My iPhone App) have been devoted to describing the app and my efforts to get it ready.

The only way to sell an app for the iPhone and iPod Touch is through the App Store, and Apple has to approve individually every app that goes on sale there. The estimated time for this approval had been quoted as about two weeks when I submitted OnScreen Pitch Count on the night of August 12. I hurried to get it done then because I was going to be out town for five days, visiting family.

I spent the next couple of weeks wondering if I’d somehow introduced a fatal bug at the last minute (“impossible,” but still one thinks about the impossible sometimes) or if the reviewer at Apple might be someone that didn’t know the first thing about baseball. The evening of August 26 arrived, and OnScreen Pitch Count still hadn’t been approved. Then, almost two weeks to the hour since I’d submitted my app, I got the email saying it was now on sale on the iTunes app store.

Sure enough, within an hour or so the link embedded in my email worked to take me to the OnScreen Particle app’s display on the iTunes App Store. Sure, it’s too late in the baseball season to make many sales now, but it’s still a good feeling to know the app has been approved.

Let me quote a couple of paragraphs from the iTunes app description:

OnScreen Pitch Count from OnScreen Science, Inc. is an app for anyone wanting to have the pulse of a baseball or softball game at his or her fingertips. Pitching is the key to the game, and with OnScreen Pitch Count you’ll have data that even the tv analysts don’t. You’ll know how many pitches each pitcher in the game has thrown and exactly what the net results of those pitches have been.

Whether you’re watching your favorite team play, listening to a game on the radio, sitting in the stands at your child’s Little League game, or coaching a game in which extra pitching data could help you make the right decision, you’ll find OnScreen Pitch Count enhances your enjoyment of the game as it increases your understanding of it.

If you enjoy following baseball or softball, and especially if you coach it at any level, you should check OnScreen Pitch out. Even if you don’t really need it until next spring, you might as well get it and learn it now. I welcome comments and questions. See the email address in the right hand column.

UPDATE: See also “IPhone App Updates and Experiences” and “OnScreen Pitch Count 1.3 Is Now on the iTunes App Store”.

OnScreen Pitch Count: An iPhone App Preview

Wednesday, August 5th, 2009

I’ve been explaining the infrequency of my postings here as due to the time I’ve spent working on an iPhone “app.” Now that it’s about to be submitted to the iTunes App Store for inclusion on that exclusive online site for selling (or even giving away) iPhone apps, it seems I should give my devoted readers a preview of the app: OnScreen Pitch Count, the first iPhone app from OnScreen Science, Inc.

Pitch Count? “How could you take that long to make a pitch counter?” you may be thinking (and perhaps “How is it better than the mechanical clicker kind you can buy at the hardware store?”). Hopefully a description of what the app can do will answer both those questions.

The screenshot below shows the main display and the buttons one taps to record pitch results. Incidentally, I considered naming the app OnScreen Pitch Results since it more accurately describes what the app keeps track of, but that name is two characters longer than allowed before being truncated in the App Store listings, so I’m going with Pitch Count, which may be better anyway. The name of the current pitcher is displayed at the top. This example is from a moment in this year’s MLB All Star game.

The buttons in the lower green area are the ones that record each pitch result. One of my first tasks was to determine just what I wanted to keep track of. I referred to my own experience as a Little League coach and also as an interested baseball fan. I rejected the level of detail that would include pitch location and pitch type (curve ball, fast ball, etc.) as being more than anyone but a pitching coach or scout would probably want or be able to handle, not even considering the difficulty in coming up with a user-friendly way of recording that much information for each pitch.

Using a basic knowledge of baseball and some trial and error, I came up with the buttons that are displayed above. In keeping track of strikes thrown we need not only to record pitches that add to the strike total in a given at bat but also the pitches that result in foul balls after two strikes have already been recorded or that result in balls being put into play, leading either to an out being recorded or to the batter reaching base. A great deal of thought and experiment went into choosing the size and placement of the buttons, which I have found to be easy to use in the actual flow of a game.

The bottom two rows of buttons are for recording pitches not put into play: balls and the three kinds of strikes. The Walk and Strikeout buttons are not enabled until four balls or three strikes have been registered. I found from experience that putting in the extra step of recording a walk or strikeout reduced the chance of error and made the situation that much clearer. The Undo button can be tapped to undo the results of as many as two pitches, for example for changing a ball into a called strike after a hasty tap made before the umpire had spoken. It can also, of course, be used to cancel an accidental tap of any button. When three strikes have been recorded, the Strikeout button is highlighted to indicate the next step, and all other ball and strike buttons are disabled until the strikeout is recorded or the strike call is undone. At any time, only the buttons that have meaning are enabled. For example, if there are no runners on base, the Basepath Out and Run buttons are disabled. At important steps such as recording the third out, the next button to be tapped is indicated by highlighting (as mentioned previously for recording a strikeout).

Above the two lower rows of buttons are those relevant to balls put into play and possible results with runners on base. As currently programmed, hits and errors are recorded but without the specific type of hit (single etc.). The Out button is tapped whenever a ball hit by the batter results in the batter being put out before reaching base or in a baserunner being forced out. A basepath out is recorded when a runner is put out not as the result of a hit ball, say caught stealing. In the case of a double play, both an out and a basepath out are recorded. This system of buttons keeps the hits, errors, outs, and current baserunners straight. The Other OB button is used to record batters reaching after being hit by a pitch and so on. It even has the option of the batter reaching first base after a dropped third strike, properly recording the strikeout while removing the out.

The middle yellow section above shows the current situation in the inning: outs, runners on base, and the ball and strike count on the hitter. The cumulative game totals of balls and strikes (including balls put in play etc.) for the current pitcher are shown above that section. A tap of the Details button brings up the cumulative game totals for pitch results, runs allowed, baserunners, etc. for the current pitcher, as shown in the screen shot below.


The pitcher whose results are shown above pitched only one inning as closer, but the same totals for every pitcher in the game can be brought up for inspection by a tap of the Review button followed by a scroll and a tap to select the pitcher from the list of those recorded (see below). All pitchers appearing in the game for either team can be recorded. Or, a single pitcher appearing at any point in the game can be followed alone, depending on the user’s interest. All of the data recorded in a given game is saved on the iPhone or iPod Touch and can be reviewed at any time with the OnScreen Pitch Count app.


When I started to work on this project there were no competing apps that I was aware of, but since then a few have appeared. OnScreen Pitch Count lies in between some that seem to be really barebones counters of balls and strikes (with limitations on the number of pitchers) and much more detailed “pitching scout” type apps that record more data but are aimed at tracking individual pitchers over time. I think OnScreen Pitch Count should find  a comfortable place in this niche of pitch recording apps. I’m pretty confident it can more than hold its own in usability and usefulness. As far as I’ve been able to tell from scanning app descriptions, OnScreen Pitch Count is the only app that properly charges runs to the pitcher that allowed the scoring runner to reach base even when the run scored after a relief pitcher had come into the game.

Of course, interrupting the pitch-recording to answer the iPhone or to play a game between innings has no effect on OnScreen Pitch Count, and it will resume right where it left off whenever it’s pressed into service again. This happens automatically for pauses of up to an hour, but you can resume any unfinished game at any time, whether after a long rain delay or after you’ve paused a game tape for days.

How much will it cost? I’m leaning toward $2.99. It would be worth a lot more than that to some people, but the way mass appeal apps have been forced to fight for attention on the App Store has led to popular games being sold for 99¢. OnScreen Pitch Count is not competing in the popular game market, but the depression in game prices has led to iPhone users’ expecting very low prices on anything they buy.

I should mention that I found in my testing of OnScreen Pitch Count, watching both local softball games and televised major league games, that the spectator experience was enhanced by following with such close attention and having so much information literally at my fingertips. I would have loved to have had the information when I was coaching Little League. It was a lot of work to program OnScreen Pitch Count, though the development tools Apple supplies are excellent. Further improvements and my next app (I have an idea!) will be easier, assuming I get on with it before I forget what I’ve learned.

In a day or two after I post this I should have more information about OnScreen Pitch Count up at this link: I plan to have a video demonstration.

UPDATE: See also “OnScreen Pitch Count Now On Sale on iTunes App Store!”, “IPhone App Updates and Experiences”, and “OnScreen Pitch Count 1.3 Is Now on the iTunes App Store”.