I fully plan on sticking to my goals – I just find it a lot easier if I get to change what my goals are as I go along (yes, even two days in). What does the guy I used to be at the start of the year know about who I am now and what I want to do, anyhow? (This will make a lot more sense the further on in the year we go)
So, basically, I’m not starting off by working on my writing program. I am subbing it out for another program instead, as a kind of practice. It means that I won’t have the writing program done in time for the April Camp NaNo, but on the other hand, it will turn out much better, so I’m calling it a win.
Instead, I’m writing a program on trebuchets (and finding it hard to think of how I could make this nerdier without simultaneously LARPing).
It’s a mathematical problem that is rather interesting, in the very general way that I am solving it, but mathematically solving it is 95% useless. It doesn’t tell me anything; it doesn’t give me numbers, predictions, or comparisons. Unfortunately, the solution is rather computationally intensive, hence writing a program.
Other than the sheer awesomeness of writing a program about trebuchets, this will give me a chance to explore three parts of QT that I need to get really good at in order to write my program on writing: Model/View programming, Multithreaded programs, and QML.
I haven’t done much with Model/View programming, and realize that that is a big lack. I have a pretty good conceptual grasp on the idea now, I think, but that also means I still have no idea how to do it. I should change that, and this gives me a good chance.
Multithreading is also one of those whiz-bang things to hear about, and a pain in the ASS for most programmers who have done it. QT simplifies it a lot, but I have never done it, and this definitely needs it. So much computation needs to run as efficiently as possible, as fast as possible, and not freeze up the UI.
Lastly, QML is QT’s Next Big Thing. It further separates the visual from the business logic, and adds transitions and effects easily. It’s also nothing like I’m used to, as it is (basically) XML instead of C++ to specify the look and such.
Also, I’ve never really done a design for a large program before. That’s something else I need to do, and mess up. I need to have these great ideas, this great structure in my head, get in the middle of it, realize I done fucked up, and then adjust. That way, I can start out pre-adjusted for next time.