Heuristic compiler diagnostics cannot always localize type class errors; interactive visualization of type class resolution is feasible and with few interactions facilitates localization. In
Visualization comes with inherent problems. Interfaces get visually cluttered, they’re confusing to use, and oftentimes too much data can be a bad thing. Especially if that data is leaking parts of the Rust compiler internals. Argus uses some simple heuristics to provide debugging entrypoints to developers. On 80% of our community curated tests these heuristics served the root cause within the first ten items. Ten may seem like a lot, and indeed there’s plenty of room for improvement, but often documentation pages contain dozens of items. Not to mention the two or three pages of documentation of required reading before the root cause becomes apparent.
Most researchers would title this a “conclusion,” but it’s more of an extended aside. The intention was for it to be a discussion, but the fragile web of cross-references did not allow for the already existing “discussion” file to be renamed. Some of the most exciting, frustrating, and interesting pieces of research are not the stuffy words in the text, but rather the software around it. The process. The reference structure around these source files is so fragile because the authoring software used to write the thesis was built while writing the thesis. Turns out this is like building a Formula 1 car mid-grand prix.
The goal was always to have a web version of the thesis, but it turns out universities appreciate a PDF. Well—they require one. The solution was to create a custom markup language to write the thesis and accommodate both output formats. This requirement compounded with haste and inexperience resulted in a funky language. Dynamic scoping? Check. Interfaces? Why yes. Macros? Of course. Ultimately this was a stressful but highly rewarding process resulting in a language no one should ever use again.
Many projects have a difficult technical bit that no one cares about. You can shout I spent months working out the details! Yet it receives little interest from advisors or peers. The unsung hero of this story is pretty printing.
This work has many possible extensions, and have been outlined in