Hi Everyone,

For a long time, I wanted to do a series of posts called "Learning by Reversing" where I look at something that exists and is useful, and try to work back and explain it.

For this, my first series is about Native Gems in Ruby. So, I've picked a simple native Ruby gem called fast-polylines and am looking at all the code, how to develop it, how to test it, how it loads, how it works, etc. with the aim of helping people understand Native Ruby gems better.

The first 2 parts are now online on my blog:
* Part 1 - This covers the background to the gem we explore
  Link: https://notepad.onghu.com/2023/learning-by-reversing-s1-e1-native-gems/
* Part 2 - This goes into the details of how ruby loads the native gem and extension (and includes a nice sequence diagram of how all the bits happen together)
  Link: https://notepad.onghu.com/2023/learning-by-reversing-s1-e2-native-gems/

Future posts are planned to go into details like:
* The interface between Ruby and C
* The Makefile
* A Makefile that also works on Windows
* Running the specs
* Running the performance benchmark
* Enhancements:
  - Providing an executable
  - A gem that also works on JRuby
  - Making the gem ractor friendly
  - Patching an existing gem rather than a new module

Comments on the posts or the plans welcome.

Best regards,
Mohit.