This was a pretty good game for B, close until the late middle game. You missed a few opportunities to take advantage of W mistakes and overplays. My main suggestion would be to be more patient about taking advantage of good aji. Be more willing to leave a local situation unsettled, playing elsewhere to see how things develop. Leaving a position unsettled can put more pressure on your opponent than on you -- make him worry about all the possible attacks, rather than picking one right away.
The exchanges

-

are not terrible, but there are plenty of other forcing moves around here, so it might be better to keep all this aji in reserve, until you have a definite plan. I think I would just play R12 to undercut the W corner. If W runs toward the center, you will get a natural opportunity to use the center aji against two groups.

gives W an easy opportunity to give up the corner to develop safely along the open side. I think R12 is much more severe.

strikes me as a serious error in the direction of play, which could easily have cost W the game. Normally W blocks this way in order to develop the left top, but here that is impossible, so W is asking for trouble.
Sadly

lets W off the hook. If instead B cuts at P14, the fight looks very bad for W. Try playing out some variations. True, the B corner is not alive locally, but it has a lot of liberties, and after splitting W into two groups, it looks like B will be able to kill something.

is very nice, making W pay some price for blocking the corner on the wrong side. But

seems a bit vague to me. N11 seems like a cleaner way to separate the W groups. If this forces W to run in the direction of O10, B will naturally get a chance to secure some territory around R8, while W plays on dame. B might aim to play O3 sometime after that, to develop the bottom before W gets there. I could be wrong about all this -- if W cannot connect his two groups after

, it might be a fine attacking move.

is a horrible shape move which might just work. Kudos for even considering it. N11 would be my first thought, to keep W separated. If W plays N11 in response to

, can B actually cut? It looks like W has M13 and N14 to capture the cutting stones. In the actual game, it was a complicated fight, and both sides had chances to do better.

looks like the last opportunity to cut at O10 for a good result.

-

cashes in the aji of the three dead stones too soon and probably on the wrong side. The W groups on both sides are short on liberties, so B has forcing moves and potential squeezes on both sides. Taking the forcing moves on one side gives up opportunities on the other side. For example, if B somehow gets a stone at F11 or F12, the squeeze starting with H9 or G9 gives B huge center strength. By taking neither side, B actually puts more pressure on W. How about attacking now with something like E12?