


What is this thing?
In the beginning there was Modifiche, a script which simply took a folder structure (of any depth) and corrected the modification dates of all folders/subfolders according to their contents, not settling for the somewhat arbitrary (that is to say, flawed) state in which Windows always left them.
The trouble with such a script (no matter how thorough the design) is that it could only work when it was actually applied - after the user had meddled and mucked with the contents of his folders for a few days, it was more than likely that all the dates were flummoxed again, and so required re-applying the script to correct them. Unsurprisingly, anoraks, power-users, and anyone else with a piquant touch of OCD in their personalities (you know who you are) dislike that kind of unreliable existence: we know, at a gut-level, that it's just not right.
Thus, enter Khronos, a plugin which corrects folder timestamps in the background as you browse (in a hardware-scalable manner) and shows a customisable display of objects' Ages.



How do I install this thing?
This is a WDX "Content" Plugin (supported as of version 3.1 of xplorer2 Pro/Ult), all you need to do is download (if you don't already have it) the x2 Plugin Manager (no installation required), and, of course, the plugin itself: Khronos v0.0.2.5.
Extract the archive and run the plugin manager, then drag-&-drop either the 64-bit (Khronos.WDX64) or 32-bit (Khronos.WDX) plugin into the window and click "Apply". Ignore the KhronosUI.exe programme for now, that's ancillary and not technically required.
Once x2 has restarted, use <Alt+K> to enter the column selection dialog, and scroll all the way to the bottom of the available columns list - there you'll find an extra entry named "Age.Khronos [X]" - just double-click it and you're done.
How do I get to those nifty option-screens of yours?
Two ways - the plugin provides its own customisable hot-key (just press <Ctrl+Alt+K> at any time), or if you prefer a toolbar button (or just don't like hotkeys), you can click on the KhronosUI file and that will do it. Though the options are all stored in an INI (plus a few not directly available in the UI itself), it's not recommended to edit that file directly unless you read the remarks in the (included) source-code first.
How does this thing work? And why are all those options so scary-looking? And what does 'Hardware Scaling' really mean?
I have been accused in the past by certain Gothic members of this forum for "spending too much time thinking about formalities" in my retro-GUI designs, and since I have no idea what that actually means


That aside, while any vaguely bright 4-year-old child could write an algorithm to homogenise the timestamps of folders to their contents, the next step in the equation is to ask yourself what the most efficient method of implementing this workload may actually be, given modern computer hardware and (especially) the advent of SSD's.
Say you browse to the root of your C:\ drive. The normal stuff there is of course the Users folder, the Programmes folder, the Windows folder, etc. As you can imagine, for this plugin to scan each of these folders (and all of their subfolders) comparing zillions of timestamps it can take quite awhile the larger the folder structure is. So, instead of waiting for each folder to be processed sequentially, each one is allocated its own thread, so the Users folder gets one thread, the Programmes folder a second thread, and so on, and these threads all run at the same time in the background so the columns populate much faster overall, rather than waiting for one large folder to finish before processing subsequent smaller (and thus faster) structures.
Now, you're probably saying to yourself "But that's madness! The poor disc-drive will have a heart attack trying to access all those timestamps at the same bloody time!"
And you'd be right - up to a point. A hard-disc's speed is directly proportional to its random-access IOPS (Input/Output/Per/Second), and the throughput is determined accordingly, but data is accessed in differently sized increments depending on the requested operation types. To be more explicit, if you ever wondered why SSD's are so much faster than mechanical drives, it's because their IOPS are usually in the range of about 100,000 while an older "spinning-rust" (mechanical) drive will average around 170 at best. Yes, that's 170 vs. 100,000. (NVMe drives can easily reach 300,000 to 400,000 these days, but that's just icing on the cake from a practical viewpoint - normal SATA-III SSD's are common-place enough to satisfy most workloads.) As such, SSD's can operate non-sequentially, where thousands of these asynchronous requests can be processed in parallel resulting in very little latency. That's a fancy way of saying serial (single-threaded) processing is for dweebs, whereas parallel (multi-threaded) is for the cool kids.

But what if you don't have an SSD, or work with a variety of drives? Or have only 2 or 4 cores in your CPU instead of 8? Well, that's where all the options come in... this plugin can be tailored from the simplest of setups to the more advanced, with the user being able to tweak things to whatever level they think is most efficient for them (only process some folders but not others, some drives but not others, etc, etc). Or, you can just ignore all the options, set it to "Basic" and live in a serial world. It's up to you.
This aspect of the plugin (the correction of timestamps) may also be disabled completely, though in that case the column display "Age" will only be accurate for files, and not folders, since it only takes what it's given.

Be aware that the modification of timestamps is (of course) linked to folder-permissions so non-admin UAC users will be hamstrung on much of their C: drive (Program Files, etc), and so may wish to "Exclude" those locations to save spurious processing. Though any assignment-failures won't impact their ability to browse anywhere they like (failures can be ignored), it does render the end-result somewhat moot.
A bit of history...
Anyone familiar with Total-Commander Plugins will notice that there's a pre-existing one called Tempus which I myself used for about a year before I decided to write my own. Tempus is an excellent plugin, though I grew frustrated with the inflexible (single-threaded) serial nature of the approach, and found the INI-only method of adjusting options to be somewhat confusing and rather difficult for first-time users to configure properly. It also doesn't provide any means for the user to judge exactly what it's doing, what's been changed, or (potentially) what it failed to change. Also, some of Tempus' design is not directly applicable to x2's plugin-milieu, so understanding what options are or are not available (or even work) may be difficult to grok without knowing the plugin API under x2.
That's why I decided to write my own, replete with built-in GUI (which doesn't require x2 to be restarted just to apply new settings), an easily localised Age column, and an Event-Log which can track everything you never cared about but may think is "nice to know it's there" anyway.

And finally...
I would like to thank the user Tuxman for his beta-testing, patience, suggestions, and feedback. Though I ignored most of his complaints (hey, what can I say?), it's the thought that counts, and I appreciate it.
I would like to not thank the user pj for his apparent inability to upgrade x2, beta-test, or stick to giving feedback on the subject at hand.

And though the hammock-bound and irascibly rum-soaked user dunno played no part in testing, and may have absolutely no personal use for this toy whatsoever, I would like to thank him for inspiring much of the (threading) work that went into it. With every project I do, I like to learn something new, and this time that's true in spades. May all our ranting prove as accidentally inspirational to forum-lurkers everywhere.