HNHacker News
TopNewBestAskShowJobs

mholt

11,919 karma · joined May 8, 2013

I'm the author of the Caddy web server. https://caddyserver.com

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)

submissionscomments
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Thank you!
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Yes, absolutely moreso than a demo that is faked.
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
On the contrary, I think it's even better to use real data instead of fake data. Using fake data looks tacky and unprofessional.
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Yeah, I did actually pursue this for a time (heh), but I might revisit it later. It was too much complexity for debateable value-add, though the value is growing on me.
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Bookmarks are bookmarked at a specific time.

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.)

mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Just fixed that. Thanks. You can download the latest CI artifact for the patch (the link is on the Install page in the docs).
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Yep, I encountered the same problem. Initially it was solely API-based, but as they got locked down and paid-only and removed entirely, I went the bulk download route.
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Thanks man! Good to see you here. Nice suggestion, I have a list on a text doc here, I'll add this one :)
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Got a lot of feedback here so far, plenty to keep me busy. And there will be an import API to let scripts/programs push data to Timelinize, even if it doesn't support those data sources built-in.
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Thanks for the feedback; especially about the name. I'm glad you value the project's goals!
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Yeah, big fan of Perkeep. I think it's well-engineered. (Better than Timelinize probably! Just missing some important features for me.)
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Thank you for the great feedback!

> 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...)

mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
> Interesting. But this seems to be limited to the supported data-sources?

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!

mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Thank you!

And yeah, I feel ya. This lets you delete things too.

mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
They are just organized into folders on disk, so that could definitely work!
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Yeah, years ago I did some study of HPI. :)

Timelinize's data sources are easily extensible so adding more shouldn't be too hard, HPI included.

Thank you!

mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Sharing is planned. Long term roadmap but definitely on my list!
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Glad you like Caddy!

> 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.

mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Wonderful, I'd love to collaborate!
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Well, I don't plan on 1:1 feature parity with NextCloud or any comprehensive cloud suite. But I think in terms of what was mentioned: "storing all my documents and books and documenting when I added, opened, edited them. I want it to store all notes that I write," I think that's in scope.

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.

mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Yeah, I hear this a lot, I would love to have my financials and an LLM integrated as well!

Could make for a very interesting/useful/private personal assistant.

mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Thank you. Yes, I feel the same!
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Oh it actually does support audio files :) Haven't tested them in a couple years but a player should appear.
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
As far as I know, yes. ("Original" is a strong word, but it's pretty close if you don't have space saver enabled / pay for storage.)
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Correct, Timelinize is not a backup utility, but having the copy of your data in your timeline acts as a backup against losing access to your data sources, such as Google Photos, or your social media account(s), etc. As opposed to simply displaying data that is stored elsewhere.

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.

mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Something like that, yeah. Augmenting public data sets like weather or news to add context to your timeline.
mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Great comment, thanks for the questions.

> 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.

mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
That's not really aligned with my vision/goals, which is to bring my data home; but to be clear, downloading your data doesn't mean it has to leave the cloud. You can have your cake and eat it too.

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.

mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
Thank you! Not sure I can package everything because of license requirements. IANAL. I think the container image basically automates the various dependencies, but I didn't create it and I don't use it so I'm not 100% sure.

Basically, I would love to know how to do this correctly for each platform, but I don't know how. Help would be welcomed.

mholt··on Show HN: Timelinize – Privately organize your own data from everywhere, locally
> except the storage for the takeout zip on drive.

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.

← PreviousPage 3 of 34Next →