anchor.diff:  (defun log-entry (&rest messages)
     "Accepts one or more strings, concatenates them, precedes the result with a timestamp, and returns a string that looks like a log entry."
     (timestamp :string (format nil "~{~a~}~%" messages)))
  +
  +(defun write-log-entry (stream &rest messages)
  +  "Accepts one or more strings, concatenates them, precedes the result with a timestamp, and writes a string that looks like a lo
  +g entry to the given stream."
  +  (format stream "~a" (apply #'log-entry messages)))
   
   (defun replace-regexs (text list-of-regex-replacement-pairs &key ignore-case)
     "Searches through TEXT for substrings that match the regexs in LIST-OF-REGEX-REPLACEMENTS and replaces those substrings with the corresponding replacements in LIST-OF-REGEX-REPLACEMENTS.  Use the IGNORE-CASE parameter if you want case-insensitive matches.  Here's an example:
  
positive.code:                   (make-thread
                     (lambda ()
                       (loop for job = (funcall get-job)
                          while job
                          do (funcall fn-job standard-output job)
                            (with-mutex
                                ((getf *dc-progress-mutex* pool-name))
  
negative.code: (defparameter *dc-thread-pool-progress* nil)
  (defparameter *dc-thread-pool-start-time* nil)
  (defparameter *dc-thread-pool-stop-time* nil)
  (defparameter *dc-thread-pool-done* nil)
  (defparameter *dc-timings* (make-hash-table :test #'equal :synchronized t))
  
  (defun to-ascii (s)
  