I would have played 18. c4 instead of sacrificing the bishop. This would allow my knight to get in on the strong queenside attack, provided black trades.
Additionally, instead of 24. h3, I would have played 24. Ra1, threatening mate on a8.
White should have also played 26. Nxe6 instead of 26. Rxe6.
Your knight sacrifice was well thought out. Though, perhaps 16...Nb8 is better? It defends the pawn and saves the knight. The attack on your king is halted, for the time being at least.
Great use of chess tactics and exploitation of white's bad moves. Good finish, as well. Your kingside attack was frightening. :)
Hope I helped.
This is a Live Chess match I won recently. I thought I played fairly well in this game but I am sure there are ways in which I could have improved. I would appreciate some input into this game, which has plenty of annotation.