avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • Friday August 7, 2020, 1:38 pm
  • Proudly celebrating 15+ years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - ital2 [ switch to compact view ]

Pages: prev1 [2] 3 4 5next
Found Deals and Discounts / Re: Black Friday / Cyber Monday 2018
« on: November 25, 2018, 09:17 AM »
Would it be considered politically acceptable if I mentioned rugs? -

Re AdGuard: Since it's by subscription, can anybody confirm that it allows for viewing/browsing main "newspaper" and other propaganda sites which systematically leave you out if you use the usual adblocker (e.g. Adblock, Adblock Plus), and if so, which ones (and understood of course that you do NOT make an "exception")?

If there is some link to something potentially important, I open it then in Edge instead of FF, but I don't browse such sites anymore.

If the above is not the case, why is AdGuard so well regarded her in this forum? Since Adblock Plus works fine, too, for the sites remaining for me. Is it just because of "for once, the developer gets paid!"? Well, Adblock Plus's one gets paid, too - some call that extortion, but he wins the actions against him, up to now.

So I would really be interested in some pertinent information, and ideally along the lines, "is not blocked by adblocker-blocking sites, for most of them."

EDIT after further reading above: Would it be politically acceptable if I mentioned carnal knowledge in marriage?

Found Deals and Discounts / Re: Black Friday / Cyber Monday 2018
« on: November 25, 2018, 08:35 AM »
"Techsmith, makers of Camtasia and Snagit are having a one day only, cybermonday sale."

Snagit, beyond being overpriced (65 euro incl. 13 euro for ANY, even the most minor update, and within a year only), had been the slowest such programs when I trialed them some time ago, in fact, it was around 20 times or so slower than ANY other such program, of around 5 or so I trialed); my observation not applying to the current version, this might be different now, so comparative (!) experiences would be welcome!

As for Camtasia, did anybody trial Camtasia and ActivePresenter, and then bought Camtasia, and if, why?

Found Deals and Discounts / Re: Black Friday / Cyber Monday 2018
« on: November 25, 2018, 08:28 AM »
"I'm no expert in symlinks and how backup software should (or should not) handle them.   I suggest you download the SyncBack trial and see if it works the way you're looking for."

Being a satisfied (and fully-paying) user of Syncovery, I have no need to do this, but thank you anyway.

