How does blockchain.info get its info? Is it via the RPC interface for bitcoind or by reading the raw blockchain directly? How does blockchain.info get their info? My intuition tells me that they have a modified client that reads and processes the blockchain (either directly from the network as it comes in or from the raw files on disk) and stores the various data and relationships in a database.

I'm also guessing that they may use the RPC interface for the standard bitcoind to do simple things like getdifficulty() or getblockcount() quikly.

Can anyone confirm this? Any ideas?
They most likely have an advanced block chain indexing backend. Basically they run a node (most likely bitcoinj with custom code) that listens for blocks from all the connected nodes they have. And once they have a block they add all it's info into a database that they run queries on for results.