Learning about interpreter design and getting better at C by making the Lox Tree walk interpreter (originally written in Java in the book Crafting Interpreters) in C.
This project has made the differences between C and other high level languages painfully clear, something I took for granted in other languages (python or Java) like reading the contents of a file and storing the data is not so trivial in C. You have to manage everything from opening the file to finding the length of the file, allocating enough memory to store the files data, handling exceptions and closing the file, but I think that's what makes C fun, it forces you to really understand what your computer is really doing when you're giving it instructions, and I'm really interested in that stuff, that's the reason why I wanted to learn about complier and interpreter design, my goal is to gain a good understanding of interpreters by following this book (Crafting Interpreters) and then try writing a static analysis tool using what I learnt.