Well, here's my somewhat lengthy take on it.
I used the RM-VL900 for a long time. It was probably an 80% solution to my needs; the biggest problem I have is the lack of keys; not just too few keys, but I also the fact that I had to make strange choices sometimes. For example, "Input" was "Instant Replay" on my TiVo (where else was I going to put it?).
The MX-500 solves both of these problems. Although I have some quibbles, a reasonable choice was made for the fixed (hard) buttons; no longer do I have to make "prev ch" mean completely different things for different devices just for lack of a better place to put them. The hard keys get assigned as appropriate, and then for each device the LCD allows for "clean-up" of commands that don't fit anywhere else.
As for setting up macros, the MX-500 could be better but it can definitely do anything that your sony remote can. Here's what you can do:
You have 10 device buttons on the "Main" page. You can set each one as follows
(1) Upon pressing it, a single command is (immediately) sent out. This could be, for example, a discrete TV input corresponding to that device.
(2) Upon pressing and holding the device button for ~1 second, a macro of several commands is sent out. So you can set up TV input, AV receiver input, AV switchbox, etc. as necessary.
You can actually use both of these on your device keys, which I do.
It is possible to set up a "fake" device that contains LCD buttons to switch your TV/AV input as appropriate; I have done this, but I almost never use it. I use the codes that are programmed into my Main screen device buttons.
Remember that "device" is just an organizational tool; like any learning remote, you can take your DVD "device" and learn a key that switches your TV input to the DVD player. The difference with the MX-500 is that you can label that button clearly rather than assign it to some random key.
My recommendation, if you are interested in discrete codes, is to head over to
www.bluedo.com and order the MX-500 + URC7800 package. It's what I did and I'm very happy with it. The 7800 will find discrete codes for just about anything. Of course it would be great if the MX-500 did this by itself, but nothing's perfect.
A final note on the VL900 vs. MX-500 issue; I can say one positive thing about the VL900, and that is that it has a great feel. The MX-500 isn't quite as comfortable, but it's still very usable.
On the other hand, when I used a VL900 I had to have about 3 or 4 other remotes sitting around; with the MX-500, every other remote I have is now off my coffee table and collecting dust. Not even my Sony AV2100 allowed me to do that before.