2024 Goals ### Actually finish nand2tetris I said I was going to do this in 2023, and to be fair, I made a lot of progress. I finished the CPU hardware implementation (where I left off in highschool), wrote a two-pass assembler, and wrote a VM translator with a few simple optimizations applied (there are still some major-yet-doable optimizations left on the table; maybe I'll add them eventually). So I need to finish the following: - Write a toy program in Jack (high-level object-oriented language used in nand2tetris) to acquaint myself with the language. Fortunately it's a simple language, so this will be fine; the hardest problem is deciding what I want to write - Writing the Jack compiler frontend, which will include a lexer, parser, and AST traverser that dumps an XML representation to disk - Writing the Jack compiler backend, which will include an XML-to-AST parser (the hard part is going to be deciding between using an existing XML parser or writing my own restricted subset; I keep wanting to do everything myself at the cost of Getting Things Done (TM)) and another AST traverser which performs simple codegen. - Writing the "OS" (what the book calls Jack's system libraries for the rest of the Hack computer). This will include libraries for doing simple math, graphics, IO, memory allocation, and other tasks. - Writing a nontrivial Jack project which utilizes the system libraries and runs on the Hack computer platform. ### Finish raycaster engine My definition of "finished" includes fixing the fisheye effect and adding some more features as I decide (doors/teleports, other interactables, characters, textures, etc...). I would like a simple demo "game" that runs using this engine, and I would like it to be in a state where other people can make simple maps with it without too much trouble. ### Write a technical article or blog post I have a few ideas for topics; it's just a matter of research, organizing my thoughts, and putting fingers on the keyboard (and obligatory bike shedding). ### Renew passport My passport is not yet expired, but it's coming up, so I would like to extend it.