geometric LOD generation algorithm

Has anyone ever implemented generating different LOD meshes for a mesh? Any documentation or source code would be appreciated.