Archive

Archive for the ‘Features’ Category

Printing support

October 21, 2012 Comments off

As part of version 3.8.4, I added the ability to print PDF reports straight from your iOS device to an AirPrint-enabled printer. Once a PDF file has been generated, simply tap the button at the top right of the screen and select Print.

See http://support.apple.com/kb/ht4356 for more details on AirPrint. Also its worth mentioning that it is possible to get this working with a non-AirPrint printer. I managed that using some 3rd party Mac software called handyPrint.

Let me know how you get on!

Syncing support in Account Tracker

October 17, 2012 Comments off

As you can probably tell, I have been somewhat busy recently. All of my apps needed updates to support the latest Dropbox APIs, otherwise this functionality would stop working in November/December. Then came iOS 6 which caused a few minor issues, and then (of course) the new iPhone/iPod Touch which have a different screen size. Keeping my existing apps working is my top priority!

On top of this, I have been testing the first release of Account Tracker for Windows Phone (now available). I am extremely pleased to say this is already the top paid personal finance app in the UK, the US, and a number of other countries (last time I checked, Canada, Australia, New Zealand … etc).

Account Tracker for the Mac has taken a back seat, as I’ve just not had the time. If anyone knows of an experienced OSX UI developer, perhaps this could be accelerated!

The next big feature coming soon is syncing. I have a solution for both Hill Lists and Meter Readings, but this won’t work very well for Account Tracker. My initial implementation will be based on iCloud and so can’t really be used for multiple people. However once I’ve done this, extending it to use Dropbox should be easy enough.

Please bear with me as I work through some final (and complex) issues. You really don’t want a solution that doesn’t work, or (worse) corrupts your data!

Importing transactions

September 18, 2012 Comments off

Remi Bergsma has posted a great article about how he imports transactions from his bank accounts into Account Tracker. He even provides some code to help with this, although to be fair you need to be fairly computer savvy to use it!

Check out his post: How to import your bank account transactions into the AccountTracker iPad app (by @ghaley) with ease.

Many thanks Remi!

Syncing

August 27, 2012 Comments off

icloudicons


As more and more people are buying multiple devices, it is natural to expect that they should all be able to access the same data.

This post is intended to cover some of the background about where your data is stored, and how syncing between devices might be achieved.

Data and Backups
First of all each device might run the same version of an app, however the data you are seeing only exists on the device itself. If you lose your device, or delete the app, you will of course lose your data too.

Apple provide two backup solutions (iTunes and iCloud), however all they do is allow you to store your apps and data on your computer or in the “cloud” for safety. They are not in themselves a way of sharing data (i.e. syncing) between devices.

Syncing (i.e. data synchronisation)
Syncing is actually VERY complicated. As the devices aren’t all running your app at the same time, you essentially need somewhere else to store your shared data. iCloud itself could be used for this purpose, as could Dropbox or any other cloud-based storage/server.

When do you write changes? You could do this every time you add or edit something, or you could batch up changes and write them when you are done. To me the best time to do this is when you close the app, however since you can’t run in the background for long, that rules out pretty much everything except iCloud. The latter is simply a local copy on your device, and the operating system (iOS) takes care of the rest.

Did I mention it was slow? Not the actual write itself, but copying data between devices. It can easily take 30 seconds or even minutes for your data to appear in the cloud, and then on other devices. And this assumes you have network connectivity (which you might not have).

This delay causes another major issue: handling conflicts. If two people are editing the same data at the same time, you somehow have to figure out what the end result should be. Asking the user what to do for each conflict would be too painful on a device as small as an iPhone.

Use Cases
This brings me on to why syncing is needed, and I think the answer depends on the app.

I can certainly understand that two people with a joint bank account might both want to add and edit transactions in the same database, which is probably the most complicated use case. But iCloud is not a great solution for this, as it is not designed to share data between users at all. It is there to make it easy for one person to see their data on multiple devices.

All of my apps already support data sharing using the backups feature. You basically make a backup on one device, copy the file to another device (iCloud makes this easy) and then restore it. I have therefore just spent most of the weekend heavily optimising this use case as follows …

