The Ralsina Programmatic Universe
I have many projects. I also have a plan.
In the past, many of these projects would not exist. They would be a source file inside some other project.
- I would have a file that configures logging, rather than requiring Oplog
- I would have done a long, complex CLI parsing function rather than using Polydocopt
But since I have been coding in Crystal for my hobby projects, and creating and using Crystal "shards" is so easy...
Well, that caused a radical change on how I approach things. In the past, I would just code in a feature into whatever largish project I am working on at the time, and maybe, sometimes, I would spin off something into a library.
By maybe and sometimes I mean I can't remember a single time I did that.
Maybe it was because I was using Python, and packaging Python code in a way that others can use it is significantly more painful than doing it for Crystal, or that I was just doing it wrong.
When I want a feature, I do the thing everyone does: LOOK FOR A LIBRARY right? Then why when that library doesn't exist was my first instinct to just code it into the project I was working on?
If I wanted a library, why was I coding a feature instead???
So now, when I want a feature, I look for a library. If it doesn't exist, I CREATE THE FREAKING LIBRARY
So, I wanted Base16 theme support for something. I looked for a library. It didn't exist. I created Sixteen.
Not only is Sixteen small, self-contained, and easy to use, but it is reusable, so after I use it in Nicolino I can use it in Markterm.
I think as open source developers we are leaving a lot of value in the table by not doing more libraries.
So, that's the plan. The plan is to keep coding for fun, but also to keep creating libraries when it makes sense, so I leave crumbs for future (probably inexistant) developers to pick up.
Have fun!