The Entire History of You.

Hindsight is a program designed to show you what happened on a given day in your past. By combining old private logs that you input with public datasets, it can construct a 2D timeline of everything that happened on a given date.

You can think of it as a diary that writes itself.

alt text alt text alt text alt text alt text alt text

Supported Datasets:

Supported Chat Logs:

Supported Social Networks (optional):

If Hindsight is set up in conjunction with SocialLink, data from various social networks will be rendered along the same timeline:

Bonus Features:

Hindsight can also show you what things were like on a given date, by linking to certain content alongside the timeline:

Why the name Hindsight?

It seemed very apt for a project conceived during the umpteenth week of March Break 2020.

System Requirements

To use Hindsight, you must have:

Why did you write this?

While tracking down a number of firmware bugs in various cameras and questioning my overall sanity, I needed an easy way to cross-reference timestamps to determine what datasets were wrong. Turns out, most of them are - very few applications have correct support for timestamps and time zones, and basically none of them display things nicely, especially when multiple local time zones are involved. Hindsight was written as a way to merge everything together, so that it would be easy to determine what timestamps are totally off. That way, when your phone insists that your photo of the sunset happened mid-afternoon, you know who to blame.

The end result is Hindsight - one of the few applications out there mostly capable of correctly handling timestamps and time zones (I hope). This includes nice things like UNIX timestamps, and weird things like local timestamps in multiple time zones on the day you boarded a plane travelling from Tokyo to New York.

What's the difference between SocialLink and Hindsight?

SocialLink is designed primarily to view public data from various social networks, grouped by person. Hindsight shows you everything that occurred on a given date, regardless of who posted it.

Each application can be used completely separately. However, each application also includes the ability to seamlessly connect itself with the other.

For more details on this (and the weird architecture shared with SocialLink), take a look here.

Can I hide individual items?

Yes. Certain tables have an 'enabled' column. Any rows with enabled set to false will not be displayed.


SocialLink is licensed under the GNU Affero General Public License. Source code is available on GitHub. Under no circumstances should you have someone else host it for you.


[1] A word about Weather data:

Weather data is available via an optional integration with Visual Crossing, one of the only providers of historical global weather data at a cost-effective price. If you enable this component, you will need to provide an API key for their service.

Pricing is $5 (USD) for a bulk dump from a single location, and $0.0001/result per one-off query for a specific hour in a specific city. If you're a 40-something person who's moved a few times and travelled occasionally, you should expect to pay approximately $5 - $15 (USD) total for this data.

The rate-limited free tier they provide is sufficient to retrieve a few days of information each day, but is probably insufficient for initial setup unless you're willing to wait a year.

[2] A word about Photos

Photo data is obtained in two separate ways - the first is by reading the catalogue file from Adobe Lightroom. This means that things like ratings, edits, rejection flags, and people tags can be rendered in the UI. The second is by reading the EXIF data directly from the file itself.

EXIF for years has assumed that all timestamps were taken locally. Photos taken at noon in London and New York on the same day will only encode '12:00', with no time zone component, and will be displayed next to each other in most photo viewers. In July 2016, EXIF 2.31 added fields to properly store time zone data for the first time. These fields aren't currently understood by Adobe Lightroom (and most other photo viewers), so the catalogue timestamps are assumed to always be wrong and the information is queried from exiftool.

If your photos are missing time zone tags, it is likely that any photos taken in places where you do not currently live will be displayed incorrectly.

Videos use a different time format, defined as part of QTFF. QTFF states that cameras should record the time in UTC, but many cameras do not actually do this. There's a good chance video files will also be displayed incorrectly.

Lastly, a fallback renderer is provided for photos that have no associated EXIF data, like film scans. If a bunch of photos are placed inside a folder labelled with a date range, Hindsight will create a special entry in the sidebar to display that album on any dates that fall inside that range.

[3] Magazine Support

Hindsight includes the ability to display issues of magazines on dates where they would have been on news stands, if placed in a folder structure like /Magazines/Nintendo Power/2004-10 Nintendo Power Issue 184.cbz. Now you can travel back to 2004 and relive the days of playing GameCube games and reading about Prescott and BTX hype.