1. If you have made any changes to your data, when you close the app a new backup is made and copied to iCloud. No user intervention needed.

2. When you are running the app, it will check to see if there are any newer backups available in the background. If so, a popup asks you to install it.

3. Backup management (i.e. automatically deleting older backups).

Solutions?
The single user use case is therefore solved with a SINGLE tap on the receiving device, with two conditions:

1. that you know you are essentially overwriting your data and not to go editing things on multiple devices at the same time (this eliminates the conflict resolution issue).

2. that you are aware of the amount of data you are copying (i.e. the whole database). The latter is fine on WiFi of course, especially for Hill Lists and Meter Readings.

To solve the multi-user use case, I need a better place to store the changes (probably not iCloud), and I need to optimise the amount of data being copied (e.g. only sending the changes themselves). For the record, I have a good handle on the last bit …

Account Tracker and auto-syncing

July 5, 2012 Comments off

All of my apps support iCloud today, however this is really just a convenient way to share (backup) files between devices. With Account Tracker in particular, many of you want the ability to edit your data on whatever device you happen to pick up, and for all other devices to “see” those changes automatically. This all sounds simple of course, but it really is a VERY difficult problem to solve.

HOWEVER … I have now come up with a reasonably good design for this, based initially around iCloud. It will let you share your data between multiple devices (2 or more) linked to the same iCloud account, and your accounts and transactions will be synced automatically between them. I have already prototyped this solution, and it seems to work well.

I have just submitted version 3.8.2 to Apple, and this lays the groundwork for my syncing solution. This will be released as part of version 3.9, hopefully within the next month. Unless of course my wife drags me off on holiday … 🙂

UPDATE 1 (14 Aug): I did go on holiday (Munro bagging), and I watched the Olympics – sorry! The more I get into syncing, the more problems I am uncovering and its far from trivial!! Back on this full time now …

UPDATE 2 (28 Aug): please see my latest post about syncing.

Transfers, budgets and reports

May 2, 2012 Comments off

I have just submitted version 3.8 to Apple, where I have changed the behaviour of transfer budgets and reports, hopefully for the better.

Previously, all the transfer amounts were added together which didn’t really tell you anything. With my latest changes, transfers IN will be added and transfers OUT will be subtracted, giving you a net value per category for the account or group. For example, if you transfer 100.00 from account A to account B using the category Savings, and in the same period you transfer 25.00 from account B back to account A using the same category, previously this would have been shown as 125.00. Now the result will depend on which account you are looking at, e.g. account A will show -75.00 and account B will show +75.00.

If you are looking at an account group that includes both A and B, then the net amount will be 0. The same applies when looking at all accounts (since transfers typically have no effect on the overall balance).

I believe this is a more logical thing to do, however if you think this is going to cause you problems, please get in touch.

iCloud and Backups

March 5, 2012 Comments off

atmricons


Account Tracker 3.7 and Meter Readings 3.1 (coming soon) support iCloud for transferring backups between devices.

iCloud is available in iOS 5 and above, and it must be enabled in your device’s settings, under iCloud. While you are there, Documents & Data MUST be enabled to allow applications to store documents and data in iCloud. Also if you are using an iPhone or a 3G-enabled iPad, there is a setting to allow your cellular data connection to be used to transfer documents. Clearly if this is disabled, and you are not on WiFi, then NOTHING will be copied.

In my app(s), you need to turn iCloud on in the settings. Then on the Backups screen, new backups will automatically be copied to iCloud, and the list of files available will include those in iCloud.

To check this is all working, start off by making a backup on one device (call this A). Then close my app, launch the main settings app, select iCloud, then Storage & Backup then finally Manage Storage. You should see my app under Documents & Data. Selecting it will let you see the files.

Next check that the files have been “made available” on your other device (B) by checking the main settings app as above. It can take a short while for this to happen.

Finally, see that the files are shown in my app under Backups (device B). Remote files will be shown in grey, and selecting them will let you restore the backup. If the latter says the file is corrupt, chances are it has simply not been copied between devices yet, i.e. it is not available. I will improve this warning in my next update.

