recording my algorithm learning process here