tackling complexity
In the process of figuring out what I wanted to write about today, I did my usual strategy of searching and asking chatGPT to riff on some ideas I’ve had over the past few days. I’ve had an idea to do a series something to the likes of “How the RISC Zero zkVM works from first principles”.
This, on the surface, sounds like a fantastic idea; I get to post on X about it, teach myself (and hopefully one or two others) about something new and it counts towards my job as well! The problem arises when I try to figure out where to start? First principle thinking is something I truly value but it requires a significant breakdown of topics at each abstraction level.
Take the RISC V ISA for example; to break that down, you could start with “what is an instruction? (for a computer)”. After which, the combinatorial set explodes: do I write about ISA’s directly and the history of them starting from the intel 4004 onwards through to x86 and ARM, do I skip all that and just hand wave the architecture into a set of instructions that a specific hardware understands? Why “RISC” vs “CISC”? Why are the energy differences so stark? Why do we have so few open source ISAs? Why isn’t RISC-V more mainstream? Why is it hyped recently but any purchaseable dev board is still mind numbingly slow?
If this is my thought process just for this small part of the whole problem, you can imagine what happens when I am faced with building an opinionated super clear “from first principles” path from basic computer knowledge to an understanding of how R0VM works.
I still intend to tackle this problem, but I’m gonna need to go back to drawing board here and figure out what’s holding me back.