I was quite positively surprised how easy it is to call C++ OpenCL's APIs from python and how simple it is to code with PyOpenCL. I tried PyOpenCL a while back, but it obviously got improved and is now simpler than ever. While I did not test out its performance, the resulting code runs fast enough so I didn't feel the need to check how it's performing in comparison with pure C++ OpenCL code.
Naturally, I wanted to test out Netflix competition (2009). The winning algorithm was blending a lot of different algorithms, which is not so great as in such case code can get quite messy and maintenance of such code can become quite painful. I would also prefer one simple algorithm instead of blending of many. Blending of many algorithms probably means that we did not really figure out perfect model. While competition is over, research never ends. To make it somewhat fair inline with the competition, I removed "probe set" from the training data as grand prize set for testing is not available.