New attendance app

The current version of Attendance has reached some limits on features I can add given some of the original design decisions. The original app was developed when iOS 2.0 was current which limited some of the features that could be implemented and how I designed the original internal data structures. I also had no idea how many different ways people would want to use the app so I had to try to add new features and make them fit with the original user interface and without major changes to the internal data structures.

Because of this, I decided to do a complete rewrite and develop a new app from scratch using Apple's Core Data technology which was not available for iOS 2.0. Since the internal data structures are completely different, I cannot easily make it an update to the existing app and I've tried to redesign the user interface to be more intuitive and require fewer presses/touches for common tasks so the interface is completely different. Also, the new app will require iOS 5 or higher, while the current Attendance app will run on any iOS 4.0 or higher device. Apple doesn't provide a way to transition people to a new different app (i.e., there's no way to give discounts to the people who have bought one app in the last year). I don't make my apps free because there are no ads (ads are not a good fit for an attendance app), it takes a lot of my time to write, and there's the time to answer emails. In three years, I've answered a few thousand emails and obviously a free app would cause even more people to try it and email questions. So far I've been able to provide a personal response to everyone that has asked a question, but if the app ever sold more than a few copies a day, I'd never be able to keep up. Selling a few copies a day at $5 (USD) (of which I get $3.50) does not allow me to quit my day job and do this full time. And there are associated costs with the app (web site, annual developer fees, extra test device, etc.) so I need to charge enough to cover these costs and justify spending my limited free time on it. At this point, I've spent about five full-time weeks of working on the new app (mostly over the December break) and there's probably at least another five to eight weeks of full-time work to reach the point where version 1.0 can be released.

So given the options, here is the plan. I plan to release the new app in June or July of this year (2012 for anyone reading this much later) and will have an introductory price of $4 (USD) for two weeks for anyone who wants to purchase the new app before raising it to $5 or $6 depending on how many features I add in the original version. I will post an announcement on this blog and on Twitter (@davereed) when the app nears its release (along with screenshots and more information).

I plan to continue to support the existing Attendance app for at least one more major iOS revision. In other words, assuming Apple follows their pattern and releases one major iOS upgrade per year, I will make certain the current Attendance app still runs on iOS 6.0 without problems so anyone that has purchased the existing app should be able to use it at least through the summer of 2013. Obviously, if you haven't purchased Attendance already, and don't need it until this summer, you should wait and buy the new app when it is released. But this way, anyone who has spent $3-$5 on it in the past should get another 15-18 months use out of it. I'm certain some people will be upset, but there's no good option given the complete rewrite of the app and hopefully people will understand that $5 is reasonable for an app that you use frequently.

To continue allowing updates to the existing Attendance app, I will need to leave it for sale (so I can provide free updates for iOS 6 compatibility). Once I release the new app, I will probably raise the price of the current Attendance app to something like $100 so people don't accidentally buy it and have an occasional one-day $5 sale for people that have iOS 4 devices and want to purchase the old version. If anyone knows of a better way to be able to handle free updates without leaving the current version for sale, please let me know, but given the options Apple provides, I don't think there is.

The new app uses a separate file per course instead of one database file (the attend.db file) as is the case with Attendance. This will allow people to send their data to another person app and the person will be able to look at the data using the new app on their device, without overwriting their existing data on your app. So teachers could send their data to the administrative office, a professor's TA could make a separate class for their TA sessions and send that to the professor, etc.

Here is a list of the main improvements:

  • simpler GUI (course-based instead of tab-based)

  • improved CSV import (allows you to match the columns of a CSV file to the fields in the app)

  • 5 custom fields to store any data you want (instrument for band directors, etc.)

  • three lines per student while taking attendance

    • first line contains first name/nick name and optionally the middle name

    • second and third lines are customizable and can hold any of: middle name, last name, ID #, note, or any of the five custom fields

  • sort by first, middle, last identifier,note or any of the five custom fields (and secondary sort on these also)

  • specify which student fields to include in reports (i.e., you can include ID, email or phone or the 5 custom fields, etc.)

  • option to show only people who are present (in addition to the ability to hide those that are present) while taking attendance

  • optional second status to record values such as homework received, participation value, or check people out (useful for daycare situations)

  • each status has a "point" value

    • can use it to record values such as 0.5 for Late, 1.0 for Absent

    • or use the points to total participation points in the secondary status

    • can set name to display in red when a certain point value is reached

    • summary report can optionally show the point totals

  • optionally indicate what times your course meets so you can add the next date in one press

  • I probably will add an optional app pass code now that Apple provides the ability to encrypt data files

