Sunday, July 24, 2011

Tomato on a WRT54G limited to 25 or so Mbps with QoS - use a faster router for higher speeds

This is a very specific post, if you couldn't already tell by the title - just a tidbit for anyone else curious and trying to make all the junk surrounding them in the world work for them instead of frustrate them.

If you have an internet connection of 25Mbps or less down, and you are using the wonderful tomato firmware on the works-pretty-good linksys/cisco WRT54G, you've been having a great time, things work wonderfully and they will continue to work wonderfully.

However, if you like me use Comcast high-speed internet and your area gets the infrastructure upgrade from DOCSIS 2 to DOCSIS 3 you'll find that you have 50Mbps of bandwidth available, and you might opt for that plan.

At that point you'll realize that tomato running QoS on a WRT54G can't keep up with more than 25Mbps so you won't get all the speed you want.

Never fear though, the works-pretty-well and slightly-newer WRT310N can handle it, and the almost-as-pretty but just-as-functional DD-WRT firmware does the job nicely if you follow the instructions well.

And just for another random tidbit from my life of trying to make things work today, if for any reason you attempt to use a Thule Rapid rail / aero cross bar with their Prologue bike rack, you'll need four more grade 8 1/4" washers per bike rack to get the bolts secure on the aero bar, but the instructions aren't aware of that and they don't give you the extra washers. Great rack, bad instructions, bad testing, Thule. Shame!


Sunday, June 26, 2011

Open links from external applications in a new window in Google Chrome on Mac OS X

I love tabbed browsing. I switched to Firefox way back in the day partially because Firefox allowed tabbed browsing. I recently switched to Google Chrome, which also has tabbed browsing.

I also love virtual desktops. I switched to Linux on the desktop way back in the day partially because it supported virtual desktops. I currently use Mac OS X which has "Spaces", so I continue to have virtual desktops.

However, when you combine the two, you potentially have a problem. If you have a web browser open, but it is not on your current virtual desktop, and you click on a link in a different application (a newsreader, perhaps), do you want that external link to open in a new tab in an existing browser window on a different space, or do you want it to open a new browser window on your current space, and open the link in a new tab on that new window?

Turns out lots of people prefer the second option - they want a new window on their current space with the link opened in it. Now, adults may disagree, and Firefox as well as Safari have a preference setting which allows you to change the behavior to either of those options. Everyone's happy.

Except Google Chrome users. Chrome always opens external links in the most recently used browser window, where ever it is.

This causes some people to be upset, example:

I was also upset. I am a programmer though, and I can make the computer do what I want normally. So I made it do what I want.

1) Download this AppleScript bundle, and unpack it in ~/Library/Scripts/
2) Double-click it (to register it with Launch Services)
3) Open Safari and go to the General tab in the Preferences, and set your app as the default browser.
4) Share and enjoy

A fair bit of credit for making this work goes to Pepjin de Vos - - I repurposed his idea/script to implement my workaround here.

Sunday, May 15, 2011

GTD - automating addition of new email info to an existing Toodledo

This will probably be the last post about migrating from Things to toodledo, as I've got all my most frequently-used workflows automated at this point

The last thing I needed to do after migrating all my data and automating task intake from Mail was automating the addition of new information from Mail to an existing Toodledo task.

The specific use case is that I've already got a task tracked in Toodledo and there is email traffic concerning it - some with important information I'd like to easily reference - but the task isn't done yet. How do you make that information easily referenced? The most useful way in my opinion is to save a link to that message along with some metadata about it, in the note of the Toodledo task.

To do that quickly, I wrote a little Applescript that fishes out the date, the sender, and the message id, and puts that information on the clipboard with the message id embedded in a clickable link. Now you just have to go to the task in toodledo and hit the paste key, and you're all set.

As with my new task creation script, I use Mail Act-On to bind execution of this script to a hot-key and simultaneously chuck the message into an archiving folder - keeping me from mousing as much and keeping my inbox clean.

Here's the script - Copy Message Link.scpt - hopefully you find it useful


Friday, May 13, 2011

GTD - intake automation with Toodledo and

I'm still in the process of converting my task workflows from Things to Toodledo, for reasons mentioned previously

One of the most important things for me is to have an automated workflow for task intake from email people send me to my task management application.

For (my email application) I use Mail Act-On so that I can have a keyboard shortcut run an Applescript. For Toodledo I use Applescript to create a new email message to my Toodledo email address for new task creation, and I prepulate the email with the original subject, and an email body that contains information about who the email was from, when it turned up, and then a URL that will open the email in if clicked.

I leave the message open so I can edit the Subject line (adding toodledo email syntax about when it is due and what folder to put it in etc) then I send it away and move the message out of my inbox into a "to-process" folder where things are archived

The end result is a new toodledo task with a note that contains a link that will open the message. Fabulous.

Here's the script

Friday, May 6, 2011

GTD - migrating from Things to Toodledo - exporting Things data

