>>15
I haven't got any good resources specifically about coding practices, neither in C nor in other languages. I've learned a lot from some newsgroups (though you have to dig through the enormous quantity of crap which compose the majority of the content) and through sheer experience; and whenever I read something interesting I almost always discard the original reference and only keep the content within my knowledge.
In an effort to be useful, I'll give you two good references to keep: the well-known C FAQ (
http://c-faq.com/) and the CERT Secure Coding Standards page (
https://www.securecoding.cert.org/). These should give you hints on how to, at least, get your program running
correctly and
safely.
This link (
http://www.ibm.com/developerworks/aix/library/au-hook_duttaC.html), from IBM DevWorks, is also good, albeit too much full of corporative crap and extremely retarded recommendations (
setbuf(stdout, NULL), what the fuck?!).
Some IRC channels are also very good source of information; #posix in Freenode is one of them.
Now, things to run away from: avoid
every tech or "IT" blog you may come up with (programmers who advertise themselves as "IT" should be treated with extreme distrust). In no circumstance consult Reddit, Slashdot, DrDobbs, and programming forums in general for
any advice (though the latter
seems to be a little better than the formers). StackOverflow is okay, as soon as you read -every- response to a question, in order to form a well composed opinion. And avoid "gurus" (specially in the C++ field): Sutter, Alexandrescu,
et al; thus, avoid gotw.ca.
There's an enormous lot of misinformation out there, that is a fact. Unfortunately, when you're out in the wild, that just how you simply are: alone, and out in the wild. It is difficult to filter good, correct information from crap when you don't know much about the subject. From my experience, 9 out of 10 articles I read online are not only crap, but simply technically wrong; in other words, just don't rely on what you read online without verifying (if it matters to you). The
only thing you can ever count on absolutely is the standards that define the language, library or technology.
For example, compare this (the correct):
https://www.securecoding.cert.org/confluence/display/seccode/POS03-C.+Do+not+use+volatile+as+a+synchronization+primitive
http://software.intel.com/en-us/blogs/2007/11/30/volatile-almost-useless-for-multi-threaded-programming/
With this:
http://drdobbs.com/cpp/184403766 (and this is written by Alexandrescu himself)
http://java.dzone.com/articles/threading-stories-why-volatile
http://www.martynov.org/2007/07/volatile-and-threading.html
(and dozens of StackOverflow blatantly wrong responses and recommendations.)
Just a last bit of philosophy: people seem to enjoy fame more than everything else. First, they start to write about things online, then they open a blog or site, then they acquire visibility, then they begin to write more about things they don't know about (at all), because visibility and renown is what matters in the end. That's pretty natural and fine, but a reason why I still spend (mostly waste) time on anonymous boards is that, well, they're
anonymous: I can't build a reputation to which I can masturbate later on. Thus I deny myself the temptation to write about things I don't know about, since it won't afford me anything in the end: neither cash, nor pussy, nor reputation.
I can focus on stuff that matters.