
Obviously this is not coherent and I need to interpolate to get something similar to this:

Perhaps I'm being just nitpicky but this does not appear to be perlin noise at all. The source you mentioned uses the term "perlin noise" but it in fact writes about random noise and FBM. Noise has to be interpolated, perlin noise does not, as it is completely continuous function.
But ok, if you want to make it look like perlin noise, at least please use the correct interpolator function.
Some more correct sources:
Improved perlin noise implementation. Let's leave out simplex noise for a second as it's mathematical details are still beyond me.This has linear interpolation and weight computing function using the old interpolant.
Implementing improved perlin noise. New interpolant. Further explanations on multi-linear interpolation.