Re-inventing the wheel
Starting 2009 ABC-tool faced some challenges regarding development. The program has been undergoing some enormous changes since I joined the company and one of the biggest was yet to be seen.
Since the program was first introduced to the marked there had been a desire to have some sort of database underneath it all to hold data along with calculation results and overall program state. The nature of the program only allowed users to import and export files which in many cases was far too little. Upon my arrival to the company one of my first comments (easy made because I’m not really there to make up sellable buzz words) where something like “I don’t think you mean database – you simply just want a save function”. Besides that I probably had a lot of other comments as well but the essence here being what mostly describes my work: finding out what people want. This is a classical example of users focusing on how they want it instead of what they want. Needless to say that ABC-tool can now store the program state in project files with absolutely no use of databases.
Which leads me to the wheel-inventing part!
The development team where set on a quest to create a file format from scratch to support the numerous functions that our program holds. Furthermore we where very aware that the requirements to this format could/can change over night – nothing is certain. Last but not least we needed the format to be easy to debug and human readable (shortening development time) and make it easy to implement readers for other programming languages.
Numb from thinking big thoughts I reached into the back of my head and thought: XML! Now there is a format that keeps the human readability in serialized form. Furthermore XML supports all the gibberish that we would ever think to stuff into it – and it is very expandable. The only problems would be that we need to stuff all our data into one single document – fairly easy to accomplish – and then the size of the document would be an issue when dealing with large data files. The last point would be a problem not easily solved by developers (us) but very annoying to users. Imagine a file containing what seems to be a small amount of data craving 100+ MB of storage space – ouch! The fact is that at many similar records – especially when record node names are long – XML sucks! A lot! This takes up way too much disk space due to the fact that node names are repeated for every record.
So – our natural thought was: How do we solve this problem during development and make this the best solution mankind has every seen? The answer was short: Compression! (a fairly long word to be honest!). The compression solution actually also solves the other problem we had and lets us distribute our data into different files. So – as you probably have guessed – the file format that we use to store data, calculations and program state is simply a bunch of XML files organized in one single compressed ZIP-file. Simple and neat. Now where have I head about such a solution before? Oh yeah – the new Microsoft Office formats! I call it: The wheel – re-invented.
Leave a Reply
No Comment
Be the first to respond!