Show HN: Terrastruct – A Diagramming Tool for Systems
terrastruct.com
terrastruct.com
- I think the mobile detection thing uses nothing but window size to determine if this is on a mobile browser or a desktop, so it mistakes my (definitely desktop) browser window for a mobile one. I know from my friends who do frontend stuff that reliably detecting a mobile browser isn't very straightforward (or even possible?) but perhaps a "my device was not correctly detected, request desktop site" button would help? Or at least a hint about resizing the browser window for technical users who are, nonetheless, not very web-inclined?
- The plural of "scenario" is "scenarios", without an apostrophe. Also frames, not frame's. Sorry if it seems overly pedantic but I see a lot of people (including native speakers) do this and it's driving me nuts.
Other than that I think like the idea! Me and web interfaces don't really get along so I can't say I've done too much test driving but I realize that's a personal preference of mine, and quite possibly something that puts me outside your target audience. I don't suppose there's yet a good web equivalent of Visio, and I'm fairly sure that the ones I've tried don't have the hierarchical/structured approach to diagramming that Terrastruct has. Best of luck with it -- I hope ten years from now I can tell my friends I went all grammar nazi on alixanderwang, world-renowned billionaire and the founder of Terrastruct!
Recently I ran into this more and more. Eventually it came down to Linux being in the user-agent causing a large chunk of sites to assume I was using android. This became apparent when gmail asked if I wanted to download the mail application when visiting their site with cookies cleared. Once the agent was changed I no longer get mobile type notifications (on my desktop).
Re: sizing: interesting, that’s the first report of it failing, I indeed should do a require desktop version. Are you talking about the landing page or the app? The app uses javascript to detect, the landing page uses page width.
Re:spelling, plural of proper nouns should use apostrophes I think, no? Eg “how many Airbnb’s did you book”. I’m not sure if making those proper nouns was the right choice, I wanted to highlight that they were terms in the app.
Anyway, thank you for the kind words and feedback!
Plural of Airbnb is Airbnbs.
Compare this to "Airbnb's fifth year was terrific" where the apostrophe marks possession. Whose fifth year was terrific? Airbnb's.
There's nothing weird about "it's" being incorrect. Pronouns have their own possessive forms. You say her keyboard is white, not she's keyboard is white, and his shirt is yellow, not he's shirt is yellow -- why would you say it's collar is white?
You guys have no idea how easy English is, you should be happy about it and love it and cherish it forever! My native language has a phonetic alphabet, so it's easier to figure out how to pronounce words (i.e. no "lead men in battle" vs "the pipes are made of lead" bullshit). But forming possessives for plurals is waaaay more complicated than "add 's, except if the noun already has an s at the end".
His report card received four A’s and two B’s.
So, for plurals. Sometimes. Possessives, sometimes, and sometimes omitting the s after an s, other times not. And contractions, where ' is a placeholder for 9 or 10 different things.
""add 's, except if the noun already has an s at the end"
Texas's laws are conservative. (You'll find credible style guides with conflicting advice)
But, seriously, every non-constructed language on Earth has exceptions that you have to memorize along with the rules. English doesn't have that many, and it doesn't have too many rules, either. I'm fluent in two other languages (French and my own), and I'm somewhat familiar with a few more languages of Latin, Slavic and Celtic descent. English is a breeze compared to any of them.
Ah, I'm talking about the landing page. Sorry, I should have been more clear. If it's not something that you can easily reproduce on your end (see this comment: https://news.ycombinator.com/item?id=21960897 ) let me know, I can send you more details about what I'm using.
> Re:spelling, plural of proper nouns should use apostrophes I think, no?
Someone's already answered this -- I'm just chiming in to let you know that this is an extraordinary common error, even among native speakers. I have literally seen C-level executives making it in their emails, and I'm sure it wasn't a typo or something because they didn't get a single damn plural right. So don't feel bad about it. If you're not a native speaker and learned English by yourself, you've likely picked it up from someone who is :-).
(FWIW, I'm not a native speaker, either, I just had really good teachers.)
> I’m not sure if making those proper nouns was the right choice, I wanted to highlight that they were terms in the app.
I don't think that's too big a problem :). I'm fairly sure it's not correct (I don't think they're proper nouns, just like class, object or channel, all of which have specific meanings in the context of one technology or another). But the English language does have a tradition of weird capitalization, and capitalizing them doesn't change anything in terms of meaning. It's not the same as using a possessive form instead of a plural form.
But being able to at least easily view diagrams on mobile may be useful, I guess? I'm not sure if it's supported right now.
An overview of modern Javascript tools https://app.terrastruct.com/diagrams/788622353
No discredit to you; this is great work, but for me, personally: The world does not need more diagram editors.
Diagrams are fundamentally not the right tool for the problem I have.
The problem I have is that I have a technical system, for example, a network diagram, or an architecture diagram of a system or set of systems; and I need the data that represents that system, to be visualised in multiple diagrams, in such a way that you can have multiple views of the same data.
This means that when you make a change to the data, all of the diagrams are updated to reflect that change.
As an analogy to explain what I mean, consider a 3D model:
If you have a 3D model, you want to save it as a 3D model.
What you don't want, is to manually draw the way that model looks from 5 different perspectives; because if you alter the model, to say, add a new cube, or change the color of a face; you have to redraw every single diagram.
What would be actually novel, would be to allow you tag / label / whatever the components of your diagrams in some way, and they apply filters to the diagram to generate different views of the data, while maintaining one single master diagram.
I know, this is a hard problem, because layouts are fundamentally hard (if you've ever worked on layout engines you'll know exactly what I mean), and you end up looking like graphviz as soon as you try to use constraint solving to layout the elements in a diagram... I guess.
...but, at least it would be genuinely novel to try.
I don't really see much here that would, eg. get to use it over the many other indistinguishable diagram editors out there.
I know what you mean though; but it has to be IMO just enough data, that can then be tweaked by a human to help with the key purpose of such diagrams - human understanding.
like https://nominatim.openstreetmap.org/ but for IT technologies.
https://architecture-center.com/blog/125-archimate-metamodel...
The problem I experience is that the gap between raw data and an elegant diagram is really quite large. You mention layout problems. Hairballs and insane wiring is bad (and sometimes unsolvable without abstracting detail) but something even harder is that layout has strong semantic meanings, not too far from the order of words in a sentence. Even a small neat diagram can be really confusing or even misleading e.g. closely conceptually related things get spatially separated, the most important things get tucked into a corner, utter trivia looks like the main flow etc. Layout is a subtle language all of it's own.
In practice I find it requires one-off programs to inject case specific guidance to produce tolerable results e.g. styling certain things, grouping others, complex rules on what to ignore etc. You could wrap up some of these in a gui but it's so computational that it would be a retrograde step.
My workflow is something like this:
- define the elements at various zoom levels https://structurizr.com/share/1/explore/tree
- define the relations https://structurizr.com/share/1/explore/component-dependenci...
- create diagrams by selecting subsets of what was defined in the first two steps https://structurizr.com/share/36141/diagrams#SystemLandscape
...and the low level resource group names, networks, firewall rules, etc. so it would actually work.
Exactly the same data, but less detail in the former.
Then the same diagram again, only this time it shows the data flows for the BI team.
The nodes in the diagrams are not different, the connections between them are, and some nodes (eg. Resource groups and NSGs aren’t relevant to some audiences.
Why can’t I have one diagram with layers (I can) that changes the layout to still be a nice diagram when I toggle some layers off (not possible in basically any diagramming tool I’ve ever used).
I run into this kind of issue which detailed architecture diagrams all the time; someone modified a design (or system) and the documentation is instantly out of date in all places except the one they remembered to update.
Um... so tldr; if you’ve ever had to document the exact network architecture down to protocol and port between systems because you actually need that level of detail to make it work, but also want to surface the same data to other people who really don’t care what the different network ranges in dev/sit/prod are.
Infrastructure diagrams always get out of date, unless they’re looked at frequently. By hooking the diagrams with live status and logs, it becomes a tool that’s used daily. It would make logs easier to navigate and diagrams kept up to date.
If you want dynamically updating diagrams you can maybe consider some of the diagram creation generation tools listed here: https://asciidoctor.org/docs/asciidoctor-diagram/#creating-a...
EDIT: I like the concept of Scenarios a lot! Will be using this more regularly... if you can do a PDF export, would be killer for me :)
Another example is if I’m diagramming an API, the paths that a request takes differs under different conditions/scenarios. So a canonical diagram for a system in a company design doc ends up only illuminating the happy path of a successful request, missing so many detail because it couldn’t fit nicely into one diagram.
Another is my issue with scattered diagrams detailing different subsystems. Eg a high level overview contains many microservices each diagrammed by their own teams. I wanted to be able to hop layers, easily going up and down a subsystem to see how they behave when handling something. And in my experience, decentralized diagrams within an org ends up becoming a guessing game of which one is most up to date and which ones haven’t been deprecated.
I got things i could see that could improve this greatly:
- have a dot format (graphviz) importer (and maybe exporter), something simple to allow people to programmatically import/update their existing architecture.
- alternatively have a json format, same thing (versioning, hand update, generation etc)
- allow with a shortcut (alt key, whatever) to draw links between objects directly. Creating links is tedious right now.
I will post more as i'm working with your tool to represent our system :)
Like yo, I don't even know what it really does yet, why are you asking me to create an account? Do you really expect your users to capture your value prop based on just screenshots alone?
I'd also enjoy a slightly easier way to link things. Having to drag an arrow from the sidebar to the field, then manually link the two points is quite slow. Normally these systems have a sort of handle when you've selected something that allows you to make a new arrow to another item.
In general I wanted to see if people were receptive to this format of diagram before sinking more time into features, because there’s just no stopping point to diagramming features. Now that the concept has gotten some validation, the diagramming tool itself is going to be getting a lot better real soon. I’ll post updates here: https://twitter.com/terrastruct
Is there some way to export data (SVG ideally) so I can use the diagrams in other apps? Also, I noticed that saving a diagram doesn't retain labels I give a block.
It would be nice if there was an obvious way to report issues through the interface.
Edit: I've fixed it. (apparently you can't use innerText in Firefox, has to be textContent)
Suggestions for v2: How to show v2 of system has changed since v1, and handling requests from your users to version control their diagrams. Nice problems to have!
I've found it very good at letting me quickly transfer my system ideas to paper. It gets out of the way and works with quick keystrokes.
But it breaks down when trying to use it for presentation. It is too difficult to show and hide different states of the system when presenting to others. It's slow changing between each state by showing and hiding different nodes.
I'm looking forward to trying your tool for this reason. I just wish it was a local program.
I used to use websequencediagrams.com for this btw, in case that fits your needs too!
Yes, WSD is awesome.
Seems to have very similar features, and can export to svg for free (in websequencediagrams.com it's a premium feature)
However - it doesn't seem to export itself well (the Print doesn't work - or something like a read only link would be enough)
Thanks for the feedback!
I was intuitively clicking on the boxes expecting to go to the details of that component. It would be nice to move deeper into sub-layers dynamically, instead of relying on the side tree menu.
The problem, though, is that not everyone will create a sub-layer for every component. It'd be a bad user experience for the viewer to have to just try clicking components to see which ones work, and I don't want to modify the look of the diagram, from what the author intended, to add some visual indicator that it's clickable.
In general I’d love to be able to export this to some non-web format, but I just don’t know any that fit given that there’s 3 dimensions (layers of the diagram, scenarios for each layer, and frames for each scenario). All the formats only support linear traversal (eg pdf pages, gif frames). Exporting as a directory of files viewed as a tree hierarchy is the closest I can think of.
If so, that looks like the output is still single-image diagrams. The differentiation of Terrastruct is having an elegant way to aggregate what would've been many diagrams, to express something complex, into one.
Why do I give a shit as a potential user that this is an iFrame?
Just because you dont understand it doesnt mean you need to be rude.