If this doesn’t correct itself over time, make sure you have a WiFi connection or cellular data is enabled in the main iCloud settings.

Meter Readings and Backups

February 21, 2012 Comments off

Following my recent 3.0 update, a few people have left negative reviews because they feel “ripped off”. This is because they had previously bought my backups feature and I’ve now made it free for all users. So why did I do this?

Well, to help promote the app and make it cheaper to buy initially, I have removed some non-essential but useful features and added these as a separate in-app purchase (rather humorously called Power User Features – ok, I thought it was funny!). While new users pay less initially, those who want these extra features will end up paying the same as existing users who bought the backups feature.

Now on to the problem. Lets say an existing user wanted to install the app on a second device, e.g. a new iPad 3 (coming soon!). A fresh install would remove some of the features they paid for, and undoubtedly they would be VERY unhappy. By giving everyone access to the backups feature, they can get around this problem by backing up on their current device, and restoring on their new device.

Of course I lose out on a small revenue stream, but in the interests of customer satisfaction I felt it was the right thing to do. C’est la vie.

BTW a few users are STILL buying the backups feature. I can’t remove it from sale because not everyone can update to 3.0, however if you can update PLEASE do and save yourself £0.69/$0.99/€0.79.

iCloud and real-time syncing of data

November 29, 2011 Comments off

As I am getting many requests per week asking about iCloud support and real-time syncing between devices, I thought I’d add this post to explain the current situation.

None of my apps support iCloud today (in fact very few do!!). However they all support the ability to backup your data, copy it between devices, and restore it. Of course what you all really want is the ability to change something on one device, and have it magically appear on the other, perhaps even having two people do updates simultaneously. There are many issues with this, some of which are helped by iCloud …

1) your data files can get quite large, especially with lots of transactions (e.g.). Copying to the cloud, and downloading this again could potentially take minutes or longer. So when do you do this? It would be frustrating at launch time, and you can’t wait until you press the Home button to copy back to the cloud as you only have 5 seconds of execution time for background processing. iCloud helps with this (a lot), letting you copy data locally, and it handles the copying in the background.

2) conflict resolution. While it sounds easy, what if two or more devices are offline for extended periods, all editing the same data. When they reconnect to the cloud, it all needs to be sorted out. This is especially difficult, and Apple have left it up to us developers to sort out (they can’t solve it for us, as we all store data in different formats).

UPDATE (8th December):

I plan to support iCloud in three steps. The first is to use it for backups only, a bit like Dropbox works today. When you make a backup, this will be copied to iCloud and then (over time) pushed to all of your other devices. Your other devices will see this new file in seconds, but if it has not been downloaded, it will be displayed in grey. Tapping on it will force a download, then tapping again will let you restore it. I have all of this working in Account Tracker today, so it will be in my next update (other apps will get this too).

The next step is more complicated, and that is to allow your data to be pushed to the iCloud automatically (without backing up), such that other devices can always be using the latest data. While this sounds simple, there are a few issues to resolve first (like preventing simultaneous updates, and when to copy your data).

Finally, the highly complex issue of syncing simultaneous changes needs to be addressed. This is likely to take time to design and implement a workable solution. Please be patient! 🙂

Photo receipts

November 28, 2011 Comments off

I am thinking about adding support for photo receipts. While it is relatively easy to take a photo and associate it with a specific transaction, I don’t quite know how to handle backing them up (beyond the usual iTunes backup of my app data). Since photos tend to be quite large (and also numerous!), including them in my current backup solution would be impractical or even impossible. I can think of two solutions …

1) providing an option to copy these images to your saved photos/camera roll, accessible through the photos app, and therefore backed up to your computer separately. While this provides some additional level of security, if you ever had to retrieve them from your synced photos, there would be no way of associating them back to your transactions (because images don’t have names)

2) letting you make your own backups as and when you like. For example, a directory of images could easily be copied to your computer using iTunes file sharing

Of course both of these options are only an issue if you don’t fully trust iTunes to do its job of backing up (it does seem better than it was 2 years ago).

If you have any comments, please let me know by responding to this post.