Created TreeView.

Created new Backbone view with render() and renderTree() functions for
rendering an EventTree object on the page. HTML is built manually in
Javascript within the TreeView functions. I'd like to push this out into a
template at some point.
Trying to simplify rendering.

Known bug: redundant "ul" tags.
Fixed excessive 'ul' problem.
IndexView handles click events.
Migrated a bunch of Express stuff over.

App can no longer be accessed on the regular HTTP port 80. Use
andrewhallagan.com:4000. Can start the server with ./start-and-watch-server
script, which will bounce server whenever source code changes.
Crude end to end finished.

Redis db up and running. "Event" link POST event name, parent event, and
offset to /events. The server adds appropriate keys in the db. Need to
figure out some sort of control flow system to handle the asynchronous db
calls.
Removing node_modules/* from source control.

To install the correct dependencies just run 'npm update'.
Adding a .gitignore.

The node_modules directory is now ignored.
Added support for SSL connections.

HTTP server listens on 4000 as before. HTTPS server listens on 4443 using a
self-signed certificate.
Cleaned up Redis query.

Was previously making an awful-looking ZRANGE query followed by an
additional query in the callback. A 3-second timeout was involved, if that's
any indication of how how fugly it was. Now it uses advice documented here:
http://stackoverflow.com/questions/8224548/cleaner-way-to-perform-several-redis-queries-within-node-js

This boils down to something along the lines of
SORT TIMESTAMPS GET # GET event:*->pev GET event:*->ev
Fixed POST /events route.

Have not tested yet.
index.jade view iterates over events.

Modified app.js to pass an event list array to the index.jade view instead
of a JSON string. Added some minimal CSS. The index.jade template iterates
over elements in the event list.
Changed EVENTS schema.

No longer relying on a tree structure of parent and children events.
Instead event names are just namespaced using a parent:child convention.
Examples: work, sleep, commute, commute:bus, commute:bike. Server code will
simply read all events in the EVENTS Redis set. Later, creating a new event
name will be as simple as adding a new key to the EVENTS set. It will rely
on proper naming conventions.

Updated views/index to render the history of previously-submitted events as
well as all current keys in the EVENTS set in the form of clickable links.
Later, these links will make AJAX requests for POSTing new events.
Event links make POSTs. Cleaned up view.

The ".event" links make POST requests using data-ev and data-pev attribute
values. The index.jade view has logic to handle event names with and without
child event names (e.g., "commute:bus" versus "commute"). Removed
IndexView.js and init.js.
Added /history route.

GET requests to /history return either an html view of the previous event
history or a JSON representation, depending on the Accept header value.
Added a history.jade view and modified the root route '/' to return only the
list of event links.
Separated routes.

Dynamically scans the routes/ directory to look for .js files and "requires"
them. Created scripts for "history" routes and "events" routes.
Bug fix: sprintf globally available.
Add to history by doing POST /history.

Was previously doing a POST /events, which was confusing since it was
changing history data and not events data.
Added event DELETE links and CSS.

No implementation.
Renamed some variables, but they still suck.

pev -> name
ev -> subname

Seriously, I need some better names.