I’m currently using GTDAlt in TextMate as my GTD processing system. It’s a text based system, so it’s upgradable, portable, etc.
Through the TextMate bundle framework, you get some nice collating of contexts, etc.
GTDAlt does rely on some proprietary syntax, but it’s pretty basic and easily parsable.
There is rudimentary support for iterating through items in an inbox.txt file to generate GTD items.
I created an applescript which will take the selected message in Mail.app and create a properly formated item, using the subject and message: url (you must have MailTags installed so the message: protocol is recognized).
This means I’ll get action items with links to specific messages in my GTD system.
I partner this with a Mail Act-On rule… so when I hit ctrl-1, a GTDAlt item gets created, the message is tagged “@action”, and it’s sent to my one archive folder in one step.
In true GTD fashion, this should only be used for messages that take longer than 2 minutes to respond to. In reality, I need to get better at firing off quick responses to things (or liberally using the delete key). Otherwise, it’s likely I’ll use this to just procrastinate email items away into a black hole.
read comments (0)As a refinement to an earlier script I posted, I made some modifications to my suggested news reading workflow.
The applescript in this post will take the currently selected article in NetNewsWire, prompt the user for tags about the article, and then create a web archive of the article in DEVONThink.
It attaches the referral URL to the DEVONThink record, so when it creates the archive, it will actually fetch the article from the original source (ex. del.icio.us posts get the original article)
Since DEVONThink doesn’t really do tags, I’ve co-opted the “comments” field for this purpose.
I’ve attached this script to a hotkey using Red Sweater’s FastScripts (cmd-ctr-option-/) Of course, a more hipster way to do this might be to consider quicksilver triggers.
Here is the workflow:
Note: if the article is something that I think I would want to read immediately, I can either tag it with “@read” or hit return in NNW to pop it up in a browser window. In the latter case, it’s critical that I seperate the *scanning* mode from the *reading* mode. I accomplish this by setting a timer (say 15 minutes per day) where I’m just scanning headlines for read-immediates or archivable articles and another timer for my reading stuff. From my browser, I can go on to create archives if I determine it’s worth saving.
Things to do
tell application "NetNewsWire"
try
if exists selectedHeadline then
set h_comment to text returned of (display dialog "Enter Tags:" default answer "")
set this_headline to selectedHeadline
set h_mdate to get current date
set h_title to title of this_headline
set h_note to description of this_headline
if exists date published of this_headline then
set h_when to date published of this_headline
else
set h_when to date arrived of this_headline
end if
set h_URL to URL of this_headline
set h_note to "<html><body>
read comments (1)I just posted the dorkbot6 wrapup.
read comments (0)The mephisto liquid tags, drops, and filters are not very well documented. You have to look in the source code (specifically drop_filters.rb) to discover what’s available.
I was able to add rendering of tags/keywords by using:
{{article | linked_tag_list}}
in my template.
read comments (0)Today I modified this script which facilitates Yojimbo importing from NetNewsWire
I’ve set up a smart folder in NetNewsWire that grabs the latest 50 flagged headlines from any feed.
I needed this script because I had a technorati watch feed for dorkbot and I wanted to collect blog mentions to send around. I was just flagging articles that mentioned dorkbot-austin and wanted to export a list of bookmarks.
With this, the workflow is now:
Potential problem: This makes it really easy to procrastinate making decisions on what to read and what to do with what I read. Following this strategy will lead to a large pile of unsorted links which I’ll very likely will never find the time to sort through.
I think DEVONThink does a better job of scanning and grouping incoming pieces of text.
I should probably rewrite this to send flagged content directly to DEVONThink. Then, instead of queueing up a long list of articles to read, I’ll let DEVONThink suggest articles for me to read as I do research. Anything that I think I’d want to read immediately I could tag with “@Read” or something similar.
tell application "NetNewsWire"
try
set userInput to text returned of (display dialog "Enter Tag:" default answer "untagged")
set oldDelims to AppleScript's text item delimiters
set AppleScript's text item delimiters to {", ", ","}
set h_tags to text items of userInput
set AppleScript's text item delimiters to oldDelims
if (index of selected tab is not 0) then
set tabnum to index of selected tab + 1
set taburls to URLs of tabs
set h_URL to (get item tabnum of taburls)
set tabtitles to titles of tabs
set newItemTitle to (get item tabnum of tabtitles)
tell application "Yojimbo"
--set newItem to make new bookmark item with properties {name:newItemTitle, location:h_URL}
set newItem to make new web archive item with contents h_URL
add tags h_tags to newItem
set flagged of newItem to true
set isFlagged of h to false
end tell
else if exists selectedSubscription then
repeat with h in headlines of selectedSubscription
set h_URL to URL of h
set h_title to title of h
set isFlagged of h to false
tell application "Yojimbo"
--set newItem to make new bookmark item with properties {name:h_title, location:h_URL}
set newItem to make new web archive item with contents h_URL
add tags h_tags to newItem
set flagged of newItem to true
end tell
end repeat
else
error "No headline is selected."
end if
on error error_message number error_number
if the error_number is not -128 then
try
display alert "NetNewsWire" message error_message as warning
on error number error_number
if error_number is -1708 then display dialog error_message buttons {"OK"} default button 1
end try
end if
end try
end tell
read comments (0)UPDATE (2007.03.20.084041): Don’t do this. It’s an awful hack and will grind your computer to a halt.
I want to hack the textmate blogging bundle to do a full download of all posts in a blog and save those posts to local disk.
First, I just hacked the bundle to allow user to fetch any post from the blog.
Note: This is a slow hack and should only sparingly be used.
Knud M√∂ller talks about using XMLRPC to get all posts from a blog. I opted to use the “number of post requests is ridiculously large” approach. Mephisto implements the GetRecentPost call with a limit indicating number of posts to retrieve, so it’s still only one database hit (but creates a whole lot more objects in memory).
# `/Applications/TextMate.app/Contents/SharedSupport/Bundles/Blogging.tmbundle/Support/lib/blogging.rb`
def fetch
begin
# Makes sure endpoint is determined and elements are parsed
current_password = self.password
require "#{ENV['TM_SUPPORT_PATH']}/lib/progress.rb"
result = nil
TextMate.call_with_progress(:title => "Fetch Post", :message => "Contacting Server “#{@host}”…") do
result = self.client.getRecentPosts(self.blog_id, self.username, current_password, 100000) # HERE IS WHERE YOU SPECIFY NUMBER OF POSTS TO RETRIEVE
end
if !result || !result.length
TextMate.exit_show_tool_tip("No posts are available!")
end
@mw_success = true
if self.post = select_post(result)
TextMate.exit_create_new_document(post_to_document())
else
TextMate.exit_discard
end
rescue XMLRPC::FaultException => e
TextMate.exit_show_tool_tip("Error retrieving posts. Check your configuration and try again.")
end
end
This works fine. Next up:
read comments (0)