Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Markwhen: Markdown for Timelines (markwhen.com)
370 points by koch on June 20, 2022 | hide | past | favorite | 90 comments



This looks neat. I wish it used iso8601 [0] dates. It’s pretty convenient as the time periods uses the format YYYY-MM-DD/YYYY-MM-DD and I think is easier to mentally parse than MM/DD/YYYY-MM/DD/YYYY.

Of course I didn’t even know what a solidus (“/“) was until using iso8601.

Also, I usually find standards pretty much as overhead, but 8601 seems pretty good as a universal standard.

[0] https://en.wikipedia.org/wiki/ISO_8601


> It’s pretty convenient as the time periods uses the format YYYY-MM-DD/YYYY-MM-DD and I think is easier to mentally parse than MM/DD/YYYY-MM/DD/YYYY

Especially for those outside the USA!


As someone who grew up in the US, it's still bizarre as a programmer to have a mixed-significance ordering (MM-DD-YYYY) instead of any consistently-endian ordering (DD-MM-YYYY or YYYY-MM-DD).

Out of curiosity, in what order do Europeans verbally say full dates with month names? Or does it vary by language?


European here. When I state my date of birth I state it as “7th of October 1990”.

When a date is within the current year I state it as for example “27th of June”.

If weekday matters, and specific date is still relevant I’ll say for example “Monday 27th of June”.

I might also simply say “Sunday last week”, “Monday next week”, “Monday at the end of next month”, etc.

Likewise I might say “a couple of weeks ago”, “last week”, “a few days ago”, “in under two weeks”, etc.

Depends on context.

When including a date in a file name I prefer YYYY-MM-DD for date.

When using dates in a directory hierarchy I’ll have years on the top level, with months within them and dates within those.

Sometimes I might use a format like YYYY-mm-ddTHHMMz_s in a file name. For example “something_2022-06-20T1722+0000_1655745728_more_text.tbz”


YYYY-DD-MM as a folder / filename does not sort correctly. Not a fan.

I much prefer YYYY-MM-DD for its sorting behavior.


Sorry, that was a typo. I meant to say YYYY-MM-DD. Edited now.


Important note: while a datestamp like YYYY-MM-DD does sort correctly, a datetime stamp such as YYYY-MM-DDThh-mm-ss does not because of DST and negative leap seconds.


Where in Europe? I imagine this might vary by language / region. And could even differ in official use vs vernacular.

And ofc, the mixed order is the inferior option.


Norway


Germanic (Dutch, German, Danish, Swedish, Norwegian) languages just say "10 october", they'd never say "October 10th". Before we get our 'english is so stupid!!!' hat on, in many of these (e.g. Dutch and German), the number '87' is pronounced 'seven-and-eighty' ('zevenentachtig' - 'zeven en tachtig' - seven and eighty), which is stupid. Languages are weird).

Same for the romance ones: It's just "Quatorze juillet" - 14th of July (Bastille day).

English is the weird one, but not that weird, "7th of october" is not much more complicated to say than "October 7th".


About that romance 87 …

French in France: four twenties seven

French in Switzerland: eighty seven (octante sept)


Swiss French is rather "huitante", and also that not in all regions ("quatre-vingt" in the rest), see https://fr.wikipedia.org/wiki/Fran%C3%A7ais_de_Suisse#Nombre...


French is actually not so weird if you think about what a "score" is in English. Gettysburg address literally begins with "four score and seven years ago", which equals to 87.


I really hate watching historical documentaries where they spell out dates with day->month->year. If the intention is to teach, then the year is most important number and all other information is to be catalogued in context of broadest time period. The DD-MM-YYYY forces viewers to keep the whole date in their heads before it can be parsed and understood.

The "Algorithms to Live By" book has a good name for this: computational kindness. We should strive to reduce cognitive burden. The bigger the audience, the more effort should go into making data digestible. Unfortunately the established date standard goes against it.

The other problem is mixing endianness: the date information uses little endian, while numbers themselves are spelled out in big endian. The American MM-DD-YYYY on the other hand... I don't know what they were thinking.


Interesting thing I learned about historical battles: the most important part of the date is the season. In my country there were no battles during winter, early spring and late autumn, most were from April to September. It does not mean month is more important than year.


In portuguese people say "vinte de junho de dois mil e vinte dois", meaning "twenty of june of two thousand twenty two". The first few days of the month are ordinal: people say "primeiro de janeiro" meaning "first of january".

Japanese uses a neat system akin to YYYY-MM-DD. 2022-06-20 becomes 2021年6月20日 meaning "2021 year 6 month 20 day". Really nice to read. Actual pronunciation is very irregular though, especially days of the month where about half of them are irregular.


In Sweden we say 20th June, 2022 and we even use a "DD/MM -YY" shorthand when signing documents for instance, although YYYY-MM-DD is also common and "the more correct".


Except on food where EU mandates DD-MM-YY(YY).


> Out of curiosity, in what order do Europeans verbally say full dates with month names? Or does it vary by language?

I am from India and I say "21st of June 2022"


