I do a little bit of a lot of things. Some of those things are code. I enjoy thinking about how the world and technology interact, and how technology affects the way people interact with each other.
Use TDD, or at least write tests as you write code. Even though this almost always starts a flame war, I have become convinced this is the way to go. How does this affect debugging? It forces you to break your design apart into manageable pieces that are easier to reason about, simply because if it's too hard to test it's also probably coupled to something else or trying to do too much. This then means that you can then debug small modules in isolation, and even take advantage of breakpoints while running test suites. (note this usually fails at least one test with a timeout, so run the suite again afterwards)
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Everything everyone already said here, and: