The first application that I intend to write for Android will be a mobile version of my own ExIf 35 application. I have chosen to do this for several reasons. First, I need an application that has a clear purpose to write for my first application while I am learning. Second, at the current time the desktop version of the application relies on my use of a notes application for iOS or Android (carrying the device with me) or carrying a physical notepad and pen. This also requires me manually keeping track of a time stamp, which is in itself a waste of time.
The first issue is fairly straight-forward. Its harder to write a good piece of software if you don’t know where its going, and you really can’t put a lot of effort into pre-designing the application because you don’t know exactly what the constructs of the development environment entail. Through using ExIf 35 as my base I know what its supposed to look like, what its supposed to do and I have a rough idea of how to get there, but the new environment still takes time to learn. Another advantage of using ExIf 35 is that the object classes are already written, so I don’t have to spend valuable time in the learning process trying to write a new object. My Exposure.cs and Roll.cs will be attached to the new application just as they are to the old one, and the cool thing is, if this works out, then I can keep them synced with each other and not have to ever unlink them (they are objects, thus not platform or environment dependent). While this means that I do still have to write and compile in C#, I am not bothered by this idea. Mono (open-source version of .NET) is a good and usually efficient set of libraries which should work well for what I am trying to accomplish.
There have been complaints about ExIf 35 not being mobile since the day I released it publically (literally, same day someone on Flickr demanded an iOS variant). I have to agree with these complaints, since I still have to use a notepad app on my phone or on my iPod to keep track of my exposures until I get back to my desktop to transfer them. This is a waste of time as it requires me entering the data twice. I considered writing a method that could use a standardize text file as input, but unfortunately humans aren’t very good at doing things in a standard way and we use so many personal conventions in recording things that it would require as much time to train a human to write the file as it would to write the application to do it automatically. The other issue is time-keeping. It is important for the purposes of ExIf 35 that times be kept fairly well and as such it is inefficient to have a human keep time, it just happens. I have also found that in using a notes application or a physical notepad I am less likely to enter the extended details of an image (filters used, whether it was close, macro or far, or any number of other settings) than if I were entering it in the desktop application immediately after shooting. While I do not anticipate having all of this information recorded from the start of the mobile app, it will be simple to use since the object class will be maintained.
The hard part for me about writing the existing application over will be trying to remember how I did it. At present the application opens to the last file known, it knows to create a new file if there isn’t one and any number of other little goodies that I don’t even remember because it comes together so seamlessly. I don’t remember exactly what functions I wrote first before, and thus I will have to start from scratch at remembering how to do them again. A lot of code will be borrowed from ExIf 35, but transferring such a complex set of code over to the new application will result in a number of problems until I get everything sorted out and linked with where it is supposed to go, so I won’t do very much of that until the basics are implemented.
A final concern I have about writing the new application is its impact on its desktop predecessor. I will not immediately have the capability to sync data between ExIf 35 PC and the Android version, so I will mostly work on an active file and then transfer it back to the desktop at the same time as I take the roll out of the camera and only use the desktop version for making changes or for writing the data to the image files. This changes the primary role of the application and therefore I will have to re-evaluate the design of the desktop version. Its going to be an iterative process from borrowing the code through the impact on its predecessor.