;-) I'm back, and I hopefully fixed it in the gist, adding a second pass (still O(N) but more complex implementation). Probably there are simpler ways, and indeed now I'm going to read the solution proposed in the blog post.
Edit: now that I read the solution, what I found is indeed the two passes solution and not the optimal one with the two pointers going in opposite directions.
For those of you who didn't notice, antirez[1] makes a data storage system called "Redis"[2]
[1]: https://twitter.com/antirez
[2]: http://redis.io/