|A butterfly against the sun.|
After seeing the Christmas announcement, I eagerly installed it, and began going through a tutorial website to get acquainted with it. At some point I came across a part of the tutorial where I thought it wasn't working. I decided to brave IRC for the first time in a few years, and to ask about my issue. A Christmas miracle happened, no one bit my head off. This was so wonderful, I ended up lurking even after my problem was solved to see if this was normal, and it was. Of course, not everything changed. After a few questions, back and forth, as usual the problem was revealed to be one of my own making.
A little known fact, I have always wanted to publish something useful on CPAN. Of course, life, the learning curve, an excuse, more excuses, and me not making it a priority, has held me back from completing this goal. Anyways, near the end of the tutorial, they talked about the community made modules that are available in Perl 6. And on that module page was a link to how to contribute. I immediately skimmed this doc. The distributing part was only a page long, and didn't involve any arcane incantations, just some modern day ones. All of a suddenly contributing seemed a lot more doable.
Maybe, it was that contributing to Perl 6 was simple enough it didn't feel daunting. Maybe, it was that new car smell that kept me plugging away at it. Either way, I decided I was going to scratch my own itch and for better, or worse share some of the code that came from that.
What to share..
I recently became a digital nomad. With that came the awareness that managing money isn't as simple as pay the bills first, and spend the rest on fun. There is a whole other blog post in that statement I will save for later. The problem I have been struggling with for the last few months is understanding my retirement and investments. The tools I have make it about as clear as mud. I needed to write some code to help me look at the whole picture in one place. I figured if I had this problem others might too. With this in mind, I wrote a very small module to help me calculate a few different numbers related to compound interest. I even managed to throw in a few tests. Everything went well, and my first ever Github pull request was accepted!
This success totally psyched me up. So I went ahead and worked on another pain point of mine. That was taking control of my Lending Cub investments. Currently, I am using the automated investing tool in conjunction with custom search criteria, to pick my investments. While this is better than manually picking, there are some drawbacks. For the second module, I wrote a wrapper for Lending Club's API.
One big hurdle was, while that intro website had given me a basic, understanding of Perl 6 there is still a lot more you can, and should do with Perl 6. For me specifically, there was a lot more I needed to learn about Perl 6 subroutine signatures, and data types. Happily after reading the documentation, and experimenting a bit, I was able to get it all figured out. I even found and fixed a typo in the documentation, giving me my second ever pull request on Github!
This module turned out to be a LOT more ambitious, than the first. I needed the help of other modules, to keep my code simple, and clean. I had to try out several modules, before I found the right foundation to build off of. After finding two good modules, and about half way through writing the code, I found out, one of these lovely modules, needed a feature. This prompted my third ever pull request on Github! Happily the author was really cool, and accepted it within less than a day, with just a few modifications.
So after two weekends of working on it, the Lending Club API module was thrust upon Github, and accepted into the fold of Perl 6 modules.
I guess what I am trying to say with that little recount of events is: If you want to try a new shiny programming language, and have some nice people help you, Perl 6 is a good choice. As for me, I have quite a few more pieces of my financial puzzle to work on, and I am sure that will create new code, and improvements to the two I have already released.