Mach 30 needs to do engineering analysis (aka math) on ballistic trajectories for a sub-orbital test vehicle (the rocket science equivalent to throwing a ball, very high).
Isaac starts a new MTK project and writes a short intro covering why Mach 30 needs ballistic trajectory analysis. He then spends most of his time researching and writing down the following information in this document (aka he documents before they act):
This work is in Isaac's wheelhouse. He is able to knock it out quickly and easily. Best of all this work is fun for him. When he is done he easily shares this work with Ada since they are using a common platform for their contributions to the project.
Ada takes over to design and implement the Python class that will perform the calculations Isaac specified. As she develops her code in MTK, she references and expands the documentation, which is open in a panel next to her code for easy access. She adds a section showing how different parts of her code compute the results of the equations and how they do so with the correct data and in the correct order (documenting as she acts). Ada then writes up the test cases in a test suite and includes the results of those test cases in the documentation (a kind of documenting after she acts).
Notice how the only documentation Ada is writing directly relates to her code and just explains how it works in relation to the material Isaac provided. Everything else Ada is doing involves writing a key Python library for Mach 30. Even the test cases are easier to write because they are based on engineering research from Isaac. This is a productive and enjoyable contribution for Ada involving a minimum of fuss reviewing and writing documentation.
Isaac then takes a look at the updated documentation, instead of having to review each line of source code. Isaac pays special attention to the implementation details ("hmm, yes that code excerpt does compute the value for equation 3") and the test results which could include tables and figures ("yup, that's the right plot"). If he has questions, he can get on a hangout to review things with Ada. When they are about done, Isaac writes up a short conclusion and abstract wrapping up the documentation (one last bit of documenting after they act).
The jointly created documentation could be shared inside and outside Mach 30 for peer review and the Python class would be ready for use after addressing any comments from the peer review. Of course, those comments and updates would be handled in MTK as well.
We have just changed implementation of MTK. Please stand by while we update our documentation to reflect these changes.
Welcome to the media page for the MTK wiki. Place videos of demos, presentations, or important screenshots here for easy reference.
Sprint Planning Document (perpetually updated)
As Mach 30 moves into more complex engineering projects, its development community will have a greater need to perform up front mathematical analysis to design, size, and predict the performance of those projects. Engineering analysis of this type should be well documented (both in principle and in order to follow Mach 30's commitment to its OSHW values). Documenting engineering analysis makes it clear why and how it works as well as providing verification of the analysis (in implementation and results).
This is where MTK comes in. MTK is a single environment for creating and documenting mathematical analyses using Python to code the analysis. As an added bonus, the use of Python allows Mach 30 to take the analyses created and documented in MTK and use them directly in CadQuery to drive our parametric CAD models when designing and making physical components.
MTK's approach to integrating engineering analysis and documentation is based on three core principles of engineering documentation:
IPython is the calculation engine in MTK.
Jupyter is the documentation creation user interface.
These instructions were developed using a PC laptop running Ubuntu 14.04 64-bit.
chmod +x ./mtk_setup_script.sh
./mtk_setup_script.sh
Mach 30 believes documentation is essential to creating high quality engineering analysis and that integrating documentation steps into the engineering process is the key to ensuring documentation is created and maintained. The Mathematics Tool Kit (MTK) is a unified engineering analysis and documentation tool created to address these needs.
MTK is built on existing open source tools including IPython, Jupyter (and several extensions), Pint, and Spyder (coming soon). The goal is to create a tool that makes it easy to switch between (and focus on) engineering analysis and documentation tasks, all in an environment optimized for engineers (e.g. built in support for units as first class mathematical constructs via Pint). A notional view of MTK is shown below (Spyder-windows-screenshot" by Joshdoe at en.wikipedia; "IPython-notebook" by Shishirdasika).
Visit the links on the right to get started with MTK or leave us a message on the Forums if you want to help us make MTK the premier choice for engineering analysis.