Most of the features in the current Attendance app will exist in the new app by this summer when I release it. Here are the features that exist in the current Attendance app but probably will NOT exist in the new version:

  • Likely will never add

    • import from Address Book

      • was the only way to import names in iOS 2.0 but better ways now with CSV files from email or Dropbox

    • device transfer to copy data to another device (Dropbox and email are better, simpler, and more reliable)

  • Possibly will add

    • Group texting

      • most carriers limit SMS group texts to 8-10 people so this has never worked well

      • I need to find out if there's a better way to support this and if so, will add it

      • sending an individual SMS to one person will continue to exist

I haven't yet decided if will add a way to import your existing Attendance data from the attend.db file. While this would probably increase sales, I don't know if I'll have time to get to it and want to make certain I release the app this summer so people can start using it in August (which is the time when many people start new terms/semesters/courses). It will be a fair amount of work to do the import and obviously is code that would only be used once so I don't know how much time I should devote to it over other features.

Another question I suspect I'll get is about iCloud support. At this point, I am not certain. iCloud makes automatic changes to your data so I'm very worried about this causing "corrupt data" and how conflicts are handled (i.e., what happens if one of your devices has someone marked absent and the other device has them marked present for a given date and how would this work when copying data files between multiple devices manually). My guess is the initial version released this summer will not have iCloud support, but I will try to look into it later in the summer. You'll still be able to copy (not sync) a course to another device by emailing (or using Dropbox) the course data file and opening it on the other device.

So, if you've read this far, you deserve the option to possibly help shape the new version. I've got enough features that I'm using it this semester after working on it for about five full weeks (most of which was done over the December holiday break) and double-entering data in the original Attendance app to check the data. So if you have comments, please send an email to me: dave256apps (at) me (dot) com with the subject "new app features" and I'll take a look. Try to be as exact/explicit about your feature request as possible. I won't guarantee I'll respond to these, but I will read all of them.

The main items I need to work on yet are:

  • random student feature

    • do I provide the option to save the random groups so you can record who was in the groups you created

      • for example, I might create groups of two for the first assignment and want to go back and see who was in those groups; right now you can email the group to yourself, but storing it in the app might be useful

    • do I provide the option to then drag and drop students between groups to adjust the group

    • anything else I haven't thought of for random groups

  • reports

    • the only report completed so far is the summary report

    • what other reports would be helpful and how should they be formatted

    • there are still options to email a report for a day to yourself or the school office (including a full report or just the absent students) and the ability to send a report for an individual student to yourself, the student, or someone else

    • because each "course" is a separate data file, the reports will initially be per course, but perhaps later I will try to add reports for a student across all courses

