[Ed. note: This week, Glenn Fleishman takes a Mac Gems look at two utilities for automatically configuring your Mac's settings based on its physical location. Today he covers NetworkLocation; later this week, he'll look at MarcoPolo.-DF]
If you work in multiple locations, you know that moving between those locations usually involves changing various system settings--wireless networks, printers, and more. NetworkLocation knows where you you're working. Or playing. Or sleeping. This clever utility examines data about your network and USB connections to determine your present location, and can then modify your other system settings based on rules you configure. NetworkLocation gets you most of the way to your desired state, and can get even closer if you know a bit of AppleScript.
NetworkLocation has two main components: Locations and AutoLocate. Locations are groups of settings that go together based on your location; for example, office settings, work settings, settings for a friend's house, and so on. These locations can be generic (anywhere outside of my home) or specific (working at my Fremont office).
When you set up a location, you choose related actions that occur whenever the location is activated. Actions are grouped into application- and system-specific categories. Application actions, as the name implies, affect particular programs. You could use these actions to set up a whole start-of-day routine: launch several programs, start playing an iTunes playlist, set iChat status to Available, and so on. When out and about, you could use an application action to change Mail's outbound SMTP mail server--a useful feature, as some networks you connect to might block connections to some mail servers.
Some application actions can also be set to revert to previous states when you leave a location; a launched program can also be configured to quit automatically, if desired. For more advanced opterations, you can also trigger AppleScripts and execute command-line (Terminal) commands.
System actions include turning AirPort on or off, changing the time zone, modifying display brightness, and connecting to servers. You can configure system actions to change a setting to specific value when you leave a location, or to simply revert to the previous setting.
Unfortunately, only a few programs have direct support via the built-in Application actions; this is where AppleScript comes in handy. For example, I use Mailsmith for e-mail, so although Mailsmith actions aren't directly available, I can use AppleScript to change mail status from disabled to auto-connect and to trigger a check for new email.
Locations are paired with triggers you define using the AutoLocate feature, which uses particular bits of data to define where you are. Specifically, AutoLocate uses four types of triggers: your physical location, determined using Skyhook Wireless's Wi-Fi positioning system; the name of any Wi-Fi network you join; whether or not your Mac is connected to an Ethernet network (and, if so, the IP address you're assigned); and any connected USB devices. Each of these triggers is optional: you can define one or all four.
Once you define one or more triggers, you choose what happens when a given set of triggers is matched. Locations and actions can be linked one-to-one--for example, to switch to your At The Office location whenever the Office parameters are met. Alternatively, you can define the locations for various cafes you frequent, and configure NetworkLocation to automatically switch to your Cafe profile whenever it detects one of those locations.
The Skyhook Wireless option is especially interesting, as you can use your current location or enter a street address, and then define a radius within which you need to be located to trigger the corresponding action. Of course, you have to be connected to a Wi-Fi or Ethernet network for NetworkLocation to query Skyhook's servers to pull up that location. If you don't have an Internet connection, the Skyhook feature doesn't work.
I created a set of locations and triggers in NetworkLocation (without actually being at any of the locations, I might add). As I moved from place to place, as soon as my laptop had connected to a Wi-Fi network and received an IP address, NetworkLocation correctly triggered the settings change.
You can also switch locations manually from the program's icon in the Dock or from an optional menu-bar menu. And NetworkLocation can be used with stationary Macs, as well: for example, when you arrive at the office in the morning, you can switch from your "away" location to your "here I am, let's get going" location, and NetworkLocation will start your day by checking email, activating iChat, and launching programs.
One inconvenient aspect of setting up NetworkLocation is that, if you've stored a number of wireless networks in existing configurations in the Network pane of System Preferences, the AirPort trigger section of NetworkLocation doesn't list these stored networks as options when configuring a new NetworkLocation location. It would also be nice to be able to set a trigger based on the name and a unique address--the BSSID, which is included in all Wi-Fi network beacons that advertise a network's availability--of Wi-Fi networks in the vicinity. Such capability would supplement the Skyhook positioning feature.
Still, for sheer simplicity in changing your settings as you move from place to place, NetworkLocation fits the bill.