   for filename in sketches
     match = true
     for tag in tags
-      if !filename.match tag
+      regex = new RegExp('#' + tag + '[ \.]')
+      if !filename.match regex
         match = false
         break
     if match

              return base + '/' + (i + 1)
    list = getSketchesByRegexp(sketches, regexp).reverse()
    res.send header + formatList(list, urlFunc, '33%') + footer
      
  
################################################################################
# Express


    res.header "Cache-Control", "no-cache, no-store, must-revalidate"
    res.header "Pragma", "no-cache"
    res.header "Expires", 0
    res.send header + formatList(list) + footer + masonry

showTextList = (req, res, filter) ->
  getSketches(SKETCH_DIR).then (sketches) ->
    list = sketches.filter(filter)
    res.send header + '<ul>' + list.map((filename) ->
      url = '/image/' + encodeURIComponent(filename)
      return '<li><a href="' + url + '">View</a> - ' + linkTags(filename) + '</li>'
    ).join('') + '</ul>' + footer
  
listNonjournalSketches = (req, res) ->
  showTextList(req, res, (s) ->
    return !s.match(/#journal/) && s.match(/^[0-9]/)
  )
    
listJournalSketches = (req, res) ->
  showTextList(req, res, (s) ->
    return s.match(/#journal|#monthly|#yearly/)
  )

serveImageByID = (req, res) ->
  getSketches(SKETCH_DIR).then (sketches) ->
