I was working on a major project for my CS class, and the unit was on concurrent programming. With a few hours before the deadline, all my code seemed to work fine with no errors, but somehow my code was still freezing up. Standard debugging tools didn't work and I had to rewrite my entire code base, only realizing afterwards that all my problems were from a simple typo that spawned a series of resource-intensive and purposeless threads. We came up with this tool to help combat such situations that developers who have to deal with multi-threading inevitably face, giving them a unique perspective from which to observe and debug their code.
What it does
Our developer-oriented application creates a controlled run-time environment, that enables live-time visualization of concurrent software architectures. We provide a clean and intuitive interface, relying on intelligent techniques like clustering by functionality similarity to to ensure process visualization is as clear as possible. In addition, we offer a backend service that connects with Google's machine learning cloud servers to intelligently predict broken or buggy threads based off of stack trace data used for our visualization interface.
How we built it
We built it using a Node server, Google's Cloud Platform for Machine Learning, and a local Python server that can trace Python software execution.
Challenges we ran into
Handling network latency and lag from real-time software execution reports, selecting and optimizing machine learning models for intelligent visualization and predictive analysis, and developing a method of extracting Python stack-traces live-time from multiple outside threads.
Accomplishments that we're proud of
Building a visualization tool from the ground up (didn't even end up using JQuery), learning how to use Google's cloud platform, and building a cool product.
What we learned
Learning how Python works on a low-level, learning how to use Google's cloud platform.
What's next for Multithread-Multiview
Improving the machine learning models used for predictive analysis.