Hands-on Rust
The Setup
Before I left Codurance, we started a study group for Rust. Rust is a language that I have been interested in for the last few years, but never did enough to learn it (not having a specific project to use the language made it less likely that I would). When I left Codurance I stopped going to the group. But towards the end of the year I rejoined the group.
As we were deciding the next book the study group was going to read, I heard an episode of the The Rustacean Station podcast about Game Development with Herbert Wolverson, and they were talking about his new book Hands-On Rust.
As it happens, when I originally moved to the UK 18 years ago, it was to work on games development. Therefore, my thinking was “this book should be perfect for me”. So I got it from The Pragmatic Bookshelf (love their books).
Reviewing
The TL;DR
of it: I enjoyed the book, but the approach is not one that suits me.
Using graphics and games to teach a language makes learning easier (at least what I have found in the past). My own introduction course to Functional Programming uses bouncing balls (basically the basis of the game Pang)
The problem is that is difficult to pull, because you have two different teachings to do: the language and the game development. As my father always told me you can't carry two watermelons under one arm
Some parts of the book were difficult to follow due to the way the text was written. I found myself having to re-read to understand what the text was trying to say.
Rust
Off the two teachings, I think the part that suffers the most is the learning of Rust. And that maybe because how I like to learn. Due to the need of developing the game, concepts were spread out thin, inconsistently and the explanations always felt short to what it was needed. I would suggest to have some knowledge of Rust before going into this book. Or at least have some other book like The Rust Language by the side so you can look the concepts that are unclear to you.
ECS
The game development part was far more interesting because it was my first proper introduction to ECS. I have heard about it before, but because I haven’t done games, I have not encountered in the wild before. At times I felt like some more explanation of what was going was needed. A better introduction at the very least. Nonetheless you start using it non-stop from the moment is introduced, so you end getting the gist of what it is.
A Game!!
As I mentioned a bit earlier on, using the development of a game is a good approach because there is some satisfaction to creating something that you can play with. Much better than just developing a web server, for example. And I think that is what saves the book. Even with the issues mentioned earlier on, I was having a blast while going through the book.
Next Steps
In terms of Rust learning, the study group is going to be reading Rust for Rustaceans.
In terms of ECS, I want to have a look at Bevy to see if their ECS implementation is different. ECS is mostly used on games development, I am curious about it and I want to understand it better.
Also, I may have a project to practice. We will see.