Skip to content

Latest commit

 

History

History
53 lines (31 loc) · 3.84 KB

WEEK-10-27.md

File metadata and controls

53 lines (31 loc) · 3.84 KB

Week of 10/27/2019

Brief Reminder: We are building Vizstack: a suite of programming tools that visualize code structure & execution — for better understanding & simpler debugging in existing languages. Consider the last time you encountered an unfamilar codebase or had to debug a nasty algorithm. We believe that this code complexity can be tamed with better developer tools. We believe the time is right to reinvent the programming experience, so that developers can build bigger, faster, safer, and more intricate software.

To learn more, visit the home page.

A crucial part of our visualization library is being able to visualize graphs. For various reasons outlined here, we've decided to develop our own graph layout library called nodal.

1. Improve vz-pytorch computation graph visualizer

We're continuing to work on our graph component for a neural network interpretability tool. This a great use case for many components of the Vizstack ecosystem: core, vz-logger, and nodal.

vz-pytorch

The edges aren't the most pretty right now, because we haven't implemented orthogonal edge routing yet.

This week, we focused on:

  • Improving neural network interpretability tool
  • Improving Tensor visualization
  • Getting feedback from users
  • Solving constraint conflicts problem
  • Designing automatic alignment
  • Fixing moving edges bug
  • Writing compound force model

repo: https://github.com/vizstack/vz-pytorch

2. Fixed moving edges bug

For a while, a super annoying bug in DagLayout has been driving us crazy: every time you collapse or expand a node in the graph, all the edges shift so they no longer connect to nodes:

moving-edges

This was definitely due to the React props, state, and cached data structures going out of sync, but for the life of us we couldn't figure out what it was. DagLayout is probably the more challenging React component we've designed and worked on, since you have to be super careful and knowledgeable about the lifecycle methods for what we're trying to do. (For a taste of the technical challenges, it combines: batched state updates in non-lifecycle/event-handler methods, memoized selectors, webworkers, a custom event system, immutable data structures, a graph layout algorithm, and dynamically measuring child component by looking up the raw DOM nodes).

We finally rewrote it from the ground up, and now it's AWESOME!

3. Compound force model, alignments, and flow constraints

As this Georgia Tech prof can attest (https://twitter.com/mark_riedl/status/1067625823333687296), the available computation graphs in things like Tensorboard are terrible! We're currently focused on making computation graphs better — more like what you'd find in academic papers — so that you can code neural networks while visualizing it.

This week, we focused on improving a visualization of a RNN. Even through there's still no edge routing, you can see how after the tweaks we made to the force model for compound nodes in our graph layout engine nodal, the graph looks a lot more

Before:

moving-edges

After:

moving-edges

4. Acceptance into VC program

We're super happy to announce that Nikhil has been accepted into a VC-backed program based in Palo Alto that provides mentorship and assistance with building cool technical projects. Even though our project is currently all open-source, it'll be super valuable to learn from the pros about how to build things that users love and gain traction.