I learned a lot from his papers and demo code, and based the design of The Sims character animation system on his Improv project.
https://mrl.cs.nyu.edu/~perlin/ (expired https cert)
https://web.archive.org/web/20001011065024/http://mrl.nyu.ed...
Here's a more recent blog post about a new one using WebGL, Dragon Planet:
https://blog.kenperlin.com/?p=12821
Here's another blog post about how he's been updating his classic Java applets by rewriting them in JavaScript:
edit: Perlin noise and similar noise functions can be sampled in 3d which sorta fixes the issues i mention , and higher dimensions but i am not sure how that would be used.
There isn't a zero tradeoff 2D solution, it's all just variations on the "squaring the circle" problem. An octahedral projection would be a lot better as there are no singularities and no infinities, but you still have non linear distortion. Real-time rendering with such a height map would still be a challenge as an octahedral projection relies on texture sampler wrapping modes, however for any real world dataset you can't make a hardware texture big enough (even virtual) to sample from. You'd have to do software texture sampling.
It's easy to add any number of dimensions to Perlin noise to control any other parameters (like generating rocks or plants, or modulating biomes and properties like moisture across the surface of the planet, etc).
Each dimension has its own scale, rotation, and intensity (a transform into texture space), and for any dimension you typically combine multiple harmonics and amplitudes of Perlin noise to generate textures with different scales of detail.
The art is picking and tuning those scales and intensities -- you'd want grass density to vary faster than moisture, but larger moist regions to have more grass, dry regions are grassless, etc.