Lately I have let my blog alone. After coming back from NSConference, I decided to go a little bit in a tunnel down to the release of 321Run. So right now I am in that tunnel. What is 321Run? It's my iPhone runner's app I've been working on since December. It's almost ready for prime time, so I think I can now talk about it and feel confident that I'm not in total vaporware. What I originally wanted
When I came back to running, it was thanks to an invitation from a friend to a Nike+ challenge. That same friend made me discover Jiwok, a great site that combines free music with trainings to provide a better running experience. At the same time, and mostly during autumn, I mostly ran with my iPhone, and the lack of sound feedback from the different programs I tried annoyed me a lot : you cannot run and watch your ipod or iPhone at the same time. So I came up with the idea of an iPhone App that would collect your GPS position (been there), add stats and show tracks (done that), but would also give you a good feedback on how good you were doing. Then, in the meantime, others had the same idea as me and added these features in their app. Just not well enough for me : I don't want to have a web app when I have an iPhone, if you see what I mean... 321Run works by itself today, even if you can tweet your runs. It is mostly a network-less app. The last finishing touch I added is custom trainings. Custom trainings are great interval trainings in different sessions that really help you progress : you don't always do the same thing, and you go farther and farther. This is the key feature today of Jiwok. I have a program to help you learn to run, another to help you loose weight, and it goes to harder programs to run a marathon. Taking things out
I also spent a lot of time on features that are not yet good enough to make it to version 1.0. The first feature I didn't put in is export. I didn't find an open enough web site, with international dimension, that could meet my expectations as a runner. Those stupid Nike+ have protected all updates with signature, so that only Nike+ owners can only upload info from Nike+ devices. Other tracks web site were too general or too hiking centric. If you have a compelling recommendation, I'd be happy to visit great web sites. Another feature that won't make it for version 1.0 is the graph showing speed during the run : the info didn't make much sense, so I decided that it needed more work. There are other features planned of course. I'm having fun running, and running against other people, if you see what I mean. Even if I run slow and never make it to the first row. This was lesson 1 from Big Mike : fight against feature bloat. I heard other developers recommending the same since, such as Brent Simmons on Mac Dev Net or Daniel Jalkut (Hey Daniel, I'm using Mars Edit right now, where is my Markdown cheat sheet?).
I learned from both Mike Lee and Fraser Speirs is to code defensively. As I am not very good at anticipating bugs or users, I decided I should go through an extensive beta, and spend quality time with Instruments and Shark (Shark is on my todo list for tomorrow actually). Lesson 3 is about UI and custom controls. I spent some time with a graphic designer. Unfortunately we both don't have the time to go as far as I'd like, and I didn't ask her to come into the project soon enough. The design is not where I'd like it to be, but it's already way much better than everything I did by myself. And she's not a runner. It'll take more time to put Matt Gemmell's advices into action. Where I'm going now
Right now I'm also looking for testers and people who want to know more about 321Run. I want to make it a great app that makes users happy and enjoy running. If you're interested, contact me privately by email on gmail (my username is gmail). All in all, I think I've learned an awful lot on iPhone and Mac dev since beginning that project. I really wish I could spend more more time learning and sharing that knowledge: I'm still working 4 days a week for a web monitoring company. 321Run is one of the keys to be able to do it (Well I have one or two other ideas should this one fail). So the goal is there : become an indie. And support my family of three children. The coming weeks will tell if this attempt is the good one.