It’s been a long time since I’ve done any iOS development in Objective C. A really long time. When I last looked at it, I wasn’t exactly fluent. Things were still a little alien to me. Although I was able to get through the work I had to do ok, some of the concepts, workflows and development patterns were very different to my day-to-day comfort zone in my web development environment. Going on and off a language as and when development requires is no way to learn it, so I’ve set myself a day to get back into the swing of things.
The Big Idea
I’m getting married in the summer. Yay! Really though, this is great. But what else is great is the great amount of organisation needed. Typically there’s the age-old problem of so much to do and so little time. In this industry we rely on lots of tools to keep an eye on progress. You’d probably think there are LOADS of wedding planning apps out there and you’d be right. There are individual apps for specific purposes. Like a checklist of things to do, a countdown to your wedding (yes, really – a whole app), or more useful things like the ability to create your guest list and even sort out your table plan.
What you can’t do is create a guest list, assign guests to invitations and tables, generate PDFs of invitations to be printed, create a gift list, create menu choices, give guests the ability to RSVP, choose their menu choice and view gift list online while seamlessly recording this all for reporting purposes and peace of mind on the day.
The development plan
Ok, so that’s a fairly ambitious plan given what I said at the start of this blog post about my lack of confidence with iOS development. In saying that, I guess some of the more complex things will be offloaded to the server and done in PHP (where I feel much more at home). The PDF generation for example will be done server side. The guest interaction will all be done through a web browser with a simple and responsive UI that will work well on desktop and mobile devices.
However, I want to start with the app. I put some of the “bones” of a web service in place a couple of months back when I was planning this, but I haven’t had time since that to work on it. So for now I want to concentrate on the app. Where to start? Well…
One step back, two steps forward
At the start of the year, I decided to do something drastic. I went back to basics. I subscribed to the Stanford iPhone Development series of lectures on iTunes. I’ve actually seen a few of these before (a couple of years ago), but it’s just been too long. In fairness I was very bored watching the first one and skipped past a fair chunk of it. However, getting on to the second and third one I realised there were some aspects of iOS 6 development that I would never have known about had I not watched these videos. In fairness I’ve not watched many more than the first few, even though there are 9 or so that have been released, but it’s been enough to whet my appetite.
So, a week or two ago I started putting together the core data model for my app and the storyboard of how I saw the basic, initial features working. I’m not worrying about how nice the actual “views” are at all for now, and that’s for a couple of reasons. Firstly, that is not my area of expertise at all – I’m no designer. Secondly, I’m doing it as a matter of principle. I’m going to use it as a test of how well I build this app to the MVC (model-view-controller) development/architecture pattern.
I initially want to build an iPhone app, but I can think of really useful features to do on the iPad too. Table planning for instance would be way, way better on the iPad. Since I don’t have an iPad and I’m initially doing this for my own use, I’ll leave that for now though. The point is, if I do this right and build a really solid table planner model (and to some extent the controller) my new iPad view in the future should be really easy to hook in.
Getting stuck in
So that’s the plan! It’s now half way through the day I’ve set aside to get this properly underway, so I better get moving. Realistically, I’m not going to have this ready to be a product any time soon. What I will have is the start of something I may want to “productise” at some point (probably long after our wedding), but more importantly I’ll have something that will be the starting point of what will hopefully be a long, happy and loving relationship…
… with Xcode.
* Image by tswicegood @ Flickr