This was really cool for me, an amateur. I played for development, then started a king-side attack, rotating my knight all the way to h5. I don't think I made any huge blunders. This is the first time I moved my knight to an ideal square, and the first time I've felt my king side attack working just the way I wanted it to. Black eventually lost on time because he spent 5 minutes thinking after 21. Nh5. He freaked out a little his last move as he was low on time but Rh3 was coming anyway.
Where could black have refuted my attack, and what could I have done better?