def dict_diff(first, second):
    """ Return a dict of keys that differ with another config object.  If a value is
        not found in one fo the configs, it will be represented by KEYNOTFOUND.
        @param first:   Fist dictionary to diff.
        @param second:  Second dicationary to diff.
        @return diff:   Dict of Key => (first.val, second.val)
    """
    KEYNOTFOUND = '<KEYNOTFOUND>'
    diff = {}
    for key in first.keys():
        if key not in second:
            diff[key] = first[key], KEYNOTFOUND
        elif first[key] != second[key]:
            diff[key] = first[key], second[key]
    for key in second.keys():
        if key not in first:
            diff[key] = KEYNOTFOUND, second[key]
    return diff
