I really like the book by Leonid Shifrin (http://www.mathprogramming-intro.org/). It does a great job explaining the general principles behind Mathematica's syntax. However it hasn't been updated since 2008. Although I suspect that many of the principles outlined in this book are still valid, it would be nice to have a more up to date reference.
The documentation is also great, but sometimes I feel it is lacking in depth. I also found this question, which also looks outdated. I am asking this in the hope of finding new, modern, sources.
Can you recommend a book with a similar depth to Leonid's, that is more up to date (if there is any)? Thanks.