Ah what a five days. I last claimed that I had added some features, particularly the ability to serialize out the state of the application, but unfortunately, I had just copied some old working code from another project, without checking the api, or even checking to make sure my feature worked. I burned about 4 hours tracking down the api change. It turned out that not only did I need to serialize my data, but I needed to tell the disk to save it. The fun part was that the system was calling this “syncronize” function by itself occasionally, so sometimes it would work, but most of the time it wouldn’t. Bugs that require precise timing to trigger are the worst.
Once I got this working, I cleared out a few more bugs that were things that I had added rather than me vs. my frameworks type bugs. Those went really quick, and helped out a bunch with the interaction. I quickly fell into another big bug when I hooked up my slow iphone (I had been testing on a 4g), and discovered that the app was completely unusably slow. It took me another few hours to realize that I needed to switch to release mode to get acceptable performance on the 3g. I had discovered this fact in the past, but it had been a while, and sometimes it takes a few hours to rediscover this fact. These types of memory failures remind me that while I am an ok programmer, I am a pretty horrible engineer. Maybe another 5 years doing this stuff will make me ok.
Finally, towards the end of the week, I started adding features that pushed the app from “simple prototype” into “releasable”. Basically this means that I added speed controls, so that not all your tunes will run at 120 bpm, and I added slidey transitions between all the screens. I sent the app out to some testers as well, and realized that it will probably be pretty important to have either a nicer startup screen, or include some demo patches for people to start with, because it is pretty obtuse when it first opens. Unfortunately adding those will require me to write another 3 screens or so. Arrgh, the last 10% is actually the last 90% and all that. Sending out the beta test did get me to start on the helpfile though. That helped with building excitement for the app I think, and it required me to work out a design for the icon and splash screen, which will help with marketing.