Invoke Quicksilver In All Spaces After 10.6 (Snow Leopard) Upgrade

After upgrading to 10.6 my beloved Quicksilver had grown some new bad habits. If I wasn’t in the first space (#1 / top left), Quicksilver would bring me back there every time I invoked it. So if I was trying to open an app or run a command in Space #2, running a Quicksilver command would bring me back to Space #1. VERY annoying.

Here’s the fix:

  1. Make sure you’re running the latest version of Quicksilver: b56a7
  2. In Preferences > Application, check “Show icon in dock”

Now, I don’t want the app showing up in my dock or running applications list either, but until they fix this error (which may take some time) it’s far less obnoxious than the issue I was trying to solve!!

As a side note, it’s very important to make sure you’re running the latest version (link above). Before updating to b56a7, I couldn’t see the Preferences screen after upgrading to 10.6 (just had a blank white panel), so obviously #1 must come before #2!

Solve Slow iDisk Syncing After Upgrading to 10.6 (Snow Leopard)

I use iDisk Sync (via MobileMe) to keep my desktop and my laptop in sync so I don’t have to remember to copy files back and forth every time I grab one or the other. This worked great until my upgrade to 10.6 – ever since then the iDisk status bar would say “Checking items” for hours, never really seeming to do anything. I finally found a fix that seems to have done the trick, thanks to Matio Martin and John Brissenden over at this very long support post. Here are the steps:

  1. Go to System Preferences > MobileMe > iDisk
  2. Switch off iDisk sync and keep it switched off
  3. Log out of MobileMe in the Account tab
  4. Log in again with nonsense login details (make up anything – you’ll get a login error. This somehow “resets” everything)
  5. Log in properly with your correct user/pass
  6. Turn iDisk syncing back on (you may need to re-enable everything on the Sync tab as well – just choose “Merge Data” – everything worked flawlessly for me)

Granted, this will take some time as each machine re-downloads everything on your iDisk. It took about 30 minutes to download the 2.5GB I have on my iDisk. But once that was completed it’s working smoothly again – almost feels even faster than it was on 10.5. I can’t tell you exactly how or why it works – but it appears as if it has re-mapped all of the files and it’s no longer churning endlessly in vain.

Sync And Share Your iCal Calendar With Multiple People Using BusySync and Google Calendar

My wife and I keep our calendars in iCal, but without some divine intervention we couldn’t sync our calendars or view each other’s calendar in iCal. We ran into this same issue at the office as well – I needed our Project Manager to see my calendar, but because we were both using iCal we were isolated into our own little islands of calendar hell.

So we started using Google Calendar, where we could share calendars and see each others events – even add events to each others calendars. But let’s face it… it’s just not as pretty or convenient as iCal, and it won’t sync events to my iPhone. If only there was a way to do this in iCal…

Well, I found a way. Using BusySync, I can use Google Calendar as a conduit, which holds and shares all of our calendar information. So I can see the calendars of others, and they can see mine. When I add an event in iCal, BusySync sends that information to Google Calendar, and BusySync on the other user’s computer picks it up and updates the information in iCal for them. The whole process happens within seconds – it’s pretty amazing. Watch the video to see what I mean.

So what happens if I have multiple computers and an iPhone? (Which I do). That’s where MobileMe comes in. Here’s the full setup:

We have an iMac at home which we use as our “base” – that’s where BusySync is installed. This computer is always on, so there’s never a lag in the data getting synced. If I add a calendar event on my laptop, MobileMe syncs that information with my iPhone and the iMac at home. BusySync then picks it up and syncs it to Google Calendar, which in turn triggers BusySync on other user’s machines to update the calendar event on their iCal calendar. And with MobileMe it shows up on their iPhones as well.

So with the two services combined, you can have multiple shared calendars, managed by multiple people, syncing on multiple computers and phones without doing anything more than simply adding an event.

Database Exports From phpMyAdmin Add Garbage Text After Every Link

This is an issue that has plagued me for months and months, and I finally found a way around this VERY strange bug.

For some reason, exporting a database from phpMyAdmin inserts garbage after EVERY LINK in the database content. So if you have a database row with <a href="mylink"> in the data, it will end up looking something like <a href="mylink?phpMyAdmin=hxLEzQ1rOQcEE5fSSzkpIuPI8E7"> after export. Obviously, this causes all kinds of issues.

The only way I’ve found to stop this behavior is to NOT check “Save as file” when exporting your database. Just click “Go” and let the dump print to screen. Then copy/paste it into a text file (save as .sql) and import that into your database. If the export is too large to print to screen, you’ll have to manually do a search and replace on the resulting .sql file. The hash that comes after ?phpMyAdmin= is different on every export, but luckily it’s the same in each dump file – meaning it’s relatively easy to find it and replace it.

Set media=print Using The CakePHP CSS HtmlHelper

It seemed so simple, yet it took forever to figure this one out. I’ve been using CakePHP for several projects lately, and I’m really enjoying using it. But much of the documentation is lacking. Luckily there are plenty of blogs detailing the progress of this framework and what can be done with it. But I searched in vain for quite a while on how to create a link to a css file and designate it for “print” only.

Here’s how to create a link to a stylesheet and set the media type to “print”:

$html->css(array('filename'), 'stylesheet', array('media' => 'print'));

That will output the following code:

<link href="/css/filename.css" rel="stylesheet" type="text/css" media="print" />

Hope that helps the next person trying to figure this one out.