I think you are playing too cautiously. You are concerned with fixing your own weaknesses, but never seem to consider that your opponent has weaknesses for you to exploit. Next time your opponent makes a forcing move, look for ways to resist and fight back, instead of passively defending. And look carefully at your opponents position for weaknesses you can attack. Some specific comments:

is a good invasion/reduction. Part of its strength is that the B group to the left does not yet have a wide base. So it would help if you though of your move partly as a strong attacking move, not just a weak reducing move. Then when B attaches below, you would first thank him, then promptly block on the left side. That way, if B draws back and you connect, the four B stones to the left would become quite weak. With the direction of play in the game, B is strong on both sides, so your stones do become simply a reduction. Still, it is a reasonable reduction, and you have no cause for dissatisfaction yet.

should probably be a solid connection, leaving no peep, and

was heavy and got you into trouble.

was an attack on your eye shape, more than a threat to make territory. Why not let B connect under, if he wants to invest another move? The B position would be very low, and you have already made a successful reduction. Better alternatives would be to push at J16 and/or jump safely into the center at L14 (as you noted).

was probably an overplay -- just N13 would be safe and thick. Nevertheless, you played consistently through

to make good shape and get a reasonable local result. After that, however, you spent way too many moves passively defending the right side group.

in particular helps you not at all. Consider something like Q14 or P15, partly defensive, but partly offensive, threatening the three B stones to the left. When trying to settle a weak group, it is important to get counter-play against your opponent's weaknesses if at all possible.

was again much too passive. Playing dame to live inside should be your last resort. The same goes for your opponent, who would not want to play there unless you were already surrounded and it was the killing move. In this position, M9 or N8 would be much more positive and useful moves.
The B invasion at H3 was very deep, and you let your opponent settle here without any resistance. If you had to kill this stone, how would you play differently? I suggest playing that way in a future game, just to develop your killer instinct. Moves like :w120: at J2 or :w122: at E2 come to mind. Of course this would become and all-or-nothing attack, but if you are behind why not go for it?
Finally, did you ever consider invading at R17? That seems like the sort of move you hate to see your opponent make against you. It would not be easy to kill that invasion outright.