License for programs at DaveSource Marginal Hacks:
http://MarginalHacks.com/

Disclaimer:
    These programs aren't packaged in any sort of user-friendly format.
    While most of it does something that I consider useful, plenty of it is old and written poorly and 
lacking documentation.
    Lots of the programs here do not fit my definition of TRW.
    If you're looking to write a script like one of these, yea.
    If you don't program, tough noogies for you.
    Make your browser nice and wide to look at the index, or suffer an unreadable table.

    I recognize that this license is not OpenSource, this is quite deliberate

Non-Warranty:
    These programs come with absolutely no warranty.
    The 'Rating' and 'Works (Y/N)' columns in the software index are no indication of the quality or 
ability of the programs.
    Use at your own risk!

License for use:
    The programs may be used and distributed (with this license) for free.
    The programs may be modified as long as they retain the original license and author, copyright 
information.
    If you modify any of these programs, please e-mail patches to the the author.
    (If you think the patch isn't of general use, you can just email me about it first to check)
    None of the programs can be sold or included in a product that is sold without prior written permisson 
from the author.

Copyright:
    All these programs are copyright David Ljung Madison

Why:
    I've made this software freely available for the following reasons:

       1. I like to think that I write useful software, so I want other people to use it.
       2. I felt like helping out a bit. This is not a common thing for me, so enjoy it.
       3. I use free software, and wanted to give something back.
       4. But if you want to help, you can send money 


