Well this might not answer your question directly, but it shows how VACCUM solves problem such as transaction etc. Its a great video to watch, covers topic in depth : https://www.youtube.com/watch?v=ZxhBkBNxvR0
This is exactly the same reason I too use CLI. But a word of caution Git Bash on windows has some serious problem(s). I remember, I lost my commit and in reflog it doesn't show up on CLI, however GIT UI showed the same! Not sure what's the issue, but it occurred for me twice.
That's good explanation. I guess Immutable.js does uses the same concept behind the scene to retrieve each references i.e like commits. Looks like Immutable.js uses Tries data structures for such operations. May be I'm wrong here as well.
I believe its important to interact or ask your doubts upfront instead of keeping it to yourself. I'm currently reading Haskell and I use freenode irc channel to ask my queries. The channel community is so helpful in clearing my doubts, in fact they could give much more easy / right approach for the problem than the text book solutions.
You seems to be attaching global event handler. Looks like we can't have multiple event handlers at this time. Is this expected or it would be handled in the future?
2. Why do we use requestAnimationFrame for rendering? Do you think its going to offer best performance all the time? Note here, I'm new to requestAnimationFrame concept, so you can answer me like I'm a noob :)
requestAnimationFrame schedules the rendering to when the
screen refreshes, which kinda makes sense in this case. (Which is a great thing when you're doing animations or games, since no frames are being dropped)
It also doesn't fire while the tab is not active, so that's a plus too.
I've nothing to do with this project though, so I might be wrong on the details.