1,628 karma · joined December 30, 2019
I don't add this for D2 CLI because the outputs there are SVG, and this feature requires Javascript.
The urge to add silly stuff like this vs working on v2 of sequence diagram that has much more demand is often tempting.
Even if it's something simple like a node turning from green to red to convey it's shutting down. Maybe something like that before animations would be a text saying, "this node will shut down now", which takes reading/zooming into text.
I also think it can, if used well, result in diagrams that ⋆⋆spark joy⋆⋆. People like to see diagrams like that, even if it's not more utilitarian. I think sketch mode is an example of this. It changes the font to an objectively less readable one, yet I often hear people make all their D2 diagrams in sketch mode.
https://d2lang.com/examples/elk/
I like ELK's output better sometimes too, e.g. the Golang Queue example. Choice is good
A business can choose if they want
1. slow, pay for customer support and fraud protection
2. instant, lower cost, mistakes are irreversible
The linking you can do already if I understand the request correctly: https://play.d2lang.com/?script=Ks5ILEi1UihOLSxNzUtOjU_JTEwv...
Okay, we'll put those sequence diagram improvements in our sprint for next release.
2. I'm not trying to advertise our paid product in this post about the open source product, but since you mentioned it, we make an IDE that adds the ability to lock in positions and dimensions: https://docs.terrastruct.com/tour/freehand
Feel free to make a PR to d2/d2-docs to include it in our list of community tools/plugins if you do!
Check out the network tab in the d2 playground. It's powered by d2.js, a wrapper around a wasm port of d2, which we've recently been working on. Not super officially ready yet but soon to be, and will be a separate announcement.
edit: fixed
If you want to skip the blog post and poke around directly: https://play.d2lang.com/?script=qlDQtVOotFLIyFTwSEzOTi1S8Est...
For a bigger example: https://play.d2lang.com/?script=rJJBjtswDEX3OgWBrm2kzU4Feoru...
For any job-hunters, it's important you forget this during interviews.
In the past I've made the mistake of trying to convey this in system design interviews.
Some hypothetical startup app
> Interviewer: "Well what about backpressure?"
>"That's not really worth considering for this amount of QPS"
> Interviewer: "Why wouldn't you use a queue here instead of a cron job?"
> "I don't think it's necessary for what this app is, but here's the tradeoffs."
> Interviewer: "How would you choose between sql and nosql db?"
> "Doesn't matter much. Whatever the team has most expertise in"
These are not the answers they're looking for. You want to fill the whiteboard with boxes and arrows until it looks like you've got Kubernetes managing your Kubernetes.
Pros:
- Beautiful UI
- Useful sidebar, keep track of changed files, cost
- Better UX for accepting changes (has hotkeys, shows nicer diff)
Cons:
- Can't combine models. Claude Code using a combination of Haiku for menial search stuff and Sonnet for thinking is nice.
- Adds a lot of unexplained junk binary files in your directory. It's probably in the docs somewhere I guess.
- The initial init makes some CHARM.md that tries to be helpful, but everything it had did not seem like helpful things I want the model to know. Simple stuff, like, my Go tests use PascalCasing, e.g. TestCompile.
- Ctrl+C to exit crashed my terminal.
a.class: backend
b.class: frontend
# hide everything
**: suspend
layers: {
backend: {
# show backend stuff
**: unsuspend {
&class: backend
}
}
}
see more here: https://d2lang.com/blog/c4/defining diagrams as multiple layers like so
x -> y
layers: {
inside_x: {
a -> b
}
}
A fleshed out example hosted on our web service: https://app.terrastruct.com/diagrams/664641071If you're interested in some production code with Goja, this is our code for calling RoughJS ([1]) from Go in order to produce the hand-drawn diagram look: [2]
[0] https://github.com/terrastruct/d2
[2] https://github.com/terrastruct/d2/blob/master/d2renderers/d2...
- https://terrastruct.com/blog/post/generate-diagrams-programm...