I think most people will find the new interface design simpler and that the new features make it well worth buying the new app, but again, you should be able to continue using the existing Attendance app for at least another year (or longer if you don't update the iOS version).


Attendance and GradeA updates

Please note: all new Attendance updates will require iOS 4.0 or higher.

This has been a particularly busy semester for me so I haven't had time for many updates other than quick bug fixes. I had tested Attendance on the iOS 5 betas and while it seemed a little slow, that's fairly common for beta releases that are not fully optimized. Unfortunately, Attendance was still slow in the iOS 5 release, especially on the Take tab when selecting a date to take attendance for that date. I was able to track down the problem to a slow calculation for computing the attendance totals for each student. I am surprised that it became much slower on iOS 5, but I was able to add an index in the SQLite database for the table used there and it seems to have improved the speed significantly. I also fixed a crash on iOS 5 when using the option to tap and hold a status (gives you a popover on the iPad with the statuses so you can select one and a new screen on the iPhone/Touch for selecting a status). I've submitted this update (version 4.6.3) to Apple so I am hopeful it will be out late next week (i.e., late October 2011).

I see at least one review in iTunes asking about iCloud syncing. True syncing (i.e., if the data can be changed on multiple devices between sync) is very difficult. As far as I can tell, iCloud doesn't actually provide any help for true syncing but can copy the data between devices. Attendance supports using Dropbox (options on the Add/View tab) for copying data (not syncing) between devices so for now I'm going to continue to recommend that for copying data between your multiple iOS devices. The rule is you need to be using a device that has the latest copy of the data before you start changing the data or you will lose information. So if you have an iPhone and use the Backup to Dropbox/Attendance on it, you must use the Restore from Dropbox/Attendance option on your iPad before you use it to take Attendance. When I have more time I will look into iCloud again but I'm not optimistic it has any support for true syncing. And any support for true syncing would require a complete rewrite of the application to include the internal data structures for syncing.

I've also been working on an update to GradeA. The Mac App Store is going to require that all apps for sale in it are "sandboxed." This limits the data they can access on your computer. The only real limitation this applies to GradeA are the ability to email grades and records automatically from GradeA. Apple is recommending a separate process (they call it an XPC service) for services such as this where they will allow (at least temporarily) exceptions to the sandboxing rules. So I have been working on an update that will use an XPC service to send the data. This will be transparent to the user (i.e., you won't notice it), but does require significant changes to the emailing portion of the app. I am in the final testing phase and plan to submit it to Apple sometime in the next week. This will be version 2.1 of GradeA.



Attendance 4.5 available

Attendance 4.5 has been approved by Apple. The main new feature is that on devices that support background tasks, the Backup to Dropbox option will continue in the background so you do not need to leave the app open while the upload completes. Apps may run for a limited time in the background before iOS terminates them so if you have a slow connection or have a large number of photos, they may not complete, but in most cases the attend.db file should upload successfully in the background. The next time you open Attendance you will see a success or failure dialog.

This version still runs on iOS 3.1, but this is likely the last version that will. There is a dialog for those running Attendance on iOS 3.1 asking them to email me for details on how to save the current version on their computer in case they accidentally update to a new version (so they can restore it). My guess is there are very few people still running Attendance on iOS 3.1, but I will see how many people email me. Unless there are a large number of people still using it on iOS 3.1, the next version will require iOS 4.0 or higher.



GradeA 2.0 available

GradeA 2.0 is now available in the Mac App Store (link). It adds the ability to take attendance and also import/export data to my iOS Attendance app.

If you plan to use GradeA with my iOS Attendance app, you must enter a unique value for the ID (identifier) field for each student as that is the value used to match students between the two programs. The simplest way to use them together is to create your class using one system or the other and enter an ID value for each student and then import the data into the other system. I have made a few videos showing these features (link) with higher quality versions here: I've also started a FAQ for GradeA (link).

Version 2.0 also includes an updated Help file (available from the Help menu of GradeA) describing how to use these new features in more detail. The free demo version available here has also been updated to version 2.0.



GradeA 2.0 with attendance support coming soon

I've submitted version 2.0 of GradeA to Apple for them to approve. It adds attendance support to GradeA. Using these new features you will be able to:

  • use GradeA as a stand-alone system to take attendance in addition to recording grades
  • if you also use my iOS Attendance app, you will be able to import your Attendance records into GradeA
  • use GradeA to enter your names and export them into my iOS Attendance alleviating the need to create CSV files for importing into Attendance

If you plan to use GradeA with my iOS Attendance app, you must enter a unique value for the ID (identifier) field for each student as that is the value used to match students between the two program. I have made a few videos showing these upcoming features that you can view at Version 2.0 also includes an updated Help file (available from the Help menu of GradeA) describing how to use these new features in more detail.

I will also update the GradeA demo version when Apple approves the new version. Even though the demo version limits you to five students per class, it will support exporting students to your iOS Attendance course. You will be able to enter five names, export them, delete those names from the GradeA file, add up to five more names, and export them.