Hacker News Re-Imagined

Diagram as Code

  • 151 points
  • β€’ 13 days ago

  • @sebg
  • Created a post

Diagram as Code


@guessmyname β€’ 13 days

Replying to @sebg πŸŽ™

A year ago, someone ported this Diagrams (Python) into Go β€” https://www.reddit.com/r/golang/comments/is8eo9/godiagrams_c...

The Python→Go port was discussed on Sep 27, 2020 — https://news.ycombinator.com/item?id=24603926

Someone was also working on a web editor (maybe with Electron), but I forgot the name of the repository.

Reply


@Yhippa β€’ 12 days

Replying to @sebg πŸŽ™

I actually kind of like this. Would be neat if there was a way once the initial diagram is generated to visually edit it.

Reply


@shabble β€’ 12 days

Replying to @sebg πŸŽ™

I love the idea of autogenerating diagrams from either a schema or from some sort of actual definitions (terraform/cloud inspection/etc), but I've generally found that the layout can be pretty poor for any semi-complex system.

Even worse, a small change to the structure will typically cause a full re-layout, and place nodes completely differently to the previous output, making visual/mental comparisons between versions quite taxing.

Given that autolayout is likely never going to be as good as someone doing some amount of manual layout or at least hinting, it'd be nice if there was some way to allow explicit placement of items and track it as metadata independently of the model changes.

I think Structurizr[1] has some capabilities along these lines, but the editor wasn't great the last time I tried it, and I think largely requires their SaaS for tracking that layout info.

Another option might be to feed it all into some flavour of graph DB with interactive querying/filtering and layout, and let users produce just the diffs / bits that they care about, if practical.

[1] https://structurizr.com/

Reply


@SaulJLH β€’ 13 days

Replying to @sebg πŸŽ™

Already posted https://news.ycombinator.com/item?id=31807021

EDIT Actually, might be different...

Reply


@sixstringtheory β€’ 13 days

Replying to @sebg πŸŽ™

Pretty cool. The biggest thing I think is missing from many popular diagramming tools is the ability to easily diff the architecture across changes. Although that can already be done with graphviz source files.

However, these days I prefer to just have diagrams generated from the source code itself, like:

- https://github.com/cycloidio/inframap

- https://graphviz.org/Gallery/directed/bazel.html

In order to make a compelling use case out of having to maintain a parallel definition like this, I think it needs to be able to contribute to analysis like formal verification or, despite them stating that it's not a goal, being able to create the described architecture. Or even generate something like a terraform plan. Otherwise it falls victim to the same problem as any other method of creating diagrams, that of them falling out of sync with the system.

They are a long way there already by providing a way to use a programming language backed by a large ecosystem of other tools that can be used to work with e.g. terraform, like python/go.

Reply


@AlbertCory β€’ 13 days

Replying to @sebg πŸŽ™

I was ahead of my time. My M.S. thesis was "A flowchart-to-source-code conversion program for GPSS/360."

I think those garbage "academia" sites are constantly emailing, asking me to "claim" it.

Reply


@deltree7 β€’ 12 days

Replying to @sebg πŸŽ™

The next step would be to make it declarative like PlantUML or Ditaa.

Surely, my diagram shouldn't have programming crud around it

Reply


@wmil β€’ 13 days

Replying to @sebg πŸŽ™

Is it common for python libraries these days to overload the >> operator for oddball things like C++ does?

Not doing crap like that is one of the things that I loved about Python...

Reply


@bilalq β€’ 12 days

Replying to @sebg πŸŽ™

I'm always on the lookout for more diagram as code authoring options. Mermaid is pretty decent, if frustrating at times. Looks like there's a port of it to TypeScript: https://www.npmjs.com/package/diagrams-ts

Reply


@nikolay β€’ 12 days

Replying to @sebg πŸŽ™

I tried doing an AWS systems architecture and it looked so ugly, so, we switcehd to Cloudcraft [0], which does both isometric 3D and 2D. All Terraform tools like inframap were terrible, too. It's 2022 and we still don't have pretty autodiagraming tools - we have ML generating unimaginable in terms of complexity photorealistic images, but it can't generate a pretty diagram yet!

[0]: https://www.cloudcraft.co/

Reply


@abraxas β€’ 12 days

Replying to @sebg πŸŽ™

I'm not digging this. I don't think a full Turing complete language syntax adds much to a diagram tool. I much prefer the conciseness of the syntax of Mermaid compared to this.

Reply


@zander312 β€’ 12 days

Replying to @sebg πŸŽ™

Love the idea, definitely will use.

But wondering why it's using ">>". I'm not great with Python. How does this ">>" thing work and why does it make sense to associate elements with ">>".

Reply


@alexott β€’ 12 days

Replying to @sebg πŸŽ™

What is the advantage over PlantUML, for example? Only syntax?

Reply


@mkl95 β€’ 13 days

Replying to @sebg πŸŽ™

Interesting, although I'm way more excited about the inverse (code as diagram).

Reply


@j4mie β€’ 13 days

Replying to @sebg πŸŽ™

  from diagrams import Diagram
  from diagrams.aws.compute import EC2

  with Diagram("Simple Diagram"):
      EC2("web")
This has a very odd API. It's using (abusing?) context managers and contextvars to do weird spooky things that you could just as easily do with ordinary objects or functions.

Reply


About Us

site design / logo Β© 2022 Box Piper