anchor.diff:  ;;
   ;; Error pages
   
  -(defparameter *http-error*
  -  '((404 . "Not Found")
  -    (403 . "Insufficient Permissions")))
  -
  -(defun error-reason (error-code)
  -  (cdr (assoc error-code *http-error*)))
  +(let ((http-error
  +       '((404 . "Not Found")
  +         (403 . "Insufficient Permissions"))))
  +  (defun error-reason (error-code)
  +    (cdr (assoc error-code http-error))))
   
   (defmethod on-exception ((app <web>) error-code)
     (declare (ignore app))
  
positive.code:   password
    groups)
  
  (defun get-user (username password)
    (if (or (null username) (null password))
        nil
        (with-connection (db)
          (retrieve-one
           (select :*
                   (from :users)
                   (where (:and (:= :username username)
                                (:= :password (:crypt password :password)))))
           :as 'user))))
  
  ;;
  ;; General Routing rules
  
  (defroute "/" ()
    (render "index.html"))
  
negative.code: ;; Helper funtions
  
  (defun root-path (file-path)
    "Returns the application root path"
    (merge-pathnames file-path *application-root*))
  
  (defun root-directory (directory-path)
    "Returns the files in the directory with respect to the application root"
    (directory (root-path directory-path)))
  
  (defun random-file (files)
    "Given a list of files, returns a random element"
    (nth (random (list-length files)) files))
  
  (defmacro with-group (group &body body)
    "Ensures the user is a member of the group"
    `(if (search ,group (gethash :groups *session*))
         (progn ,@body)
         (throw-code 403)))
  
  (defmacro with-item (item &body body)
    "Ensures the item is a non-nil value"
    `(if ,item
         (progn ,@body)
         (throw-code 404)))
  