Over the last couple of months development has concentrated on two different areas. One is the new features of the 1.1.3 version; which largely concern working with data and GridBubs. The other is the elimination of crashing bugs within Oovium.
The Crash Project:
The crash project has resulted in the spew of new versions: 184.108.40.206, 220.127.116.11, 18.104.22.168 and 22.214.171.124. After I finished 126.96.36.199, I started working on the 1.1.3 version. But, I was noticing a handful of crashes still with 188.8.131.52. I found the source of some of the crashes and made the questionable decision to attempt to comment out the 1.1.3 features, fix the bugs and release a new version. This of course added more bugs than it fixed until 184.108.40.206 came out. However, 220.127.116.11 has still not totally eliminated crashes.
I started development on Oovium on March 23, 2009; I have added large chunks of functionality and learned much about both Objective-C and Oovium itself in that time. In researching the Oovium crashes it has become apparent that the code base was in bad need of being entirely revisited. The last couple of weeks I have embarked on a project to massive refactor Oovium, both in small scale, looking line by line to root out any remaining memory issues and large scale, making sure the overall structure of the program is logical and efficient.
This project will greatly increase the stability of the Oovium app itself and will greatly increase the rate at which new features can be added to it.
The 1.1.3 Project:
The most obvious features of the 1.1.3 project is the adding of the long awaited String datatype, the total revamp of the GridBub and the addition of two new bubbles, the CastBub which will allow users to define their own data types and the MiruBub which I guess can be described as pivot tables on steroids.
However, it may be the case that 1.1.3 is the last version before I start work on 1.2 (the second aspect). And so, 1.1.3 represents the entirety of my original vision for the first aspect of Oovium. As such, I plan to add a number of other features to this version and really flesh out what can be accomplished within Oovium.
At any rate, the development of the new CastBub went well and I'm quite happy with how it turned out. I totally threw out the code for the old GridBub and started from scratch. I have not yet replicated all the functionality of the old GridBub (which had some pretty fancy features), however I'm close to that replication and the GridBub that does exist currently has massive performance gains over the old GridBub. Beyond this substantial new features need to be added to the GridBub. I have not really started work on the MiruBub except for laying down of some basic guidelines.
I have also got the beginnings of the String datatype functioning. Originally, this would have been difficult to accomplish given the tools exposed by SDK. However, with iOS 3.2+, new libraries were added that made this possible. Development on this was actually going pretty smoothly until I realized that the library I was using will not work for Japanese.
In order to handle custom text input for Japanese I would have to implement a substantially more complicated input controller. So, I have 3 options: 1: Don't implement Japanese strings initially; 2: Take on the possibly daunting task of implementing Japanese input handling; or 3: Come up with a kludgy solution that tries to invisibly hand off text handling to a UITextField in the midst of the editing of an equation. Personally, I really hate all of these options for various reasons. The 2nd option is probably the best long term solution, but could delay the 1.1.3 version for months. The 3rd option might be ok, but might not really be possible or the result may suck or be awkward. The 1st option is seriously tempting, but I hate leaving my Japanese users out in the cold.
Ultimately, I guess I'll attempt option 3 and see if I can come up with something elegant and quick; if not I'll drop back to option 1 with the idea that I would comeback with option 2 at a later date.
At any rate, I have a ton of work to do and it doesn't look like 1.1.3 will be out in the summer anytime. But, I think (hope) that the new version will seem like an entirely new program to current users. Hopefully, this will be the version that finally starts to make some waves and gets people to notice. At any rate, back to Xcode...