Archive for the 'Apple' Category

Migrating Rules From Microsoft Exchange to Google Apps

Recently I was part of transitioning the email system of a 20+ employee business off of a Microsoft Exchange 2003 server to Google Apps. Moving close to half a million emails to a new email service was a big decision. The transition tools that Google has in place are pretty good, albeit slow for that many emails, Google throttles email transfer to one each second after the first 500. However, the one piece that was missing was a good tool to transition outlook server rules. Many employees used those rules extensively and many had 50-100 rules. Outlook does not have any method in place for extracting those rules. There is no built in way to getting any sort of list or descriptions of the rules, if one wanted to transition the rules manually they would have to click on a rule, look at the pop-up window, and recreate the rules in Gmail using the filters functionality – repeating this two step process for each rule. Horrible.

This would waste many hours of valuable time so I started hunting for a better solution. There is an API in Outlook 2007 or higher that enabled access to rules. There isn’t much example code available, and to my surprise I couldn’t find any VB script to export a CSV of all the rules associated with an outlook account! I hacked together a really rough VB script which exports Outlook rules (only one rule type right now, thats all I needed for my use case) as a CSV and then wrote a small ruby script to generate a XML doc of the rules for import via Gmail’s import / export available through Gmail labs. It works fairly well assuming you have an updated version of Outlook 2007 or higher.

Google Apps Transition Notes

  • The server migration tool pulled in some calendar events that employees claimed they deleted long ago.
  • The Google Mail Uploader application for Mac is not consistent. It wouldn’t pickup mail on some computers. Doesn’t handle folder hierarchy (flattens everything). Use the server migration tool instead.
  • Mail.app folder doesn’t update folder’s unread count immediately. This might be an isolated issue with Lion.
  • I had a problem with one Mac machine (10.6) where the inbox would randomly appear blank. Clearing all Mail.app support / cache files and adding the mailbox with message + attachment cache disabled fixed the issue (after mail downloaded I enabled cache again).
  • Gmail doesn’t seem to handle lots of folders (labels) well. Mail.app seems to be a lot slower with multiple folders.
  • Hiding the automatic All Mail, Misc, Follow-up, etc folders was helpful for those who were not familiar with gmail.
  • Changing some of the local settings on Mail.app makes Gmail play a bit nicer.
  • Still can’t find a good solution to allowing a user that is an administrator of another user’s calendar to create an event with the organizer being marked as the calendar’s creator. Use case: administrative assistant managing an executive’s calendar.

Lion Frustration Fixes

Installed Lion today, some great improvements, some not so great (iCal… really?), and some frusterating changes than can be fixed.

  • Scrolling seemed delayed and generally choppy on my magic mouse. The scrolling preferences are completed removed from the mouse system preferences. Instead they are hidden in the “Mouse Options” button in the “Mouse” tab of the Universal Access system preference. In the mouse tab you can also remove the scrolling delay.
  • Safari’s cmd+option+l to open the download window was removed! Luckily you can add it back using a script by Daniel Jalkut bundled in a service bound to to the cmd+option+l keyboard shortcut.
  • The new window zoom animation is really annoying. Luckily, you can disable it
  • The only widget I really use is BeRuler, a simple measuring tool. It is only useful if the dashboard lays on top of the screen. Thankfully you can bring the translucent Dashboard mode back
  • Mail has annoying new animations too, the hidden preferences to disabled them are:
    defaults write com.apple.Mail DisableReplyAnimations -bool YES
    defaults write com.apple.Mail DisableSendAnimations -bool YES
  • Not Lion specific, but I’ve found this to be very useful:
    defaults write com.apple.finder _FXShowPosixPathInTitle –bool YES
  • As a web developer I have a lot of windows open, I don’t want them restored after when launching Safari.
    defaults write com.apple.Safari NSQuitAlwaysKeepsWindows -int 0

Create TGZ Automator Service

With Snow Leopard came some nice refinements to automator actions. However, all existing automator actions had to be recreated as services in order to be accessed through the Finder’s contextual menu. One automator action which I used fairly often was the create tgz workflow. I always found that action to be fairly useful so I recreated it as an action.

Another unfortunate change with Snow Leopard was the elimination of input managers. This eliminated the convenient F-Script injection functionality that was present in F-Script anywhere. Luckily this functionality has been recreated using an automator service. Nice work!

