I’ve been messing around in my free time doing a bit of coding for fun and to explore areas of interest. It’s a bit hard to motivate myself to code during my free time considering coding is also part of my day job. But my day job is not very technically interesting, so this is how I get to explore the fun of coding. I’ll briefly describe a few of these projects which I have in mind.

Compiler design

I never studied compiler design and I don’t really have a good idea about how they work. I’m sure this is a very deep and interesting subject, and I’m particularly interested in compiler optimizations.

I’ve decided to just roughly follow along the curriculum in a publicly posted course at my alma mater McGill University: https://www.cs.mcgill.ca/~cs520/2017/. I noticed much of the course materials, assignments, and homeworks, are posted on that webpage. I’ll also be reading the book recommended in the course outline, Crafting a Compiler by Fischer, Cytron, and LeBlanc – although it might be dated, and if so, I may refer to more contemporary sources.

My goal here is to implement compilers for the MiniLang and GoLite languages, whose specifications are given on the course webpage. I may implement one or both of them via LLVM, since this seems like a modern and indeed lower-level approach.

Exploring Rust

I’d like to learn Rust, which is often described to me as the greatest language ever designed. I really don’t know anything about it but I’m doubtful.

If I find it interesting, I may try to implement a hopefully useful data structure in this language.

Shader programming

I recently watched a very interesting video about the global illumination lighting algorithm Radiance Cascades, designed for and implemented in the video game Path Of Exile 2.

I’ve studied computer graphics programming before, and I’ve always found it interesting. I have learned about and implemented the traditional radiance algorithm before, but the implementation was awful and deeply inefficient. It would be great to revisit this and get my hands dirty with some more practical shader programming.

I also learned about Shadertoy (https://www.shadertoy.com/) which appears to make the distribution and development of little shaders really simple. It would be great to use this as a little playground for shader programming exploration.

NES/SNES programming

I have studied NES and SNES programming, but I haven’t written or developed anything. Ever since childhood I’ve been fascinated by the EarthBound battle screens and I’ve since learned how they were implemented via HDMA (https://www.youtube.com/watch?v=zjQik7uwLIQ). It would be really cool to implement something myself, like an EarthBound battle screen style demo.