These replies are fascinating. When saying a date I always say month day year. I hadn’t considered that this might be cultural.


I moved to the US from the UK a little over 10 years ago.

The numeric month and day of my birthday happen to be the same. For this anecdote lets assume it’s 01/01/1970.

When medical staff ask me for my date of birth, I’ll say “1st Jan 1970”. They’ll reply asking “Sorry, Jan 1st?” And I’ll say “yeah”. This blew my (programmer) mind.

Over the years I’ve rewired my brain to say “Jan 1st 1970” and avoid the extra round trip.


As an American, same. I was wondering where the weird month-first came from and figured it might have been verbal first, then codified in writing.


At first I wondered if it had something to do with word order in English, but it sounds like other English speaking countries don’t follow this pattern.


Don’t currently “follow this pattern”.

US English has several grammatical and pronunciation characteristics that were common in UK English about 300 years ago. Including being largely (but not totally) rhotic.


In German, Dutch I'll use "twenty June twenty-twentytwo". In English "twentieth of June twenty-twentytwo


Would you actually say "zwanzig Juni" in German? I'd expect "zwanzigster Juni", i.e. 20th June.


Denmark: The Nth $month $year. E.g., “Den 20. juni 2022” (lit.: the 20th June 2022).


The same applies to Norway


Verbally in the same order as written in BrE - 22 June. (Historically '22nd inst. [instant]'.)

'June twenty-second' ordering verbally is as distanctly American (not to say you don't hear it, as with many Americanizms) as it is in writing.


It does vary by language, but Roman languages (French, Spanish, Italian, etc.) say the 4th of July.

Same in German.

In Polish, it’s the same, except for official matters since 2002, which now follows ISO8601.

Even in the UK they commonly say the 5th of May, and not May, the 5th (but it does happen).

I can’t talk about other languages.


> not May, the 5th (but it does happen)

The only time I see this is in the UK is on movie posters/trailer, e.g. "In cinemas May 5th", which I assume is due to re-using the US material.

PS: 5th of May is a degenerate example, since it's 05/05 regardless of ordering

PPS: 5th of May is also my birthday ;)


The one difference by language is the day: some languages say 1st or 7th, some just 1 or 7. In mine, except for 1st we use the day number, full reading is "day month, year" where the comma is a small extra space.


It varies by context: sometimes I'll say "20th June", sometimes "June 20th". There's no rhyme or reason.


There isn’t a standard. Most individuals don’t have a consistent standard, let alone languages.


In life I use the latter, but on computers I try to exclusively use the former. YYYY-MM-DD sorts the same lexicographically or chronologically.


Yeah, so long form 8601 are supported

`2022-08-02T23:00:00.000Z - 2022-08-03T00:00:00.000Z: Event`

but in general I do need to figure out a way to allow more customizable date parsing.[0]

[0]https://github.com/kochrt/markwhen/issues/27


I would definitely like to use YYYY-MM or YYYY-MM-DD, ideally without any additional configuration required.


8601 is fine, but generally MASSIVELY overkill. RFC 3339 might be a bit easier and accomplishes what you want. https://ijmacd.github.io/rfc3339-iso8601/


I’ve been working on markwhen as a way to easily create timelines just from text.

I’ve used it personally to help plan and coordinate my own wedding (https://markwhen.com/rob/wedding) and for keeping track of life events, and I’ve seen it used for event planning, project management, and to visualize historical events or periods of time.

I personally like tools that let you immediately start using them, and I set out to do that here with markwhen.

Let me know if you have any questions!


Fantastic. ISO8601 date is a must, otherwise, its delightful :)


Very cool. Some great ideas here as I build a visualizer for Timeliner [0] (effectively its successor, Timelinize [1]) in my spare time!

Did you build the timeline UI yourself? Can it be used as a library?

[0]: https://github.com/mholt/timeliner

[1]: https://twitter.com/timelinize


Cool tool, thanks for sharing!


hope your dad recovered from his hospital visit!


Looks similar to Mermaid-js's Gantt chart support: https://mermaid-js.github.io/mermaid/#/gantt

