There’s plenty of room to tweak the display of commits (which at best, is pointless artifice; and at worst, a harmless shenanigan) in one’s GitHub garden via the -date
flag which can be specified in commit statements.
Using the option as per convenience, one can easily fill a slot in their git history at a particular instance of time, including dates even before the existence of GitHub(!), all the way back up till the Unix Epoch (1st January, 1970 00:00:00 UTC). After all, dates in git like most computer systems use, are nothing but Unix timestamps, a 32-bit number representing the seconds elapsed since this epoch. The size is bound to change sometime later in the future due to the integer overflow crisis as calculated to occur on the 19th of January, 2038 at 03:14:07 UTC, and in order to keep consistency with the convention of considering this timestamp till date, it’s unlikely that a major change in the date computing approach would take place. Most likely, it’ll be a shift towards the use of a 64-bit number (given that most systems nowadays use that many bits across architectures and chipsets, inclusive of x64 and ARM64) to accommodate a much larger time span, quite similar to how the transition from IPv4 to IPv6 is thought of to set place (extended capacity, but still exhaustive).
Anyway, I used this particularly neat yet considerably simple method to create capitalized words or commit-block-based patterns for years without any commits in the past, resembling something significant (i.e. to say, as far as I’m personally concerned :) that happened within one. Here’s a contemporary example:
Given GitHub’s release in April 2008, one can also view the contributions in 3D via Skyline for years >= 2008:
Instead of manually making these commits, I created a shell script that automates the creation of such commit structures for a particular year back in time, whilst iterating through all the days (keeping HH:MM:SS constant) in a year. Although meaningless, I intend to open-source this at some point. Here are a few specifics for my current version:
- Only letters from the English alphabet are supported at the moment (could have made it alphanumeric, but while considering numbers I couldn’t really think of another way to represent ‘5’ differently from ‘S’ in terms of this seven-segment display type notation), and each of these have a set of pre-defined rules of construction from a starting point or day (always a Monday) to an end point/day that is picked unintuitively (simply skips past more iterations for certain characters that do not end on a Friday like most letters).
- Length of the input word (if single), is limited to 8 characters/letters, as using ones like ‘M’, ‘W’ or ‘X’ consume a width composed of 5 week-blocks each (the maximum given the worst-case scenario; for the best case, the number would be much higher if the input string was only composed of ‘I’s), and eight of them wouldn’t leave room for more of the same (i.e., a 9th W/M/X is not possible given that I’m considering gaps in between the letters, in addition to ones for the starting and ending week(s) of the year).
- Specification of gradient ‘levels’ for each letter, which based on the relative commit frequency, sets a different colo(u)r among the shades of green (or red-green/RG variants as seen during Halloween) that GitHub currently has for its palette. This is particularly useful for instance, to highlight a particular letter or a word and make it distinct from another:
- Notice the gap of three weeks in between the two words above? That too is given by a configurable parameter in my script, one that sets the number of blocks (in weeks) to leave a set (groups of seven) of iterations without any commits in between for a whitespace in the user-specified input string (default is set to one, which again, is the gap between any two letters in a word), indicative of a separation in between two words (pretty similar to the keyword separation and detection phase in my resume ranker, which I’ve been refactoring and attempting to port to Kotlin since the past few days). This helps to figure the remnant space for incorporating more letters and similar length words based on the specified inter-word gap. As a constraint, the limiting number is fifty (just two weeks short of the total count in a year).
Given that the semester is over, I thought I’d invest some time to make such silliness see the light of day, apart from brainstorming newfangled projects and improving upon the existing ones (and even posts, as you might notice some minor revisions). As prior preparation becomes a natural necessity, it seems I now need to do some research to be able to work on interesting stuff that this summer has in store for me!
Anirban | 05/15/2022 |