BrT

Musings about technology and other neat stuff

BrT random header image

Things gets synchronization abilities

May 26th, 2008 · No Comments   

The latest version of the Things task manager (0.9.2) incorporates synchronization and support for Leopard’s system-wide to-do’s! As has become the norm with Things, the new feature is extremely well thought-out, and in my testing so far it works flawlessly.

This was the big feature I was most expecting, since it gives me back the ability to carry some of my to-dos on my cell phone, with the ability to add new ones or check them as done.

→ No CommentsTags: · ·

Ready-Set-Do! - GTD tool/methodology for Mac (tags: @readlater gtd productivity )
(0)




How to use Things on two accounts on the same machine

May 23rd, 2008 · No Comments   

I am a big fan of Things, the very nice task manager from Cultured Code. I keep both personal and work-related tasks in it, and in my Mac I have two accounts, for personal and work-related use. This leads to me having to run Things on both accounts, while sharing the same database. Here’s how I do it:

  • In one of the two accounts, I created a symlink from ~/Library/Application Support/Cultured Code into the corresponding directory of the other account (my two accounts are named “dza” and “zamboni”, and I created the symlink in “zamboni”:
    zamboni% cd Library/Application\ Support
    zamboni% ln -s ~dza/Library/Application\ Support/Cultured\ Code .

    This makes Things access the same files regardless of which account uses it.

  • Make sure that both accounts can read and write from that directory. In my case, both my accounts belong to the “staff” group, so I simply give the files group-write permissions (you have to do this from the account where the original files are, or from root):
    dza% chgrp -R staff ~/Library/Application\ Support/Cultured\ Code
    dza% chmod -R g=u ~/Library/Application\ Support/Cultured\ Code
  • You have to make sure Things is only run from one account at a time, to avoid them overwriting each other’s changes. To automatically achieve this, I wrote a small script that kills Things if it’s being run by someone else and then runs it in the current account. Simply killing the process is a bit crude, but Things seem to process the signal properly, I have never lost any data by doing this. Here is the script (I saved it as /usr/local/bin/things_launcher):
    #!/bin/bash
    # If it’s running as any user other than me, kill it
    if ps axuwww | grep Things | grep -v “^$USER”; then
    sudo killall Things
    sleep 1
    fi
    # Now run or activate it
    open -a Things
    (note: this will only work if you have set up sudo on your machine to execute commands without asking for your password - I am still figuring out how to use the standard authentication dialog in OSX)
  • Now for the final touch, I used Platypus to create an Application wrapper around my script, so that I can run it using Quicksilver. I named it “Things wrapper”, and you can download it here (or you can create your own using Platypus). I gave it the Things icon, but maybe someone with more artistic talent can come up with a better, more representative icon…
  • That’s it! Just run “Things wrapper” instead of Things, and it will automatically kill other copies of Things, and run it in the local account. If you have it already running, it will simply activate it.

If you find this useful, or if you have any feedback, I would love to hear about it.

→ No CommentsTags: · · ·

Hack Attack: Getting good with Google Reader - Very handy guide to Google Reader shortcuts. (tags: googlereader howto rss tips )
(0)




Firehose - Realtime Twitter Timeline - Real-time display of tweets - quite impressive! (tags: cool flash twitter )
(0)




How to fix IImage Gallery pages after update to Wordpress 2.5

May 13th, 2008 · No Comments   

In one of my private blogs, I use the excellent IImage Gallery plugin to show photographs. After the upgrade to Wordpress 2.5, all of the posts with galleries started failing by showing the message “There is no gallery in this post”. After puzzling about it for a while, I realized that this plugin uses the same [gallery] tag used by the new built-in gallery feature in WP 2.5, which is causing a conflict. Fortunately, IImage Gallery also allows using <gallery>, with angle brackets, which is not intercepted by WP. To change all the posts to use the alternate tag without having to edit each post by hand, I used the following command from the MySQL command line:

update blog_posts set post_content=replace(replace(post_content, '[gallery]', '<gallery>'), '[/gallery]', '</gallery>') where post_content like '%[gallery]%';

After this, all the posts worked correctly again!

→ No CommentsTags: · ·

tms [fernLightning] - Very cool command-line utility to explore Time Machine backups (tags: leopard macosx timemachine tools )
(0)




Removing all extended attributes from a directory tree

May 7th, 2008 · 12 Comments   

Here’s a simple one-liner I came up with to remove all HFS+ extended attributes on all files and directories below the current one in Mac OS X. Useful before creating a tar file that will be shared with non-Mac users (tar in OSX will create additional “resource” files to store extended attributes, which when untared on a Mac will be correctly reinstated, but in other systems will leave spurious hidden files all over the place).


for i in $(ls -Rl@ | grep '^      ' | awk '{print $1}' | sort -u); \
   do echo echo Removing $i ... >&2;  \
   find . | xargs xattr -d $i 2>/dev/null ; done

The space after the caret in the grep command is produced by typing Ctrl-V and then Tab, to insert a Tab character.

→ 12 CommentsTags: · ·

Prune Your Time Machine Backups Selectively - Nice pointer to a new version of GrandPerspective that properly displays usage in a Time Machine backup disk (tags: macosx timemachine tips tools )
(0)




Tales from the Loonybin - Demystifying Mail.app Plugins – A Tutorial - Tutorial on how to write plugins for Mail.app on OSX. Maybe useful some day… (tags: cocoa howto macosx mail.app plugins programming tutorial )
(0)