Once nice thing about Mermaid is it's built into [GitHub's markdown](https://github.blog/2022-02-14-include-diagrams-markdown-fil...) and has support in Notion


This is awesome! I want to see other tools like this. I dream of a project management system that is text based and lives in your codebase seems we are pretty close with this. Planning (this), comments / descriptions (markdown), identity / people (??), tickets (??) Anyone know of something like this?


It doesn't exist yet but it needs to be built. Project-management-as-code. This would be the roadmap interface. Let's kill Jira.


This would enable a much appreciated Obsidian plugin, it seems a natural fit


Obsidian supports Mermaid charts. I've used that for this type of chart before, to plan a trip.


While the Gantt in Mermaid is decent, this would be far, far superior as a bidirectional plugin (i.e capable of both visualisation and editing the original markdown).

I'd happily pay for this as an Obsidian plugin.


Warning: this comment is just for fun

Missed opportunity not naming it "Markdown for When (feat Lil Jon)


This is an excellent landing page that immediately draws my attention and shows why I'd want to use this. This is a great example of how a landing page can demonstrate a tool quickly.


Anyone ever run across anything like this with a simple syntax that can do a timeline with split AND merges? I've always wanted something like the linux timeline [1] as an interactive timeline that can both split and merge.

[1]https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Di...


Someone at Microsoft please please buy/license/implement this for GitHub projects.


Elsewhere someone said Mermaid is supported already by GitHub:

https://mermaid-js.github.io/mermaid/#/gantt


I'm working on an MIT-licensed time-tracking tool in my spare time and I'm hoping somebody (in a "this is not legal advice"-capacity at least) can enlighten me on licensing here:

If I am understanding the AGPL-3.0 correctly (and assuming that the format is also under the license), I could NOT add an "export to Markwhen" feature to my project without then being forced to convert it to AGPL-3.0. Is this correct?


No, nobody can copyright a file format


This, similarly you could copy(reimplement) the entire API for this software if you wish with some caveats.


In addition to what others have said, I personally would love to see people using the format, so please go ahead!

I'd be interested to see what you're working on!


Hat tip to a fellow follower of CGP Grey's yearly themes :)


For all those who are requesting ISO8601 dates -- according to the GitHub repo [0] these are already supported:

> Dates: A date can be expressed in a few forms. Human readable dates are supported, like 1665, 03/2222, or 09/11/2001, as well as IO8601 dates, like 2031-11-19T01:35:10Z.

[0]: https://github.com/kochrt/markwhen


Good job! Would like to see it as an independent file format and tools like external editor support and cli compiler (to html/pdf/svg etc.)


Seconding this. I'd love to use this tool, but ideally I want to be editing in the text editor/IDE of my choice and then to be able to own the viewer offline. This would be especially important for actual project management as employers/clients don't tend to allow you to use online tools and that's what I'd most likely be using this for.


Thirding this.

Ideally this would be an emacs package.


Maybe I'm skimming over this too quickly... but what part of this is like markdown exactly? The monospace font?

Does seem potentially cool and useful though.


I definitely can't use this, the date overhead is too much. I agree with the other commenter, YYYY-MM-DD is the way to go.


Agreed, the date thing is stopping me too still for now. I'm waiting for symbolic headers! Or the use of relative dates.


Very interesting. Why is there work inside of the education sections of the life timeline? In the project planning example, I could see it being useful to have something like $ref references from Swagger to e.g. reference a duration from a project group into the overall section.


There are relative dates, so you can refer to previous events when defining new ones: https://markwhen.com/docs#relative-dates


If only this were a vertical timeline with a print-friendly format. Its great, but a guy can dream....


Exporting to pdf/png does a good job of getting everything into view. Otherwise the 'doc' view (the third view option button in the bottom left corner) might be your best bet, it just displays a list


Hey! Thanks for the workaround. Still, I second this feature request, and opened an issue in your repo.

https://github.com/kochrt/markwhen/issues/35

Awesome project. Thanks for sharing.


As mentioned in a Github issue, would love to store the Markdown file in my code repository (roadmap) and the markwhen server to deploy hosting the file to my static domain when I deploy my code.

Other than that, you are making amazing progress! And fast also.


Crazy, I just had this idea last week. Although I was imagining a “mermaid for roadmaps”, so closely related but not exactly the same. This looks really cool though!


Nice. It is open source?


https://github.com/kochrt/markwhen is about a month behind the live website.

The upstream repo that the live site uses is available to sponsors.


License says yes.

https://github.com/kochrt/markwhen/blob/main/LICENSE

> kochrt/markwhen is licensed under the GNU Affero General Public License v3.0


Really awesome to see this evolving to this stage :)


I'm glad you're here to see it!

So cheeaun here posted his life timeline project[0] 9 years ago (!) to hacker news[1] and I always thought it was pretty neat. I made a tool to make timelines like that and it has since evolved into markwhen.

[0] https://github.com/cheeaun/life [1] https://news.ycombinator.com/item?id=6833565


Yes, very awesome what you did with it! Really promising to use as a developer. Always hated all the roadmapping tools that required to generate the roadmap in the tool itself instead of Roadmap-as-Code.


I like it! very pretty and useful. I really needed for something like that for commercial proposals. Nice work


This might not be what you're targeting as a use case, but is there any way to do BCE dates?


This is very cool! Awesome job!


Clicking and dragging doesn't seem to work for me. Firefox 102.0b8, Linux


How about a markdown for any hierarchical info?

And diffing to know what changed on git etc.


Can the renderer be used separately to embed in other editors?


Not right now, but it's something I've been thinking about, in addition to separating the parser out

https://github.com/kochrt/markwhen/issues/32


nice! i have been using a combination of org-mode / taskjuggler to produce gantt so far. Bit this looks nice and could be use for simpler use cases.


wow very cool, light mode can be also cool


Fcuking hell, this looks good!


Very cool! One suggestion, this is not Markdown, this is plain text for timelines.

Don’t be afraid to distinguish your tool from its inspirations.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: