Updating an app and looking backwards

Do you ever look at your old code? We all do from time to time. Some of it's great, some not so great. And some of it was built at a time when you didn't have all the modern conveniences.

So this week I've had to open up an app that I have on the Apple App Store for close to five years because it hadn't been updated in a long time and Apple had mentioned that it is needing updating, so I decided to spend some time on it.

Interestingly the people buying the app from the App store didn't mind. In fact when the iPad Pro came out I got an email with a screenshot on the 12-inch iPad pro with the message "Running nicely"

Interestingly, the only difference when you run the app now is the pop up message saying its not up to date, and thats the annoyance thats there, not by anything else.

Chances are the app is more likely running on faster hardware and has actually made the app more performant with each subsequent iOS release and also with new iOS device that come out. In fact the old app was tweaked for performance and with each OS or device update it always got better.

Look at the app itself, the last time it was updated it was build for iOS6 and supported back to iOS5. These days we are running on iOS10 with much more fragmentation.

Overall it wasn't a pain to port it into the Unified world. The Xamarin project wizards take care of most of it, however there is a lot of drawing code in the project, so there was a move to the Unified types like CGSize instead of SizeF and the string measurement functions needed updating too.

Also the app was built at a time when Monotouch.Dialog couldn't do what I needed for the app, so I built a replacement for it that included Maps, Dates, Images, PDF support, Collapsable Sections and all sorts of things. That had to be moved over too and there was lots of little things.

The worst of the changes is knowing that the app was built without async/await and without LINQ, my favourite things to build apps on these days so I'm going to have to revisit it, but I don't like updating working code as that never ends well.

So far its taken about 4 hours to move it over, but looking at it with fresh eyes I've discovered a range of different capabilities that can be used with the app to make it even better such as the iPad Pro stylus support, better gesture detection and some swish animations.

Also, it is a good idea to look at old projects with fresh eyes. Many of my most successful projects have been projects that I'd done years ago, but they didn't have the technical capabilities to be done at that time. When I moved them to mobile they flourished as there was still a need, and it was easier to sell them on the store.

I've had a number of apps that I had developed over the years, some that I had taken to market and others that didn't have the right distribution channel to take to market. With the app store process these days it is very different so you should try.

The apps I have on the App store over the next year I am going to be doing some experimenting with and once the experiments have finished I'll be putting the results on the blog here.