depict
LookAtThat
depict | LookAtThat | |
---|---|---|
2 | 7 | |
26 | 106 | |
- | - | |
6.6 | 8.6 | |
12 months ago | 2 days ago | |
Rust | Swift | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
depict
-
A CSS-Inspired Syntax for Flowcharts
One potential solution direction, which you can try out via my own incomplete drawing toy [1] is to treat punctuation characters like SP (“ “), COMMA (“,”), and SEMICOLON (“;”) as markers for the product operations of a family of monoids that allow you to specify more and more complicated sequences without requiring the typist to “move the cursor left” to add a matching character.
This way, simple lists can be specified via juxtaposition:
a b c
And then more complex lists
thing 1, thing 2, thing 3
and still more complex lists like
A complex thing; with data, and more data
can be specified in a way that is potentially still human-legible and easily editable.
Combined with ~instant feedback while typing and, ideally, a “brushing” system to allow selection of parts of the textual model via the linked drawing, I am hopeful that this can be solved resiliently, at least for the most common use cases.
(Part of why I am excited about OP’s work here though is that while I have done a fair bit in my own project on drawing a related kind of diagrams, I have myself only begun thinking about how to make the resulting drawings nicely stylable/themeable.)
[1] https://mstone.info/depict/ -> https://github.com/mstone/depict
-
Ask HN: Visualizing software designs, especially of large systems (if at all)?
You might find it helpful to distinguish between visualizing the design of the system being implemented by your software, visualizing protocols being implemented by your software, visualizing the design of the your software itself, and visualizing important implementation details at runtime, e.g. for debugging, profiling, and operations.
For visualizing system designs, you should take a look at STAMP, e.g., via “Engineering A Safer World” + the resources at mit.edu/psas + on YouTube.
(Multiple tools, both commercial and libre, exist and are being developed to make these diagrams, although for what it’s worth, I mostly hear about people making them using draw.io, Google Drawings, on physical paper/whiteboards, or occasionally with specialized tooling.
I have also recently published a project in this area, https://github.com/mstone/depict, which I believe is well on its way toward addressing some unmet needs here.)
For visualizing protocols, things like sequence diagrams, data flow diagrams, DRAKON flow charts, value stream maps, and occasional more specialized objects like CPSA “cryptographic protocol shapes” / strand space skeletons are where I start depending on the flavor of what’s needed.
For visualizing the design of implementations themselves, I have not yet seen anything that I feel obliged to recommend; rather, here, I suggest investing in adding illustrations to your existing documentation in whatever way is easiest for you to use to clarify whatever subtleties you need to clarify for your audience.
(Here I tend to look at things like ASCII-art, SQLite’s railroad diagrams (now made with pikchr, AIUI), and sequence diagrams, as mentioned by other commenters, as helpful examples to start with.)
Finally, for implementing debugging/profiling/operational illustrations, there is a such a rich set of examples to turn to — whether from the very specialized (custom process model video rendering pipelines in robotics) to TensorBoard for TensorFlow to general-purpose tools like browser performance debugging suites, flame charts, or Go’s built-in profile graphing tools - that rather than learn any particular such tools, I’d instead suggest trying to get comfortable with the building blocks underlying these systems, which include contemporary GUI/web apps, custom drawing and animation tools like SVG, pretty printers, and Grammar-of-Graphics systems like vega-lite.
(Note: although it may seem superficially extraneous to your question, the reason I also suggest thinking about debugging visualizations in this context is because IMO, to work, they ~necessarily encode a visual model of the design of your implementation since it is the design of the implementation that provides the vocabulary and relationships that have to be understood and navigated in order to successfully debug/optimize/monitor any given running instance of whatever system you are building.)
LookAtThat
-
Ask HN: Show me your half baked project
https://github.com/tikimcfee/LookAtThat
View, search, and analyze arbitrary source code (best support of Swift right now) in 3D and AR space. You open your phone or tablet, yeet hundreds of files into 3D space, and can start highlighting, moving, and tracing execution by literally walking around your code. The desktop app has similar features, and the standard 3D viewer is just as fun.
I would love help - from anyone of any kind - to build this out towards greater usefulness. It’s a lot of fun, it’s super cool to look at, and it’s the thing I’ve wanted to use since I was a small child.
“Let me touch the words!!”
-
A Developer's View of Vision Pro
I feel like I’ve been spamming this everywhere and any time I get the chance, but I really want people to join in and help define this experience with me for developers.
https://github.com/tikimcfee/LookAtThat
AR VR for iOS and macOS. Millions of glyphs. Instant control. There’s magic here. If this excites you, work with me and help make this a reality! I don’t have all of it in me.
I wish I did. I don’t. I don’t have all the time and energy. But there are people here that if they spent just a little time to work on this, we would be in the future of a 3D code space in days, and not weeks or months.
I owe a new readme for the project. If any of this makes you feel any feelies, get in contact with me star it, make noise, whatever!
Lotta love to yall. Thanks for letting me vomit words.
-
Wideboard: Render _all_ of Linux's source code in a browser tab via WebGL
I have this mostly working for Swift by thread and execution tracing matched to syntax analysis in https://github.com/tikimcfee/LookAtThat.
You can record app execution, and then play it back thread and line and by line to see each line executing in time. It’s kinda fun to see millions of lines flash and highlight and move at 60fps and seeing implicit relationships between executing files and high level functional flows
-
Ask HN: Visualizing software designs, especially of large systems (if at all)?
If I may be so bold as include something I’m working on myself, I’d love to chime in! I’m not functionally complete, but feel like I’m writing an amalgamation of all of the above tools.
https://github.com/tikimcfee/LookAtThat
What are some alternatives?
spekt8 - Visualize your Kubernetes cluster in real time
LockView - Foundry VTT module: Locks the view for the purpose of using Foundry on a digital playmat, such as a horizontally mounted TV. Scales the scene so the gridsize is always displayed corresponding to a real-world size, and can block zooming and panning
ScrivanoForLinux - Scrivano is a notetaking application for handwritten notes.
TypeScript-Call-Graph - CLI to generate an interactive graph of functions and calls from your TypeScript files
shotglass - Tools to visualize large code bases in different ways.
saddle-data-graph - where does it come from, where does it go?
Pythonocc-nodes-for-Ryven - Pythonocc nodes for Ryven
rugivi - The adult media landscape browser
muziko - Practice every song you know
plurid - Explore Information as a 3D Structure
wiredhoo - Project to add wired connectivity to a Wahoo Kick by emulating the ANT+ profile within an emulated ANT USB stick; the host believes it is communicating to a ANT+ wireless device. Broader scope to be an open-source firmware replacement for trainers.