2 sacrifices!
it's called a sacrifice... I sacced the rook to get an attack on his uncastled king. A blunder? Right...

Boldly done and very creative. The sac's wouldn't have worked out so well against a better player... you were down a full rook...he could have sac'd back a piece to get out of trouble and still been up the exchange. But you weren't playing a better player and you got away with it.
I think you should have played 17.Be6 ... and you're right back to threatening mate in 1 (Nc7#). He has to sac a N to stop it (if he could even find the move) and you'd be down the exchange but with plenty of compensation. As it turned out you finished him off quickly... but in a large part because your opponent failed to find defending moves at all.
My first sac wasn't too bad, it was a Petrosian like sac. I had completely stopped any development from him. The second sac was a bit more risky though, and I should have moved my knight first before saccing so I could put instant pressure on his knight.