While Mermaid gets the limelight, Kroki[1] offers: BlockDiag, BPMN, Bytefield, SeqDiag, ActDiag, NwDiag, PacketDiag, RackDiag, C4 with PlantUML, D2, DBML, Ditaa, Erd, Excalidraw, GraphViz, Nomnoml, Pikchr, PlantUML, Structurizr, Svgbob, Symbolator, TikZ, Vega, Vega-Lite, WaveDrom, WireViz, and Mermaid.
My Markdown editor, KeenWrite[2], integrates Kroki as a service. This means whenever a new text-based diagram format is offered by Kroki, it is available to KeenWrite, dynamically. The tutorial[3] shows how it works. (Aside, variables within diagrams are also possible, shown at the end.)
Note that Mermaid diagrams cannot be rendered by most libraries[4] due to its inclusion of <foreignObject>, which is browser-dependent.
Comparing MermaidJS with Kroki is a bit like comparing PDF.js to Adobe Acrobat. I don't think either is better than the other, they're just for different use-cases.
With MermaidJS, converting a diagram inside a web page requires adding a handful of lines to a HTML page. The execution is fast and local.
Kroki is a web-service. To use it in a web page means adding a dependency to an external provider (a free service exists, but asks for fundings). An alternative is self-hosting by running a Kroki container.
A few years ago, I added Mermaid diagrams to a project in a few minutes of work. Had we needed a much more complex tool, maybe I would have gone with Kroki, but not by myself; it would have required a change in the deploying process of the project.
Edit: See child comments, I misunderstood. Original post below anyway.
--
To me, the diagrams have an uglier default design. A crazy amount of dropdown shadow (in the examples), stretched fonts (front page example). It doesn't matter how many diagram types you support if the generated diagrams aren't good quality.
Mermaids defaults are good enough. They're not amazing, but I'm also not embarrassed to show them to other engineers, stakeholders etc
Maybe I've misunderstood, but isn't the whole point that it outputs to those other formats? So if you like the way Mermaid outputs look, you'd just output to that?
Tangentially related, I once wanted to render a NetworkX DAG in ASCII, and created phart to do so.
There's an example of a fairly complicated graph of chess grandmaster PGM taken from a matplotlib example from the NetworkX documentation website, among some more trivial output examples in the README at https://github.com/scottvr/phart/blob/main/README.md#example...
(You will need to expand the examples by tapping/clicking on the rightward-facing triangle under "Examples", so that it rotates to downward facing and the hidden content section is displayed)
I think the "nothing to hide" argument is made for a different reason.
People are unafraid of the government knowing certain things because they believe it will not have any real repercussions for them. The NSA knowing your search history is no big deal (as long as you're not looking for anything illegal), but your church knowing your search history would absolutely be a big deal.
> The NSA knowing your search history is no big deal (as long as you're not looking for anything illegal)
Until someone at or above the TSA decides they don't like you. And then they use your search history to blackmail you. Because lots of people search for things that wouldn't be comfortable being public. Or search for things that could easily be taken out of context. Especially when that out of context makes it seem like they might be planning something illegal
Heck, there's lots of times where people mention a term / name for something on the internet; and, even though that thing is benign, the _name/term_ for it is not. It's common for people to note that they're not going to search for that term to learn more about it, because it will look bad or the results will include things they don't want to see.
> People are unafraid of the government knowing certain things because they believe it will not have any real repercussions for them.
A very famous quote: "Conservatism consists of exactly one proposition: There must be in-groups whom the law protects but does not bind, alongside out-groups whom the law binds but does not protect."
Many people - particularly white people, but let's not ignore that a bunch of Black and Latino folks are/have been Trump supporters - believe that they are part of the in-group. And inevitably, they find out that the government doesn't care, as evidenced by ICE and their infamous quota of 3000 arrests a day... which has hit a ton of these people, memefied as "leopards ate my face".
Do any of these actually prompt someone to reconsider their position? They strike me as more of argument through being annoying than a good-faith attempt to connect with the other side.
Generally speaking, I think the point of statements like this is to shoot down the trite and thought-free cliche "if you have nothing to hide". And the point is rarely to convince the person you're speaking to, it's usually to get people who might otherwise be swayed by hearing the trite and thought-free cliche to think for a moment.
If you're talking directly to one person and trying to convince them, without an audience, there are likely different tactics that might work, but even then, some of the same approach might help, just couched more politely. "You don't actually mean that; do you want a camera in your bedroom with a direct feed to the police? What do you actually mean, here? What are you trying to solve?"
Option A: "Yes!", which tells you you're probably talking to someone who cares more about not admitting they're wrong than thinking about what they're saying.
Option B: "Well, no, but...", and now you're having a discussion.
Generally speaking, people who say things like "if you have nothing to hide" either (charitably) haven't thought about it very much and are vaguely wanting to be "strict on crime" without thought for the consequences because they can't imagine it affecting them, or (uncharitably) have attitudes about what they consider "shameful" and they really mean "you shouldn't do things that I think you should feel shame about".
“Ultimately, arguing that you don't care about the right to privacy because you have nothing to hide is no different than saying you don't care about free speech because you have nothing to say.”
I feel "people should not have have consequences for what they say", and "people should be able to avoid consequences for what they have done", are separate concepts. One does not require believing in the other. For example I believe the former, but for the latter I believe everyone should be punished when they break the law.
People should have consequences for what they say, but not from the government. You should never be prosecuted for what you say, no matter how vile. But other people are free to exercise their rights in response, including freedom of association.
So if public figures with a sizeable following start calling for you and your family to be chased down and gutted like animals, should they legally be allowed to do that? Do you actually believe that?
> I feel "people should not have have consequences for what they say", and "people should be able to avoid consequences for what they have done", are separate concepts.
'Saying' is an example of 'doing', and the moderation to speech happens after the fact, including (yes) in USA. Consider the case of a person yelling fire or 'he's got a gun!' when there is none, or a death threat.
Not as clever as it may sound. It is perfectly possible that someone has nothing to hide in a good way, whereas someone without anything to say for himself cannot be easily imagined as a good faith social individual. So in a way this is comparing apples to bad apples and claiming they are perfectly equal.
Quite. I think a lot of Americans are acculturated (partly via movies and TV) to constant one-upmanship and trying to end disagreements with zingers. Look how many political videos on YouTube are titled 'Pundit you like DESTROYS person you disapprove of!' You see the same patterns in Presidential 'debates' and Congressional hearings. It's all very dramatic but lacking in real substance.
Which are quippy and dismissed because they fundamentally misunderstand privacy. There is such a concept as "privacy in a crowd" - you expect, and experience it, every day. You generally expect to be able to have a conversation in say, a coffee-shop, and not have it intruded upon and commented upon by other people in the shop. Snippets of it may be overheard, but they will be largely ignored even if we're all completely aware of snippets of other conversations we have heard, and bits and pieces have probably been recorded on peoples phones or vlogs or whatever.
That's privacy in a crowd and even if they couldn't describe it, people do recognize it.
What you are proposing in every single one of these, is violating that in an overt and disruptive way - i.e.
> "Let's send your mom all your text messages."
Do I have anything in particular to hide in my text messages, of truly disastrous proportions? No. But would it feel intrusive for a known person who I have to interact with to get to scrutinize and comment on all those interactions? Yes. In much the same way that if someone on the table over starts commenting on my conversation in a coffee-shop, I'd suddenly not much want to have one there.
Which is very, very different from any notion of some amorphous entity somewhere having my data, or even it being looked at by a specific person I don't know, won't interact with, and will never be aware personally exists. Far less so if the only viewers are algorithms aggregating statistics.
I'm pro-privacy and I still think these retorts just make it sound like you've put zero effort into understanding what the "nothing to hide" people are trying to articulate.
E.g. "Can we put a camera in your bathroom?"
Very few people are arguing that nudity or bathroom use shouldn't be private, and they are not going to understand what this has to do with their argument that the NSA should be allowed to see Google searches to fight terrorism or whatever.
Privacy arguments are about who should have access to what information. For example, I'm fine with Google seeing my Google searches, but not the government monitoring them.
"I've got nothing to hide." is a rather extreme statement. The people who say it don't mean it literally. But saying something they don't mean aren't really helping their points across. I think OP’s retorts are simply to show how absurd the “I’ve got nothing to hide” claim is, regardless of how effective the retorts are.
I'm not out to defend "I've got nothing to hide", but those who say it are usually saying it about a specific policy (e.g. the NSA monitoring searches). It's usually clear what the context is and that's what you have to argue against to actually engage and convince someone. They probably do mean quite literally that they have nothing to hide from the government. It's not an extreme statement in context.
But on the internet we often do this thing where we take the weakest version or a distorted version of an opposing side's argument and ridicule that. It's not quite strawmanning because we never specified who we're arguing against, and surely we can imagine someone, somewhere on the internet has the ridiculous viewpoint. But it's not a common viewpoint (that, for example, we shouldn't have privacy in the bathroom). Doing this only gets us pats on the back from those who already agree with us and deludes us about our opponent's position.
Law enforcement are civilians like you or me. It was a big mistake to grant them special rights. If they can arrest people then it should be legal for you and me to arrest a LEO. Why should any person have special rights in a Democracy?
* Extreme Weather: Severe heat, heavy snow, or torrential rain can make biking unsafe or impractical without specialized gear and high physical endurance.
* Accessibility & Mobility Issues: Individuals with certain physical disabilities or chronic health conditions may find traditional cycling impossible. (This also affects an aging population.)
* Time Constraints: For those with "trip-chaining" needs (e.g., daycare drop-off → work → grocery store → gym), the extra time required for cycling can be prohibitive.
* Infrastructure: Older adults are more sensitive to "heavy traffic" and "lack of safe places." Seniors don't stop cycling because they can't do it, but because they don't feel safe in traffic. (Good argument for upgrading roadways.)
* Care-giving: When parents become dependent on their children, often the children need to shuttle their parents around. A parent with dementia who escaped into the neighbourhood can be rapidly collected and ushered home in a car, not so much a bike.
* Theft & Vandalism: I've never had a car stolen. Two locked bikes, on the other hand...
There is definitely something to be said about bike theft. People see cars as a private space with serious social repercussions for violating. Bikes on the other hand are treated like normal belongings. This may have something to do with car-centric bike hatred and possibly the reflexive/reactionary tendency to completely dismiss the utility of bikes for transit. We have laws dedicated to the theft of cars, largely due to the fact the theft removes people’s mode of transport. Why not have the same for theft of other modes of transportation?
Additionally, I personally would have less issue with people driving due to a lack of physical fitness if they didn’t tend to 1. Drive recklessly and fast (35 on a 25 is not okay) and 2. Drive tank-like SUVs and Trucks
Severe heat, heavy snow, or torrential rain can make driving a car unsafe as well. Individuals with certain disabilities, chronic health conditions, or a plethora of age may also find driving impossible. For those with "trip-chaining" needs, extra time required for parking cars can be prohibitive. Old people don't like traffic and can escape and run away so fast you have to drive them back? And you're seriously including the idea that car theft is not a concern? These are some tortured arguments.
The correct argument here is "if bicycles become the dominant transportation mode, then the government will absolutely mandate kill switches for them too." "Bicycles don't have software" hasn't been true for years. E-bikes and wireless deraillers have been around a long time.
Bikes without software will be around for the foreseeable future. They're the cheapest and most plentiful version of bike. In the unlikely scenario that all bikes somehow become electric, old bikes are much easier to maintain than old cars.
My argument to my own post is that cameras that track cars and license plates could easily be reconfigured to track bikes and pedestrians. In that case there's no transportation mode that will save you from surveillance. The cameras have to go.
You do get the idea though, that just because bikes work for what you need to do, they won't necessarily work for what any other given person needs to do, right?
Also, why the hell have you got wireless derailleurs? What is the point? What possible advantage can they have over perfectly normal mechanical ones?
For my hard sci-fi novel, I wanted people to give me feedback by annotating the PDF directly. Since I didn't know what local PDF editors they had available, I decided to vibe-code a web-based PDF annotation editor using PDF.js. (Yes, malicious users could have a field day by guessing the URLs.) It's pretty rough:
Basically, you drop a PDF onto your own web server. The web server serves up PDFs via PDF.js on the client. When the user highlights text to annotate it, the date, time, and text of all annotations in the document are pushed back to the server. As the author, when I reload the same PDF URL, I can add, review, modify, navigate through, or summarize the annotations just like a reader. Here's a screenshot with a funny comment one of my beta readers made:
> Scandinavian cabins, despite lacking modern insulation, maintain warmth in sub-zero temperatures. This video explores centuries-old building techniques, comparing their performance against modern homes. Discover the surprising physics principles behind their resilience and energy efficiency.
> What it can't do (as far as I understand): complex layouts, precise typography, embedded binary content, anything that needs pixel-perfect rendering.
Another take on that is that Gruber is unable to sabotage a markdown standard from coming to exist, no matter how much of a tantrum he wants to have. I have no interest in listening to him about the topic, he's just in the way of the community and everyone is routing around the damage.
What Gruber has done is forced the spec to be called CommonMark, but as far as everyone except Gruber is concerned CommonMark is the markdown spec.
There are flavors that predate it like GFM, and extensions, but IMHO going forward it's CommonMark + possibly your extensions or it's not really Markdown.
The matrix, which you can download, aims to provide an objective comparison. Any idea what features are missing, or can you qualify what makes the other text formats "better"? From my perspective, they are largely equivalent.
There are those that have well defined extension points (e.g. TeX, rst), and those that are ad-hoc, of which the best example is markdown. TeX, via packages and wrappers, can do practically anything. rst has directives (blocks) and interpreted text (inline) which can also effectively do anything (along with substitution references which are more macro-like). Specific "interpreters" (for lack of a better term) which you link to naturally have specific features by default (and some are more extensible than others e.g. pandoc which when writing out LaTeX lets you embed LaTeX in the markdown, so "markdown" in this case is turing complete).
I think if you define "better" as having well-defined extensibility to enable multiple implementations (i.e. not ad-hoc things pandoc lets you do), then rst (which can be transformed into XML as per https://docutils.sourceforge.io/docs/ref/doctree.html) would be "better" than markdown.
Does anything need all those features though? If you need more than headings, bold, italic, quoted text, and code, you should probably be using HTML or Latex or something. So a better goodness-of-fit function would be is it easy to remember/use, and is it non-intrusive inline with the text?
I don't think anybody needs all of the features at once but people have different preferences. E.g. I typically do well without bold formatting (I only need one level of emphasis which is served well by italic) but I want tables, links and lists very often.
Also I like the WYSIWYG feature of Markdown where it has an advantage over the traditional Markup languages like HTML, LaTeX, groff etc. of being easier to read in the text file. Dedicated syntax highlighting can go a long way to make markup easier to read, though.
The original Markdown has fewer features than listed for the more advanced formats in the table. Hence if someone uses reStructuredText it is more precise than just saying “Markdown” because Markown could refer to anything from the original minimalist featureset to the vastly extended format supported by pandoc if given the appropriate CLI arguments.
Some text-based formats have more options for tables e.g. alignment of columns (it may help with numbers to right-align them) or multirow/multicolumn options.
Some formats support definition lists (corresponds to <dl> in HTML) - a feature which I often find valuable but was not included in the original Markdown IIRC.
One advantage of using a text-based format is that it can be exported to either LaTeX or HTML and Markdown seems to prefer the HTML output by explicitly supporting inline HTML as an escape hatch for more complex constructs (e.g. tables with rowspan/colspan). In addition to often not being supported for a non-HTML export-type it also hurts the WYSIWYG experience when reading the file like plain text.
https://dave.autonoma.ca/blog/2019/06/06/web-of-knowledge/
reply