One of the reasons I love programming is that it’s the ultimate Lego set with infinite pieces and the tools used to build things just get better and better. The only real limit is your imagination.
One of the rules of programming that I try to take seriously is “Never Repeat Yourself, Never Repeat Yourself”. Although I call myself a programmer, I’m really a software engineer. I started thinking of myself as a software engineer back in the mid-80’s when I first learned C, Awk and the unix tools. I read a great book by Peter A. Darnell and Phillip E. Margolis called Software Engineering in C. This was the first time I heard a version of the NRY-NRY rule (also called DRY (Don’t Repeat Yourself) and DIE (Duplication is Evil)). They expressed the rule this way – “Needless redundancy is the hobgoblin of software engineering.”
Today is a fun day because I get to tackle a well defined problem with a well defined (in my mind) solution. It’s going to save me time in the long run and it’s one of those areas that I’ve been thinking about doing, but now that I’m going to translate Clutter into 4 other languages, it’s worth doing right now. Basically, I’m going to separate the text part of the button image from the button base. By doing this, I’ll just have to swap out text images for the new languages (the base 4-state button will remain the same).
While doing this, I will also redirect where some of the buttons live to make the translation step easier. As much as I’d love to have a minion to do this for me, by doing it myself, I don’t have to waste time explaining specifics, and it will work exactly the way I want it to.
Another nice thing, is that I’ll make it extensible but I won’t put in a lot of features…yet. It will be just enough to make the translation task easier, but it will lay the scaffolding for future enhancements. And that’s why it’s the ultimate Lego set. Every block can fit into any other block (if you want it to) and if you do it right you can swap out huge areas of blocks and know that you won’t affect other blocks in other areas. I will add this new separate text button feature and all the old button styles will just keep working. And once I do this, I can choose to use this new feature as often as I want it. It will be a new tool that will let me swap out a new interface just that much quicker.
Anyway, it’s going to be fun…which reminds me of something I used to say to an old boss and good friend of mine: “Having fun, learning tons, still not done”.