   for m in matches
     [_full, timestamp, target, dyno, info] = m
 
+    timestamp = new Date(timestamp)
+
     # known things to ignore
     if startsWith info, 'info'
     else if startsWith info, 'warn'


    else if startsWith info, 'Starting process with command'
      events.push { type: 'process-starting', time: timestamp, dyno: dyno, msg: info }
    else if startsWith info, 'Process exited with status'
      events.push { type: 'process-exited', time: timestamp, dyno: dyno, msg: info }
    else if startsWith info, 'Stopping all processes with SIGTERM'
      events.push { type: 'process-stopping', time: timestamp, dyno: dyno, msg: info }
    else if startsWith info, 'noflo-runtime-msgflo started'
      events.push { type: 'process-started', time: timestamp, dyno: dyno, msg: info }
    else
      #console.log info
  return events

analyzeStartups = (filename, callback) ->
  fs = require 'fs'

  fs.readFile filename, {encoding: 'utf-8'}, (err, contents) ->
    return callback err if err
    events = eventsFromLog contents
    results = events.map (e) -> "#{e.dyno or ''} #{e.type}"
    return callback null, results

exports.startuptime_main = () ->

    else if info.indexOf('noflo-runtime-msgflo:error') != -1

    # events we care about
    else if startsWith info, 'Scale to'
      events.push { type: 'scale-to', time: timestamp, msg: info }
    # note: can be up or down, on multiple dynos.
    # Should we synthesize per-dyno events from it? requires context...

    else if startsWith info, 'State changed from up to down'
      events.push { type: 'up->down', time: timestamp, dyno: dyno, msg: info }
