One of the coolest things (IMO) about the entire Asahi effort, and why I'm not at all surprised that they surpassed Apple, was the dedicated effort to build bespoke developer-friendly Python tooling early in the reverse engineering process.
https://asahilinux.org/2021/08/progress-report-august-2021/
> Since the hypervisor is built on m1n1, it works together with Python code running on a separate host machine. Effectively, the Python host can “puppeteer” the M1 and its guest OS remotely. The hypervisor itself is partially written in Python! This allows us to have a very fast test cycle, and we can even update parts of the hypervisor itself live during guest execution, without a reboot.
> We then started building a Python implementation of this RPC protocol and marshaling system. This implementation serves a triple purpose: it allows us to parse the DCP logs from the hypervisor to understand what macOS does, it allows us to build a prototype DCP driver entirely in Python, and it will in the future be used to automatically generate marshaling code for the Linux kernel DCP driver.
Code here: https://github.com/AsahiLinux/m1n1/blob/main/proxyclient/m1n...
If you watch any of Asahi Lina's streams from the time before they had their full drivers implemented in Rust, she's able to weave together complex bitflag-manipulating pipelines at the speed of thought with self-documenting code, all in Python running on the host machine, all while joking with viewers via her adorable avatar. I've never seen anything like it before. The whole workflow is a tremendous and unprecedented accomplishment by the entire Asahi team.
Watched asahi Lina's stream and her ability to multitask while working on an what appears to be a very delicate problem is incredible.
I really like this talk by Bryan Cantrill on tool making.
https://www.p99conf.io/session/sharpening-the-axe-the-primac...
I completely agree, this is a great talk. I can listen to Bryan and friends speak for hours. I'm not sure if he's a natural story teller or if he's learned over time, but that combined with his experience just makes for a treat.
In case you haven't seen this gem: https://www.youtube.com/watch?v=TgmA48fILq8
Young Bryan is on a whole different level.
Knowing how to build effective scaffolding, in the right sequence, that continuously enables tighter and faster iteration loops on a project is a huge meta-skill that contributes to why the high end of experienced engineers are orders of magnitude more effective than others.
I was wondering if it is possible to formalise this and cast it into a book or lecture so that new devs don‘t have to grind out ten years of hard-gained experience. But at this point I think the only real way to really learn this is to go e.g. through dependency hell yourself at least once.
Mmh, is that a similarity with postmarketos? I have a fuzzy memory that pmbootstrap or some other tool was kind of important to start porting to new devices?