Found Deals and Discounts / Re: Black Friday / Cyber Monday 2018
« on: November 23, 2018, 10:08 AM »
Hint: Prominent google position (11th or 12th for "software friday (last 24 hours)" for minor, exotic software: good marketing, and for a mere 10$ from delusionary asking price (it's the competition, stupid!) of 40.

https://www.helpingw...-workbook-software/# . There: "I'm (...) a child of God. I'm the award-winning (...). I write historical and speculative fiction."

What, speculative fiction? I'm acquainted with speculative fiction writing, though, "writing on spec", but speculative fiction? I suppose that's science-fiction for women.

Also, DxO (or is it Dx0) minus a whopping 50 p.c., but then, the real question is, will they remain in biz, this time? I suppose that professional photographers who ain't into being buggered (thank you, Adobe, but no, thanks!), will use Capture One anyway.

EDIT: Photo Mechanic -30 bucks, but even then, it's around 120 plus VAT, and even that's quite overpriced for non-professionals like us, see the quite recent "c't" comparative review (in German, paid access in the web). Worst software in that review, Breeze Browser, but then, they've got the cutest little girl I've seen in any advert, she's as cute as Drew in E.T.: https://www.breezesy...ezeBrowser/index.htm - yeah, the good ol' times... (btw, I always mix that up with Close Encounters, should probably watch both again. And Notezilla 30%; for some here it's even a text processor, lol! (Powergrep, Regexbuddy nope, DO neither, but then, next version should be quite immediate anyway, and its processing of metadata isn't that good after all.)

And à propos little (?) girls: SolveigMM (stands in for Multimedia, not for Peer Gynt obviously) Video Splitter doesn't get any cheaper than today, -50%, warmly recommended (no discount for VideoReDo, 4 times the price). (Navicat -30 but then, they first raised their (dollar) prices so much that with the waning euro, their asking price has almost doubled since.)

Oh, and Vegas Movie Studio is not Vegas Pro: hands off! (But the latter's on sale, too.)
And they sell Dramatica Pro (Win-only), the ugliest program you'll see in your entire life, for the same price as the newer, Mac-only version, and that latter thing could tempt some. And, as others have found out before me, TB with their usual 10 p.c. off whopper of the year.

Found Deals and Discounts / Re: Black Friday / Cyber Monday 2018
« on: November 23, 2018, 09:05 AM »

Could you confirm that SyncBack Pro (since you use it) does mandatorily follow folder symlinks even in its current version, or better even, tell that by option, it does NOT follow them, which for sync and backup purposes, would be the wished-for behavior.

Unfortunately, this functionality seems to be absent though, and from my knowledge (and my experience with it), Syncovery (which is not on offer but obviously worth its full price) is the only such (2-digits-priced) tool which offers both: NOT following file symlinks AND NOT following folder symlinks, i.e. treating both as-is.

(This "manual" page is brand-new: https://help.2bright...oints-reparse-points , and from there, they link to this: https://www.2brights...-symbolic-links.html which is just dated "copyright 2018", so I suppose this is current valid info there, and then it just treats file symlinks as-is, while at the end of the day, that's even more important for folder symlinks. See this discussion, but which is from 2015, so I'm asking for confirmation: https://www.2brights...iewtopic.php?t=11927 )

Frankly speaking, I advise against any synch tool which does not do it the way you'll need it, so for the time being, and up to better information (updates), no discount justifies buying a tool not being able to do it.

Junctions are NO replacement for relative folder symlinks; (especially folder) symlinks make NTFS three-dimensional. (I have hundreds of relative file and folder symlinks (and big hdd's, but there are ways to combine lesser ones into virtual, bigger drives).)

And yes, you can do it with a (home-grown) script (robocopy doesn't do it either EDIT: clarification: it CANNOT do it, as wished for, either, i.e. it just has a switch for "don't follow file symlinks", but not the respective switch for folder symlinks: just like I fear the BrightSparks product works), but then, why buy any synch tool to begin with? (You run your script or Syncovery as admin, in order to get the UAC dialog just once, up-front.)

Please see some remarks of mine here:
(page 4 bottom and twice-and-short page 5 top)
and then further down there, on top of page 16:

Mini-Reviews by Members / Re: Mini review: The Journal
« on: October 17, 2018, 09:22 AM »
As far as I know, TJ is db-based, but it does not allow for 1 item to be in several "folders" though: no "cloning".

Except perhaps for the journalling function, so any item is (but just once) in some "folder" system of the user's choice, AND to be retrieved by the day of its creation (but NOT also by the day of its "ToDo" = "I must do something about it that day, e.g. with regards to some meeting" or such)?

So there is no second/multiple entry/ies in the main table, neither in the, second, (assumed by me) "items-by-date" table?

Underlying db = SQLite, as usual for PIMs now?

If my assumptions are right, how could anybody tout this program, considering the fact that no db-based should ever dare be marketed without cloning facility in 2018 (ie more than 20 years after cloning items was available in not one but several db-based PIMs even then)?

Of course, if you do your reviews from the users' perspective, you never get free licenses...

Living Room / Re: I'm getting married, wish me luck!
« on: October 17, 2018, 08:53 AM »
I'm more than 10 days late to the party - have just seen this thread -, and furthermore, I don't really believe in wishes.

On the other hand, I believe in encouragements, so please let me say, dear mouser, that I firmly believe you've taken an absolutely wonderful decision, and which almost certainly (i.e. to 99.9_ p.c., the "_" standing measly in for my intended superscript dash which will make the decimal a repetend) will reveal itself as the very best one of your entire life!

Very impertinent thread by kalos: https://www.donation...ex.php?topic=45945.0 considering that his problem over there is more or less explained here, whilst he pretends this thread doesn't exist.

One thing I probably should have added above, lookarounds; they are simpler than what I did above, but are also less powerful in the above use case, and you will need to know exactly what they are able to do in your specific regex flavor; just with Goyvaerts and .NET, lookarounds really excel (and can become complicated then).

Since the only problem for "regular" lookarounds is to memorize how to write them, I did myself a favor and wrote it down, once for all; here it is:

wanted(text) (which is not included in the match)
notwanted(text) (which is not included in the match)

lookbehind/lookahead: (?...) ; does NOT count as a capturing group
then < for behind (memorize it as a backarrow) and nothing for ahead
then = for wanted and ! for notwanted


(?<!notwanted)matchtext (as before)
ATTN: NET/JGSoft (Goyvaerts): any regex, but Tcl not at all, and Perl/Python/etc: only fixed-length strings here, and other limitations, alternation only if same lengths, no quantifiers...

matchtext(?!notwanted) (as before)
ATTN:  any regex except lookbehind here, even capturing groups (will capture as normal except in Tcl)

I don't have the slightest idea how processing a 25-giga file would work, for AHK or other script languages; don't know about their respective memory management; perhaps you need a 32-giga work memory (I only have 16, and no file of that size to try for you).

Btw, that expensive TextPipe, etc. doesn't do anything else than combine regex with scripting, but I'm quite sure I'd soon get to its prefabrication limitations, so I'm happy I made the effort to delve into regex basics, instead of buying that, expensive, tool (or Goyvaert's, which at around 150 bucks is much cheaper).

If you know Perl instead of AHK, the above examples will even be much simpler, since, admittedly, AHK's string processing is a nightmare, for all the `s, "s and 's.

General Software Discussion / Re: Et Tu, CCleaner!
« on: September 29, 2018, 10:38 AM »
I've been using Avast free version; lately, it got more and more invasive, so I've been thinking of switching to Avira free version.

I use WiseCare 365 Pro; regularly, they have special offers on their site, so that even a 3-pc "lifetime" version is quite cheap. (I had been using the free version for some time and had been very pleased with it, so I checked for their offers, then took one of these.)

Thus, I certainly don't need CCleaner for general maintenance, but with new FF, there are no "Click and Clean" or other add-ins left which would regularly delete all those horrible cookies and the like, so I've been using CCleaner for that very same task since, manually, and it's several hundreds of cookies (among other things) that it deletes for me. (With the new EU regulations in effect, almost everybody tells me they "value" my "privacy", want my "ok", often with panes so big, and the main (text) pane not scrollable while the "ok" pane is there, that I HAVE to give my consent, in order to read, even proactively allowing for them spying on me - they probably do it anyway, anyway...

Now CCleaner's price model is ridiculous, 25 bucks plus VAT p.a. if you want it to delete the cookies automatically, after your closing the browser; Click and Clean did that for free. Thus, I have to start CCleaner manually, than run the delete command manually; since its window is non-standard, or "newer standard", AHK is not able to send the necessary key combinations; sending mouse clicks would probably succeed, don't remember if I tried - unfortunately, AHK development is all about "objects", so they aren't interested in day-to-day usefulness of their tool anymore, and more and more applications appear with those "newer" windows AHK cannot interact with anymore - if you ask for help with these things (EDIT 2: well, ask them to look after these things, after all, "help" being a gross euphemism), you are ignored.

Also, for some months now, I can't simply open CCleaner anymore as before, but I first get a UAC window to overcome, so I've been doing the cookies cleaning 2 times a week only, lately, which makes near 1,000 cookies to be deleted every time.

So I read this thread with interest, and had a look a System Ninja which seems to do it similar to CCleaner: You'll (soon?) need the "Pro" version, in order for it deleting your cookies, etc. automatically? But I've been particularly appalled not by its pricing, but by their way of making you pay: Become a member of the "Pro Club", then get the Pro for free - or even not? "is only available for Club member" not necessarily meaning it's included, so they possibly even hide the additional price, available only after joining their "Club" ("Pro Club Special Offer - Sorry, you need to be logged in to see the special offer.") - all this is so much targeted at 12-years-olds that my faith in their software couldn't possibly grow up to normal size anymore either.

So at the end of the day, I suppose that a simple SCRIPT would do, and which upon the closing of your browser, would simply delete all that left-over crap from all those sites which "value your privacy" while blatantly spying on you.

I suppose a simple file-and-registry compare "before browsing - after browsing" would sufficiently indicate which crap folders such a script should empty, and then, using a very acceptable "maintainer" like the above-mentioned Wise 365, something similar or even nothing of that kind, you certainly would not need any more spying and / or clubbing tools, in order to at least prevent the most obvious spying on you, from anybody who invites themselves into your system since you dared visit their (often even totally worthless) homepage (often invited by evil google: first google page often enough equals ten times crap nowadays; not speaking of them stealing your time, at the very least)?

EDIT: Btw, google itself often follows me over weeks (they sometimes know what possible purchases I'd been looking for), my "individually standardized" window sizes giving me away (as said, 2 screens, FF at the left 2/3 of the right one, web sites getting your resolution and the size (if not position) of the browser window - among other things of course).

EDIT 2: Most amusing, wordings like "You can change our tracking settings for you anytime." - well, I've got better things to do, so I let them track me for some hours, and then, when their pseudo-AI starts to decide which type of their paying friends' crap I could possibly be interested in, it all comes to an end - except google, sometimes, as said. People who do not regularly stop (most) tracking must be considered lunatics, afai'm concerned. Very amusing, too: When I look up some mechanical tools, then buy one - which google should "get" indeed -, and then I get google ads for that very same tool: do they really think that today's (missing) "quality" (not only "Bosch Blue" made in Russia, but also higher-priced tools you'd think have some stamina) triggers replacement purchases EVERY DAY? At least, their AI should have read the Bosch, or Metabo, or whatever maker's guarantee certificates (pdf by google: they read (scan) whole books now, no?), so that they knew that before 3 years (even for the Russian shit: they hope you will use it intermittently only) you'll probably not buy another one: So what they (try to) do must be called stalking.

EDIT 3: Well, this ("so I let them track me for some hours", well, some days now, lately, as explained above...) brings me to the additional question why on earth all those cookie, etc. deleters insist on your closing down your browser first. Wouldn't it be possible to do at least some partial cleaning while the browser is open? Would FF or other browsers really crash if in the middle of the road you'd (i.e. your script) already deleted all that tracking trash at least partially? And if yes, why would browsers be programmed so badly?

EDIT 4: Yes, and that famous "experience", e.g. "By using the site you agree to our privacy settings - We'll give you the best experience - We'll show you relevant advertising" - relevant to whom? (Copyright dailytrash, pardon me, dailymail. EDIT 5: Example: https://www.dailymai...egnant-just-fat.html - well, many of them are probably both, in order to complicate things over the top) - Btw, just like the "Have a nice day", this "experience" thing came to Europe from the U.S., both expressions had been totally unknown on the old continent, and while it's become absolutely impossible now do some shopping in town without being said goodbye "Have a nice day" (and even, but then just in another intonation, after having been informed, "We don't serve you!"), their openly musing about your "experience" with them spreads more and more, and every time, I then must proactively stop my killer instinct overwhelming me. (And those numb politicians ask where all that hate comes from: Well, there's a degree of insincerity which becomes blatantly offensive - so much for my global "browsing experience" and similar. Oh, and lately, they've begun to call your purchase wish "your project" - would they just scream if you strangled them, or would they, looking into the eyes of death, begin to understand that raping your language is a crime, too, and which asks for emergency relief (I mean defense in support of a third party) whilst not outright retaliation?)

Thank you, wraith808. I hope there's been lots of NEW elements here, though, but not everybody's interested in details, which isn't too disastrous if at least the global situation is upheld, but with kb's, that's obviously not the case, to the detriment of us all. The apple thread is here: https://www.donation....msg408995#msg408995 "Apple does it again - this time, they re-invent the context-sensitive F-key", the key word being "TouchBar".

Here are some quite regular kb layouts for their time, just a little bit enhanced; nowadays, we've all lost this.

For journalists and other professions, there were even much more elaborate kb's availabe (I don't remember how the additional key assignments were done (kb-specific software and/or the specific application software and/or "external"/third-party macro-tools), and unfortunately, I don't have any version of "euroscript" left, which made use of (any available? at least all) those "regular" additional F-keys: I switched from WordStar directly to "euroscript", just used Word and WordPerfect on some occasions for output formatting, but then PageMaker and, before that, that Corel shit which they never got stable and obviously not even were willing to get stable to begin with, I don't even remember its name, so much I hate that shit and Corel - did then never bought another program from them up to this day).

I don't know if my assertion re some "regular" IBM kb with more F-keys (for some months then, I said: F-keys on the left AND on top) yesterday is true or an error of mine, and anyway, on the left there were not 12 but 10 F-keys, and not in 2 columns 1...5/6 and 6/7...10/12 but in 5 rows F1-2, 3-4, 5-6..., but here are some layouts which remained quite "regular" even, while being you could easily say "perfect" (and NOT totally overpriced, while more expensive than the really regular ones indeed):

https://www.seasip.i...intagePC/kb3270.html (KeyTronic KB 3270 Plus)

Left: F1...F10 (see above), on top: 2 ranges of 12 F-keys, so we're at the usual 34 addditional keys (in fact 35), compared with today's meagre 12; on this kb, the ranges on top are NOT grouped by 3x4 (3x8 then), but just in 2 ranges, with makes it necessary to visually identify those blocks by color stickers, e.g. "nothing" for the 8 keys on the left and to the right (but see below: you'd need to put stickers everywhere, but clearly distingued as 3 blocks left/centre/right), while you put 8 yellow stickers to the 2x4 keys in the center (in a similar manner, I better=faster identify the keys of my keypads, with blue stickers on the numeric keys 0...9, but with a slight adjustment: Since on the 4700 - I should get money from Cherry! -, there are TWO rows of 4 keys above the numeric block, not just one (num/divide/multiply/minus) like regularly, and I wanted, for other things than within a 3x3 block, keys immediately availabe, i.e. not on top of the device, but near its bottom: Thus, I shifted the 3x3 block (1...9) one row higher (blue stickers, NOT for digits but keys within a 3x3 block are immediately identifiyable for anything, by their position IF that block is visually clearly distinguished from the rest of keys), and then, the original 1, 2, 3 keys as explained above: red sticker for cut, yellow for copy and green (ditto, as said, for the comma key beneath it) for insert: Such (clearly distinguished, hence the unifiedly-blue-colored (shifted) 1...9 block: with too many colors all mixed up, the speeding-up value of colors is quickly lost again) color stickers are a BIG help for fast typing since most of the time, it's not entirely blind typing on such devices (upper row: 2 yellow stickers, then 2 green ones, similar for my 12 stickers on my 12 F-keys on top of the "abc" since, as said, in a 3x3 block, or in any 1-2-3 row, the keys are immediately identifyable by their position, while a 4rd key within a block/row slows down your key pressing.

The descriptions in this link are very instructive since there's numerous "protocols", including one "XT Protocol" in "Native/Irma/Enhanced mode", and so it seems that there probably WAS some IBM  XT kb for some months with had (not 6 but) 10 F-keys on the left, and (not 24 but 12) F-keys on the top. I didn't get it yet, but there's highly instructive info there.

All this is obviously lost on people who today try to ridicule the "old times" and incl. what those had to offer really good; it's similar for many a devices' ancient build quality vs todays' devices often dying after 13 months when legal responsibility of the vendor is 12 months, and where electronics are often built on purpose in a way that heating elements destroy neighboring elements sensitive to heat: most manufacturers weren't as cynical as that yet in those times.

But I said "a blind key in the centre of the arrow cross" (shifting the down-arrow 1 row down, compared to today (and in fact's it's the other way round, they shifted that arrow key up, unfortunately) and which is helpful in many situations, see above), and my links prove that (at least for the better kb's of that day) that's NOT the case: that's additional key number 35 from above, and it's evident that this centre key is of tremendous utility, as a second "home" key or then, according to your work situation, as a second arrow-down key, or for whatever you'll need in immediate reach!

From the above, it's already become obvious that today's kb manufacturers make us eat shit, and they can do so since old times are ridiculed by many, and we all buy these totally inacceptable devices (inacceptable since there's PROOF it can be done so much better), instead of systematically refusing anything non-acceptable, which in practice would mean that re kb's, nobody should buy any other "regular" kb anymore, but at least prefer those at least SOME additional F-keys, and then manufacturers would begin to re-introduce more F-keys in order to compete on that field.


An NCR XT/AC "switchable" kb; in don't know for sure if this "switchable" here means that you either have the F1...10 keys at the left at your disposal OR the F-keys 11...30 on top (similar for some of the many additional F-keys in the link above, according to its "current" setup then). I cite this example for 2 reasons: Again, you see the additional, central key in the arrow block, and, yesterday, I spoke of an additional key "beneath it all", in order to use it with your thumb, in immediate reach of the (according to application / work situation, reassigned) kb-integrated numpad; here we have the capslock key in an almost similar position, for possible thumb use in combination with your other fingers on the arrow keys (in this specific example: if you reassign the central home key to arrow-down, reassigning the arrow-down key to other uses. Also, your regular capslock key of today is the control key here, and there's no need whatsoever to discuss any alleged utility of the capslock key at its "regular" position, it's only the question WHAT functionality you would like have to get there instead which's debatable.


Finally, a "classic" "just-a-little-bit-enhanced" kb by ITT, with the 10 F-keys to the left, the 24 (instead of 12) F-keys on top, again a working central key within the arrow cross, and again an additional "function" key positioned for (or, in fact, positioned in a way that you could probably make use of it that way, see above) thumb use - I insist on the fact for BOTH the arrows cross (which isn't even a cross anymore nowadays as explained above) AND the kb's numpad, respective THUMB KEYS (at least 1 each) would of tremendous utility.

Btw, that additional key here has the inscription "Dateifreigabe" and was probably meant for manual "transactioning", i.e. doing a block of connected commands, by kb and on screen, but which were all withheld, then visual screen check, then only triggering the whole "transaction" by pressing that key.

And, you see here that the 24 F-keys on top all come with their own comment field, and yes, in those times cardboard templates were available, for different "setups" / layers applied to different applications / work situations; these keys, and their comments, were somewhat tilted into the direction of the user, for one in order for them to more easily read those hints, and secondly, also, for facilitating key pressing, the necessary reaching out of your fingers being reduced by the inclination. (I have spoken above of the importance of the hints being near their respective keys, and of course, having these hints not on-screen but as near to the keys as in this - quite perfect - example is the optimal solution, at least for the - "ever-changing" - F-keys 1...24 on top, just 2 lcd "films" instead of cardboard; and always, the "nearer" F1...12 are in the bottom row, the "more remote" F13...24 are in the top row; also, for right-handers, the "more important", ie the more frequently used commands/macros should be assigned, by preference, to the right part of these 24 keys, so "logical grouping" (ie process-connected commands should be in each other's vicinity) would decide upon some frequently-used "key" (function) being assigned to the bottom row (even for left hand triggering) or probably in (farer-away but) top row, but for right-hand use.

On the other hand and as said, the additional F-keys to the left of the kb are there for "manual batch use", not for replacing missing F-keys on top, and that implies that for such batch use, you will probably know/remember the respective key assignments: I use the 4700 extensively, but then, again and again for just some applications (except for some "global" keys there I would have much preferred  being on top of my kb anyway), for the same work situation, so I don't really need visual hints for them (while only the internal commands my differ, as in the example above: ^f vs ^n for "new folder" in different applications, but that should not be the problem of the user, for whom it should be the same key). Ditto for my key assignments to the kb-internal numpad: For one, there's lots of functionaly relegated over there since simply I don't have the - necessary! - keys on top of my kb (the F13...24 missing there), and then, there's batches, often duplicated from the (left-hand) 4700, for speed reasons; again my example for FSIV: in the tree (pane), num1...9 assign the current folder as target, in the thumbs pane (and also in the full-size, called "preview" pane), the same ONE-key num1...9 assigns the current pic to that target folder: smart 1-key assignments avoid key combinations...

Thus, for your keypads (of which the permanent visual representation on screen would take much too much of very valuable screen real estate, not speaking of the looks), a 1-key toggle for "display the current key assignments of all (other) additional keys (ie excluding F1...24 on top), in some big window just on top of all others" (and given there's 24 top F-keys available, not only 12), ie NOT taking permanent screen space, would be the best solution after all, while the F1...24 on top (and of which the current assinments would be a lot less "predictable" whenever it's not a very common application / work situation) should "tell" their current function permanently, ideally by on-key lcd's (replacing the cardboard template in my last example above), or on-screen in last resort: most people have accepted, application-specific, so-called "ribbons" on top of their screens, so why shouldn't they accept another overall, application-independent (but, among other things, application-sensitive) ribbon at its bottom, if its heigh is just around 2 cm, but the distinction between the keys of row 1 and 2 (e.g. F13 and F1) will be clearly hampered, (the lcd version of) my example 3 (where the keys separate the respective hints) would be much faster in the end.

In the old days, software was lacking so that the general public could profit from such a setup; for special-business use only, the "numbers" were obviously insufficient in order to come down with manufacturing prices - also, see the chaotic scan code assignment to the additional keys of those special kb's of the time, hinted at in my first example above. As for sex change, you can run into deep (throat) trouble even without, this link showing off a current, very amusing example:

(See my edits above, all of them (except for typos) AFTER the main text.) I should probably delve into that thing, unknown to me up to this day. Quite a general observation: "synced " would be spoken out "synssed", whilst "synched" would be spoken out "synked", and which obviously would be the only correct abbrev for "synchronized", but then I admit I seem to be the only person world-wide to insist on this fact. ;-(

"you say that you don't think it's worth marketing a hardware product" - no, that's a misunderstanding, I said that without the necessary hardware (more or less) being present, you couldn't market (just give away, that's for sure) some "your system in some way globally affecting" software, hence my idea that the next hardware offering to that effect should come with really good software (AND the visual indicators making even the very first steps with that software easy).

Of course mobile Mac users are not happy with using some "film" ("though there are downsides in the feel of typing which has the net effect of slowing down productivity"), without getting tactile feedback for their (virtual) "key" pressing; I'm aware of the fact that within a mobile device, this is a real problem, but then again, it's the screen which asks for a minimum size of the device, and then, separating physical keys from their visual indicators should be possible indeed. Also, as said, and according to the application in question, that virtual key "ribbon" does not even offer the otherwise full 12 physical keys of their 2015 mobile devices, but less, probably, and according to the situation, just 3 or 4 virtual "keys" - it's about the respective developers' real understanding of their customers' work, and from my (Windows, though) experience, that's not very intimate...

"There are also custom keyboards being built all the time; in my case, I just have those function keys to the right on my custom board.  And also custom sub-boards that are relatively inexpensive, while retaining power usages." - this is highly interesting, please give url's. Sent from the U.S. to the so-called "European Union", in fact the very first mafia world-wide who dares to act in broad daylight, any prices are doubled anyway, but independently from this aspect, I never even encountered such keyboards anywhere... not speaking of the aspect though that even the in-kb numerical keypad is "too much" for many a user, restraining the desktop "moving room" for your mouse indeed (BUT it comes so handy for commands/macros, except for Excel and similar tools!), so if there are additional keys even further on the right, well?! Whenever I insist that additional "manual batch processing" keys should be within the kb but at its outer, left edge, that's because "there's plenty of room", for one, but resting your hand, i.e. your fingers 5, 4 and 3, will at least some strength, some "positioning" in order to press keys quite fast, to your left hand's digit if you're a right-hander: (with for left-handers it all being upside-down,) on the right of your abc keys, there's plenty of fast, easy action but room since you would prefer using it for your mouse, whilst at the left of your abc keys, there's plenty of room but quite reduced action, for most people their left hand not executing their brain's commands as fast or as target-oriented as their right hand does; trying to switch the mouse to your right hand, then, seems the worst pseudo-solution indeed; you will discover this whenever you'll break your right arm - hopefully you'll own a well-run-in dictation software at your disposal then!

"I've solved it with my own program that overlays an image that shows my key assignments." - you mean something in light-gray which overlays what you're (in case) typing, on-screen? How/when do you trigger its appearance there, since you certainly not want to have it there all the time? (As I said, I use 2-to-3 screens, with, currently and miserably, (at least automatically-updating) rtf text files in some corner.)

"it allows me to have generically named keys that are reassigned based on the games that I'm playing" - so you do this within the software coming with the kb, and within that software's limitations, then? I do it with AHK's:
a) if winactive("windowname"), then, in case,
b) if (var x = "" ); in fact, with: if var x = somedigit (ie "work contexts" I put on with toggles, for some batch processing tasks), or, again within a),
c) if active control = "" (technically by: "controlgetfocus, ac(for ActiveCountrol), A(for ActiveWindow; within a), as said), then: "if ( ac = "" )") ; I never play games but, OT: lately, I discovered some game, by accident, which permets children to cater for animals, cats, dogs, rodents, on-screen: some real tear-jerker, as far as I'm concerned, and applying to children living with sadistic parents or in rental apartments where keeping of animals is (sadistically and legally*) forbidden; *= shithole countries like Germany, for example (/OT).

"There are also LED oriented aids, i.e. LEDs to let you know what layer you're on so that you can always tell what you should be typing." - yeah, that's the 1980 version of what we're speaking of, and even today, all those manufacturers mentioned above try to sell their devices on that attribute - fortunately, we're both one step further now, with automatic switch instead of manual one, and in applic a it's that command, in applic b that other (hopefully similar, for standard commands) command, just by "changing windows"; as said, for special needs, I do toggles, but most of the time, they are NOT necessary even; I'll give an example: When distributing pics in FastStone PictureViewer, AND when in the tree, pressing num1...9 will ASSIGN the currently-active (sub-) folder as target (and will list the path within a little window overlaying the FSPV window where it doesn't harm), whilst pressing the same num1...9 key if within the thumbnails windows of that applic, the currently-active pic will be moved to that target folder - I never ever was in need of these "layers", then, layers being for graphics... ;-)

"Relegendable keys" - yeah, that's the Preh-KeyTec philosophy: The capping of the key isn't opaque but transparent, and with a little plastic instrument, you remove the cap in order to replace the little piece of paper laying there, but there's a problem with that principle: there's only so much room for (ever so tiny) inscriptions on that paper, and if you need hints for not 1, 2, 3... but for 15 or more different applications, you're in trouble, both with tagging your piece of paper and then especially with deciphering it - hence the interest of LCDs or other, similar technical solutions, but since that part of the key is the movable part... (or again, the lisibility will be hampered...)

"no longer available" - yes, I left all those out; it's all about durability of such movable key parts... or of "visual keys, by sort of film strips": no wonder users are very unhappy with such "brilliant" solutions after just some weeks...

OT again: Some weeks ago, a read some slut's (wait: I'll prove it, very soon!) opinion and which went this way (citing from memory): "Yes I know mobile Macs' kb's have been crap for some years now, but I don't bother buying a new mobile Mac Pro EVERY year (my markup) since I oh so much love those admiring glances in public, from poor people discovering I can afford those (overpriced, my remark) machines! Poor girl! And another one: Some frog "journalist", writing daily (and even, quite often, 2 to 3 times a day!), in some frog "newspaper", about Apple products, told us, equally just some weeks ago, that Apple's "willing" to replace defective mobile Mac kb's, and that slut continued by giving its opinion that this was oh so kind of them; not a mumbling word about the fact that Apple's "readiness" had to be triggered by not 1, not 2, but, yeah, 3 class action suites against Apple! - you see, that's the difference between an Apple fansister and an Apple whore! (Whoever writes several times daily about Apple, for money, knows about such facts, so they take their readers wilfully for idiots.) But back to our subject of non-defective, just sub-par kb's:

"that runs on a mobile device that queries for the custom layout and shows it on the screen" - in my Apple-virtual-ribbon thread around 1 year ago here I spoke of these "current functionality assignment" indicators, on-screen, of very early DOS programs; I should probably have commented on that idea of those times, here again. In fact, in my post above, there's quite a LOT of additional keys, and I all need them: I take full advantage of my 4700, my (only) 12 F-keys, all my "virtual, additional" F-keys within the numeric keypad of my kb, and then, also, there's the "^" key, the "<" key, "the "#" key, the "+" key, there are the öäü/éàè keys when writing neither in German nor French, so there's some possibilities indeed...

But I did some thinking about it now, from reading you, and yes, quite efficient visual screen representation of "F-keys" (whatever they originally may have been) is possible (hence no real need anymore for LCDs or similar on the kb) IF you recycle your window distribution quite a lot; what's not working is putting visual representations of your "numpads" and whatever, far away from the real, physical keys; e.g. the left edge of my left screen is 40 cm (!) away from my left (the 4700) "keypad" (and kb).

For one, you need to keep your keys as near to you as possible, so you cannot relegate their visual representations to the far edges of your screens, in order for them to remain useful, but there's a solution indeed. File manager on your left screen, relegated (as before) to its far left; some main applic on your left screen (as before), "centered" with regards to yourself, i.e. to the right of the left screen: no changes here: outer 1/3, inner 2/3.

But then, your main application not starting anymore at the left bounds of your right screen, but there, visual representation of your left "numpad" or, better, of those 18 additional F-keys at the left edge of your kb - 15 (3x5) would be ok, but just 5 or 6 is simply not enough, I would need my 4700 additionally all the same, while my idea would have been to replace it, with a really good kb; above that, some (tiny) Todo app - it's clear as day that it would be much easier to get - from ANY source - a kb with 15-18 additional keys to its left, and a second range of another 12 keys on top, than a kb with ample LCS visuals!

Then only, somewhat "centered" on your right screen, your main applic, with a double "ribbon" beneath its bottom, for F13...24 and F1...12; for a good screen, this would take around 10 p.c. of its height and would thus be acceptable (for the user to get their main applic reduced by that height).

Then again, for the far-right quarter of your right screen, your right "numpad", and which is quite near the physical numpad of your kb, and on top of that visual, some other, tiny, tool - for other lists or similar, you'd then need a third screen indeed, again to the right - or to your far left.

As a result, this would divide my right screen, instead of 2/3 and 1/3, into 1/5, 3/5 and 1/5, and the result would be a little bit cramped though, on a screen around 2566 pix wide, which is better than many, but yes, it would be feasible; people with a 1920x1080 screen needing, but also being able, to place their third screen somewhat nearer, for their right-numpad representation being displayed at its left edge then - fact is, without a third screen, they will not be able to do a viable setup, and quite few people are willing to maintain 3 (or even 2) screens, but then, my left screen is dispendable for most, so realistically, we're at one 1920x1080 main screen, and a (really cheap) 1280x1024 screen to its right, with always missing "left" F-keys (few people would buy an additional keypad), and missing "second-row" F-keys above...

But fact is, from what you've written, I now far clearer see possible screen visuals, instead of (broadly unrealistic) kb visuals - thank you a lot, wraith808!


"72 years", "before sex change": lots of irony all over the place it seems; can't comment on Lotus Agenda, don't know it but by name. Just alleging that such a big groupware package certainly had a lot of functionality, and probably lot of it for what I call "manual batches above": have a short glance over some document, then send it to some fellow worker in order to process it further; then do the same with some other document, then again with some other: No real, extensive abc use but mostly navigation and dispatch, but to multiple recipients: a perfect example for "dispatch mode" (1 key, could also be the default, according to the hierarchical/functional position of the person in question), and then F13...24 would assign specific, often-contacted recipients, and with modifier keys, less-often contacted ones, F1...12 remaining available for "nearer" functionality, e.g. within text processing. A (very) bad example for how not to organize software: Outlook 2016's folder organization which is as basic as it gets, and which constitutes a big obstacle to productivity, email distribution into folders being as error prone as it is time consuming. And re "normalization": "new folder" in OL is ^n, in Firefox('s bookmarks) it's ^f, for me its the same 1-key in EVERY application. There are applications' specifics, but applications' similarities should, whenever feasible, be made available in some consistent way, so "This, I feel sure was not intended to be a cruel trick on the user or intended to tax their intellects. No, it was just that the program designers probably thought it was a good idea." should apply to specifics, and good ideas should be adopted, but among ^n and ^f, I prefer num9 (e.g.) = 1-key for both, since I use these commands a lot, and then you need a sufficient number of num keys, with modifiers indeed for less often used commands.

As for "(not sure whether it was the 2x6 F-key groups or the 3x4 F-key groups)" - as far as you will remember, in assigning functionality to keys in those groups, that those groups are for entirely different "workflow" situations, everything's fine: above the abc-kb mainly for functions needed when typing; left and right of the abc-kb for functions needed for "manual batches", i.e. whenever you "so something on" a quantity of elements, with no or very few abc-typing, and when you would have otherwise to reach out over the abc keys.

And if I'm not mistaken, WordStar did not make use (in its first versions) of the (available) F-keys, and people were quite unhappy about this; even early MS Word versions used these F-keys (with modifiers also switching the screen hints), and people fled WS in droves; if I'm not mistaken, again, Word's proportional screen fonts only came some years later, and then WS was doomed indeed, but from my memory (which could be failing in these details), people switched from WS to Word for the F-keys, and then only, some versions later, the rest switched for the screen fonts - then only (?), WS made use of the F-keys, too, but it was too late. (And, of course, MS sold heavily to corporations, but most people liked to work with Word, some preferred Word Perfect, but in most cases WS was chosen, that was - let's face it - because it was ubiquitously and illegally available for free.)

"The cost of the consequential inefficiencies would probably be enormous but unknown/unknowable." - that's why I sometimes say "30%" (= wishful thinking), and then again, "1 to 2 hours a workday": at least 1 hour a workday (which would make it around 12, 15 p.c.) seems very realistic to me, incl. better organization in general, i.e. less searching (electronic) things.

I've written about that problem several times, here and in Also, cf. my post re that Apple mobile Mac touch line above the F-keys, here, some year ago.


In a year somewhere around 1982, in the "IBM XP" or "XT" or whatever they called it, there had been 12 F-keys, in 2 6-keys columns (F1...6 and F7...12) at the left of the keyboard (kb): almost perfect, for ANY "batch processing" of any kind. Then, those 12 F-keys were REPLACED by 12 F-keys above the kb, in 3 groups à 4 F-keys; if those lunatics had grasped the need for ADDITIONAL F-keys, we wouldn't have fallen into that Windows-PC non-interactivity we've now have endured for almost 40 years.

F-keys to the left are for "batch-processing of any kind", as I've just said. This means that whenever you do NOT much of typing, but do "batch" processing of any kind, your left hand (for left-handers: everything to the right, 2 times more expensive, I know) will not be above the kb, but on your desk, to its (the kb's) left), and your digit will press the relevant F-keys. On the other hand, for any command you'll need when typing, those F-keys 1...12 ABOVE the kb are perfectly situated, e.g. for bolding things, or whatever, so we always would have needed BOTH ranges of F-keys, but hardware lunatics stole that setup from us.

As an aside: Cherry lunatics have been particularly idiotic - wait: I'll prove it: they're real idiots! -: Whilst in the Eighties, really good, i.e. journalist's kb's were about 300 Deutschmark (= around 300 bucks/Euros now), with LOTS of additional (F-) keys, in those years, Cherry produced some kb's with just SOME additional F-keys, mostly above the (regular) number keys / the regular 1...12 F-key range, and then, they only continued to sell those in the U.S. - not speaking here of the 5 left-alone key placements around the 4 arrow keys on your (standard or whatever) kb; whenever Cherry put those 5 keys there, it was for CRAZY kb's, having, instead of the num-keys, some what do you call again, for finger-mousing? Crazy, as said.

Technically, there is not the slightest problem with 24 F-keys, since the Windows system, from its beginnings or at least since very numerous years, is able to process the scan codes for 24 F-keys, not just for 12; ok, those F-keys 13...24 do NOT have dedicated scancodes, but those of Alt-Control-F...1...12 or whatever; I'm too lazy to look it up for you, not being your valet, but fact is, introducing, and then maintaining, 24 F-keys instead of just 12, would not have caused the slightest problem with anybody's system.

As you perhaps know, some "gaming" kb's have introduced 1...5 or 1...6, in exceptional cases even 1...10 or 1...12 additional (!) F-keys, at the left of the abc keys of their respective kb. Unfortunately, these come with totally crazy scan codes, almost invariably (?), since my trial with such a Logitech kb (the G910; and such a trial implies that you have to send that piece of crap back, and they will never sell you any other thing, good or bad, most of the time) showed me that its 5 additional F-keys send the scan codes of F1...5 - are those coders outright crazy?!!!

As said before, there are quite almost reserved scan codes for F13...24, and it seems (?) that no hardware (kb) manufacturer currently has the minimal IQ (of around 85, or let's say 82 1/2) to em- and deploy them.


Thus, you need additional input devices; some "keypad" or similar; of course some real numerical keypad which just doubles your regular numerical keypad will NOT do. (They send the same scan codes as your in-kb numerical kb does, so their only use if for left-handers using a regular, right-hander kb.)

As I said before (here and elsewhere), the almost-ideal solution for this problem is the Cherry (!) 4700, with 21 keys (18 of them being 1-key-size, 3 of them being 2-key-size: "0", "enter" and "plus"); the scan codes are NOT stored within some electronics within the keypad itself, so it relies upon (un-problematic) software, but it's just around 40 bucks/euro or a little less; the alternatives are a Preh 30 (with, you guessed it, 30 keys, which is, in theory, much better, but then, you can hold the Cherry (which then is always sitting on your desktop) in your hand, pressing the keys with your digit, and which comes tremendously handy, whilst the Preh 30 is much too big for that, and that implies you will NOT be able to press the (30) keys "blind", whilst you'll be able to do exactly that with the (21) keys of the Cherry).

And then, the Preh 30 (which was around 110-120 euro/bucks these last years) now costs around 150 euro/bucks, which is, for the little it has to offer, quite a fortune; similar for the U.S. alternative xkeys (came with 30 keys, now just offers 24; obviously, they GOT the very relevant idea of grasping the device with your hand, in order to then press the keys "blind"); both Preh and xkeys come with in-built electronics storing your functional assignments, BUT in your practical computer life, that does NOT make ANY difference to the ("electronic-less") "cheap" Cherry 4700 (and which is the only device tiny enough in order to be held in your hand, after all; and no, I do not get ANY dime for promoting the 4700 here).

There also are some foot pedals, but it's evident that with just 2 to 3 "keys" available from them, you will not travel far.


In practice, you will assign some key "combinations" to those additional keys, in order for them to be sent to your system, and then, you will have some macro tool which intercepts those (as much else), and which then assigns the respective commands = specific key "combinations" (i.e. "shortkeys") to the applications in question, e.g. in AHK by "if active window is named something, send this command, else if it's named something else, send another command (but which - hopefully - similar functionality), and if it's something else, this, that, and so on ad infinitum in case).

For my 4700 - I also own a Preh 128, but your digit-travel to reach the relevant key is too long, so I shelved that -, in the Cherry software, I entered the following key assignments: 2 rows à 4 keys on top: Shift-Alt-F1...8, then the 3x3 digit-rows 789, 456, 123 sending out Shift-Control-Alt-F1...9 (so original 9 is 3 whilst original 3 is 9, and so on), then the 2-key-space 0-key is Shift-Control-F10, the comma-key is ditto-F11, the enter-key is ditto-F12, whilst the 2-key-space "plus" key is Shift-Alt-F9 again, and which leaves me with ALL Shift-Control-Alt-F keys being "taken" here, whilst only the Shift-Alt-F-10...12 F-keys are to be used otherwise, the rest of them being taken, too (as said, 21 keys here, not 24 or more which would have been much better indeed).

Then, in AHK, I do the "real" assignments, as "for +!F1:: in appli x trigger a, in appli y trigger y, and so on".

All these devices come with - regularly inferior - software which in theory would allow for assigning, instead of just key combinations, full "macros", but these tools are so bad that's in your interest to just "program" key combinations, and then do the "real work" within the macro tool of your choice, all the more so since you will not have your macros spread over several tools, but in just 1 tool, also "servicing" your regular F-keys, your regular numpad-keys, and other non-abc keys on your kb.


With all those devices, the memory problem arises: How to know which key is the right one, for any such function, in any such program? As I said before, and of course, you will be interested in "targeting" similar commands to the same keys, "prev/next tab" should be assigned to the same keys, in every application, and whatever the specific commands in many such applications?

I have scripted a timer which, for every "active" application, updates (and displays) some "help file" for me, and in which I list the respective key assignments; it goes without saying that for such a setup, you need (quite big) 2 screens at the very least, and that there are 2 additional problems: (manual) sync problems with your real macro assignments and your updating your help files, and then, visually checking the help file, in some corner of your several-screens setup, doesn't really come handy since it takes time and effort. (It' understood though that you only need to check for rarely-used commands in your daily-used applications, and/or for (any) command in your rarely-used applications.)


Enter keypads or whatever which will SHOW the current key assignment. For some years, there has been some Russian developer who sells keypads, etc., onto which the keys have some luminous inscription (how do you call it again), indicating the current functionality (by LCD within the key itself); the prices are within several dozen bucks/euros per such key, of course; you will note that those are mini-LCD screens embedded within the MOVABLE part of each key, so it's / it would be no surprise if this is both terribly expensive, and also probably not really long-life? But this being said, if money isn't a factor in your expenses, you'd be probably well-advised to buy that Russian thing; google "Art Lebedev" (no dime for that either).

A low-price alternative is the "Elgato Stream Deck", which for one, in its own software, specializes in facilitating YT stream commands, but which is also usable like any other external macro device, i.e. for sending out key combis; it costs, for 15 keys, around 150 bucks/euro, so it's only a fraction of the high-quality Lebedev devices, per key, but its quality is on par with its price it seems, cf. some review on the relevant German amazon page (it's also sold by MediaMarkt/Saturn and which "both" (b/c it's the same owner) sell a LOT of crap): You press those "keys", and you'll never be sure whatever the result will be; btw. any of those "keys" are either a "command" OR a "folder for commands", which means 2 things:

- 15 keys are not enough, I'd need ALL of them for "folders", i.e. for command RANGES alone, and:

- the software coming with those devices obviously is not able to check for itself in which "context" = application you currently are, and by extension, which SET of commands currently should apply, a task which AHK e.g. excels in:

In other words: You would have to switch to your "current context" manually, whilst in AHK, e.g., it's the macro tool itself which determines that context, and you just press the key in question.


Also, there is a fundamental problem with such, "visual-hint" kb add-ons: Their intended use is with "icons", and my personal assumption (which could be erroneous) is that all this is a resolution problem, i.e. how many pixels would such a "key LCD" have, after all? SOME icons are ok, the ubiquitous ones, but for any lesser-used function, text-driven indications would be oh so much better after all; with the Lebedev devices, they may be possible; with the Elgato Stream Deck, they do NOT be seem possible (or perhaps then 2-4 big chars)?

Hence my reminder of my thread, 1 year ago, re that Apple "touch board" here, or whatever they call it, or of that age-old on-screen (!) current-F1...12 assignment hints (3 blocks of 4 > almost-immediate visual recognition) mentioned in that Apple thread of mine here; of course it would be feasible to devise additional kb's with LCD fields BETWEEN the keys, but as implied above, currently the Cherry 4700 is the only such additional kb which is really FAST in key pressing, and ONLY (again, see above) for "batch" commands (b/o its tiny size), NOT for commands-within-typing, and any additional even just 21-key device would be double its size if it had to contain LCD fields above those 21 keys.


It's obvious that any non-lunatic kb manufacturer would do the following:

- use Cherry "brown" keys (for ANY key of course)

- put TWO 12-F-key ranges above the abc-and-numeric keys, sending the regular Windows F-key scan codes F1...24, and with 2 ranges of (quite-high-resolution) LCD screens, above and below (1 double-height such screen would put the second, the 13...24 F-keys range too much out of immediate reach of the users' fingers):

- the LCDs for F1...12 being "1-line", to contain the "regular" commands/macros, to be frequently triggered, and to be easily remembered (most of the time); the LCDs for F13...24 being "2-line", for "rarer" commands/macros / more-rarely-used applications, i.e. the LCD in place being able to neatly display some 20, 24 characters, incl. some (very short) comments applying to those commands/macros.

- again, top-to-bottom:
2-line LCD
1-line LCD

- then, for "bulk processing" - oh yes, since anytime you process "in bulk", e.g. distribute pics (or other, text/web/mail, entries) to their relevant tag or folder "targets", all those a...z and 1...0 keys are a helluva of a nuisance, in order to reach F1...12 (let alone F13...24) -, and you would like to put your left wrist on your desk: 2 to 3 ranges or 5 or 6 keys (if 6, with a little additional space between #3 and 4) to the left of the (yes, quite enlarged, but so what: whenever you do "batch processing", your fingers are NOT on the abc keys, but (should be, for left-handers) to the left of your kb: some perhaps 6, 8 cm further to the left then do not do any harm), and from left to right:

- very narrow LCD sidebar for:
- F-keys 25...30 (all these sending scancodes as explaines above, for "remote" key-combis)
- very narrow LCD sidebar for:
- F-keys 31...36, then:
- F-keys 37...42, and then a:
- larger LCD sidebar for the previous F-keys 37...42

- sell the thing for 300 bucks/euro

As you can see from the above, the only "difficulty" lies in assigning the relevant commands/"macros" to all these F-keys; it goes without saying that some such assignments will be doubled, appearing in the F1...24 keys for "immediate, in-text" triggering, as well as in the F25... keys, for "batch-processing", and that term also includes key commands triggered by your left hand, while your right hand actions the mouse, e.g. in graphic programs, in FontLab or similar (more-or-less graphical) programs (most of them being from Adobe nowadays).

Such "distribution of key assignments" should, of course, be specific to any given user, BUT it's also true that NO such user, or let's say probably 1 out of 10,000, would be willing to set up all this by themselves.

8 )

As explained above, I do it with automatically-displayed help files (rtf format) in some corner of my (3) screens; whenever I install new software, I assign the relevant commands/macros there onto the "standard" keys in question, and more "remote" commands/macros to additional ones; also, I use the whole standard numerical keypad (the one within my kb) for commands and macros (except for calc/spreadsheets applications, of course; as said, there's no manual application switching in AHK and similar tools): Since my Cherry 4700 is "too far away" for non-batch-processing, and since my only F1...12 keys are simply not enough, and not immediately-reachable enough either, in order to trigger lots of "in-text" commands/macros.

Most applications have got just a little bunch of "standard" uses, so it's possible to assign standard commands/macros to standard keys, even for other users, IF there's enough such standard keys.

Thus, for standard applications (and a lot more in my case), you simply need a range of standard commands/macros you often need, and then some standard "distribution" of all this functionality (which often replicates itself, more or less, over several such applications) over some standard keyboard distribution, together with the correct visual hint organization, and then your overall productivity will be enhanced by probably 30 p.c. or more.


You COULD say that all these additionals F-keys were NOT necessary/useful, since, yes, all they do is trigger weird key combis, and which, at the end of the day, you could enter as such, why not manually entering all sorts of shift-alt, control-alt, shift-control-alt and whatever key combinations? But simply, most of you will not have the necessary memory (performance) in order to retain all those key combinations, spread over all those different applications (50? 80? more than 100, as in my case? hence my almost 20,000 AHK lines), so some kind of more immediate access to it all should be welcome, AND with visual hints!

This also implies, for standard software (there are some 5, 6 standard file managers out there, for example), a rehaul of their respective .ini files or whatever they apply in order to store their respective, most of the time totally lunatic (instead of a little bit standardized) key combinations; in other words, with such a real 40-years-later kb should also come alternative .ini files, and registry scripts for standard applications "doing it" within the registry, in order to get to some


... from which then on the respective users could do, of course, all what they want, but especially for the lesser-standard, more specific commands/macros they will be in need of for their applications and specific use cases; this being said, it's obvious that my macros, in ANY application, num1 = "go to the very first tab", num2/3 = "go to the previous/next tab", are such a sort of tremendously helpful "normalization"; you need macros for it since according to the application in question, different "native" key combinations are needed to do that. (Another example: On my Cherry 4700, "1" is "cut" (red dot, and OF COURSE with the according macro which hinders me to then do a second "cut", before doing the (ie at least one) corresponding "insert") anywhere, "2" (yellow dot) is "copy", and "3" (green dot) is "insert" (and re-sets the "attention: pending cut!" variable to 0), while "comma" is the the same in any hierarchy, for "insert as child", whilst there, the "3" above is "insert as sibling" - in ANY hierarchy. And so on.

We're ALMOST FORTY YEARS after the introduction of the "personal computer", and up to now, all those promises of more efficiency have been quite poorly fulfilled, and no wonder: If you switch between dozens of applications, always having to remember which key to press for what function(ality), that's awfully poor, "more than 35 years later", don't you think so as well?


It's obviously not about the soft- but about the hardware manufacturers; of course, it'd be easy to implement all the necessary "un-do"'s, i.e. scripts saving previous ini files and all that previous, individual user's info if they then aren't happy with the result, but fact is, with "overall", with "over-all-application" user-software NORMALIZATION, AND (much) better keyboards, ideally with visual indicators, both for the "learning" phase and then, also permanently, for "lesser uses", i.e. for the more "remote" commands / macros / applications... with what you'd call

visually-assisted user-machine-interaction normalization

and except for those very specialized users who predominantly do just ONE thing on their computer - just number crunching, just graphics, just writing fiction e.g. -, I seriously reckon you'd win at least 1, if not 2 hours EVERY DAY - but of course you're all free to laugh upon my lack of the necessary hardware factory, while continuing wasting your time and your energy.

(In the Eighties, journalists had special kb's, with special software but just for writing; of course, that market was too tiny, and at the time, nobody obviously had the idea to make real use of those ace keyboards, so they vanished, together with their special writing software, and now, almost 40 years later, almost everybody go with a kb that is scarcely better than a typewriter's, but now for ALL their work to do, and just because they're all too lazy to do some scripting, individually, whilst better human-machine interaction is hardly seen but in big corporations, here and there, and because hardware manufacturers obviously don't know anything about users' (global-software) needs.)

You know, years ago I published here my (original!) idea for young people of earning 4,000-5,000 (bucks/euro) a month BUT spending 2,000 on that, ever month, on some unofficial help, instead of getting their first freehold flat in record time, but in order to earn 10,000 a month very, very soon, after which those helps in further career will be fully official.

I'm quite sure some followed my advice, with brilliant results, and of course without any "thank you", all to the contrary, calls to be be silenced are all I get. And then, there are those who do not even "get" what they're told beyond their previous standards, and they are legion; ancient Rome is history: not because they were all dumb but because most of the decision-makers - not speaking of the idiot masses then and today - over there were lunatics: smart people but who insist on thinking on rails though.


Num 1/2/3: Num1: More precisely, if the application in question has the function(ality) "go back to the last-active tab"; if not: "go to the very first tab in the row" - it just occurs to me that the "go to the last-active tab" is possible, in most cases, by some application-independent variable, to be set on any tab change.

Ini files and other storage places of the original keyboard shortcuts of the specific applications: I missed the fact that many macro tools (incl. AHK) even permit you to leave those original key assignments mostly all alone since they permit to assign (original) key assignments to (macro-tool) key assignments, e.g. in AHK for a specific application: num4 = send Shift-Alt-F5, that +!F5 being the original key assignment for some command in that application, and +!F5 in AHK and hence for your global assignments, by this, is NOT "done with", but remains fully available, for assignments, so if you then do "+!F5" in AHK, even in that application, it will NOT trigger that application's command (except if you say so of course).

In my practical work, I usually avoid* such "broken circles" but simply re-assign the original shortkey, within the application, to "nothing", in case, assigning the "global" shortkey but within that application, to the desired functionality, but for a third-party, commercial product, you simply would LEAVE ALONE all these original shortkey assignments, and just OVERRIDE them in that "broken circle" manner. (Just very simple macro tools do not allow for this, not being able to intercept the original key (combi) assignment.)

*=Thinking about it while writing about it, it occurs to me that with my (at last) fast computer, there is no (more) speed reason to do so anymore; just intercepting the original assignments and transferring them to the wanted, (hopefully) "global" shortkeys (or at least, to some 1-key shortkeys, for original 2- or 3-key combis) is the "neater" way, not speaking of other people's pc's.

And in order to further simplify things, you can perfectly allow every user, individually, to put on or off any "global-software" interaction with their specific software tools (application-bound toggles): You just refrain from doing your key-assignment (i.e. interception) tree by key, then by application, but you build it by application, then by key (for speed reasons, this variant will not work well on 8088 computers, he, he!).


Well, to present this sub-subject correctly, some important commands, within the respective applications, do NOT have been originally assigned some shortkey, and instead of then doing (visually ugly) menu or ribbon commands, whenever it's possible to assign an(y) additional in-application shortkey which you then can simply intercept / further process later on, that's much preferable. Hence the need to run some script on those elements of the application in question. And this again shows what a poor "servicability" most applications have got, not API or such to smoothly permit such kb (or other setting) changes from the outside. Also, we see here how bad the OS (Windows) is; had they foreseen these global-standardization needs (of the users, in order for them to work efficiently, with multiple programs), they could have easily enforced the necessary interfaces between the application level and the OS.

Also, so-called window management is incredibly bad, by OS means; shifting around windows into different (standard) positions (for different workflow combinations) should be really easy, i.e. be available by kb - I've got quite some such key combinations consumed for such means now but can't really remember when I last tried to move or resize some window by mouse: just aligning windows is really the most primitive part of these routines... and all this is genuinely kb task (and so easy code-wise that you really wouldn't need some special tools for that), fit for some global kb package, which of course should comprise as many standard applications as benefit maximizing greed would allow to maintain up-to-date.

EDIT 3 (July, 23):

To be honest, the Logitech kb comes with software which then allows for assigning other functionality - hopefully some key combis - to those 5 keys, and which then you can probably trigger from your global macro thing; don't know since I bought and returned it when I hadn't a pc on which that theirs software ran; but even then, having to run another dedicated software package just for 5 additional keys is crazy, sending F13...F17 would have been so much more natural in that case, than, as said, sending another 1...5 again.

This being said, it MAKES sense to duplicate functionality, for in-text(ing) use AND for batch use, for right hand AND for left hand, in some cases; e.g. for cut/insert, for bolding..., but it certainly makes NO sense to double the functionality of left-hand 1...5 (over qwerty/z) with 5 keys just some cm away. -

Remember, in the Mac-mobile thread, I said that they did NOT ADD that visual-key line to F1...12 keys, but they just replaced them with it, but since all this application-specific (or even situation-specific) key assigning is about making available what you will most probably need there/then, just 12 or so "things" isn't enough, especially since it's not even user-specific but done by the respective developers for then all of their applications' users. It seems, in practice, that in most situations, will not NOT even have 12 virtual keys in that line, but more often than not, many less - while in theory, at least, it seems that within that line, even more than 12 such "keys" are technically feasible; of course, more needed precision in digit tapping will reduce your speed even more (additionally to the speed reduction caused by the fact that it's about virtual, not physical keys). -

Another aspect of mobile devices: If they don't come with a numerical keypad, you're more or less helpless, command-access-wise, since you will not even be able to use your regular keypad commands; in other words, you shouldn't buy 13" devices or lesser, and strictly discard any bigger-screen device which doesn't come with a numerical keypad - there's room for such a thing from 14" screens on, but even some 15" devices come without. -

As an aside and alluding to my sayings here re "application/window management" in some other thread, and also adding to what I've said above re the application-OS interaction, it's simply crazy that with "on-board means", you're unable to quickly and consistently identify the currently-"active" application, i.e. the one that will "accept" your kb input.

Btw, for fast window switching alone (the mouse cursor should be switched in line, which is technically very easy: it's simply crazy to switch active window, just for having then to find the current position of the mouse cursors visually (e.g. by moving the mouse a little bit), and then to move it manually to its new target window, but that's exactly what most of you do), you need some additional keys; for 4 such windows (left screen 1/3, left 2/3, right 2/3, right 1/3) I've used F9...12, but needing more such windows for 3 screens, also for some, 2 windows beneath each other, I'm currently searching for a better solution, shift-F9...12 and such not being fast enough; F1...24 above the 1...0 would have been the ideal solution for this problem, with up to 10 keys in 2 rows just for window targeting - the mouse having been invented for graphics programs in its day (and then you really need F-keys in some left-hand device, not, for your hand, on top of a full kb, beyond all the a...z keys for each key press).

So for active-window identification, I only found the really ugly solution to have a timer in case (ie if there's been a change) move some quite big color rectangle onto the caption of that active window, a little bit to the right so as to permit to read some of that caption's text altogether, and bigger than those captions, for better visibility - there's systematically some room for this (i said it's really ugly); in the old days, the active window had much better been identified visually, whilst today it's often almost impossible: it's more or less been smoothed out, for esthetical ("beautifying your screen experience", my ass!) reasons, up to a point where you need to revert to such crazy means as mine described here, in order to visually identify your active window (and not having to press the respective F-key; btw, such an F-key will only be really available for other, better things IN that window (and different such things, depending on WHICH application currently is in that window) if you can always be sure IF that window is currently active or not, without that visual check taking long seconds.

Here again, it's the "overall interoperability of your system" or whatever you call it, which is clearly lacking, buy OS means, not speaking of the fact that it's Windows itself, of course, which should correctly and automatically re-position your mouse cursor (within the center of that window, whatever it may be) with any active-window switch. (It goes without saying that within macros with interact with different windows in their curse, the timer stops, so as to not flash the visual indicator around while it's of no use for the user anyway.) -

As for additional (and left-hand, to be used in combination with the mouse in your right hand, or vice versa) input devices coming with software, there are available some such - at least software-wise, dedicated - devices for Adobe's Photoshop, and also for (equally expensive) video cutting software, the kind within the 4-digit range: It's obvious that people who make their living with such a program, and obviously for time (/) efficiency reasons (or their respective employers), are willing to spend several 100 bucks for such dedicated devices, coming with dedicated (? at least originally sharply targeted) software, which then can probably be adjusted to the specific user's needs, for that one single software (used many hours a day).

On the other hand, it's not worthwhile to even think about marketing such additional devices, including software, from a developer's point of view, since for one, as (more or less) explained above, it's not even reasonable to do much with additional devices, all day long in general pc use, a simple 4700 will suffice, and you will only need it in order to replace those missing 18 F-keys ideally on (! instead of to!) the left of your kb, whilst on top of the kb, there's some other 12 F-keys which are missing, and some other 5 keys missing "around" the arrow-up key - of course you can color those 5 keys differently, e.g. red within an otherwise grey or black kb, in order to clearly differentiate 3 groups of keys there, the 6 on top, the 5 additional ones, and the 4 arrow keys; btw, it's especially those 5 keys which I miss a lot, since the ONLY "functional" key which is in immediate vicinity of those arrow keys, is the "delete" key, and with all due respect to idiotic "engineers", it's clear as day that most of the time, if you do "manual batch processing" within some list, some tree, it's NOT for deleting most things, but for triggering other commands on (some of) them, and unfortunately, if you really want to use your numerical keypad for those commands, you would need to use your thumb for the arrow keys (down-arrow, most of the time), a thing which I never got accustomed to, or you would need to move your hand A LOT, in order for your digit to press the arrow keys AND then the - far-away - respective commands, your only other alternative being to press the numpad-keys, more-or-less "blind", with your ring (4th) finger - thus, not having those 5 keys "around" the up arrow available, I use my 4700, with my left hand of course, in combination with my right hand pressing the arrow keys, and that's far from being perfect since, being a right-hander, my left digit moves much slower, so that my right digit, being under-employed by just doing the navigation, waits almost all the time for my left hand to have pressed the correct command in-between; WITH those 5 missing keys, I could learn/train a 2nd/3rd/4th-finger use for this arrow-AND-command key package.

And yes, this invariably leads to the finding that if you had a (full-sized) additional key beneath (!) your down-and-right-arrow key (instead of, quite often, mini-sized "media" keys just there), doubling the down-arrow-key (but sending another scan code of course), you could finally press that key with your thumb, for anything and mostly for "down" = next item in (whatever) the list, using the full numerical keypad, with your 2nd and 3rd finger, at very acceptable speed; the current position of the down-arrow pressing your right hand into a very awkward (and unhealthy) position if you try to do that now.

And btw, the arrow keys were originally set up as a real cross, with a space (no key) in its center, and here again, the original, very good idea was then lost: nowadays, you will probably not be successful in discovering any kb where the arrow keys except for the "up" one will NOT be positioned within a line. Yes, that has some advantages, too, but the obvious solution for all these problems is "doubling" the down-arrow, in order to make its "double" "thumb-ready", with different scan codes but which by default would function as down arrows (if the user doesn't then re-assign otherwise, for some applications / workflow situations), just like the 1...0 keys and the num1...num0 keys send different scan codes (ditto for num-, num+, num-enter), but send identical digits by default.

Back to dedicated left-hand devices: Since they come with their "factory" set-ups, they allow for immediate use within that single application, and since they don't come with dozens of keys, the user's memory will not be really strained: After some hours, the users will have memorized which key to press for which function, more or less. It's obviously not the same situation for some system trying to make the user efficient overall, in all their applications and, ideally, all their standard "workflow" situations: Here, the memory problem is an overwhelming one, hence the need for visual indicators, and as explained above, you could do - well, with some fonds that is, having it physically made by third parties - it for an additional device, but again, as explained above, this would force the user to "do it all" on and with that additional, left-hand device, while most of the time, kb-integrated F-keys and the kb-integrated num-keypad would have been the much better choice, but which then isn't available because of the lack of visual indicators, and so it's not surprising at all that additional keypads have never become widespread: the lack of visual hints is only part of the problem.

Also, there would be some learning phase indeed; following visual hints is one thing, taking the time for reading them, in that apprentice phase, is another one. But integrating visual hints within a(n also otherwise amended) kb (instead of forcing the use of some left-hand device even for things you better do within the kb) is comparable to those mobile Macs' visual-hinting, virtual (and as said over there, "context-sensible") F-keys ribbon: It's all there, it's (automatically, without user-side scripting) context-sensitive, and it's so much better than (remembering, to begin with, and then pressing) some Shift-Alt-something, so the learning phase will be more or less long, depending on the applications and contexts, but users will use more and more of the immediately-available, 1- (or, just for "remote" things, 2-) key commands, simply because doing so will greatly speed up their work, and because 1-keys come so much more handy than key combinations, remembered or not.

As said, Apple took away the physical F-keys, so concerned users don't have a choice anymore, but that's not the point: even if Apple had left the physical F-keys alone (and making that LCD or whatever it is a little bit broader, in order to also give hints there for the current command assignments of those physical F-keys), users would have adopted the virtual, additional, context-sensitive "keys": anything which is immediately available AND useful in that work context, is more than welcome, instead of taking away your hand(s) from the kb, as for example it's needed in order to press weird key combinations: the interruption in your work is quite sensible with anything NOT immediately-available-when-needed - and that's perfectly understandable, too: Remember those authors do refrain(ed at the time) from pc use, providing the explanation that writing by hand was "immediate communication with the result on paper" (or something on that line of thought), whilst using a text program would "interrupt" their work: even using arrow/del keys for inserting something, some words up, then going back, breaks your "workflow" - in fact your flow of thoughts! - to a much larger degree, than just crossing out some words by a single line (of the needed, immediately available length) of your pen, and replacing it with some other term(s) perhaps, scribbled in-between your lines or in the margin.

Thus, it's upon kb manufacturers to physically build such (corporate and home) "office" kb's, and then the necessary software will be NO problem whatsoever, software costs of even perhaps 10 bucks per 300 bucks kb should be bearable, and with users' (forcibly) sharply rising productivity (and that info coming down to non-users, left behind provisionally), sales will rise consequently. Remember, better kb's were available at some time BUT came without pre-figured software, and writing the necessary code then - let alone the really bad software systematically coming with those kb's which, except for the fact that it's resolutely proprietary, often does not even allow for a simple "if" - simply isn't out of reach, and be it just for time reasons, of the "regular user", hence the current situation:

Almost "40 years after", there is NO generic smart input device available, while it's obvious that kb manufacturers could, with better hard- and real (call it "overall-productivity" or something like that) software, compensate lots of the OS's deficiencies; it's utterly ironic that even MS builds (or have being built by third-parties) kb's and mice, but that those come with the worst software of them all; not even key combination assignments to mouse buttons were possible at the time*; this may have changed in-between.

*=Here, as with the kb, for the time being and in the absence of such elaborate software coming with the kb**: You assign some weird key combi to the key/button within the software accompanying the device, and then, in your real macro software, you intercept that key combi and write the necessary, in case multiple, routines for it, specific to the active application and/or the current work context.

**=Any kb manufacturer would have such software proprietary in functionality, but, in view of facilitating user-side adaptations, written in some AHK- or AutoIt-aligned code, and since many users, some even for health reasons, prefer using a mouse (or similar) of their own choice, (even third-party) mouse integration would be provided by interception of the mouse commands (sent by the software accompanying the mouse) by the "global" software, accompanying the kb but fully replacing what your current AHK- or AI-installation could do (so at the end of the day it SHOULD be AHK or AI; both are more or less in the "public domain" and thus "adaptable and adoptable", I assume), incl. e.g. text expansion and other goodies; with some better OS / Windows-internals integration than what's available to me, I'm also sure that "window management" and especially "active window's better visual identification" can be done in some more elegant way.

In theory only, such software would be independent from the hardware, but at this point in time, there simply is no hardware available which would make such generic software acceptable to buyers: i.e. immediately useful to them, that factor being a condition for possible marketability. You just can script such tools for yourself, and then live with the current real-life conditions grossly reducing the potential of what you will have coded, kb manufacturing, let alone the integrated lcd's or whatever, being simply much too expensive for your usual 1-man shop. (Oh yes, and there's always "crowd funding", ho, ho, ho...)

Big bucks for big bugs


Interesting thread here: https://www.donation...ex.php?topic=45556.0 : Synching when file names and/or file positions (renamed folders, files moved to other folders) have changed.

First (ie the asking) post there: "WinDiff, WinMerge, FreeFileSync, GoodSync, Beyond Compare, ExamDiff Pro: not possible." - Nothing surprising here, the "differs" don't give a damn, BC is often helpful, but doesn't give a damn for "deplaced" elements either, we've had a big discussion here on their same stance with such elements within edited files ("text compare" there, here: "folder compare"); Syncovery tries to do it correctly (without it succeeding with it in ALL circonstances), but in order to do this, you need it to run its sniffer program (for file/folder renames/moves) all the time (and then it will only - hopefully - identify as such just renamed/moved files from that point its tool will have ran to that effect, and anyway, that program is not for YOUR then doing things on those file/folder subsets, but it will have its own way on them, as synchers do, deduplicators (which you need here, or then some script doing it) being another software category after all); lately, ViceVersa tries to do something similar, on similar conditions; GoodSnyc is BadSync from my personal experience anyway, I never touch my licensed program anymore.

But this thread is about doing trials.

In the linked thread, Fast Duplicate Finder was mentioned, then "doesn't do it"; of course not, it doesn't even do regular duplicate finding without bugs, e.g. see for yourself if sub-folders have identical names to their parent-folders (example: m:\blah\doo vs n:\blah\doo\doo); I then (only) found a (ie one single) deduplicater (half the price of FDF) which is able to treat "uniques" correctly, wherever they be / be named, and then, with reversal of the hits / non-hits in case, you get what you're after; from my experience, ie then doing extensive visual checking, that other, recommendable program does this faultlessly.

To the point

Unfortunately, before discovering that other program, I had already bought (over-expensive) Fast Duplicate Finder, being mislead by two/three factors which are smoothly interwoven:

1. good reviews (whilst at the end of the day, it's one of the worst deduplicators out there)

2. price (in combination with 1. and with 2.: "must be really good", haha: if one lawyer takes 500 bucks the hour, and another 150, and if you can afford both (you being some big corporation e.g.): Which one will you very probably choose? Bingo. (That's called positioning your services.)

3. crippled trial. I have mentioned this factor above already, but not with regards to this current aspect: In the trial, hide the bugs, hide the weaknesses from your prospect, but make exaggerated and/or meticulously-worded promises about the withheld functionality so that your prospects can chasing rainbows, leading them to buy, especially in combination with 2. (And even some reviews (1.) may have found their way out to the web in that trial-and-dream-about-it stage...)

Hence, kudos to Fast Duplicate Finder's marketing, and which made me pay my current, brilliant duplicate finder triple its price: one third of the total going to that fine tool, and twice its price into the loo (FDF).

40 in reply to some "Bill":

So we're "cheap" but didn't get it, heh? Let's put this straight, then.

As a developer, you're musing about sites like GAOTD (sic, ie repeat the name aloud for yourself, hint: it's not "extended trial of the day") - since, indeed, giving away your work seems "impossible" (if you have to live from it and aren't in the enviable position to do it smart-and-fast, and for building up credentials), but then, making your software known to the public by the traditional ways (today: google ads) is incredibly expensive or not that efficient (repeatedly raving about it in remote fora); writing scam "reviews", under multiple identities, within (where real, detailed but less enthousiastic user reviews are systematically censored) seeming to be the best way of doing it without losing money, currently.

Let's be serious: Most developers NEED some incoming money from their efforts, so half-price on "bits" means 25 p.c., GAOTD means "nothing" for starting: How to do it? The answer is VERY simple, once you start about thinking about it:

Have a full-functioning give/sell-away "standard" version which is "crippled" by your own standards/strivings indeed, but which is at least as good as the standard, similar "open source" offerings are in that respect - unfortunately, in elaborate video editing, these standards are incredibly high; in most other fields of software, it's easier to realize this.

Then, you must not only encourage but accomplish satisfactory "conversion rates", ie getting your "cheap" or "free" users to buy the non-simplified version. In order to attain this, you not only regularly update your "pro" version, but at any such occasion, you have your throw-away version installations (ie throw-away from your point of view) automatically update themselves, in order to give the respective and following info to the user (whenever they run your software next time after that date, so technically: upon each run, your cripple software would "phone home" in order to check):

"For the next 7 (or 10 if you're really, really proud of the new functions) days (only), this software will come with complete functionality, and especially, it now also comprises ... (with explanations) - AND you'll get a special upgrade price* if you order the upgrade within the next 15 (!) days."

(* = (plus VAT in case but) of which the net price you retain more than 90 p.c. here (considering the payment processor fees), not just around 20 p.c. as with "bits" or others)

And from then on, it'll be all up to yourself and the quality of your programming, for the lesser part technically-wise, and for the much bigger part "design"-wise, which means system-user interoperability, ease of use, "intuitiveness", "ergonomics" and all that.

And yes, some users will not upgrade at the very first occasion but will try to do their "serious" work within those 7-day time frames, but since they will not occur when they "need" them, and since you will not multiply these excessively - once every 8, 9 or 10 months or so will be largely sufficient to remind your users of their duty vis-à-vis themselves after all! -, most of them who really (ie with a certain regularity) use your software will end up by buying (and then also updating, if you justify those updates) it:

Just give them valid reasons to do so, and give them the occasion to do so; most developers do their trials so badly though that their prospects aren't even able to do a new trial again after a substantial update of their software, after one or several years. And an extended (even 1-year-) trial is no alternative for what I say since you take away all urgency, all incentive to make a decision soon, and within a your, when your prospect then would have to pay, they will have plenty of time to discover, and to compare with, similar, alternative, competing software: "if I now have to pay (at similar price) anyway, I'll buy the very best software of its kind!": No "gratitude" there, all to the contrary, since you even TAKE AWAY from them: "forcing" them to pay then will even make them chose equally-prized, slightly inferior software as a replacement!

No, 1-year trials are counter-productive for anybody involved, whilst continuous (and even updated, for Win-compatibility and bug-extermination) "standard" versions, with regular reminders what's brilliantly new within the (for 15 days around 25 p.c. reduced vis-à-vis the official price) new "pro" version, will bear tremendous conversion rates to your paid version.

And then, do continuous development, with (worthwile) paid upgrades slightly less then every 2 years, BUT charge for them 30 p.c. of the full price, not 50 p.c., not even after more than 2 years: There again, you would make your customers have think again about possible switching instead.

No need for GAOTD's renaming, it remains to be an incredibly useful platform for smart software developers in need of prospects. Cf. my "How NOT to Conceive Software Trials" from one year ago which you (only*) can find by google if you also add "". (* = and that says it all about the real, rather insignificant web impact of such exotic fora like theirs where desperate developers try to get some prospects from).

No need for verbal abuse ("everyone on GOTD is cheap") then, just do things smart on your side and thus GET the Win-Win GAOTD offers to you. QED.

General Software Discussion / Re: White Identical Twins
« on: August 06, 2017, 06:01 PM »
Wanna have a good laugh?


(My screenshot from some moments ago.) See

No problem. You see, this Sunday evening, I've had another 5 hours (or was it 6?) of black soul music, not a single white artist in-between. So, the views expressed in the article aren't mine ("Google is intentionally promoting white genocide"), but the info in there is very amusing.

Some people might fear now that where it was not as obvious, google manipulated, too? But what I do know about such things; I'm more into reading books anyway.

Oops, another link with pertinent info here: (That's not a leftist paper, but a hard-core billionnaire's one (Burda) - so even billionnaires get scared now by the prospect of alleged power-thirsty even richer ones taking it all over?

Well, there have been rumors lately that the FB owner wanted to run for President asap, and that the google owners wanted to do anything - but really, really anything, you know - in order for him to succeed. I'm so sorry for Mr. Burda - I don't give a heck anymore.)

Real good info re google in that German news account - read it by google translator then, hahahahaha.

or How to write regular expressions without losing your mind

The following AHK script line reads a file into the variable tb (you could search the text file instead, but we use a variable for much better speed; tb stands in for the textbody-to-be-searched, but you could use replace tb by the clipboard for simple searches; we don't use the AHK clipboard variable here since we need that further on when we do a script (which includes an altered regex search for the finds) which will not only search once but will search for all occurrences and build a results table for them.

fileread, tb, C:\AHK\regexvicinitysearch.txt ; or your respective full file path (; plus text are comments)
Don't mind the mix-up of variable and (path) string here, both without "", that's crazy AHK command (contrary to AHK expression) syntax (some commands aren't available but in command form, others in both (in 2017, they've been working on this for years now...); just always do it exactly as it is spelled out here.

We begin with a simple regex search; in fact, it's so simple that you would use a regular search instead, but it's for clarity reasons here:
pos := regexmatch(tb, "youronlysearchstring")
pos is the output variable for the command and is either 0 or in case of success, will contain the "character position" of the very first character of the found (complete) searchstring.
Additionally, you can also retrieve the found searchstring (which is devoid of sense of course if it doesn't contain any unknown-yet elements, as here):
pos := regexmatch(tb, "youronlysearchstring", result)

Then, you will like to see the output, ie position of the find (if any), and the full found string:
msgbox, %pos%`n%result%
This will show you the position-in-text number of the first character of the search string (0 if not found) and then, in a second line (and if found), the full search string, ie in this primitive example, just your searchstring which you know already, but later on, it'll be your firststring, anything in-between (which is the reason for which this output string is of interest), and your secondstring, or even more complicated search results. (As with any other variable, you can replace result by any other name except for "reserved" names.) Hence, simple regex search:

fileread, tb, C:\AHK\regexvicinitysearch.txt
pos := regexmatch(tb, "youronlysearchstring", result)
msgbox, %pos%`n%result%


X near Y (just for basic explanation means)

Then you would like to find 2 strings within the vicinity of each other (either order, x then y or y then x), so this is an "OR" (by "|") search, since that's the subject of this thread.

We group the "OR" elements (yes, into groups) by parentheses "()", and done:
pos := regexmatch(tb, "(yourfirststring.{0,30}yoursecondstring)|(yoursecondstring.{0,20}yourfirststring")

NB: yourstrings are not variables in this expression, but just placeholders for your respective strings (so when you replace them with your actual strings, don't add any more "" here).

tb is our variable, so no "" here; instead, you could put in the full text to be searched here, enclosed in "" then; this is just theory though since even when this string is rather short, ie is some substring, you regularly will use a variable instead, since you will have read that substring into that variable to be searched further then.

.{n,m} First for the dot, which means "any character". After the dot, you have a multiplier (for "how many occurrences of any "any character" for dot or any other immediately-preceding element (which can also be a group in case)).
The dot includes even possible linebreaks, but by option, you can exlude them by option as we'll do later on; for vicinity search, that's often wanted. (Remember that line breaks quite rarer than screen wraps.)

The multipliers: Asterisk * is for "any number incl. 0", plus sign + is for "any number but at least 1", {n} is for "number n", {n,m} or {n, m} is for "at least, at most", for example {0, 30} which could also written as {,30}, and similarly, you could write {30,} for "at least 30" while {30} would be "exactly 30".

NB: If you use variables instead or numbers (integers), n and m or whatever (as we will do below), then these variables must be written outside of the substrings in AHK, i.e. outside of the "" parts, and even the surrounding spaces are necessary (see the code below), so the slightest typing error will break or falsify your regex expression; on the other hand, if you use templates, like we do below, once they're set up correctly, you won't touch them anymore, and thus they will continue to be reliable; in fact, that's the other big advantage of using variables instead of strings within regex expressions: programmatical reusability, AND robustness.

Your while firststring and its character length is "eaten" by the yourfirststring match, so its length doesn't count anymore into the length of this "anything in-between", but it counts of course into the length of the (variable) total search result string (variable since the "in-between" is of variable length), so if your script does multiple searches, for multiple occurrences, these sub-string lenghts (all 3 of them, first, in-between, second) become relevant for the correct starting positions of the subsequent search runs.

As you see from our example, you can use different distances for "x then " and "y then x"; albeit not being certain of their usefulness, I've introduced them into my expressions, together with variable assignments which prevent you from typing identical data multiple times, see below. Here the code with just a minimum of variables, but which is bad since you will probably damage your regex expression by typing your real values into it (search from begin as default); note that there are no global (), just for grouping (2 OR groups here):

; X near Y (just for basic explanation means)

fileread, tb, C:\AHK\regexvicinitysearch.txt
pos := regexmatch(tb, "(yourfirststring.{0,30}yoursecondstring)|(yoursecondstring.{0,20}yourfirststring)", result)
msgbox, %pos%`n%result%


1) X near Y

The same with extensive variable use, so that your regex expression would stay unchanged. This is real ugly but presents the advantage that the expression will not change anymore, so you can easily and programmatically put use any other values for the search terms and for the distances into it (the expression becomes a reusable template); you also see that of course, you can use different distances for either order.
NB: In the AHK expression, the spaces between the variables and the substrings are mandatory. (You could use dots instead, but then your expression would become really unreadable: dots for concatenation, and dots for "any char".) So this is the code for ONE search, ie which will find the very first occurrence of y after x or x after y (;= for string assignments, = for integer/numeric assignments, all distances are the respective max distance we allow for between the elements in question):

; 1) X near Y

; your input instead of mine here:
tb := "C:\AHK\regexvicinitysearch.txt"
x := "yourstring1"
y := "yourstring2"
xy = 30
yx = 20

; but don't touch these anymore:
fileread, tb, %tb% ; that's for showing you how crazy AHK is:
; 1) the same variable name for (even totally different kinds (but not formats) of) input (path) and output (content) - my fun
; 2) two variables in one command, first one mandatorily without %%, second one mandatorily with %% - their fun
pos := regexmatch(tb, "(" x ".{0," xy "}" y ")|(" y ".{0," yx "}" x ")", result, 1)
msgbox, %pos%`n%result%


2) X near (Y or Z)

Then, also of high practical value is the search template for "x AND (y OR z)"; you don't need permutations here since your "must" element will be x, and your "either" elements will be within the "OR" group; then you have:

x, then up to x-to-yz chars, then (either y or z)
(either y or z), then up to yz-to-x chars, then x

We need two outer groups: (mandatory element before either-element) OR (the other way round),
and each group contains 3 sub-elements: 1 single element, the "in-between", the either/or group in () (order irrelevant):
x ... (y|z) | (y|z) ... x
and with outer:
( x ... (y|z) ... ) | ( (y|z) ... x )
As you see, that's easy, albeit in regex it becomes almost unreadable, as we see later on.

x AND y (full string) is: "(" x ".{0," xy "}" y ")"
ditto with the ()-grouped alternative y/z and the new distance: "(" x ".{0," x_yz "}(" y "|" z "))"
and the other way round: "((" y "|" z ").{0," yz_x "}" x ")"
we combine them, the order is irrelevant, but we preserve this order, in order to show that the double (()) are not global but are constituted by partial ():
"(" x ".{0," x_yz "}(" y "|" z "))""((" y "|" z ").{0," yz_x "}" x ")"
we must delete the central "", and we must insert the central | (I don't speak of "replace... with..." since these "musts" are independent from each other):
"(" x ".{0," x_yz "}(" y "|" z "))|((" y "|" z ").{0," yz_x "}" x ")"

Combining the outer ones the other way round would have given: "((" y "|" z ").{0," yz_x "}" x ")|(" x ".{0," x_yz "}(" y "|" z "))" - as you can see, the (()) are misleading at first sight, but of course, technically, the variants are quasi-identical. In fact, they are not, since here, the outer OR search also begins with an inner OR search, so this search should be slower than the virst variant advocated by me.

Hence we've got:

; 2) X near (Y or Z)

tb := "C:\AHK\regexvicinitysearch.txt"
x := "yourmuststring"
y := "youreitherstring1"
z := "youreitherstring2"
x_yz = 30
yz_x = 20

; don't touch these:
fileread, tb, %tb% ; of course, you should better use tf for textfile and tb for textbody, in any non-AHK...
pos := regexmatch(tb, "(" x ".{0," x_yz "}(" y "|" z "))|((" y "|" z ").{0," yz_x "}" x ")", result, 1)
msgbox, %pos%`n%result%

You must understand that whenever there is an OR, there is some precedence, ie whenever the regex matches the full string, according to its expression and according to the repartition of the elements in that expression, it will end the current search, while you might have been interested in alternative matches which will never come though. For example, whenever there is a match for yourmuststring AND youreitherstring1 (which ist searched for BEFORE any possible match for yourmustring AND youreitherstring2), ie a common occurrence of both within the max distance x_yz, the current search will stop, EVEN if youreithersearch2 is even nearer to yourmuststring than youreitherstring1; since our regex searches in mixed orders, x before y-or-z, then x after y-or-z, the final search results can even be more surprising.

So you must bear in mind that any valid search result, resulting from an earlier combination search of your current regex run, will be shown, to the detriment of any other search result by that same run, which also would have been valid after all, but which isn't searched for anymore. So inept or just unfortunate OR-combi searches can hide the results you're after in some cases; if you want to prevent this at all cost - most of the time, this is not necessary though, since in "X near (Y or Z)", the X is of interest, not one of the other two elements, and the X, the yourmuststring, will be found in any case -, you have to resolve your "X near (Y or Z)" search into 2 different searches "X near Y" and "X near Z", then will have to combine (and sort) the results, which is perfectly possible of course.


3) X, Y and Z All Together

Since we've treated x AND (y or z), let's also do x AND y AND z, which is also of high practical value (they are in any which order here, so with 3 elements, we must search for 6 combinations, as we will see):

; X, Y and Z All Together

; here your input:
tb := "C:\AHK\regexvicinitysearch.txt"
x := "yourstring1"
y := "yourstring2"
z := "yourstring3"

Then your max distances again:
xy = 30
yx = 20
xz = 10
zx = 15
yz = 12
zy = 18

or you can simplify:
; more input:
m = 30 ; or any other value common for them all or some group only:
n = 40
xy := m
yx := m
xz := m
zx := n
yz := n
zy := n

we need the elements in any which of these orders:

; pairs (full strings):
; xy: "(" x ".{0," xy "}" y ")"
; yx: "(" y ".{0," yx "}" x ")"

; hence the triples:
xyz: "(" x ".{0," xy "}" y ".{0," yz "}" z ")"
xzy: "(" x ".{0," xz "}" z ".{0," zy "}" y ")"
yxz: "(" y ".{0," yx "}" x ".{0," xz "}" z ")"
yzx: "(" y ".{0," yz "}" z ".{0," zx "}" x ")"
zxy: "(" z ".{0," zx "}" x ".{0," xy "}" y ")"
zyx: "(" z ".{0," zy "}" y ".{0," yx "}" x ")"

all 6 triples in a row (the order is irrelevant):
"(" x ".{0," xy "}" y ".{0," yz "}" z ")""(" x ".{0," xz "}" z ".{0," zy "}" y ")""(" y ".{0," yx "}" x ".{0," xz "}" z ")""(" y ".{0," yz "}" z ".{0," zx "}" x ")""(" z ".{0," zx "}" x ".{0," xy "}" y ")""(" z ".{0," zy "}" y ".{0," yx "}" x ")"

ditto but the (now faulty) "" deleted, and ORs inserted:
"(" x ".{0," xy "}" y ".{0," yz "}" z ")|(" x ".{0," xz "}" z ".{0," zy "}" y ")|(" y ".{0," yx "}" x ".{0," xz "}" z ")|(" y ".{0," yz "}" z ".{0," zx "}" x ")|(" z ".{0," zx "}" x ".{0," xy "}" y ")|(" z ".{0," zy "}" y ".{0," yx "}" x ")"

and now the complete expression / end of the script:
; don't touch these:
fileread, tb, %tb%
pos := regexmatch(tb, "(" x ".{0," xy "}" y ".{0," yz "}" z ")|(" x ".{0," xz "}" z ".{0," zy "}" y ")|(" y ".{0," yx "}" x ".{0," xz "}" z ")|(" y ".{0," yz "}" z ".{0," zx "}" x ")|(" z ".{0," zx "}" x ".{0," xy "}" y ")|(" z ".{0," zy "}" y ".{0," yx "}" x ")", result, 1)
msgbox, %pos%`n%result%


4) Retrieve the whole line

(This implies that technically, the whole line of your "real" match, the one you're after, will become the new match.)

The templates above search for terms in the vicinity of each other, but give as only output the string from char 1 of the first substring matching that part of the match up to the last char of the last substring matching that part of the match, excluding, in case, any other substrings not needed anymore for the match (before or behind that "sufficient" match string) - see my final remarks for "2) X and (Y or Z)" above -, while in many cases, you will want to retrieve the whole line of the match anyway (for "context"). Furtunately, this is very easy. (^ stands in for line/text begin, $ stands in for line/text end, and the ? after the * makes the * non-greedy; sometimes you see it's not really needed, but see my Dottie Killer thread for its usefulness.)

So we need the option "search line by line" ( "`a)" in Ahk, atttention, there is an accent grave before the a, for the position see the templates), but a warning here, AHK's traditional m) option will often not work for line-by-line since it only identifies complete CRLFs as line breaks, so we add the `a) option, too (cannot harm except in very special cases, ie whenever you also distinguish lines, and then paragraphs comprising several lines).

Then we search for a global string comprised of these 3 groups:

1. (line-begin and anything-or-nothing)

2. (our complete, original search string from above, just adjusted at its start and its end accordingly: first, its start and end are merged into bigger substrings now, ie together with 1. and 3., respectively, so we delete the (now wrong) start-" and end-", but stop, second, we replace them even, with "(" and ")", respectively, since the original search string, not being "alone" anymore, but having become the inner group of 3, must be enclosed in () in order for it's inner logic to be upheld - unnecessary groupings will do no harm, but missing groupings will)

3. (anything-or-nothing up to the line-end)

I present the templetes in the form:

; the title
; the original, complete, original search string
the complete new expression; it's with this line obviously that you will have to replace the original expression above, everything else in the original templates remaining valid
in other words, we replace the first " of the original search strings by pos := regexmatch(tb, "m`a).*?(
and we replace the very last " of the original search string by ).*?$", result, 1)

; 1) X near Y
; "(" x ".{0," xy "}" y ")|(" y ".{0," yx "}" x ")"
pos := regexmatch(tb, "m`a).*?((" x ".{0," xy "}" y ")|(" y ".{0," yx "}" x ")).*?$", result, 1)

; 2) X near (Y or Z)
; "(" x ".{0," x_yz "}(" y "|" z "))|((" y "|" z ").{0," yz_x "}" x ")"
pos := regexmatch(tb, "m`a).*?((" x ".{0," x_yz "}(" y "|" z "))|((" y "|" z ").{0," yz_x "}" x ")).*?$", result, 1)

; 3) X, Y and Z All Together
; "(" x ".{0," xy "}" y ".{0," yz "}" z ")|(" x ".{0," xz "}" z ".{0," zy "}" y ")|(" y ".{0," yx "}" x ".{0," xz "}" z ")|(" y ".{0," yz "}" z ".{0," zx "}" x ")|(" z ".{0," zx "}" x ".{0," xy "}" y ")|(" z ".{0," zy "}" y ".{0," yx "}" x ")"
pos := regexmatch(tb, "m`a).*?((" x ".{0," xy "}" y ".{0," yz "}" z ")|(" x ".{0," xz "}" z ".{0," zy "}" y ")|(" y ".{0," yx "}" x ".{0," xz "}" z ")|(" y ".{0," yz "}" z ".{0," zx "}" x ")|(" z ".{0," zx "}" x ".{0," xy "}" y ")|(" z ".{0," zy "}" y ".{0," yx "}" x ")).*?$", result, 1)

Now the match and output is the whole line/paragraph, but containing whatever you're really after, together with the complete-line "context"; you could do variants which only show a certain number of chars before, and a certain number of chars behind the part which really interests you, and you also can put bold-codes or similar around the part which is of real interest to you; for both variants, my final remarks for "2) X and (Y or Z)" apply again.


5) Retrieve all matching lines

(As before, technically, the whole lines of the "real" matches will now be matches.)

In most real-life use cases, you will want to create a "hit table", a list of all the results. Here, we just display that result list, but in practice, most of the time, you would retrieve the output variable for further processing; here, we use the clipboard as output variable, but any other variable will do if further processing will be done within the same script language or if the next, "overtaking" language can retrieve your output variable (which is only sometimes the case).

So what do we need? Regex can only do one search, ie there is no process logic built into this language; as we have seen, it can write the "matches" into an output variable (even into an array, every group being one array element, but we don't need this functionality here).

So we must introduce process logic by our (any) scripting (or programming) language (here AHK, or C#, Python...) and create another file from the outputs of the multiple regex runs. We'll do this now.

Also, we always started our (unique) search on character position 1 of our text, but now, with consecutive searches, with every search result, we must determine at what position our next search will start, so as to "finding", and then writing, the same, very first match / search result, again and again, into our output file. Thus, we start any consecutive (next) search by the end of our previous (last) search, but so that it will, in case, even match the very next line of the text, too, if that line is another match (but since the line breaks don't count, a sp := pos + ml will be ok). Btw, we don't write into that target file but at the very end: for speed reasons again, on every match, we write the match into a variable, and when the list is complete, we write that list to our output file (alternative final output below).

We take our example 1 (X near Y) here, all other examples accordingly:

; first (ie the input) part of the script
; your input instead of mine here:
tb := "C:\AHK\regexvicinitysearch.txt"
x := "yourstring1"
y := "yourstring2"
xy = 30
yx = 20

; and so on, for your input, see numbers 1 to 3 above

; don't touch the rest of the script, except for outcommenting the TWO pos := ... lines which do NOT apply for your case, and for deleting the comment-code of the line you WANT to be executed, of course:

; Second (ie not: input) part of the script:
fileread, tb, %tb%
clipboard = ; initialisation of our output variable (is emptied now)
; target = ; alternatively, initialisation of some dedicated output variable, leaves your clipboard alone
mn = 0 ; initialisation of our var mn which stands in for matchnumber
ml = 0 ; initialisation of var ml which stands in for matchlength
sp = 1 ; initialisation of var sp which stands in for startposition (remember: 1 is default, here needed for the very first run)

LOOP ; As said, we need multiple regex runs (so we need a loop), up to the point where no more matches are found (so then the loop ends):
{ ; begin of loop
; the following steps are repeated with every loop run (iteration):

; at any time, just delete the out-comment code for ONE of the three regex expressions:
; 1) X near Y:
; pos := regexmatch(tb, "m`a).*?((" x ".{0," xy "}" y ")|(" y ".{0," yx "}" x ")).*?$", result, sp)
; 2) X near (Y or Z):
; pos := regexmatch(tb, "m`a).*?((" x ".{0," x_yz "}(" y "|" z "))|((" y "|" z ").{0," yz_x "}" x ")).*?$", result, sp)
; 3) X, Y and Z All Together:
; pos := regexmatch(tb, "m`a).*?((" x ".{0," xy "}" y ".{0," yz "}" z ")|(" x ".{0," xz "}" z ".{0," zy "}" y ")|(" y ".{0," yx "}" x ".{0," xz "}" z ")|(" y ".{0," yz "}" z ".{0," zx "}" x ")|(" z ".{0," zx "}" x ".{0," xy "}" y ")|(" z ".{0," zy "}" y ".{0," yx "}" x ")).*?$", result, sp)

if pos = 0 ; no (more) match for the current (!) run/iteration:
   break ; break this loop and continue the script below the loop
   ; break breaks/leaves the construct, return breaks/leaves the script
   ; as you can see, I FIRST check for the possible fail, which then breaks the loop anyway,
   ; so this spares me an unnecessary if - else construct; I do this whenever possible
}   ; end of the if contruct; the braces are NOT necessary, since IN the if construct, there is only ONE line here (comments don't count)

; if we have arrived here, pos is NOT 0, so it's a (or another) match, and we will process it now:
++mn ; success, so we increment mn (matchnumber) by 1

ml := strlen(result) ; the length (!) of our match string (which is the whole match line, remember)
; startposition (sp) for the searches is 1 for the very first one (initialisation before (!) the loop),
; but for any other run/iteration, we retrieve, here, AFTER the match, the sp value needed for the NEXT run/iteration:
sp := pos + ml ; this is not concatenation (which would also be possible for numbers as digits) but addition of course

; and the match string again: we could put a msgbox here, as we did in our examples above, but instead we write the result to our output var:
clipboard .= "`n" . result
; clipboard is a variable "clipboard" and the real clipboard at the same time
; somevar .= someothervar is short for: somevar := somevar . someothervar, ie spares the repetition of the first var name
; or with another variable than the clipboard: target := target . "`n" . result or shorter: target .= "`n" . result
; "`n" is a linebreak (string), an alternative would be "`r`n" (at your convenience)
; the dots are concatenation dots, other languages use + or & or other signs for combining elements
; result is the output variable of the current regex run
; := or .= is variable assignement, hence strings are within "", variables are not
; so the operation is: we ADD a linebreak and the content of "result" TO our existing target var (which is (the) clipboard here)
; since for the very first successful run of the loop, the target var is empty, our very first "`n" is unwanted and will be deleted later

if mn = 0 ; matchnumber 0 means: no match at all (ie not only in the current run anymore)
   ; no matches means the target var is as empty as it had been before
   msgbox, Not found. Script ends here.
   return ; this breaks the script, so as above, no if - else construct necessary for the rest of the script
} ; more than just one line IN the if construct, so the braces are needed here

; else: there has been at least one match indeed, perphaps more than one, so we show the hit or hit list:
stringtrimleft, clipboard, clipboard, 1 ; but we first delete the very first `n before the first element of the list
msgbox, %clipboard%
; alternatively, you would read your variable into some other application or process it further here
; alternatively, you would write your variable into a target FILE:
; filedelete, C:\path\yourtargetfile.txt ; no "write to new file" command in AHK, hence deletion of any eponymous file
; fileappend, %clipboard%, C:\path\yourtargetfile.txt ; and then new creation of the file and "appending" of the var content to it
; you see here that for really appending the var content to the existing content of an existing file, you would just leave out the filedelete line


Now the second part of the script again, without the explanations:

; Second part, just select ONE of the regex expressions:

fileread, tb, %tb%
clipboard =
mn = 0 ; (matchnumber)
ml = 0 ; (matchlength)
sp = 1 ; (startposition)

; at any time, just delete the out-comment code for ONE of the three regex expressions:
; 1) X near Y:
; pos := regexmatch(tb, "m`a).*?((" x ".{0," xy "}" y ")|(" y ".{0," yx "}" x ")).*?$", result, sp)
; 2) X near (Y or Z):
; pos := regexmatch(tb, "m`a).*?((" x ".{0," x_yz "}(" y "|" z "))|((" y "|" z ").{0," yz_x "}" x ")).*?$", result, sp)
; 3) X, Y and Z All Together:
; pos := regexmatch(tb, "m`a).*?((" x ".{0," xy "}" y ".{0," yz "}" z ")|(" x ".{0," xz "}" z ".{0," zy "}" y ")|(" y ".{0," yx "}" x ".{0," xz "}" z ")|(" y ".{0," yz "}" z ".{0," zx "}" x ")|(" z ".{0," zx "}" x ".{0," xy "}" y ")|(" z ".{0," zy "}" y ".{0," yx "}" x ")).*?$", result, sp)

if pos = 0
break ; the loop

++mn ; matchnumber plus 1
ml := strlen(result)
sp := pos + ml ; for next iteration

clipboard .= "`n" . result

if mn = 0
msgbox, Not found. Script ends here.

stringtrimleft, clipboard, clipboard, 1 ; the very first `n
msgbox, %clipboard% ; or alternatively:
; filedelete, C:\path\yourtargetfile.txt
; fileappend, %clipboard%, C:\path\yourtargetfile.txt


Edit: formatting only

General Software Discussion / Re: AI, google (YT), in the year 2017
« on: August 01, 2017, 10:01 AM »
But again, it should be contained within those, and be held to a strict minimum. So thank you very much again for your advice, I'm thankful for being reminded of what may have been obvious for most people. I'm not up to bother people, and my point of view of things irrelevant here must be irrelevant here. Wholeheartedly accepted. ;-)

(And enough said for today. I'm not dictating, I'm typing. Oh my!)

What about your programmatically avoiding my threads and posts anyway?

And to depart that interrelational meta level: Some topics are dense, so if you try to treat them in completeness, you have to write quite a bit. There are posts of mine where your remark would have been quite pertinent, but here you chose a very bad example for your point: Any redaction here could have shortened the post only so imperceptibly.

And yes, I know that it gathers quite a bulk of elements, and that reading it cannot be but hard work, but then, my - as said above, partial - development is meant to exist for the few people really interested in the subject of (general, not-media-files-only) 3dimensional file access; for them, there's lots of very lightweight material on the web to be found, and some very technical, very partial info; I've been striving here to give some sort of overview which treats the multiple problems and aspects of the subject, be them obvious or more conceiled. Most of the time, I strive to give new and complete* information, especially whenever my own web searches have been totally unfruitful in this respect.

Thus, I didn't want to bother about 150 people regularly reading/writing here with the intricacies of my findings and musings, but I had hoped and I'm still hoping that

- people researching the subject will be redirected here by google (and then there is some draft awaiting them which doesn't really leave out much anymore, so they will be well served here I dare hope), and that

- some members of the aforementioned group will share their individual means to attack the problem of their file system being flat (information exchange even without reading me for half an hour or longer); my (mild) "surprise" covered that "easy" aspect of the subject then.

*: Often I refer to external info, ie I don't attempt to "explain the obvious", the "readily-available-elsewhere", I just mention its existence in case; as said, the subject here is special in this respect: info putting into perspective, into relation, in a word, synthesis, was from rare to absent, depending on your point of view or your standards, so I've tried to give that missing overview I had missed for reading myself, and that's necessarily as complete and thorough as possible by my means.

But thank you for prompting my clarification, which partly at least applies to other posts of mine.

@tomos: Well, that's called scraping; as for the web-development browser-plugins mentioned by Shades, that's a new idea for me but he says, "show you lots of content and how it is linked", and that's spot-on, since it's easy there to identify the elements, which is the very first step.

Then, of course, you will want to retrieve those elements respectively their respective, individual content, and it's common understanding now that trying to do it all with regex isn't only extremely difficult but impossible, even the same webpage (technical) "layout" differing too much from one occurrence to another, in many, many cases, not speaking of them varying the code itself. An example would be some database output, let's say classifieds (ie classified ads). If the person having authored the ad hadn't filled out all the fields in the web form of the owner of the web site, it's quite aleatoric how the web page's technical layout's programmers will handle this case in the output, and that can even differ from field to field, and from field combination to field combination, i.e. if the balises are simply left out, come now in other within-the-"<"-combinations, or are even grouped differently, ie even the construction can change in parts overall, and that's why they say you must do some scripting, or must have done some scripting, by some tool.

As I said in the regex thread, Goyvaert's expensive tool seems to rely on regex exclusively, while TextPipe (even more expensive) does a combination of pre-figured scripting and then regex, but you will not buy that latter tool, not only for its price but particularly because it will very probably not be as flexible/moldable as you will need it, and then at the latest you will feel remorse about the price (it's on bits here and there, so for somebody really interested but not needing it immediately...).

I script those things, introducing the necessary regexes wherever needed, and with lots of logical branchings wherever needed, ie I don't try to anticipate too much "regular" construction / foreseeable combinations, but I try to identify every element's content one-by-one, so as to make it as "context-proof" as it gets.

Since you obviously program: Does that language you use to "write stuff" lends itself to scripting, too? You see, I strongly advocate doing it yourself (with doing it all in the FF-and-other-browser extensions Shades mentioned, I don't have any experience, so that's possibly a good idea to peek in their respective possibilities indeed), instead of using some tool, but that being said, there are some dedicated scraping tools* of which I don't remember the respective names but of which I remember they're quite expensive; they are more or less like TextPipe but more specialized, ie they have been conceived for analyzing / retrieving content of web pages in particular, and they all follow the paradigm "scripting over trying to do it with regex, use the latter only for the tasks in the script where regex displays its strengths": it's all about making your scraping more or less "robust", ie insensitive to minor variants in the web pages's source code.

*: I do not speak of web site crawlers here but of programs which allow for running scripts (and very probably helping with writing them to begin with) on text files; some of them will also help with getting the necessary source code of the web page into the file which is then analyzed and processed, but that's not their main reason; crawlers in contrast are specialized in following links ("scraping the site"), and the better ones let you program/script how they do that / which links to follow; they aren't for then analyzing the resulting text bodies.

Since I didn't want to spend the money for TextPipe, had some scripting knowledge and was willing to learn the necessary amount of regex - as said, you better do by scripting the bulk of your work anyway, so the regex you must learn isn't that high-brow as it is for people who see regex as an art form and strive to do anything possible in that special query language -, I always do it all "manually" and don't see any need to buy/learn/use some special tool anymore; as soon as you have a script, you have logic, which means you can check for things or their absence (or even some variants, by regex then), and that means you can have your script react accordingly and smoothly; trying to do similar things in e.g. TextPipe is probably possible, but I see lots of fuss arising in trying to get the same results by "clicking them together", or then, you end up applying some (other) scripting language within such a tool, in order to get to your ends, which again rises the question, why then use any such tool to begin with.

More advice welcome if, which is possible, I have overlooked some useful aspects, and as said, Shades' advice to use browser add-ins for faster element grouping/identifying is good advice; there are special editors for that, also (but which aren't necessary), for example Code Lobster (here and there, available as a freebie), and then, some regular text editors have got such functionality, too. I don't exclusively rely on these, though, but I regularly copy the relevant element groups out into multiple new, smaller files, in order to have them isolated: Everything which battles complexity is a good thing when it doesn't withhold relevant info at the same time.

General Software Discussion / Re: AI, google (YT), in the year 2017
« on: August 01, 2017, 08:04 AM »
@tomos: Oh yes, that's the "Recommended for you" variety, while in the case I thought to be worthwile discussing here (and which, understandably, I think) brought my evening of "Otto" fun to an abrupt end), it was the other way round, they (ab)used my political interest in (in direct comparison) very lightweight, current political things (they obviously had spied out, in spite of my deleting "traces") in order to decide I needed political reeducation, and for that they threw at my feet a big (almost an hour), "perfect" example of the worst atrocities of the Reich, as if my non-agreement with current political affairs (as noted above) made me sort of a fascism-(ideas-) affiliate; I frankly admit that they didn't force me to view that video before continuing to view other things from them (on another day: as said, they ruined my evening, so I "retaliated" by making it public), and which would be the next logical step.

So you're viewing sports, a-ha? I only did that "once" in my life: when Catarina Lindqist (btw, it should have been "an Iraqi" above, without the u after the q, as neither Lindqvist and other such names) played the Grand Slam tournaments, in 1984 ff.

Except for really, really good films, of course, e.g. The Color of Money (1986), but no comparison allowed with The Hustler (Rober Rossen 1961): that's what I call Cinema, with a big, big C! ;-)

EDIT (2 posts in a row, didn't see the first one at first): Oh, and for the "Czech": I had had the intention to add "if I remember well" - hadn't been sure if it was Czechia or Hungary - but had then inadvertently left that part out from my text. But so, I'm wrong all about? My false "memory" must have been a Freudian, then, "Tomasz" being some Eastern form of "Thomas", so my (very-associatively-functioning) mind must have lead me totally astry here.

No excuses though since if you had been, that would have been as perfect, so no harm intended nor done - it's just some very incorrect - but "politically-hyper-correct"* - people which currently agitate against said countries (and Poland, of course)... for political reasons, so they blame the governments, and the electorate/people: bad, bad, bad! *: that's at least what those lunatics think... ;-)

Oh, and your info: I didn't know that at all. With the google thing, it would have been difficult to NOT mention the political background of it, and it's about spying upon web users, and about even reacting about that spying, by serving the user a made-to-measure selection of content, while this "made-to-measure" is strongly criticizable, so I had either to not bring up this web-usage-related case at all, or had, as I did, bring some background in order to make it fully comprehensible. This being said:

I thank you for your info and will consider anything I bring up here in the light of it; when in doubt, I will not bother this forum with it. (In fact, I had been "motivated" by the recent thread (I cite from memory) here, "When using Chrome, be ready to be spied on.": This was my point of departure for saying and detailing, "In fact, they (= google) even do a lot more than that."

But again, thank you for that advice!

Deleted by author, pseudocode was wrong. See spin-off: https://www.donation...ndex.php?topic=44164

I'm surprised there has been no reaction to this post yet since hard links seem to provide a valid third-dimensionality in Windows at least for some use cases.

Some more details. Hard links seem to be no subset of symbolic links, as I wrongly stated above, but info about all those links in the web is really chaotic, and I currently don't grasp the difference (if there is any) between traditional .lnk files and "symlinks", symbolic links. As for applications messing around with, ie breaking hardlinks (ie creating independent file copies instead of treating the original file you want to stay unique), even some plain text editors do this, while others work fine, so you must check every application one by one, and even re-check them after any update, since it's perfectly possible that new versions behave differently from the application's traditional behavior - they call this "progress" then... but without telling you about the unwanted side effects... provided the developers themselves will have discovered them, which isn't necessarily the case...

The main file managers, xplorer2, Directory Opus and XYplorer all seem to create hardlinks from within their respective menus; TotalCommander has got some add-in in order to do this; I don't know other file managers which do it, too, currently, but there might be some.

There is a problem inherent to hardlinks: Since they are all just other denomination/aliases for the original (and unique) file, just like (technically, not by what we'd call it) the very first "hardlink" (see also Leo in https://resource.dop...ight-hardlinks/16493 , see also below re FPV, I didn't know that special feature there), the regular file system list entry of some file is, deleting the very last hardlink of a file deletes the file itself, or in order words, using hardlinks, when you delete some file entry in your file manager or elsewhere, you can never be sure if you aren't deleting the very last entry, ie the file itself, instead of just deleting a reference. (See my post today re vicinity search: Of course, the "Del" key in some hit list should just delete the file reference from the results list, not the file in question: this is so obvious that I even didn't mention that.)

x2 and DO both come with some - unsufficient? - means to try to prevent file deletion (and since I didn't check, other file managers may do similar things here); some list functionality in DO (see https://www.gpsoft.c...ks_and_Junctions.htm ; not using DO, I cannot say how this would work in practice), and an additional column in x2 which seems to be the best solution to the problem so far: In x2, if you haven't got list view but details view, you get columns with additional info (for example also for comments, in x2!!! (but unfortunately, these seem to be specific to x2 and cannot be read by other tools checking for the generic comment meta data strings)) - so far, so common behavior of most file managers -, and there seem to be one column for "number of file system entries for the current file" indeed.

x2's isn't the ideal solution to the problem yet, though, since if there is some file in the current folder and which has got an entry count of 2 in that column you will visually check before any file/entry(!) deletion, and if then you think you can safely delete the file's occurrence in the current folder, the (before the deletion) second entry in that column may come from some instance of the file which is already in the bin, and if then you press "Del", the file itself is lost.

What I don't understand here (I didn't try for myself, take the above from x2's forum): A deletion of an entry is deemed to decrease the counter; how come then that a counter of 2, for 1 entry in your current folder and 1 entry in the recycle bin, is possible? Leo (link above) says what I said above: technically, hardlinks are identical to the very first entry of any file, so technically, when you delete a hardlink, there is NO difference to deletion of the "original" file entry, so HOW come a deleted hardlink in the bin shows in the entry-count list, when at the same time hardlink deletion would reset the counter? (In the bin, it cannot be the "file itself" but must be an entry, since the count is for entries, not for files: if it was, the count would always be 1.) So these cannot be true at the same time and should be investigated further; I suppose that if the bin problem is true, then the count to zero will not work but immediately after deleting the bin, or if the bin problem doesn't exist as described in the x2 forum, it would be very easy to implement a safe function for ANY file manager, with or without visual indication (as in x2, DO...):

For ANY deletion of an entry, instead of forwarding this directly to the system (Windows), the file manager would need to check for the count, and then deliver a warning dialog if the entry count is just 1 for some file - which, of course, is the case in 99,999... of the cases for people who don't make extensive use of hardlinks, since "count 1" would be identical to any regular file entry.

For pictures, video clips, music files and the like (subsequently: "pics"), a file manager isn't ideal since you would want to "consume" those files, look at them, listen to them, and most file managers aren't that very good at that; x2 is particularly bad at it, while both XY and DO aren't bad at all here, so they could replace a dedicated pic (etc., see above my "definition") viewer indeed, DO probably even better than XY, but it would be preferable to have this functionality within your dedicated and preferred viewer application indeed.

For example, I prefer FSIV (FastStone Image Viewer) for pictures, over XY (I don't have DO), and it's not very probably FSIV will EVER get such an entry counter/alarm function, considering that currently, even NOT ONE file manager comes with such a functionality; as for the creational function, I've said it above, you do NOT need this function in-built within the application you're using, you can easily do it with some macro which can be applied everywhere: In fact, two macros: 1) identify the current item (with full path, in your file manager, in your pic tool, whatever, and store it, in the clipboard (bad) or in some variable (much better)), 2) create the entry/hardlink, within the (then) current folder in your file manager or other browser tool (and which could even be another one than the one used in 1), with the name you want it to have (input box, default = original file name, also stored in-between).

It's also understood that macro 2 would be ready to be triggered multiple times, for the same input of macro 1 (multiple aliases, the max number per file is 1023, ie 1024 incl. the "original" one, so this should suffice for most use cases, ha, ha) - it's the deletion counter which is missing from applications, not so much the in-built creational functionality... well, at the end of the day, you could create the check-the-aliases-numbers-for-each-deletion on your own, too, making your own functionality overriding the in-built deletion functions (ie intercepting the Del key, etc.) - that could become a little bit complicated for mass deletions, of course... Also, what about moves to different drives? Without having tried, I assume that the innocent moving of an entry ("original" or (other) "alias") will break ALL entries of that file on the original drive (?) since the Windows copy/move function (which the application in question will trigger then, in most cases - some file managers have "robust copy" and such, which behave differently and do, more or less, their own stuff) simply doesn't cope (yet) with hardlinks?

Of course, what you would like to get instead - or perhaps it even functions this way already -, is the creation of a copy (but which will then not be synched in any way further on of course) on that other drive, while leaving the original file (and all its possible entries) on drive 1 unharmed - but copy, with an additional message indeed, telling you the move's making a copy instead since the original file's listed within more than one location; on the other hand, the copy command when copying to another drive should work as expected even now: It would simply copy the current entry of your file to the other drive; for example, if your "original" was was a.x, and your current alias of the file (always on drive 1) is b.x, and there's also some other aliases for that same file, c.x, etc., you'll get a copy of b.x (not a.x) onto drive 2, and any hardlinks over there would be aliases for that new b.x which in time could differ quite considerably from the b.x, a.x, etc. on drive 1 of course - so, as said before, hardlinks come with a cost anyway...

BUT as said above, for pics and so on they could represent an ideal solution for some. As DO's Leo says in the link, FPV (Fast Picture Viewer) has even got in-built functionality... well, I suppose that's just for the creational side. Now FPV is for photographers' needs only, ie for pre-selecting valid pics from the ones coming from your camera, and it's reason for being (raison d'être) is the fact that Adobe Lightroom - where most photographers will then import their FPV preselection into, anyway - is as sluggish as it is; I'd prefer the PhaseOne contender instead, since I think, after some really dreadful experiences, that the LR workflow is absolutely terrible anyway, also and especially for photographers, but as always, your mileage may vary; in the end, it all comes down to the old question if you prefer your things to be in the file system, or then in some never-ending hybrid state, them being always within the file system, but with cryptic names and not accessible anymore but thru some dedicated database application; for information management / office workflow of office documents, that might even be inevitable in the end (or then, the only other alternative being to put your things into a monster database, no traces of them even left within the file system) - but for media management of all sorts, the philosophy behind Adobe LR is arguable, to say the list - and the FPV developer has correctly realized this, since hardlinks would not be that helpful in LR, but with file-system-based pic applications, they can be invaluable IF, as said before, the (main or third-party) applications don't break the hardlinks (or restore them immediately after breaking them).

(FPV unfortunately has the worst - and worst by miles, that is - file browsing functionality I have ever encountered anywhere, both for browsing as for targeting (moving / placing the hardlink) means, so as a picture file manager or even just (general) picture browser (except for immediate access to just-downloaded, new directories), it's almost unusable, and the usefulness of its hardlink-creation functionality should be intensily hampered by the fact that navigation to the respective target locations in which to then create the hardlinks, is an almost incredibly difficult chore. But then, it preloads pictures, and so, while there is no further real speed advantage for browsing .jpg and similar pictures with it, over some other program (FSIV, DO, XY), it's evident that for multi-mb raw files, the speed advantage is upheld, to a degree, depending also of course on the speed of your respective storage medium.)

Be that as it may be, even for just looking at picture, listening to music, etc., hardlinks can be extremely helpful. Just let me say here upfront that I know that most media files come with more or less numerous possibilities of storing metadata, so there is always the alternative to exclusively rely on those instead, and I acknowledge the fact that before deciding to use hardlinks instead, you should compare the different ways of doing things indeed. But let me explain the advantage of hardlinks over traditional .lnk files (symlinks identical to them?), even for "consuming":

If you link to your files within another folder, that's for categorizing the same (media) file under different aspects, of course: the same picture under "landscapes under rain" and under "Camargue trip Summer 1998", etc., etc., the same jazz/soul... tune under the name of the tune ("Summertime"!, "I love you more than you'll ever know"!) and under the name of the artist - I admit that my music examples aren't that totally pertinent since you could use stored searches instead, to some degree, since here the necessary "tags" would even be in the respective file names, most of the time, but even then, there are variants in spelling - let alone the often almost incredible spelling error in YT tunes which clearly show that the uploaders in question don't know a bout about their hot goods.

I also admit that in many cases and/or for many people, tagging would be preferable to multiple directory entries, i.e. entries into multiple directories, but here again, we've got the old problem that either tags aren't "readable" (ie that the files aren't sortable) but within special, dedicated software (except, partly, for tags in files' alternate data strings (ADS), but they present a certain speed problem), or that you'll get quite ugly and especially quite long file names (if you do the tags there), let alone the fact that then you will not have got a tool yet by which to really well manage / administer those file name tags (hundreds of stored searches? that's not that practical, after all); XY for example comes with a some tag-maintenance/retrieval functionality, but that's for its proprietary tags if I'm not totally wrong here, no such thing for tags in file names (except for mass renaming, ubiquitous in good file managers - as I said elsewhere in this forum, the free FC even has got one of the very best (and intuitive) bulk renamers on the market).

But back to hardlinks vs traditional .lnk files (symlinks now?) in traditional browsing situations; the same is true for office documents and similar. So you will have created traditional links/symlinks or aliases/hardlinks to/of the necessary files in your current "target" folder, let's say a project folder for some work, or simply the "person x" folder, your files being originally stored by (chronology and/or geography of) shootings. You want to look at these pictures grouped by folder, you want to use core/reference data to be included in your work.

With .lnk files (and very probably with symlinks if really they are something different now), the "opening" of any such file here in your "target"/project/special folder will immediately trigger the file manager (or FSIV and the like) to display that "origin" folder of the file you just "opened", which means your "browser", for every (?) non-hardlink file entry, switches to the respective "home" folder of that file, so any "opening" of a linked file anywhere "breaks" your browsing. (I don't know how FPV behaves in this situation: since with very few coding "intelligence" it'd be perfectly possible to NOT do that unwanted shift, it's possible that its developer has implemented the functionality to just follow the link but without switching to an unwanted directory here.)

Which clearly shows the superiority of hardlinks for any such (leisure or work) browsing situation: You stay in your "project"/"current" folder, independently of the original storage location of the very first entry/listing of your file, since for hardlinks (only?), any listing is the "original" one; in other words, if you want to implement your third-dimensionality of file access by file-system means, you seem to be in need of hard links.

Since with file-name-tagging (ie tagging within the file names), which is another alternative, there is no practical implementation of a tag tree in any file manager, picture file browsers and the like; at least "frontend" for file-name-tagging exists indeed, but it's external again to your file manager / picture manager / etc. (just as all the more traditional "tag tools" are): it's TagSpaces, 39$, but I consider it illogical to have file-name-based tags which then must be managed/administered, and accessed/benefitted-from outside of your file management and media browsing workflow: You'll browse from within your current folder displayed by your file or graphics-media manager (office: any file manager, pics: DO, XY, FSIV and others), so if you wanted to do it by tagging instead of folder navigation, you'd nee that functionality there... or then, tagging applications would need to implement the necessary media-file display functionality, which is even less realistic, considering the relevant quality/speed requirements in its realization, let traditional alone navigational needs which by this would not vanish but aren't there: any such setup which forces you to use a tag tool (even incl. satisfactory display), and a navigational (file system folder) tool concurrently, cannot be said "ideal", while a traditional browser (DO, XY, FSIV) is obviously much better overall, once the three-dimensional file access problem in its folder structure has been resolved.

This includes the necessity for very fast (!) creation of the necessary "metadata", be it hardlinks, tags in ADS or any other means. As said, those ADS tags come with a slight speed problem even on retrieval (just try in x2 or with a dedicated tool), while both tags-in-file-names (by the same retrieval technology used in "Everything", ie IF that technology is used for retrieval, not so in other cases) as hardlinks (they are just alternative entries in the file table) are instantaneous; but another problem lies in reducing the time which you need to create hardlinks, and here the navigational ease (or lack of it, see FPV above) plays a prominent role: Ideally you will have more than just one tree and/or list pane at your disposal (as in generic file managers where you have at least two of them, the "current" and the "target" one, more so in DO, doubtful in x2 (additional but non-live panes), but it's not that easily possible in XY and others (just "tabs" for alternative folders but which can be used as link targets by some additional scripting, without "opening" them (which for link creation isn't necessary anyway); in fact, if you have some list, that list could have some 50 or more (depending on your screen resolution) entries concurrently visible, any of which could be a possible link target (list of the multiple folders within a parent folder), or even better, a partly-expanded tree structure (so that the folders listed would not be necessarily sibling folders); just a dozen or so tabs instead, and without easily-readable (ie complete) file names, as possible link targets, isn't the same, far from that...

So here again, and considering its picture display capabilities (you would want to do browsing and link creation at the same time of course, since the need for additional entries will arise from browsing), DO seems to be a rather good solution for quick hard link creation for pictures and other media files or even in general, since a number of n "listers" could contain a considerable number of possible link targets (folder lists), n then being the number of groups of folder siblings; the attentive reader will discover the high interest of "hoisting" in some text databases (like UltraRecall and others) since in such a setup, you'll have a multitude of, not flat-lists, but of possibly-expanded, or expandable, sub-trees, which multiplies the number of readily-available link-targets (ie locations for positioning the link or alias), even though over there, you'll have to "open" these additional tabs first, but then, navigation to the desired link target is almost instant.

Of course, there's always the problem of returning to the "active" folder, and there, to the "active" element (picture, office file, whatever); it's desirable that after each link creation, you'll immediately get there again, in order to smoothly continue your browsing / link making. With tabs and multiple visible panes, this condition is regularly met; not so in a single tree like in FSIV where each (necessary) "selection" of some other tree entry does not only invalidate the selection of your "current" folder (which you browse, and from which you create the links or aliases=hardlinks), but worse, when you (manually of hopefully by script) get back to that, you then have to identify your current file anew, which for folders with hundreds of pictures in them is almost impossible, "manually" ie visually, and scripting with regards to FSIV isn't evident at all, elements in FSIV often not being identifiable.

This leaves us with DO as our first choice, and with XY as our second choice: Both are brilliant with picture display (and probably with video clips, too?), and both offer multiple concurrent link targets (mostly sibling folders), DO displaying them directly, XY hiding them behind tabs (if you don't use the tab folder = parent folder as link target, you must open the tab first, then close it again, in order for the target pane becoming available for other targets again).

Full automatization isn't possible since most of the time, you will first "create the link" (ie store the path of the file to be linked), then designate the target pane/tab (ideally by 1-key shortkeys, and which also opens the tab if it's a tab, not a pane), then manually navigate to the target folder in that pane (arrows up/down), then trigger macro 1 (see above) which creates the link/alias within the target folder (without opening it), and which then also closes the tab again, in the tab situation, but it's evident that in such a workflow, creation of each link/alias will take less than 10 seconds IF you limit the possible targets somewhat, ie if you don't try to switch to "exotic", non-easily-reachable targets, too, but if you try to group your link creation in a way, setting up some "combination" of link targets for some work session, then set up another combination of panes/tabs for some other work session; it becomes evident here that the possibility to store these groups (incl. their current open/closed state) becomes very important, in order to get them immediately available for similar work sessions later on, without having to tediously recreate them again and again (I don't know if such "layouts" of panes and/or tabs are available in the programs mentioned here).

Also, it's evident that link targets you need again and again (for example current projects, in office use, or "standard" picture folders, or even "standard inboxes", ie inboxes in higher-up sub-folders from which then only you will do the more precise distribution of the links/aliases further down into the "real" target folders, later on), should be immediately accessible all the time, either by shortcuts or then in some "standards" pane grouping them, and in which those standard target locations then would be targetable by the very first character of their name (so in order to avoid mishaps, automatic alphanumeric sorting in that pane would be welcome), and by this, even a simple 2-key macro could do all the work for these (intermediate or final) standard target locations: some F-key as trigger, then a...z or 1...0 for up to 36 locations not needing any navigation to access them. (It would be ideal to even have these "standards" multiple, at the very least one such set for office use and another one for pictures, another one for classical music, another one for jazz music, and for the pictures, I could easily imagine several standard sub-lists, too; technically, no problem: Just store them grouped in some special folder identified by your tool), and the special command will work on the only one visible one of these special lists, at any given moment.)

From the above, it also becomes evident that the "aliases" is not so much about other file names, but, exclusively in most situations, about other locations: the same file name, but in multiple folders. And from this, you can imagine two quite simple (non-technical but user-interaction) intermediary (ie waiting for better, technical) solutions to the last-file-standing-and-then-falling (sort of friendly-fire) problem described above: The lesser solution would be to systematically add some special character to any link/alias, while not renaming the original file entry in the same way. Then you will never delete any "last" file inadvertently, wrongly assuming it's "just another alias", but whenever you then delete a file entry without that special character, you will want to kill the file itself - admittedly, without succeeding in doing so whenever some other alias of it survives elsewhere in your file structure.

The probably better but radical solution would obviously be, to introduce abstraction between file storage and file naming: have some bulk folders for anything new of some sort, you could for example have folders for some file extension, and then subfolders by date (e.g. one new subfolder a year, or per month if necessary by the sheer amount of it (professional photographers and the like)) - and then have aliases, exclusively, i.e. put any file in some (pre-sort) target folder, with its original file name, and then into other such target folders, but the very first (and probably, for most files, unique) target folder will already be a "second" location for the unique file; in this set-up, every file entry in an accessible folder will be an alias, a virtual entry, compared with the original file entries, in the (here: deliberately) non-accessible (non-accessed) storage-only folders. Such a system will be as neat as it get, and should be the future of NTFS (or its successor): Then, Windows can automatically assign cryptic original file names to any file, just like it does it currently do to "special" files, and everything (except the system files that is) will be accessible from everywhere, under any file name you will want to assign to it there, the very first such entry, as said, being the first non-cryptic, "human-readable" file name of your choice.

It's evident that such a system would greatly simplify any further file operation, the "really original", the cryptic, file entries just being there for Windows(') administration purposes, and they would very rarely, if ever, be changed. (Technically, it's easy to do this even now: just run a script moving all your files into such "technical folders" (as you know, their respective physical positions on the harddisk will not change with that "move"; as said, by extension, and with a little sub (whenever more than 1,000 files of that extension, create a new folder for the rest), replacing all original file entries by (hard) links at the same time; ditto for any new files then: any new file creation would trigger a little routine creating it at the "centralized" storage, while creating a link where you create it, and you'll have created and will be maintaining your own, 3-dimensional NTFS system.

Ok, that's not considering the "some applications kill hard links" problem described above, neither do I presume anybody will follow my advice here, and I didn't treat the impending recursion problem with folders, apart from and to begin with the fact that I haven't mentioned the problem that you cannot apply hard links to folders anyway but must do it differently for them, but it's evident that the current - virtual-only anyway, as explained above - relationship "1-file-to-1-filename" paradigm in Windows (and prevailing in NTFS) is junk (as is the - equally virual-only - separation into "files" and "folders", too, but explaining this would double the text amount here); and that MS should finally do their so long-overdue homework.

It's all about providing three-dimensionality to a file system, while at the same time avoiding to set up any database - outdoing what the "Everything" indexing does - as the file system's sidecar, this will for avoidance being there for obvious speed and reliability reasons and being perfectly understandable... but perfect three-dimensionality (and including folders, not treated here) is already possible with NTFS if organized differently, and the one-file-referenced-trans-drive problem should be overcome with a "database" (ie with a simili-database, just like the MFT is just such a simili-database, and the necessary change indexing and -processing) indeed.

In a word, what we need is a spiced-up NTFS with handshaking for synching, but in the meantime, our homemade possibilities are far from inexistent; especially media home storage should probably be made with DO and then some little macros for speeding up the link creation process, as described above (and attending what they will implement internally instead), since browsing / viewing AND creating of multiplicity is seemless then - for bigger storage needs, the question would be if a big NAS or similar can be set up or not, with one shared, big MFT, so that for Windows' / hard links' means it's all one drive. And remember, hard links are the file system itself, while metadata / ADS are not stored there but will have to be retrieved separately, hence their incompatibility with large datasets when not indexed - but indexing them for immediate retrieval should always be possible, so there are alternatives.

General Software Discussion / Re: AI, google (YT), in the year 2017
« on: August 01, 2017, 02:32 AM »
@tomos: Ah, you speaking German? Brilliant! (For third parties: tomos is from Czechia, btw, this is likable fun read: https://www.forbes.c...debate/#3fa2a9477d66 even if I think this was overdue for long, long years!)

But don't count on it too much since, as said, I regularly access web pages relating to current politics and concerning the "you mustn't call a spade a spade" problem*, so they obviously are spying on my AND kindly try to "educate" me; they will certainly not see any such "necessity" for people which don't tend to be as politically-critical as I am (no pun whatsoever intended here; I know very, very well that in countries like Russia, China, African countries and the like, I would sit in some camp for not having kept my trap shut...).

*: Political digression, just very short but since it's been in the non-German newspapers just yesterday: In order to be politically correct always-always, they throw any logic overboard, and at the very least, it's treading on very thin ice. A German expression for this is, btw, "Ritt über den Bodensee", "Ride across Lake Constance" (from Gustav Schwab 1826, then entered into the German vocabulary, see also Handtke's eponymous play 1971), so this is really a deep pass:

Night Saturday/Sunday, Constance (ibidem), some Iraqui having been living in Germany for 15 years or so enters some discotheque with an assault rifle (and no, they don't sell them in shops there as they do in the U.S.) and starts firing into the crowd - just 1 person dead, and surprisingly few injured people, considering the military weapon.

German police, and all the German press, unisono: "No, it's not terror, it's a personal relationship crime." Then, a day later: "The offender was [the killer had then been shot by the police in the shooting outside of the building] the son-in-law of the owner of the place."

Thus, for the politically-correct crowd in Germany (and Western Europe in general, btw, not speaking of Sweden, ha, ha), and it's them who have got all the power, voters being sheep over here, it has now, in 2017, become a personal relationship crime (just like the husband who kills his children adjudicated to the wife after divorce), not terror...

when some disgruntled son-in-law tries to kill the patronage (!) of his wife's father, in order to harm the latter's business.

Well, that's what I call some total cultural change which turns things upside down indeed, a complete reconstruction of Western society.

And that's why google thinks I need reeducation from them (short of beeing reeducated in some camp like they did it in Cambodia).

Reading this request, I had hoped that someone came by with a solution by one of the indexing search tools - rjbull  correctly mentioning FL Pro (50$) which does this indeed, but if you need this functionality for searching within gigabytes of data, FL isn't the right tool, except for special, not regular use cases, ie when you're willing to wait, and wait, and wait... in order to get half-way-neat search results, instead of then checking much too many search results visually, which time-wise would probably be the same nuisance but which is even less fun, for the following reason:

It's odd that nobody except for me ever mentioned this lack of functionality of some (/all???) search tools: When you have got some "hit list" (with or without indexed search), and when then you visually check the results, one by one, discarding the not-relevant hits by just reading their "context-line" in the hit-table, or needing to look into the preview for that, or even needing to open the respective original files before discarding those files/hits as irrelevant for your current purpose -

so when you do the triage relevant-not-relevant, you would want to discard the non-relevant hits from the hit list, by pressing the "delete" button, in order to visually narrow down that list to an acceptable format (original length perhaps 80 hits, length after narrowing the list down perhaps 12 hits) - some search tools I trialed did NOT react to the deletion button though, while it's evident that this would have been very important functionality.

So, what about the usual searchers here, X1, dtSearch, Copernic, Lokeen (any experiences about the general-search value of this originally OL specialist?), HyperSearch, Archivarius, SearchInform...?

What about InfoRapid, which is said to have "special strengths with plain text files" (which seems mouser's task here and often is the task at hand)?

As for FL, the Lite version is simply what originally had been "Agent Ransack"; the developer renamed it for acceptability reasons (weird, "aggressive" original name), so there aren't but 2 versions but (probably even today) under 3 denominations; it's correct that the FL Lite version doesn't have "vicinity search" - the developer wants to sell the paid version, understandably.

With FL (Lite AND Pro), you always must bear in mind the possible problem of them not finding special/European/Asian characters, depending on the file format; it's a similar problem for indexer-searchers which most of the time will not even those file formats in question while in fact, you would prefer them to at least index, even wrongly for the special characters, those files, in order for them to at least find/list search terms without special characters! It's odd, here again, that their developers don't even see the problem since of course, you would happily except ugly, foiled-up search results (the hit list containing command characters, too) but which correctly indicate the search target lines within "exotic" file formats, and let's be frank, for some of the indexer-searches, almost everything except MS Office, simple rtf and plain text is more or less "exotic" so that they don't even index, ie will never show any results.

That's the strength of FL (even Lite): It will trawl (almost?) anything, so that you will get some character jungle in the hit table, but that list will probably show you (also) what you will have been looking for, and that's not only the case with Amercian standard characters a...zA...Z, but you also CAN search for special characters IF you know how they are encoded within the file format in question.

I'm thinking of buying FL after all (newer versions didn't run with XP, so that problem isn't a problem for me anymore); unfortunately, the developer isn't that "responsive": I've been longing for FL to implement a "search within the search results" for years - that functionality missing had been the reason for me never buying that tool even when it ran with XP (there's always an XP-running free version available btw, but I think that's not pertinent for the readers of this forum).

Since it's evident that a non-indexing searcher is in heavy need for a "search within the results", when each search takes long minutes if the file body to be searched is big enough (the developer brings - imo quite weak - arguments for leaving this out, but if I accept to gratuitously wait minutes for search results if the tool is free, I do not do so if I have to pay more than 60$ incl. VAT) - and you cannot delete non-pertinent search results (as described above) in FL either.

Search-within-search isn't the same as vicinity search of course, but often, you could use either one or the other to get to your means. (This isn't true when the vicinity searched-for would be a very close one.)

Pages: prev1 [2] 3 4 5next