Hello community >From the perspective of someone who started off with the fairy-tale technologies in web development, I find working with C proves as quite an interesting experiment. I used to slip into rewriting more or less the same things for different code bases and it really irks me that there are virtually no interfaces that depict flows and transformations that are used all the time when writing code. So I started working on my own "STL", a library which I use as my main code pivot [0].
With the techniques applied by the two central data types/interfaces, bulk.{c,h} and buffer.{c,h}, my code becomes more or less memory safe and fun to work with, as if I was using one of those fancy languages that take all that work away from me, without having to leave the realms of standard C. This might partially be the case because these data types are of my own design and I have their details in the back of my mind, but I think it does go further than just that. I coded up a few more projects [1], [2] based on the prospects this has added to my programming capacities and they enabled me to catch up with my own webserver [3] as well. My experience with suckless software has shown me pretty clearly that the tradeoffs in code quality around here are not really acceptable for code that I wanted both to release or work on myself, and let's face it, it doesn't help to just pretend these issues don't exist. That also means, no, I won't cut corners like to leave the releasing of resources and file descriptors to the operating system or use die() in what is supposed to be library code where error handling must clearly be up to the caller. Other people should actually be able to write programs with it, too, as that's a legitimate aspect of the term library. Really, thanks for getting me into C, but no thanks for the dragons that I started to recognize learning it. cheers! mar77i [0] https://github.com/mar77i/bulk77i/ [1] https://github.com/mar77i/calc77i/ [2] https://github.com/mar77i/ccheck/ [3] https://github.com/mar77i/web77i/