Suppose you have a file that you want to save. For example, you create a recipe a day and want to save it by the date. You could save it as "Recipe February 16 2004.txt". That would readily identify it as a recipe from that date. After a few days, you find that the recipes are out of order in Windows Explorer. So you decide to put the year first: "Recipe 2004 February 16.txt". Now they came in order. However, he wanted to offer or even sell his recipes online, and he was fearful that some systems would have limited file name capacity; for example, MS-DOS only allows 8-character names. How do you shorten it? "Recipe 2004/2/16.txt" would cause conniptions because of the slashes, and it is still too long. "Recipe20040216.txt"? That's still too long. How about 20040216.txt? That would work. But there is absolutely nothing in the filename that says what it is. It could be a set of bowling scores, for example. How about "Rp040216.txt"? That violates Y2K rules. If you had recipes from the premillennium, they would sort after this file. You need two-digit years. So how do you do it? It seems it is impossible.
That is where supercompressed dates comes in. I invented them to accomodate files with dates in their filenames. In the early 1990s, first I came up with 90AT, which means 1990 October 29. That compressed it to four digits. Then I thought of grouping years by 3, allowing me to shorten it one more digit to UAT. It depended on a two-digit year, so I had to bring the fourth character back in: JUAT. In the same system, 2004 February 16 is K1EG. So how does the system work? Here is how to find the supercompressed date for any year/month/day date:
0. Superennery digits. A digit is superennery if it exceeds 9. Computer programmers assign A to 10, B = 11, and so forth to F = 15. So continue the system with G = 16, H = 17, ..., Z = 35. The complete table is below:
0 | 0 | 7 | 7 | 14 | E | 21 | L | 28 | S | 35 | Z | |||||
1 | 1 | 8 | 8 | 15 | F | 22 | M | 29 | T | 36 | see below | |||||
2 | 2 | 9 | 9 | 16 | G | 23 |
N | 30 | U | |||||||
3 | 3 | 10 | A | 17 | H | 24 | O | 31 | V | |||||||
4 | 4 | 11 | B | 18 | I | 25 | P | 32 | W | |||||||
5 | 5 | 12 | C | 19 | J | 26 | Q | 33 | X | |||||||
6 | 6 | 13 | D | 20 | K | 27 | R | 34 | Y |
1. Find the century. Take the last two digits off. So therefore 2004 yields century 20. Look up 20 in the superennery digit table. It corresponds to K. Therefore the first character of the supercompressed date for 2004 February 16 is K.
2. Find the trip. A trip is a new unit that I created. It is a period of three years. I get its name both from that it is a long time (a long "trip" in time), and because trip starts triple, as in triple year. To find the trip of your date, divide the last two digits by 3 and take the quotient. Convert the result to a superennery digit. This trip is the second character of the supercompressed date. For 2004, dividing 04 by 3 yields a quotient of 1. Therefore, the trip of this date is 1; the date is in the 1 trip. (If the date were 1995, then 95/3 = 31, and the superennery digit for that is V.) So therefore the second digit is 1. Call this digit t.
3. Find the month. There are 36 months in a trip, and also 36 superennery digits. It is a perfect match, which is why I think the code is so useful. Divide the last two digits by 3 and take the remainder r. Multiply r by 12 and add the month digit, given by:
January | 1 | July | 7 | ||
February | 2 | August | 8 | ||
March | 3 | September | 9 | ||
April | 4 | October | 10 | ||
May | 5 | November | 11 | ||
June | 6 | December | 12 |
The first column is the month and the second is the month number. Find the month number and add it to r. The result is the supercompressed date month number, or, if you want, the number of the month in the trip. Look in the superennery table above and take the superennery digit. For 2004 February 16, 04 divided by 3 leaves a remainder of 1, and this becomes 12 after multiplying by 12. Then add 2 for February to get 14. The superennery digit for 14 is E. So the third character of the supercompressed date for 2004 February 16 is E. So the supercompressed date starts with K1E.
4. Special cases. There are two special cases to the rule. One is caused by the perfect fit that I referred to above. January is the 1st month, so I start with 1. But then the last digit, for December in the third year of a trip, is that for 36. I have no digit above for 36. So if this happens, set the month character = 0 and add one to the trip number t. So if the date is 2002 December 17, 2/3 leaves 2; 2 * 12 = 24; 24 + 12 for December = 36. So in this case, use a 0 instead of a digit for 36, and increase the trip number from 0 to 1. So 2002 December 17 starts with K10.
The other special case is caused by the number of years in a century, 100, not being divisible by 3. This causes a short trip, the X trip, for the 99 year of a century. If the year ends in 99 and the month is December, then as far as supercompressed date is concerned, the new century has arrived! Set the month digit = 0, the trip digit = 0, and increase the century digit by 1. So if the date is 1999 December 1, then the supercompressed date begins with K00.
5. Day digit. Look the day up in the superennery digit table. This is the fourth character of the supercompressed date. For 2004 February 16, this is G for 16.
6. Put them together. For 2004 February 16, the supercompressed date is K1EG. For 2002 December 17, it is K10H. The supercompressed date for 1999 December 1 is K001, the very first date with a K for the century.
Going back to the recipe file problem, the author of the recipes now can use something like RCPEK1EG.TXT for his file name, with RCPE standing for "recipe", and K1EG being the supercompressed date. This allows him to fit it into the 8.3 file format for MS-DOS. Hope this can be of use for you.
Jim Blowers (supercompressed birth date JFKD)
(hey, I'm a JFK)
last modified 2004 February 17 (K1EH)