I don't like magic in programming, yet nowadays there seems a move (especially in Ruby with the [over]use of method_missing) that encourages it.
Every level of abstraction above binary code, from assembly, to C, to Ruby, to Rails DSL's--each works by creating magic incantations that let you run larger functionality with a new shorter series of magic words.
Are you really against magic, or is it that you are against black magic (which I would classify as leaky abstractions)?
var app = new Mars.UIApplication().init(1280, 720);
var scene = new Mars.UIScene().init(app);
var surface = new Mars.UISurface().init(app);
var texture = surface.getTexture();
texture.setPixel(150, 100, 0x000000FF);
Yesterday I was looking at a Chartbeat gem that accesses the Chartbeat REST API . The entire class is 40 lines of code, however it's coded so weirdly that you'd have to read the source in order to use it. Every API call was a method_missing call, so instead of doing (in irb)
puts Chartbeat.new(:apikey => 'a', :host => 'b').public_methods
The code does look magical, and kudos to the developer that wrote it for the ingenius use of method_missing, but IMHO it's a bit to magical for my tastes. I like to look at a library's documentation and instantly know what methods I'm allowed to call and what exceptions/results I'm going to get back.
 Edit: Added explanation since, on a second read, it seems like I'm digressing from the topic.