Anyone who has had a QL for some time (and most of us active today, will have had a QL, in one form or another, for donkey's years!) will have a bunch of utilities to carry out various specific, or particular (not to mention, peculiar) tasks. In many cases these will have been own productions, sometimes honed and polished over many years.
Of course it can be enjoyable to try to solve particular tasks. But it takes time, and there are some things we never get round to nor, on the QL scene, can you get them from elsewhere for love or money. So we learn to live with certain awkwardnesses and dodgy, half-finished utilities that only we know how to operate and avoid disaster (like that wobbly table we built in woodwork class at school, with one leg too short, that we know we mustnt put a heavy pot on one corner of or it will tip!)
For my part, at least, the problem I had with my productions is that most of them grew organically from my knowing nothing about programming to knowing some, and then, during some periods of my QL-ing career, actually knowing quite a bit about some aspects of the QL, Qdos, and later, SMSQ/E.
Another was that many of my best routines were tied to a variety of toolkits, also developed in a similar fashion over the years, that could not easily be detached from their home ground without dragging along the whole mix of toolkits, most of which contained lots of commands irrelevant to the function of the program they were part of.
I hadnt really seen a pattern before, as I never knew where the next project would take me. But at some point I realized I actually had enough material to start systemising a bit. Rather than re-writing all my old toolkits and S*BASIC functions and procedures, I started extracting them one by one, re-testing them, documenting them better, and tried to develop a bit of a taxonomy. Then I moved them over, one by one, into a new file structure on a hard disk of their own.
It then became a lot easier to build bespoke toolkits for each specific task. Small routines that had taken hours or weeks to get right could now just be strung together as building blocks for more complex programs without having to re-invent the wheel every time.
Of course, this is what professional programmers do as a matter of course, but they often start out with a plan (usually given to them by their employer or their customers). I never had a plan; it was never my intention, and I never found much enjoyment in programming to anyone else's plan either. Neither was it worth planning much before I had the tools, anyway.
So, many of the utilities presented here are merely a do-over of similar utilities I had in the past, but now better labelled and documented. There is, of course, still a lot of ad hoc programming glue used to stick together all the diverse bits to make the programs anew.
To begin with I started documenting my routines for my own sake, part of the more orderly, systematic me. But like some of my oldest code, after a few years I could no longer understand my own documentation, so I decided to try to write them as if they were for a third party. The next step seemed rather obvious after all that: I might as well share it with third parties - with you!
Some of these utilities may fill in some gaps in your own repertoire, some may give you ideas, and some may surprise even you, old hands as you may be, because people think so differently about things, and we dont have a lot of people to share a lot of our ideas with; I never see anyone else's QL these days.
But just because they are free, and freely shared without ulterior motive, doesnt mean that a token of appreciation, a comment, or some feedback wouldnt be welcome! If you find that you use any of my programs regularly, or some routine of mine has found its way into your project, it would be only kind and decent of you to say so. Otherwise I must conclude that they are rubbish - of no use to anyone but myself. Why then should I bother going to the trouble of adding that bit of extra polish, and of hosting and sharing, and writing long epistles like this?