anchor.diff:        ((cond ((or (not name) (string= name "")) "name")
                ((find-account name)               "nametaken")
                ((not (email-address? email))      "email")
  -             ((< (length password) 8)           "password")
  +             ((not (password? password))        "password")
                ((not (check-captcha))             "captcha"))
          #/site/register?name={name}&email={email}&error={it})
         (t (login (new-account (cut-whitespace name) email password))
  
positive.code: 
  ;;; user preferences
  
  (defpage /site/preferences-ok "Preferences updated" ()
    #H[Email updated successfully])
  
  (defhandler /site/change-email (email password)
    (flet ((err (e) #/site/preferences?email={email}&error={e}))
  
negative.code:   </form>
  </div>])))
  
  (defun password? (pw)
    (and pw (not (< (length pw) 8))))
  
  (defun email-address? (str)
    (and str (not (string= str ""))))
  
  