Simple url short code library, like known from youtube video ids, but generates short codes that are prepended with a date (also in short code format).
A short code generated by this library looks like this: AlwJy_uNAs
Note that the short codes generated are case-sensitive.
The first 3 symbols (Alw) are the Base64UrlSafe encoded date, with any equal-signs removed. Base64UrlSafe encoding simply means that '+' is replaced by '-' and '/' is replaced by '_'.
A date in format MM-dd-yyyy wouldn't be representable in just 3 characters, so it's not a full DateTime object, but only dates from year 0-99 are supported (the library assumes that 0 is 2000).
In order to represent the date by 3 base64UrlSafe encoded characters, the year, month and day portion of the date is packed into two bytes in the following way.
Alw in this example represent the date 2001/2/28.
[--Year 7bits--|--Month 4bits--|--Day 5bits--]
The characters following the first 3 date representing characters, are random bytes generated with the System.Random (not so great random generator). These bytes are also passed through the same Base64UrlSafe encoding, and concatenated with the date portion of the short code. The length of the random part is variable by using the NewShortCodeByDateAndLength(d : DateTime, len: int) method. When using NewShortCode() it is set to 5.