Suppose you have a folder full of photos taken in rapid succession. These might be images from an MRI or ultrasound, or simply a sequence of shots snapped at a celebration of some sort. Either way, you've ended up with a series of photos that would likely look good animated—but they're all simply stills.
There's an easy way to put those photos in motion. Single-click on the first one in your folder, and then press the Spacebar to bring up the Quick Look preview of your image. Now, simply hold the down arrow. The Finder selection will cycle through all the photos in your folder, and the Quick Look preview will instantly update in real time.
If your folder contains photos that work as a flip book, you can see the animation right there in the Finder using this method.
In OS X 10.8.3 and later, Apple seems to have changed the behavior of the Mac App Store: It will no longer automatically check for System Updates if you are running from an account that does not have administrator privileges.
A simple work-around: Select the Updates tab in the Mac App Store. From the Store menu, select Reload Page (Command-R). The app will now prompt you for an administrator's credentials. Then the app will search and (in my experience) find system updates if any are available. Updates can now also be installed from your non-admin account.
Now that Google Reader is dead, it's time to find a replacement news-reading solution. If you, like me, land on Feedbin as your answer, you might not be happy with any of the current Mac apps that can connect to the service. And thus you might—again, like me—choose to set up a single-site browser for Feedbin using Fluid.
In general, Fluid and Feedbin get along fine. I tweaked settings to that I could open any URL within my Feedbin Fluid app, so that I could more easily open links to whatever sites I stumble across using the service. But I missed my "unread articles" badge, which NetNewsWire had long sported in my Dock.
Of course, to make the whole thing work, you'll need to enable putting that unread count in the page title, which is a setting available on the Feedbin website's Settings screen.
Today is my last day running the Mac OS X Hints website. I'd like to thank all of the site's readers, and especially those who have submitted hints, for visiting the site and helping us provide neat hints and tips about OS X.
Lex Friedman of Macworld will be replacing me. I wish him all the best, and hope that Mac OS X Hints continues to be a place where you can find great ways to work more efficiently with your Mac.
Here is how to set up a Mac, running OS X Client 10.5 or later, as a PXE boot server. We will configure OS X's built-in DHCP, TFTP, and NFS servers, start the servers, and put the client boot files in place. (The NFS server may be optional, depending on the operating system we are booting.)
You'll need the Mac, a PXE-capable PC, and an ethernet cable. Some steps will require being logged in as an administrator on the Mac.
We'll boot Debian Live on the client PC as an example. We'll show a regular setup with NFS, an alternate setup without NFS, and how to uninstall.
Regular setup (with NFS):
Connect the Mac and the client PC with the ethernet cable.
On the Mac, in System Preferences > Network, click "Ethernet" and enter the following settings:
Configure IPv4: Manually
IP Address: 192.168.1.1
Subnet Mask: 255.255.255.0
(All others can be left blank)
Note the status may read "Cable Unplugged" at this point, which is ok.
In Terminal, make new directories /srv and /srv/debian-live (we'll be sharing /srv/debian-live over NFS) with the following commands:
$ sudo mkdir /srv
$ sudo mkdir /srv/debian-live
To create the NFS configuration file, enter the following command:
and press Control-O to save and Control-X to exit nano.
If the file /etc/bootpd.plist already exists, turn off Internet Sharing in System Preferences > Sharing. Then the file will be removed, and you can create it as in this step.
(Make sure to move /etc/bootpd.plist to the Trash and disable the DHCP server before turning Internet Sharing back on. See "Uninstall steps" below.)
If you are using an ethernet port other than en0 (see System Information or System Profiler for the port name), change the value for the dhcp_enabled key to the port you are using.
The data for the dhcp_option_67 key is the bootloader filename "pxelinux.0" (see step 9 below), null terminated and encoded into base64. This can be generated with the free DHCP Option Code Utility, or by entering the following command in Terminal:
Place the .tar.gz file on the Desktop (or anywhere convenient), then double-click it to expand the archive.
Open the folder that is created (with a name like "debian-live-6.0.7-i386-gnome-desktop-net"), open the "tftpboot" subdirectory, select all of the files, and move them to /private/tftpboot. (This includes the pxelinux.0 file mentioned in step 6, and other boot menu and kernel files.)
Note that files in /private/tftpboot should be readable by everyone (so they will transfer), but not writeable by everyone (so they can't be modified). Check permissions with Get Info or ls -l if needed.
Click the Back button to leave the "tftpboot" subdirectory, then open the "debian-live" subdirectory, then select the folder called "live" and move it to /srv/debian-live. (When Debian Live is booting, it will look for the file /srv/debian-live/live/filesystem.squashfs over NFS, which contains the root filesystem.)
Optionally, test the TFTP server:
$ tftp localhost
tftp> get pxelinux.0
$ ls -l pxelinux.0
You should see that a copy of the file pxelinux.0 has been downloaded to the current directory.
Turn on the client PC, and press or hold the key to bring up the boot options (something like F2 or F12; check the documentation for your machine or look for a message onscreen).
Choose to boot from the network (PXE). The PC receives an IP address from the DHCP server, loads pxelinux from the TFTP server, and displays the Debian Live boot menu.
Choose a boot option, and after the kernel is downloaded, the root filesystem is accessed over NFS, and the operating system is loaded, you'll end up at your graphical desktop or shell prompt of choice!
To uninstall, see "Uninstall steps" below.
Alternate setup (no NFS):
This is a shorter method, because NFS is not required. Debian Live will download its root filesystem over TFTP. (However, the largest file that can be downloaded is limited by a bug.)
Follow steps 1, 2, 6, and 7 of the regular setup, and skip steps 3, 4, and 5.
In step 8, choose a smaller archive, like the standard flavor from 6.0.7, or the lxde-desktop flavor from 5.0.10. (A bug causes some of the larger versions to stall when downloading the root filesystem over TFTP.) Place the .tar.gz file on the Desktop, then double-click it to expand the archive.
Follow step 9 of the regular setup.
In step 10, instead of moving the folder "live", open it and move the file "filesystem.squashfs" to /private/tftpboot.
Open the file /private/tftpboot/debian-live/i386/boot-screens/live.cfg in TextEdit. Edit the kernel parameters for the boot menu option you'll be using, replacing the two parameters
with a single parameter
then save the file and quit TextEdit.
Follow the regular setup steps 11, 12, 13, and 14. The root filesystem may take some time to download in step 14 (1 to 2 minutes over 100mbps ethernet), but when it finishes, you'll end up booted into Debian Live!
To uninstall, follow steps 1, 3, and 4 under "Uninstall steps", but ignore the /etc/exports file in step 1, and the /srv/debian-live directory in step 4. Skip steps 2 and 5.
Move the files /etc/bootpd.plist and /etc/exports to the Trash.
Restart the NFS server:
$ sudo nfsd restart
and check the status of the server (should say enabled, not running):
You can identify unwanted calls. I still have a land line, but I am forwarding all calls to my iPhone. To identify unwanted calls (new windows, green energy, political adds...), I created a Contact named Don't Answer.
When I answer the phone and it is one of those annoying calls, if the number shows up, I can just use the 'add to existing contact' feature. Of course, this doesn't work if the number is blocked. But, in two weeks, I have a long list of calls that show up as Don't Answer and I can just not answer or choose Decline—there's no guesswork involved.
Lex adds: I do something similar for another reason. I use Google's two-factor authentication, and Google uses a variety of phone numbers to text me my passcode when I log in. So I created a Google entry in my contacts, and add each different number the company texts me from to that contact. That way, instead of ending up with lots of old entries from Google in Messages, there's just one that all their texts get grouped in.
iOS 7, of course, will provide a way to block specific unwanted callers, too. But this hint makes a nice stopgap!
Password managers are a good thing, as they encourage you to maintain strong passwords. Just the sort of thing you’d want if you were opening every port on every computer on your enterprise network. Unfortunately, Juniper doesn’t see it this way. This can be resolved with some crafty scripting.
First, we need a scripting addition called Useable Keychain Scripting. Download it and copy it to /Library/Scripting Additions. You'll need to type your password to do this.
Next, you need to be able to connect to your VPN, so do this, then disconnect. Network Connect should retain the address of your server (e.g. https://vpn.example.com).
Now create a password item for the server (https://vpn.example.com), and grant access to Usable Keychain Scripting. Or not, your call.
Now fire up the script. It will get the address of the server from Network Connect, get your username and password from Keychain Access, and log you in.
property appName : "Network Connect"
tell application "Network Connect"
if connected then
tell application "System Events"
-- Recover the name of the VPN from Network Connect.
set myAddress to value of combo box 1 of group 2 of tool bar 1 of
window appName of application process appName
set ASTID to AppleScript's text item delimiters
set AppleScript's text item delimiters to "://"
-- Get just the server address
set vpnName to (text items 2 through -1 of myAddress) as text
set AppleScript's text item delimiters to ASTID
tell application "Usable Keychain Scripting" to tell current keychain
-- Recover the username and password from the login keychain
set myPass to password of first internet password
whose name contains vpnName
set myAccount to account of first internet password
whose name contains vpnName
connect to vpnName
tell application "System Events"
-- enter the account name and password in the dialog box and click 'Sign In"
set value of text field 1 of group 7 of UI element 1 of scroll area 1 of
window appName of application process appName to myAccount of
set value of text field 1 of group 10 of UI element 1 of scroll area 1
window appName of application process appName to myPass
click button "Sign In" of group 14 of UI element 1 of scroll area 1 of
window appName of application process appName
-- Could launch an application here if it's scriptable.
Many of us use Hot Corners (accessed from System Preferences -> Mission Control or System Preferences -> Desktop & Screen Savers) to trigger various actions. On my Mac, slamming the mouse to the bottom right corner reveals the desktop; the bottom left corner triggers Mission Control. You can also use the corners to trigger things like Notification Center, Launchpad, starting a screen saver, or putting your display to sleep.
But anyone who uses Hot Corners (which OS X refers to interchangeably as Active Screen Corners) triggers those mouse-controlled shortcuts accidentally sometimes. The solution is this: When you're choosing a Hot Corner setting from one of the drop-down menus, hold down your preferred modifier key or keys. You'll see the options change from, say, Mission Control to Option Mission Control" instead.
From then on, your corner will only work when you're also holding down the modifier key(s) you specified. Now, trips to the Apple menu won't trigger your Hot Corner shortcut—unless you're pressing your selected modifier key, too.