I've been spending some free time refactoring an OSS project I took over when the original dev sold the Chrome store app to a malware company; users have been asking for new features.
It was suffering from severe bitrot (react v0.12) and a raft of antipatterns (forceUpdate * 20) so I figured it would be a good candidate to help people and sharpen my frontend skills at the same time.
As I was working on some refactoring I noticed that some of my code was beginning to get rather terse and difficult to reason about. Terseness is nice, but code that can't be maintained is a liability, not an asset.
So I decided to kata on a single piece of functionality to help polish my feel for balance in the force.
Almost maximum expansion of the same logic, and much more readable. However, I realized that I also need some of this functionality in a few other places.
As I began to extract a couple blobs of the logic for reuse, I started feeling again the pull to the dark side of functional programming.