The last time I tried learning HLSL, I made a few shaders and mostly understood what I was doing, but I still felt like I was stumbling in the dark. Most of what I learned I got from various blog posts that didn't explain things very well.
Also, the documentation on MSDN seems to be more of a function reference.
Where can I learn to not only write HLSL, but learn techniques for writing shaders?