I didn’t read it yet, but this looks interesting:
The tutorial doesn’t look finished, but his code is here: