Tighten the Bolts

August 7, 2014

So I’ve started my first “real” Swift project. It’s a personal project that I started inspired by a conversation at work. When talking about building a small trivia app for a big event coming up at work, I was reminded that at my previous job I implemented a trivia game in four(ish) languages. Actionscript 2, Actionscript 3, FLEX, and JQuery for those keeping score.

While a trivia game sounds simple, and at it’s most naive implementation is simple, the more details you add the more complex it becomes. The most interesting twist is that I was building a trivia game for self-directed review, and so it had to assume that one user could take the same test more than once. This means randomizing the questions, randomizing the answers to the questions, and allowing the student to review the test and see what they got right and wrong for each question.

Doing that doesn’t take much code, but I’m proud of the fact that the new implementation that I wrote to do it last night is both more concise and more obvious in how it works than the previous versions. I’m hoping to sand off some of what I consider rough edges on the code, but it’s already at least half the length of my previous implementations with more functionality baked in.

The more exciting bit is that with the smart table view cell sizing and autolayout capabilities of iOS 8, I’m hoping to have almost zero text layout code, and minimal interaction code. My guess is that the final version will weigh in at 10-25% of the number of lines of my previous implementation.

I’m considering taking the totally impractical approach of creating an in-app editor for questions, and playing around with using iCloud storage to allow sharing, and spending far too much time building visually nifty inter-question transitions, but first I want to see if I can finish the core app within my 8-10 hour time target.