Apple Mail: Mark as Replied

A while back I added a small file to the source section of this site, MarkAsReplied.applescript. Couple this small AppleScript with MailActOn and you have an easy way to change the replied status of messages. I have another post in which I posted a script to allow the marking of messages as unread. Although these are small little functionality additions to Apple Mail, they have helped keep my different mail accounts organized.

Installing Custom PHP5 In Leopard

Lots of improvements have been made in Leopard, but the built in installation of PHP still lacks some essential packages and extensions (PDO, GD, etc). You could download MAMP or Marc’s package but either of those isn’t exactly a drop in replacement for the built in PHP installation – I’d rather not have two separate PHP installations floating around on my computer.

Below is a script to compile PHP as a drop in replacement. I didn’t come up with this completely on my own, these two sources were a great help. You’ll need to make sure you have MacPorts installed in order for the installation of additional modules using the script below to work. Make sure that MacPorts is configured to install all files into the

/opt

directory on your hard drive. The only downside to not using Marc’s package or MAMP is every time there is a system upgrade you’ll have to rerun this script.

# you'll have to aquire a new URL here: http://us3.php.net/downloads.php when a new version of PHP comes out
wget http://www.php.net/get/php-5.2.6.tar.gz/from/us.php.net/mirror
open php-5.2.6.tar.gz
cd php-5.2.6

# strip the 64 bit version of apache in order to eliminate compatibility issues with 32 bit PHP
sudo lipo /usr/sbin/httpd -thin i386 -output /usr/sbin/httpd

# install some modules
sudo port install libpng && sudo port install jpeg && sudo port install freetype && sudo port install gd2

# compile and install PHP
./configure --prefix=/usr --sysconfdir=/private/etc --with-config-file-path=/etc --mandir=/usr/share/man --infodir=/usr/share/info --with-apxs2=/usr/sbin/apxs --with-zlib-dir=/usr --with-mysql-sock=/var/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-dblib=/opt/local --with-mysql=/usr/local/mysql --with-pear --with-pdo-mysql=/usr/local/mysql/bin/mysql_config --enable-sockets --enable-dbx --enable-dbase --enable-trans-sid --enable-exif --enable-wddx --enable-ftp --enable-mbstring --enable-cli --enable-mbstring --enable-mbregex --enable-sockets --without-iconv --without-openssl --with-gd --with-curl --with-sqlite --with-jpeg-dir=/opt/local --with-gd=/opt/local --with-png-dir=/opt/local --with-freetype-dir=/opt/local && make && sudo make install

You will have to restart apache by toggling the “Web Sharing” checkbox off and on in the Sharing preferences. Hopefully this saves someone the headache it caused me :)

Quick side note. I’ve been looking for a good replacement for the clipboard history component of Quicksilver for awhile now and recently found Clyppan. I love it so far!

How Much Is Too Much

I like os x because its UI is pretty & functional at the same time. OS X does have it’s fancy visual effects, but in most cases the effects are done well enough that they don’t get in the way of your work.

Expose is a great example of this. The zoom effect always take the same amount of time no-matter how many windows you have open, and its done quick enough that it doesn’t get in the way. Sheets are an example of when Apple (in my opinion) slowed things down for the sake of coolness. Don’t get me wrong, I love sheets, I think they are an awesome UI element. Apple just made the default fold out speed way too slow! The coolness of watching the save dialog sheet fold out of it’s parent window for two seconds looses it’s coolness if you save 100 files a day. To make it usable on a daily basis the default sheet fold out speed should be drastically increased.

So what prompted me to write this article, everything I’ve just said has already been discussed all over the net. It’s this new disc burning application, Disco and its smoke. I have to admit, my first reaction when I saw the screencast was just like everyone else, “Wow. That is freakin’ amazing.” But after thinking about it for a while, who wants smoke spewing all over their screen and sucking up CPU cycles; isn’t there enough happening on our screens already and enough effects sucking up CPU & GPU resources? I have to agree with Adam that the desktop is starting to look more and more like a flash animation. This isn’t necessarily a bad thing, as long as developers (Apple in particular) keep our interfaces fast, good-looking, and functional; understanding how much animation and flashiness is too much, and not crossing the line of counter-productive flashiness.