After a lot of investigation, I found that the problems were indeed the fault of my code. Really, it was a result of too-similarly named types.
Triple is a struct of
Triple_F is a struct of
floats. In the
update_Qstate function I was using a
Triple when I meant to use a
Triple_F, which explains some of the problems I had been having, but not all of them. I still don't know how the argument was being corrupted, but I can confirm that the g++ on my x86 Chromebook is definitely generating a different binary than the g++ running on my Raspberry Pi 2. Admittedly, they are different versions, so that's more or less to be expected, but I haven't had any issues with argument corruption since switching to my Chromebook.
Interestingly enough, the compiler never warned me about storing
float values into
shorts, even though I have
-Wall on, until I started doing it in the initializer for the struct.. an interesting effect of automatic type coercion. I look forward to using Rust more in the future, where mistakes like this one cannot happen.
As part of this week's documentation, I've been characterizing the behavior of different pieces of my code so I can explain how well each part works, which means collecting tens of thousands of data points from various places in the code, running comparable computations in Python on my computer and comparing the answers, along with plotting how each variable is changing over time in order to see the bigger picture. Even though I double checked my quaternion math against the references I've found, I'm not entirely happy with the results I'm getting there. I believe the issue is that I could be using the wrong units (degrees vs radians), but I just decided that is likely as I was writing this post, so I haven't tested it.
I added code to generate JSON summary reports from the command line today. This allows a user to manually generate these reports when needed. Included are options to specify the report to generate, folder to output the report and paths for the logs to read. At the moment the "PII data report" and "Event summery report" can be generated.
See merged change for futher details: https://github.com/mkenne11/nogotofail-pii/blob/e03d03807e476ad68afa613bdf48d7b56f484358/nogotofail/mitm/report/generate_report.py
Tomorrow I will add user documentation describing how to use the report generation function. I will also explore whether this function should be auto triggered when the user stops the mitm daemon.
I was cleaning up references to code.google and Subversion. I updated the code.google page to redirect to the github repository at https://github.com/WebLogo/weblogo. I'm still working on passing data from the form to the .cgi controller. i'm stuck on passing data from the modal to the test .cgi file. I have the file routes set up from the html to the .cgi file and print statements in the .cgi file to check if url are being passed, but i still can't confirm that the data is being passed. It's very frustrating to be working on this piece. I have an appointment with an AWS engineer tomorrow and hopefully will figure out the deployment process soon as well.
Today was spent tidying up code mostly - removing redundant code and debug messages.
I am also looking for the best method to trigger the PII summary reporting. Ideally I'd like it to be automatically run when the MitM daemon is stopped. Unfortunately I wasn't able to find an event in the code which captures this.
Another option is to make the summary reporting function accessible from the command line, and call it from the main application shell script method after the service is stopped.
I have finally finished the connections window. I have started working on the color window that allows site authors to choose colors for mouse hover, element selection, and element highlight. I will finish this tomorrow and start scrubbing the code and do some tests.
I've been working with the main author on getting how to merge WebLogo work into github.This style of development process is new to him, and this is the first time I've made pull requests in github. The main author decided against putting the fallback option for CDN failure into the main script. He was happy to know that there was a solution to the problem, but he believed that it would lead to more maintenance for him down the road. So I removed all the fallback script for the merge. I'm doing tweaks to the html according the main author's notes as they come. He's pleased overall about the work. I decided i'm overthinking the entire passing url via jquery and ajax. I added documentation to the api, and I'm going through tutorials on how to read forms through .cgi files to figure out this last piece of sewing WebLogo's front-end to my back end function.
This weekend I implemented a new dialog for adding MIDI Events. Now users can add their own MIDI Events, even non-standard.
Now MIDI Actions work with multi-channel instruments, such as violin (channels: normal/pizzicato/tremolo), trumpet (normal/mute), etc.
Also I fixed a lot of small bugs.
Although the implementation of MIDI Actions still has some bugs, it is already usable and almost finished.
I worked with the main author to find a solution to opening shared files from google link. The urlretrieve() can't handle google's blob, so after redesigning the URL for direct download, we capture the request headers, then open the headers. Then we create and temp file for the file object and apply the shutil module to copy the file and then return the file from there. I started to merge this function with the main author into the initialization files for weblogo. We're testing how the function plays with the rest of weblogo on the command line. The popup are working properly and labelled properly, but I'm still working on how to pass the URL to the actual weblogo controller. The main author is giving suggestions on more tweaks to the update the information on the html pages that I have to incorporate.