Some will say that in the time I spend on such a project I could work on "important" stuff. And that's true. But if I have a look at the code base of my work project, I can see many things which only got there because I discovered them at a project I did for fun. Working is about getting stuff done, not seeing what fits best, especially at a startup. So if you don't try new things in your free time, your code won't get much better.
Their are no rulesIn the article it says one should work in an area you don't have background, using another database, framework or programming language.
I disagree with this statement simply because you'll learn many things no matter what your weekend project is about. If you use the same framework and database as in your work project, you might discover different ways of doing one thing and may find solution to present or future problems your work project might run into.
Of course, learning a new framework, language or playing around with another database, server or anything is fun. I do it frequently and if this is what you want to do, go ahead. But don't restrict yourself to only work on projects which are totally different. For example, I'm often using the same language (PHP) and framework (symfony2) in my projects, but might change the database (I tried MongoDB recently). And even if I use the same database, I always learn something new. I came up with a better approach at testing, I read about some awesome features I didn't knew about and many things more.
On the other hand, I sometimes code a bit in Racket, a functional programming language, and also have a bit of Python going on. One project is even written in Java. From this experiences, I don't feel that one way or the other is better. I learn different stuff on different projects, but it's always helping me solving my day-to-day problems.