Getting it backwards

Sometimes you spend an inordinate amount of time on a project, and in the course of it come across a problem you just can't solve. You struggle and struggle with it, and ultimately -- after lots of fruitless effort -- end up going with some half-assed workaround that's incredibly inelegant and stupid, but which gets the job done. You hate doing it, but you just can't figure out any other way, and there's a deadline so you just say "To hell with it" and move on.

And then in a blinding flash of light some time later, the right solution comes to you and you realize you were going about the entire thing exactly backwards.

Naturally the insight comes much too late to do you any actual good, thus making you feel twice the fool for not having thought of it before.

This is the situation I am in currently with the whole "FaceMaker/HeroMachine 3" preview items. In HeroMachine 2.x, keeping the preview items updated was a big pain. I had to manually cut and paste the lineart in to the preview boxes, and manually rename the button to match the item. If I misspelled anything, it wouldn't work. If I later wanted to change a name, I had to manually retype it in, again avoiding any silly mistakes. Adding new items was a pain.

So when I started working on this new code base upon which first the "HeroMachine Mini" apps would be built, and hopefully later HeroMachine 3, I wanted to figure out a way to have the preview items auto-populate. Only I couldn't figure out how. I really didn't want to go back to manually adding them all, but I couldn't see any other way around it.

Until today, just now, when I finally finished adding all the art and all the programming and it's too late to go back and change it all. So I'm going to have to manually add all the preview items in FaceMaker, knowing now that had I had this insight at the beginning instead of the end, I could have easily made it all work.

Very frustrating, even though at least now I see a way forward for the next version.

Of course I'm basically going to have to rewrite the program from scratch to make it all happen in the next version, which is also not appealing.

Feh. Sometimes a good insight too late is worse than never having had it at all.