Organized is a new widget from iSlayer featuring a calendar with events, world clocks, notes and to do's. The calendar and to do's utilise OS X's inbuilt databases, so they're always in sync with iCal and Mail.
Awesome, their widgets (or if you want them in your menu bar, their menulings) have always been on my system and I'm glad they released this widget. I like how this not only replaced their menuling for time (since it doesn't fit on my 12" Powerbook) but also grabs iCal events, to dos and Mail notes.
Don't forget to donate to iSlayer.
In addition to my Mac Pro, I now have a 12" Powerbook that I use on the go. Having two computers introduces the hassle of keeping them in sync. Since .Mac comes with a 60 day trial, I decided I'd give it a try. For what it does, it does it well: it kept my mail, bookmarks, calendar and address book in sync, but nothing else.
However, .Mac costs $100 a year and it didn't meet all my needs. It did, however, offer a whole bunch of solutions (in the form of cloud computing) that I didn't want because rather than used someone else's cloud, I'd rather roll my own open source cloud. I don't use flickr, gmail or wordpress.com for this very reason, so why would I want .Mac email, webhosting, galleries, etc? All I really want to do is keep to Macs in sync, including all my documents. I googled and the best I found was Geek Throwdown: How to sync two or more Macs?.
Enter Unison. Here's a quick guide:
- I turned on remote login in system preferences on the PowerBook. This lets me SSH into it, which is a good thing because Unison operates over SSH.
- Installed the OS X binary of Unison onto both machines. (Downloaded the GUI universal binary and then launched the application, from there, within the application I was able to install the text version. Again, I did this for both machines.)
- Logged out of the PowerBook, then SSHed into it from the Mac Pro. I then deleted my entire home directory on the PowerBook (
rm -rf).
- I exited all running programs on the Mac Pro except a terminal.
- Created a directory
.unison in my home directory on my Mac Pro. Inside that directory, I created a file sync.prf. Here's the contents of that file, annotated to explain what each line means:
# Roots of synrchonoization
# I want to sync my entire home directory of the Mac Pro, the local machine with
root = /Users/brianpuccio
# ... my PowerBook, hostname beta, the entire home directory
root = ssh://brianpuccio@beta.local//Users/brianpuccio
# This synchronizes file modification times
times = true
# This turns off logging
log = false
# This tells unison to ignore some files and paths
# http://alliance.seas.upenn.edu/~bcpierce/wiki/index.php?n=Main.WikiSandbox
ignore = Name .FBCIndex
ignore = Name .FBCLockFolder
ignore = Name {Cache*,.Trash*,.VolumeIcon.icns,.HSicon,Temporary*,.Temporary*,TheFindByContentFolder}
ignore = Name {TheVolumeSettingsFolder,.Metadata,.filler.idsff,.Spotlight,.DS_Store,.CFUserTextEncoding}
# ~/.fseventsd/ is owned by root, don't have privledges to this, so ignore it
ignore = Name .fseventsd
# Unison is also the name of a usenet client http://www.panic.com/unison/
# This ignores its very large and often changing cache, which is fine since I don't use it on the Powerbook
ignore = Path {Library/Application Support/Unison/news.usenetserver.com}
# This is Mail's cache of my IMAP accounts, since this was large and I kept having Unison crash on the
# first few syncs, I omitted this path figuring Mail on the PowerBook would sync once it went online
# It worked, so I left it alone and in here
ignore = Path {Library/Mail/IMAP-*}
# This is my aperture library and it is too big to fit on my PowerBook (and the PowerBook too slow to run Aperture)
ignore = Path {Pictures/Aperture Library.aplibrary}
# It seems like Unison should automatically ignore its own config folder, but it didn't for me, so I added this
ignore = Path .unison
- I ran Unison by issuing the command
unison sync (sync because that is the name I cave the preference file, sync.pref.
- The GUI launched, asked me for my password on the PowerBook, which I entered. It did a quick comparison (since the PowerBook should have a completely empty home directory) and then listed all the files and directories.
- I made sure that Unison was set to sync each file and directory from the Mac Pro to the Powerbook (Unison uses left and right terminology, e.g., sync file from left to right).
- I clicked Go and it churned along.
For the most part, it worked. All my files were moved over, my keychain and all its passwords, my browsing history and bookmarks, my Adium settings, accounts and chat histories, my Colloquy settings and chat logs, my dock, my background ... quite literally everything.
There are a couple of issues:
- Window positions are copied over. Going from a 1920x1200 screen to a 1024x768 means some windows were too large. A quick window, zoom command fixed those. (But they then get synced back to the Mac Pro, where everything will now launch in the top left of the screen.) I'm just going to accept this.
- Several files (such as
~/Library/Preferences/com.apple.dock.plist, ~/Library/Preferences/com.apple.dashboard.plistand ~/Library/Preferences/com.apple.finder.plist) are constantly modified by the OS and the very act of logging in to both machines means they both have their timestamps changed, which means Unison doesn't know which one you want to sync to the other, so it displays a ? instead and the default is to do nothing. Of course you can go through each of these one by one (or even en masse) and set that sync to be a Left to Right or Right to Left sync. I'm going to try using the force option and either favor a root explicitly or use the newer option.
- Dropping to a terminal to do this (and I do it a few times a week, whenever I shift from one machine to another) is annoying. I'm created an Automator script to run Unison and added it to my dock.
- Typing in my password for every sync is annoying. I now use an SSH key.
- I have only tried this where UIDs and GIDs were the same. Good luck to you if they're different!
I will update this as I make improvements.
I've given up on trying to get a MAMP stack on my local Mac Pro. As beefy as machine as it is, it's not Linux. First, apache didn't work out of the box on OS X. Then, while working on image module, I found out that OS X's PHP doesn't come with GD. (I won't even mention my issues with ruby.)
So I'm going to spend more money on proprietary software (VirtualBox didn't work), most likely VMWare's Fusion so I can run a virtualized instance (or three) of Linux locally. It will take less time, behave the way I expect it to and be a breeze to update, thanks to apt.
If you've installed MySQL via fink and you're going to install the MySQL gem for Ruby and you're getting something like this:
Macintosh:~ brianpuccio$ sudo gem install mysql
Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb install mysql -- --with-mysql-dir=/sw/var/mysql/
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
The command you really need is sudo gem install mysql -- --with-mysql-config=/opt/local/lib/mysql5/bin/mysql_config
I figured since I was using OS X and it touts being UNIX compliant that for a local web development sandbox, I'd just use a local install of apache instead of a virtualized Linux install. I thought all I had to do was go to System Preferences, go to Sharing, then tick the checkbox next to Web Sharing and I'd be good to go. This is OS X after all, not some complicated Linux install that requires some arcane knowledge to administer.
Didn't work. Got an access denied when I tried to view my localhost. Fan-fail-tastic.
I went to check the access logs, which I assumed were in /var/log/apache2/error.log but there wasn't even a /var/log/apache2 directory to look in. OK, check out /var/log/system.log. Hmm, this stands out:
No such file or directory: httpd: could not open error log file /usr/logs/error_log
A quick search yields the solution, you need to do a sudo mkdir -p /var/log/apache2 first and make sure the error log is set to log there. (I'm not sure why so many paths are prefixed with /private
While the config file isn't how I'm used to seeing things and the entire a2ensite and a2dissite thing doesn't work this way, it does work. Though I find it really interesting that in the modern Linux distros that I've used, apache worked out of the box, but under OS X, it doesn't.
Onward.