11,919 karma · joined May 8, 2013
Twitter: https://twitter.com/mholt6
Personal: https://matt.life
[ my public key: https://keybase.io/mholt; my proof: https://keybase.io/mholt/sigs/X_pNtQp3_Et_7qwkBKVjmZv4dl7vP8bX83hu4N9lyz8 ]
(I do not use Keybase)
Contacts are already handled as first-class concepts in Timelinize, known as "entities". Entities don't have timestamps, but they have a name and attributes that can be anything, and the relationship between the entity and its attributes can be bounded by time.
Notes are also created and updated/changed at specific times.
> Are my IMDB-ratings valid data for this? My Ebook-collection? My Steam-account? Those are usually things I would not manage in a timeline or a map, but with different interfaces and features.
Could be, if you wanted to timeline those! (Like, when you rated a certain movie. Or when you got or read a certain book. Or when you got a new Steam game.)
> You might suggest to users the following use case. “If you want to create a Timelinize data store, but don’t feel that your own local systems are secure enough to safely hold a basket with a copy of every egg in your life, you might consider the following use case, which some of our customers implement. Once our twice a year, update the data store, but store it on an external disk. When the update is done, take the disk offline and keep it in a drawer or safe.”
Sure, I like that.
> I always wondered how cool it would be if I could tell some Spotify-like system, “I’m 20 miles away from the lake, we are going to stay in the cabins a week, just like we did 10 years ago. Play me the exact same songs now that played at every turn back then.”
It's inevitable for an LLM and other tooling like personal assistants to be integrated to this thing, so yeah that sounds like a great use case.
> For a name, how about: ChronEngine That name seems pretty free and clear from previous use, if you like it grab ChronEngine.com before some squatter does and thank me with a phone call, I would enjoy a quick chat with you. ... Oh and make a list of anybody that says they have done an elaborate something similar with Excel (like me and at least one other person in this thread) and maybe have a discussion with them some time, we/they might have some useful insights.
Not bad actually; and sure, we can chat either way. Feel free to book a time at https://matt.chat.
> Your web page might benefit from a grid that lists all the input sources you accept, with hotlinks next to the names that give a pop-up quick summary of what that source is about, and maybe some color coding that shows something like “green = rock solid lately”, “yellow = some users reporting problems”, “red = they just updated their format, it’s broken, we are working on it”. You will/are facing challenges similar to Trillian, a chat client from the early 2000s that would try to maintain ongoing connection compatibility with multiple other chat clients such as AIM/ICQ/MSN. Also, the grid could have a “suggested source sets” filter that helped people find what 5 (for example) input sources they might select for their use style.
I LOVED Trillian, thanks or the nostalgia. Oh man, they're still alive: https://trillian.im/ (I love the icon...)
Data sources are extensible, they basically just need to implement 2 methods: https://pkg.go.dev/github.com/timelinize/timelinize@v0.0.24/...
> No generic format to build your own sources?
I'm designing an import API that will let any script or program push data to the timeline.
> Also, why the focus on a timeline?
Seemed to make the most sense.
> Not all personal data or tasks are time-related.
Probably true. Do you have examples of what you're thinking of?
> If you want to have collaboration on this, maybe think about splitting it into backend and frontends. With the backend being the storage, and it's import-mechanism, and the frontend being open for anyone to put their own view onto the data, and maybe work with them.
That's how it is right now; it's a client-server architecture. It has a CLI and a JSON API so you can build your own front-ends.
> Maintaining personal data has demand here, but so far there is no real unified project catering to a broad range of services and different types of data. So there is a space to fill and a community to build IMHO.
I agree, this is a huge void that needs to be filled!
And yeah, I feel ya. This lets you delete things too.
Timelinize's data sources are easily extensible so adding more shouldn't be too hard, HPI included.
Thank you!
> How does this handle data updating / fixing?
In the advanced import settings, you can customize what makes an item unique or a duplicate. You can also configure how to handle duplicates. By default, duplicates are skipped. But they can also be updated, and you can customize what gets updated and which of the two values to keep.
But yes, updates do run an UPDATE query, so they're irreversible. I explored schemas that were purely additive, so that you could traverse through mutations of the timeline, but this got messy real fast, and made exploring (reading) the timeline more complex/slow/error-prone. I do think it would be cool though, and I may still revisit that, because I think it could be quite beneficial.
So yes, Timelinize sits behind your current work flows. It's more of a resting place for your data (which you can still organize and curate -- more features to come in this regard), but I also can see why it might make sense to be one's primary photo library application, in the future, with more development.
As for document storage, this is still WIP, and the implementation could use more discussion to clarify the vision and specifics.
Could make for a very interesting/useful/private personal assistant.
But yes, I think the likes of what Ente is doing is interesting, though I don't know the technical details.
Data content hashes are pretty appealing too! But they have some drawbacks and I decided not to lean heavily on them in this application, at least for now.
> unless it's a machine at home,
This is, in fact, the intended model.
The problem with any other model, AFAIK, is that someone else has access to your data unless I implement an encrypted live database, like with homomorphic encryption, but even then, I'm sure at some places it would have to be decrypted in memory in places (like, transcoding videos or encoding images, for starters), and the physical owner of the machine will always have access to that.
I just don't think any other way of doing it is really feasible to truly preserve your privacy. I am likely wrong, but if so, I also imagine it's very tedious, nuanced, error-prone, and restrictive.
(Or maybe I'm just totally wrong!)
> - Could index and storage backend be decoupled, so that I can host my photos etc. elsewhere and, in particular, prevent data duplication?
I know this is contentious for some, but part of the point is to duplicate/copy your data into the timeline. It acts as a backup, and it ensures consistency, reliability, and availability.
Apps like PhotoStructure do what you describe -- and do a good job of indexing external content. I just think that's going to be hard to compel in Timelinize.
> Support for importing Polarsteps trips, and for importing Signal backups (e.g. via https://github.com/bepaald/signalbackup-tools ) would be nice!
Agreed! I played with Signal exports for a while but the format changed enough that it was difficult to rely on this as a data source. Especially since it's not just obvious what changes, it's encryption so it's kind of a black box.
That said, anyone is welcome to contribute more data sources. I will even have an import API at some point, so the data sources don't have to be compiled in. Other scripts or programs could push data to Timelinize.
Just to reiterate, one of the main goals of Timelinize is to have your data. It may mean some duplication, but I'm OK with that. Storage is getting cheap enough, and even if it's expensive, it's worth it.
The debate between importing he data and indexing external data is a long, grueling one, but ultimately I cannot be satisfied with not having my data guaranteed to be locally available.
I suppose in the future it's possible we could add the ability to index external data, but this likely wouldn't work well in practice since most data sources lock down real-time access via their API restrictions.
Basically, I would love to know how to do this correctly for each platform, but I don't know how. Help would be welcomed.
Yeah, that's the cost I'm talking about. It essentially amounts to paying an extra subscription to be able to download your data [on a regular basis].
I'm a big rclone fan btw :) I'm sure there's some future where we do something like this to automate Takeouts.