To borrow words from my good friend, Professor Henry Higgins, "Have you ever met a programmer of good character where XML is concerned? Well, I havent. I find that the moment a programmer learns XML, he/she wants to invent his/her own dialect. "
OK we all have our language exploits and I have invented a few XML dialects of my own (which have a grand following of but one user).
I've spent an inordinate amount of time debugging distributed protocol stacks and applications. Building distributed systems / protocol stacks is a tricky affair. It takes a lot of time and patience and testing to get it all right and then some. Reproducing bugs in such systems is tough. Building scalable test frameworks is tough.
I have not written a line of C++ in over 3 years and hope not to in the future. However,
I am a recovering c++ addict (err... programmer member of c-aholics anonymous) . I am an ex abuser of cpp. I've been known to write complex functions using cpp as I am in fact a recovering c programmer before I became a recovering c++ programmer and never grew
too fond of templates.
I've been hacking at building distributed applications for some time now (both in Java and C++) and, because I was invented before debuggers were invented, I dont use debuggers. Besides my code tends to be multi-threaded and messy and open source and bugs occur on other people's machines that I cannot access.
I recently started a project on java.net which allows untrusted users to upload classes to a SIP service platform (for customizing call control in a SIP network). In doing so I played around quite a bit with bytecode re-writing using the bcel library. I was quite surprised at the type of run-time customizations that this simple technique allows.