![]() |
![]() ![]() ![]()
LIBRARY
|
Home
![]() ![]() ![]() ![]() ![]() |
|
![]() ![]() |
Archiveby F J Willett
|
![]() |
I have an urgent hazard advice for all users of ZOO, ZIP, ARC, PAK and other archive programs. The other day I was mucking about archiving my hard disk when, just for the hell of it I built a batch file that would take a file, archive it, take the archive, compress it again with a different archiver, and so on through every archiver on my hard disk. It's well known that you can only compress a file so far. After that you actually create bigger files as the archiver adds on its overhead to the already compressed file, but I thought it would be a good way to check out how much overhead each archiver adds to the file. I was merrily running a bunch of test files (WINDOWS actually) through different combinations of archivers when something strange happened. In one particular configuration of archivers the size of the compressed files emerged 25% smaller that it should have. Something strange was going on. I unpacked the files by reversing the order of compression and I recovered all my Windows files without any apparent problems. But when I tried to run Windows there was one odd thing. The version number had gone up from Windows 3.1 to Windows 5.1a. I ran Windows and the differences were immediately apparent. There were a whole lot of new wall papers and screen savers. More icons and a better collection of games. Some things, though hadn't changed. Program Manager was still it's useless old self, and Windows still crashed, of course, but now at least it didn't crash quite as often, and when it did crash instead of the cold impersonal "Application Error" message, came the much more user friendly "Sorry, Application Error". As well Windows was running much faster on my 286. There was now only time for one cup of coffee while the program was booting. It was clearly a major Microsoft upgrade. But there was still the question, how on earth did I wind up with version 5.1a of Windows? I thought they hadn't got that far yet. Weren't they still at version 3.1 with version 4 a hazy idea somewhere off in the distance in the land of vaporware? Try as I might I couldn't find any way that version 5.1a could have come into my possession unless... I ran the batch file again. Once more the Windows files were compressed to some 25% more than they should be. I gritted my teeth (I don't know why, I just did) and ran the compression program again. With something akin to trepidation I typed DIR and looked at the size of the archive. It had shrunk again. Again by nearly 25%. Nearly 50% more than the maximum compression a single archiver can achieve. What was going on here? Again I unpacked the Windows files, but this time my humble 6M of Windows unpacked to an incredible 27M of programs, directories and data. And what was even more confusing, the files no longer belonged to Windows, but Word for Windows Version 32.601b As you might expect I dipped into these files with some interest. I ran the program and let me tell you that the features you are going to get when Word for Windows Version 32.601b hits the sales counter some time in the middle of the 22nd century are slightly interesting. The most amazing feature is the artificial intelligence engines built into all parts of the program. No sooner do you attempt to start the program than you run into the first AI module. The Auto Log-On feature monitors your usage of the program and tries to build a predictive model of your log-on habits. After a few sessions it's quite normal to sit down at the PC to find that Word has already switched itself on for you. More of a worry, though, and something that takes a little getting used to is the programs Nag Feature. After a couple of late nights working on a project I sat down at the computer one morning to find the following message on my screen. "Where were you last night?" "What do you mean," I typed. "I waited up for you until nearly two. Where where you?" This feature was evidentially added at the behest of Company Managers. The theory is that the program works to ensure you stick at your tasks and don't loaf off and waste the company's time. Personally I recommend you disable this feature The main use of AI, and where the program really unleashes it's power, is in the text entry screen. As soon as you start typing this version of Word starts to analyse your text, your style, your subject matter, speed of typing and syntax and finishes the story for you. In fact this story was typed using Word for Windows Version 32.610b. No sooner had I started typing ARCHIVE than the program analysed my style, my subject, my IQ and what I had for breakfast that morning (displayed on the status line) and finished the story for me. All I had to do was read the story through and check the program had got it right. (The program even included this note noting the fact that I noted the note). There is no doubting the fact that Word of Windows Version 32.601b is really something. In a burst of creative activity that lasted all of five minutes I typed three sentences and produced three novels. One of these novels has been published under a pseudonym and is already in the best seller lists and has been short-listed for the Booker Prize. In fact I'm about to sign a lucrative movie contract for it this very afternoon, but I'm not going to tell you any more about that because frankly it's none of your business. I began a systematic investigation of the archiver batch file to attempt to find out what was going on and where these new programs were coming from. It wasn't long before I established the following pattern. Compressing the file 25% beyond normal resulted in the random production of a file very similar to the original. Some times the original file would be returned, sometimes an earlier or later version of the same file. Compression of 50% (or to put it another way, two passes through the archiving batch file) produced a much wider range of output files. Some were quite exotic. others were remarkable for their historical value. For example I twice unpacked Windows to find it had turned into QDOS. A fact that those in the know will not find surprising, and many will consider an improvement. A pattern was emerging. The denser a file was packed the less likely it was the re-inflated version would resemble the original program. It was almost like a photograph being saved at lower and lower resolution. Unmistakably Aunty Mavis with her husband and cat being gradually transformed into an unrecognisable blur until it was impossible to tell which was the husband and which was the cat. Except that in this case a working program could always be recovered, even if it wasn't the original program. The question was, how was it happening. mere distortion would not give the observed results. Any error in a program should reduce that program to effective garbage. The chances of any random change in a program producing a worthwhile new program was about as remote as the foothills of Nix Olympica. Clearly something else was happening. My suspicions turned on the archivers themselves. Most of them were widely used programs noted for their stability and reliability. Not the sort of thing you'd expect to give trouble, even when used in a slightly novel context. One archiver, however, stood out. It was a program I had newly downloaded from my favourite bulletin board. Rather than compress files by traditional methods this archiver attempted to find fractal algorithms which, when applied to a much smaller data set would generate the required files and programs. For instance in the real world the algorithm for producing a word processing program goes something like this.
The archiver was attempting to duplicate this process. Blocks of code were stored as a single mathematical formula. Solving this formula gave an answer in bytes which was the original program. By itself this method ought not have any different effects to any other archiver. There was, however, another compression method in use in the archiver and the interaction of these two compression methods looked more and more like the source of the trouble. This second compression method was rather interesting. Instead of attempting to recover the compressed files and programs exactly, the archiver was using built in programming modules to construct a new set of programs -functionally equivalent to the original programs - using an archived description of those programs. This is, in many ways a laudable approach to program archiving. After all, what does it matter how a program works internally so long as it has the look and feel of the original program? And consider the advantages of this method. Any program consisted almost entirely of smaller modules, and most of those modules are standard routines which can be found in nearly every program. In fact the essence of modern programming is plugging pre-existing modules together in the right order. If an archiver can have available a standard set of modules then it need not attempt to compress those modules, but merely note the fact that this or that module plugs in here. The scope for improved compression ratios is enormous. It was clear that the interaction of these two compression methods was the problem. At each pass through the archivers the fractal "picture" was loosing more and more of its definition. The message "Write an operating system program for Windows version 3.1" was being abbreviated to "Write a program for Windows" to eventually "Write a program". The interesting thing was that although the description of the archived program was being eroded at every step of the compression process the output always remained a viable program regardless of how little it resembled the original. Though this at first glance seems an unlikely outcome it should be clear that it was inevitable given the way in which the archiver reconstructed it's programs. The program was being reassembled from pre-existing modules. Sure the description from which the program was being built was corrupted, but each of the modules was itself a perfectly functioning unit, and ought to function correctly regardless of the context in which it was hung. At least, in theory. You see, I ran into a problem. And that is why I'm writing this article (or rather Word for Windows Version 32.601b is). When I initially read what Word for Windows Version 32.601b had written I was sceptical. Worse I didn't believe it. I thought The program was faulty. A not unreasonable assumption given it's ancestry. But looking back on things it was a logical outcome. The problem was me. I got greedy. I figured if I could construct new programs out of thin air as it were, there was no reason why I couldn't sell 'em as well. I figured I could sell copied of Word for Windows Version 32.601b and make a fortune. And if I could get a copy of some other exotic program I could sell that too. I could make two fortunes. And if I had half a dozen programs... Move ovcer Bill Gates. I began a full scale search for new programs generated by my archiving batch file. I won't give details of the programs I created. I don't want to tempt anyone into trying to follow in my data tracks. I'll simply record that disaster, when it did strike was swift and catastrophic. You see what I had really constructed with my apparently harmless little archiving batch file was in reality a random program generator. And one of the types of program it was quite capable of producing was the computer virus. And that is exactly what, at about 3 AM when I was half asleep, it did produce. Not just any virus. In fact it's unfair to call it a virus at all. It was to the humble virus as a carnivore is to the field mouse. The program - I couldn't bring myself to call it a virus. I referred to it as Adolph - Adolph fell upon my data, my hard disk, devouring everything. It didn't just write garbage to the screen. It imploded the screen. It didn't just reformat the hard disk. Any virus can do that. Adolph ripped the hard disk out by it's cable loom and threw it across the room. The computer exploded in a shower of sparks that left me stunned and in awe. Now, I thought, THAT is programming. Unfortunately all the programs I had managed to create were on the hard disk and were destroyed by Adolph. Even the batch file was blown away and I haven't been able to locate another copy of that archiving program on any of my favourite bulletin boards. So I'm giving up computing. I'm retiring to the south of France. I don't care if I never see another computer as long as I live, apart from my laptop, of course. I've bought this lovely old villa overlooking Antibes just outside Nice. I'm going to laze in the sun and forget I ever heard of archivers. And if the mood takes me I might even try my hand at writing another best seller. It shouldn't be too much effort. About five minutes, I recon. |
![]() |
![]() |
|
|
![]() |
|
|
![]() |
|