TagTime Web is an open-source time-tracking web app. At random points throughout the day, it asks you what you are doing.
Stochastic time tracking is a system that sends you a ping at random intervals. While it's not very accurate at a small scale, it is very valuable for obtaining long-term insights as to how you spend your time.
Here's what TagTime Web looks like when you get a ping:
From there, you can enter tags:
Once you've responded to enough tags, many types of graphs can be generated from your data:
TagTime was initially written in Perl. TagTime Web is a complete, modern, re-implementation that works in web browsers. This isn't the only re-implementation though: check out this comprehensive list for more.