I'm migrating from Things to Toodledo for task-tracking, in order to satisfy a couple of new (to me) use cases that I can't handle with Things, but that it appears Toodledo will allow me to handle.

I have more than 3500 completed tasks in Things though, and I treasure my ability to search through the completed tasks to turn up info used for new tasks. It isn't acceptable to me to lose that data in the transition, but I don't want to have multiple task apps, so I want to migrate all of my data from Things to Toodledo.

Things supports certain things Toodledo doesn't, so the first thing you have to do is alter your Things data so it's in a style Toodledo can accept, and that may be imported well.

First thing is that Toodledo doesn't really support Projects. It supports "Goals" but to tell you the truth, migrating that data isn't easy, and I didn't attempt it. I simply made my Projects into Areas on Things, and moved the tasks in Things to those Contexts.

Toodledo also doesn't support delegation the same way Things does. In order to migrate your delegates, the best way I could think of to map it was to have a "Delegated" Context, and then take the Things delegate's name and tag the thing with it. That way you can search for specific delegates on Toodledo post-migration, and you'll know something is delegated, at least.

On Toodledo, you'll need to create Folders for each Area from Things, along with the "Logged" and "Delegated" contexts.

The second thing is that Toodledo doesn't allow you to import completed tasks. This is troublesome for me because I want that history. I settled on putting all my completed tasks in a "Logged" context so at least I could get them in Toodledo, then mark them all completed later.

Finally, Things URL format in notes needs massaging in order to generate clickable links on the toodledo site, and I implemented some logic to do so.

That's about it - if you run this Applescript from within Things, once for the "Next", "Someday" and "Logbook" lists, uploading to the toodledo site each time, you'll have all your data in there.

Then you just need to mark the things in the "Logged" Context as completed, and you've finished your migration. I used TaskSurfer to do that since the interface was so fast for completion-marking.


GTD - migrating from Things to Toodledo - why?

As mentioned previously, I'm not a strict GTD follower, but I'm not far from it and I am an obsessive task-list-maker. It's the only way I reliably get things done.

I've been using Things from Cultured Code for a long time - long enough to have created and completed 3617 tasks, actually - and it has worked fantastically for me. I love the interface, and it works well.

However, it does not have cloud sync working yet (though I understand it is in beta), and even with cloud sync it doesn't handle delegation or 3rd-party information sharing well. That was never a problem for me before, but I recently has a new use case turn up as a requirement for me and my task list: I needed to provide visibility into my tasks to 3rd parties.

To me, that means that 3rd parties should be able to look at my task list at any time, with no extra effort on my part. Requiring effort on either my part or the 3rd parties part would be too inefficient for something as constantly used and updated as my task list. Further, it should be possible to swap tasks back and forth with people if I want, with a minimum of effort. Things simply can't handle that.

Some features that Things has which I must maintain are full-featured offline functionality, a feature that eliminates most issue-tracking software like JIRA. I must be able to automate task intake from to the task list as I had before. Finally, I must be able to access and modify my task list on my phone, in sync with the list on my desktop.

For all these reasons, I've decided to migrate to Toodledo - it appears to satisfy all these requirements, with the possible exception of good -> Toodledo integration, but I'm aware of a couple ways to do it already just not quite as good as I like yet. At present it appears I'll use Toodledo's web site for 3rd party access, their iPhone app for phone access, and TaskSurfer for a desktop client. I'll continue to use Mail Act-On for integration and I will either use Toodledo's email interface for task queueing from, or I'll figure out how to drive TaskSurfer via Applescript.

The next couple posts will detail the scripts I've written in order to implement the migration from Things to Toodledo so that I don't lose my existing data from completed Things tasks as well as Things in progress.

GTD - intake automation with Things and

I'm not a strict Getting Things Done / GTD follower, but I do try to keep my inbox from becoming my todo list. It's easy to slide into that habit, but the inbox can't tell you anything about deadlines or priorities, so I really like to have a task management program outside my mail program, where I can line up tasks based on something besides when someone sent me mail.

I use Things from Cultured Code in order to manage my tasks, and I use as an email client. I get mail rapidly enough that the simple act of creating a task in Things in response to a mail takes a significant amount of time each day - a great target for automation.

My first goal was simply to have a keyboard shortcut that would pop up a quick entry task creation dialog for Things in response to an email, while in That's easily done, but while we're automating why not make things significantly better? My definition of "better" here is to create the Things task with the email subject used as the task name, then the task notes prepopulated with a hyperlink to the email, made in a way that is stable no matter where the email is saved. Finally, I want the email automatically moved to an archive folder in so my inbox is decluttered. The final bit of glue is the plugin "Mail Act-On" which lets you create rules triggered by keyboard shortcuts.

I have a Mail Act-On rule set up in response to Ctrl-T that runs the Applescript I use to automate things, then moves the message to a folder.

All pretty easily done, and something I use all the time. So much in fact that I'm sharing it here - use and enjoy: NewThingsToDo2.scpt