Auto-updating Homebrew
This is very easy to do.
For efficiency (and cool factor), I would use a tool like Lingon to launch this script periodically using launchctl/launchd instead of each time you start a shell. On my MacBook, it takes 3 seconds to update the second time (no work done, DNS cache set, etc...) and it take 10 second to run the first time (no work done) or 15+ seconds if a package needs to be downloaded or compiled.
Perhaps once a day or once an hour - running in the background would be sufficient given those times to execute?
You could make a simple script /usr/local/bin/brewup that calls brew in turn and logs the results to the system log. If you don’t like chasing logs in the centralized log store, “teeing” them to a text file works well, too.
#!/bin/bash

brew=/usr/local/bin/brew
logger=/usr/bin/logger

$brew update 2&gt;&amp;1  | $logger -t brewup.update
$brew upgrade 2&gt;&amp;1 | $logger -t brewup.upgrade
$brew cleanup 2&gt;&amp;1 | $logger -t brewup.cleanup

I just call the brewup when I'm about to go make tea or when I get started and let it run in the background.
brewup &amp;