Giter Site home page Giter Site logo

code_vis's People

Contributors

shamshirz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

code_vis's Issues

Improve UI

Problems

  • Too much info at once
    • Like reading, we ned to take it all in to determine what's important
    • Maybe allow the idea of "bold" or "h1" to help draw attention to important things

Solutions

Filtering in the graph

  • Pro: User control over what's shown, default can be less info
  • Con: Do we need to build this? Will it help users learn something?

Orient In another way

  • Pro: Might add clarity to ordering, currently the shape is fluid and that doesn't help readability idt
  • Con: 🀷

Other Graph View options

  • Discovery - How do other people handle this complexity? These aren't crazy complex graphs
  • inspiration - word clouds, rap lyric relations, etc
  • Draw attention to high activity or density areas

Resources

Process Sam & RJ Feedback

Interactive graph w/ more data

not knowing anything about the codebase, i found myself wanting to learn more about what these functions are trying to do - had the urge to mouse over a node and see if the docstring would pop up

  • Instinct to hover for more info about each fxn
    • Meta data - doc string, spec, etc

Graph Orientation

you may consider a horizontal flow to the visualization - i'm finding myself wanting to look at the 1st generation children of the root node in order, to get an idea of the flow of logic

  • Try some other display types, horizontal
  • Research how other people display graphs

Grok-ability

Lots of information on the page

…very difficult to make sense of in graph form (although I would claim that they're likely at least as difficult to make sense of in source code form, probably more)

Provide a way to select what's important (filter by depth)

But I think what I'd want is basic filtering functionality E.g. to be able to specify the number of edge traversals from the originating function node visible at once on the graph

  • Where 1, for example, would mean show me all of the functions called directly by this one
  • 2β€”all functions called directly by this one and all functions called directly by those

Filter by branch

But yeah. I'd also like to be able to filter by just one "branch" of the original function

  • Idea: would this be like folders in a graph? You can close it, and we may say how many outgoing edges exist, but don't display them

Insights

Can we provide "areas of interest" based on what a good graph pattern might be

I think it could be huge if you could come up with some heuristics like that. At that point you could do even better than say "look at this graph to see if you have lots of the same arrow pointing between the same two nodes," you could encode it!!

🎯 Goal: Get user feedback

Get this in the hands of users

Key Results

  • Collect notes from users
    • They need to be interested in giving feedback
    • They need to be working on an Elixir project
  • Increased use base by over 100%
  • 50% of users can tell you what CodeVis does

Actions

  • βœ… Easier to interact with than a mix CLI input
  • βœ… More accessible than needing to know mfa() by heart

πŸ‘¨β€πŸ”¬ ngrok deployment for specific users of a project

  • Choose a Project
  • Make a branch with code-vis dep
  • Run the code-vis server locally
    • Could do cloud deployment, but more work & security concerns
  • use ngrok to expose the data

How long does it take to startup?

~1 min to compile CB, 1 sec to run ngrok, 10 sec to copy & paste url

Can it be put into a script?
Yeah, but I can also just leave it running and not worry about it lol

  • Terminal1: mix code_vis.server
  • Terminal2: ngrok http 1337
  • Share the URL with testers

First pass: sam & rj

Improve Testing

  • Filtering out of non-user modules
  • Intermediate (map) -> Graph (external lib)
  • :ets -> Intermediate (map)
  • Compilation tracer
    • This turned out to be really hard! How do we test a mix task that recompiles the project?
      • Boundary does it by generating a dynamic project within the test setup!!
      • Elixir xref has tests that may be easier to replicate

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.