Palindrome detection (in ruby)

Without cheating with string == string.reverse

O(n) if my analysis is correct. You have to walk over each character once
to compare it to its pair. You can break early, but in the worst case
(ie: when you have a palindrome), you need to walk over all N characters.
Newton's method for square roots

Useful for quickly approximating the roots of a function, often you would use
this to calculate square roots.
clean up commented code
Rewrite regex implementation

Found some cases that didn't work because the approach for * was too greedy.
Basically, if you have .*d and you need to match abcd, then the * shouldn't
match the d (but you might need to) so you need to be able to backtrack
or iteratively try selecting more and more of the string.