7 ms·
Show HN: A zoomable timeline of 4M Wikipedia events
I'm building a journal app in Kotlin Multiplatform and for this purpose I have created a zoomable timeline interface.
This is a side-project where I reuse the timeline interface to display 4 million events imported from Wikipedia / Wikidata, scored using PageRank. There is more information on the about page.
If you're interested in the stack: I use Kotlin Multiplatform extensively, with Compose Multiplatform for the UI, communicates with the backend using Kotlinx-RPC and behind the hood a simple Postgres database on a Hetzner machine.
- Unearned5161 2mo agoThank you for making this, it's very nice. I love a good timeline, everything seems to make a bit more sense when it's laid out spatially.
- Jtarii 2mo agoInstantly freezes the moment I try to interact with it on firefox.
- 0gs 2mo agoyeah, borked on Chrome Android too. too bad, i want to see it!
- lortex 2mo agoHi, I'm sorry for that, my backend is struggling a bit I didn't expect to be on the front page so soon. On https://www.diena.co/everything/ https://www.diena.co/everything/ there is a page with a video if you want to see how it looks and behaves.
- Arslan1997 2mo agoThis is awesome
- ss2f 2mo agoFantastic! Testing this on linux-gnome-firefox is smooth.
- darkstarsys 2mo agoSee also my log-scale timeline of the universe — hand-curated rather than a giant import, and I hope also a bit nicer/simpler UI: https://deep-timeline.org https://deep-timeline.org
- stvltvs 2mo agoNice! I can't help thinking it would be informative to see it on a linear scale. Vast, unfathomable stretches of time before humans come on the scene, and then human history is a blip at the end.
- lortex 2mo agoThank you for sharing your project, it must have been quite some work to curate the events. My plan is to at some point be able to implement various filters so that people can make usable timelines. Right now it's more of a tech demo.
- popalchemist 2mo agoThis is well done. How did you source and categorize the data points?
- maxlin 2mo agoCool, though I assume there's some accuracy shortfalls, when not close to zero the UI breaks when years are ~1 pixel in size. Probably doesn't matter for much of the content, though immediately comes to mind that for after big bang there is "known events" that happened at second-scale. Don't know if there's exact Wikipeida articles of those, but with an appropriately accurate timestamp storage & handling (128bit? more?), one could well zoom in to those if they did exist.
- lortex 2mo agoYes indeed, I'll fix them at some point ! For in-between events it doesn't really matter to be able to zoom in, but it'd be great to explore the birth of the universe on this timeline. Storage wise it's already supporting such precision, but the UI (which was made for the 1900-2100 range initially) still has issues.
- maxlin 2mo agoAn arbitrary data error I found is that https://en.wikipedia.org/wiki/Jekadefari https://en.wikipedia.org/wiki/Jekadefari is shown on the year 760251. That number is obviously wrong, it instead appears to be the postcode of the place.
- lortex 2mo agoWikidata is the source I used to get metadata about Wikipedia articles. Sometimes the data is automatically extracted from Wikipedia articles which introduces these errors. What's nice is that the timeline representation easily shows these outliers and will help us fix them !
- jcbe 2mo ago+1, I noticed and fixed a few erroneous dates that would have presumably been difficult to surface otherwise
- GMoromisato 2mo agoThe problem is that there's no guarantee that extraction errors will always end up as outliers. Instead, outliers are merely the errors that are easiest to find. <Insert bullet-ridden bomber image here>
- hobofan 2mo agoAlmost everything further than a few years in the future and a few predicted pangea events appear to be data errors.
- maeril 2mo agoThis is so cooooool
- UltraSane 2mo agoVery nice, I would like a similar tool for analyzing system logs and metrics.
- Frog1230 2mo agoWorks, its cool to look at but might there be a use case?
- The_Blade 2mo agois having fun learning no longer a valid use case
- ks2048 2mo agoYou need some visual feedback that it's loading. I see a blank screen for 30 seconds.
- kingo55 2mo agoEvents in the future are labelled in past tense. Rather than "happened in 4.5B" you could write "forecast in 4.5B"
- soupspaces 2mo agoOh yeah and it doesn't even account for time dilation 5/7
- dezzayn-com 2mo ago[flagged]
- UnfitFootprint 2mo agoReally fun! Worked like a dream on iOS safari
- p0wn 2mo agoVery cool
- Morhaus 2mo agoCongrats on shipping :)
- aayushdutt 2mo agoCan you share the data, the view can be improved a lot, it's not really capturing the essence.
- TealMyEal 2mo agoits a very promising idea, i recently god into the Bronze age collapse and this was a nice way to look around at other events happening at that time and put context to it. a few bugs to iron out but yeah good work
- keynha 2mo agoThis is really nicely done, the log zoom makes 4M events feel navigable instead of like a wall. How are you serving a viewport at that scale: precomputed levels of detail, or a query against the raw events on each pan and zoom?
- lortex 2mo agoThank you ! It's indeed precomputed levels of detail, the backend serves a key-value store: for each bucket a top 10 events that start or end in this bucket. A bucket is described by its zoom level (from 1 day to 2^34 days) and time coordinates.
- keynha 2mo agoMakes sense, thanks. The fixed 10-per-bucket cap is what keeps every viewport the same size no matter the zoom, that's the elegant bit.
- lightthemad 2mo ago[dead]
- SamuraiLion 2mo ago[flagged]
- tweetle_beetle 2mo agoNot sure the page rank style algorithm is that useful from my limited browsing. Apparently https://en.wikipedia.org/wiki/Kellie%27s_Castle https://en.wikipedia.org/wiki/Kellie%27s_Castle is the most significant entry in human history.
- lortex 2mo agoIt is quite strange indeed, it's probably a bug in the visualization because in my database I see that Kellie's Castle has a low rank.
- tomthe 2mo agoCool! I made something similar with the same datasets a year ago, but with geocoordinates instead of timestamps: https://theilemail.de/wikipage/ https://theilemail.de/wikipage/ It shows a zoomable map with the "most important" wikipedia entries at specific locations. It was very hard to get the parameters right so that the text is always displayed in a good size, while showing not too few or too many entries. I never published it until now, I think.
- est 2mo agoIt feels a little strange on macbook touchpad, otherwise it's a cool project
- willtemperley 2mo agoAlso on a macbook, it took me a while to realise pinch to zoom doesn't do anything except zoom the page, pan is click and drag, and scroll is zoom. Cool project except for the controls, surely scroll should be to scroll up and down?
- lortex 2mo agoHi, thanks you're right, I have tested mouse and mobile browsing but missed trackpad usage. I'll update the behavior !
- tempaccountabgd 2mo ago[dead]
- tempaccountabgd 2mo ago[dead]
- welcome_dragon 2mo agoI think you need to check these. I saw one item (a bank maybe?) that was started on "20141221" or something. Didn't get parsed so it is treated as the year 20241221, not 2024. So many examples of this right off the bat. This needs some serious work/testing. If you're going to use an LLM to code something, it is your responsibility to own, maintain, test, and understand that code
- lortex 2mo agoHi, to be clear, this project is a view of the Wikidata knowledge graph. Some parts of Wikidata come from automatic extraction of Wikipedia articles and other sources, which I am not responsible of. For each event there is a link to Wikipedia and a link to Wikidata, the latter can be used to fix mistakes. I will import an updated dataset at some point. Happy to integrate feedback on the UI part of this project, as I've started doing thanks to some of the other HN comments. I can assure you that this code was written by my hands, line by line, and that each bug is my own !
- mrsalty 2mo agoReally nice! I always had in mind to build something similar but on the geographical axes: given a long/lat param show all historical events related in the surrounding area.