Tuesday, January 31, 2006

Goo URLs? Yes, please.

Hypertext is the original system for traversing associations between Things.

In a previous blog entry (Goo URLs? No Thanks) I mentioned that I didn't want to encumber The Goo with having to address Things using http://really_long_unambiguous_urls/that/are/a/pain/to/type. But The Goo sticks Things together by association and hypertext offers the path of least resistance!

For example, ideally I want to browse my Perl code in hypertext and then jump straight to an editor and then jump back again as quickly as possible (to minimise context switching). A recent patch by Jonas Fonseca to the Elinks browser unfortunately didn't quite do what I needed but he suggested an even better solution: Goo URLs!

To enable your own protocol in Elinks all you need to do is add this to ~/.elinks/elinks.conf:
set protocol.user.goo.unix = "/home/search/dev/goo %u"
set protocol.user.goo.unix-xwin = "/home/search/dev/goo %u"
I now have Goo URLs! This means if I want to edit a given method I can use a URL like this:
goo://?method=someMethodDeepInTheModule&filename=/tmp/MyModule.pm
Clicking on this URL launches an external text editor (e.g., nano, vi, emacs etc), starting at the appropriate line and means I can edit the file in place and jump back out again - quick!

It turns out the same method works in Firefox too. If you search on Trexy you will find my search trails for "firefox registered protocol". But here is a summary of what I found. To add a new protocol to Firefox do the following:
  1. Type "about:config" in the location bar.
  2. Right click, select New --> String.
  3. Name of string should be: "network.protocol-handler.app.goo"
  4. Value should be the path to your executable: "/home/search/dev/goo.sh"
This activates goo:// URLs in Firefox. I use KDE on Linux so I need to launch a window to wrap the application with a shell script (e.g., /home/search/dev/goo.sh):
#!/bin/bash
# launch the editor in a new window
/usr/bin/konsole -e /home/search/dev/goo "$1"
This means the Goo can be fully integrated with a graphical browser (Firefox) and a console based browser (Elinks) too.

There is now no technical impasse to traversing from high level tasks and ideas all the way down to editing, compiling and testing a small Perl script buried in the file system. Cool! ;-)

Saturday, January 28, 2006

Care-O-Meter Feedback



The team has been using the Care-O-Meter for a week and thanks to their feedback I've made quite a few changes:
  • private emotions - how you feel about doing a job/task is now kept private
  • free text searching - you can search all Things for keywords
  • you can choose to notify a specific email address when the status of a Thing changes
More changes are on the way!

More New Goo ...

I haven't posted a blog entry recently because my Care-O-Meter has filled up with lots of Things with a high care factor - sadly Goo blog entries are being pushed down. But today I feel like doing one!

Goo developments continue. I've written a file finder for quickly finding Things in GooSpace. Here is a screen shot.

The motivations for this are:
  • reduce context switching - I need to jump from the Care-O-Meter to the underlying files as quickly as possible
  • reduce the need to navigate hierarchical directories - no more up, down, up, up, down and all the context switching that entails - just jump to the file I want!
  • simplify the .goo configuration files - we now no longer need to store locations per Thing
  • quickly resolve filename clashes that are found in multiple locations
  • gracefully handle mapping Perl::Module::Names to the underlying file
Each user has a list of directory locations in which to look for file Things and I've made a design decision to store this in the database instead of flat configuration files. Goo actions will also be stored in a MySQL database along with each user's trail.

In the next week I hope to hook up with elinks so I can find a file and then edit it in place and then jump back to the Care-O-Meter.

Thursday, January 12, 2006

An Emotional Goo Debut

After spending two weeks reviewing "tracking", "task" and "bug" management systems I decided to stick with The Goo. Why?

The other task management systems were too harsh. Is that task priority 87 or 88? What's more none of them tuned in to how people really use them. I don't know about you, but I always end up scouring over the task/bug/project/todo list looking for what I feel like doing next.

So why not create a task management system that lets you tell it what you feel like doing?

Enter the Care-O-Meter. It shows a ranked list of Things you care about that you can assign a care factor to and search by what you feel like doing next. Thanks to Elinks I can access it via the console and the rest of the team at Trexy.com and Turbo10.com can access it from their graphical browsers too!

This is an alpha version so it's not 'industrial strength' like RT. Then again it is designed to be really malleable (i.e., squishy) and thanks to RT's brilliant idea of polymorphic "tickets", it lets you care about lots of different "things" (i.e., bugs, tasks, ideas, pain, projects etc).

Anyway why not see for yourself? Check out the new tour.

Uwe Voelker has even offered to turn it into a Catalyst web application! Stay tuned ...

Sunday, January 08, 2006

Email Meets Web Meets Console

The Goo is all about sticking Things together. There is one big queue of Things I deal with that feels largely disconnected from the rest of my work yet is very important: incoming email.

Important events come in via email (e.g., server down, database replication failed, friend is getting married, have a baby etc) but also unimportant events (e.g., email spam).

I want The Goo to help file events into my Care-O-Meter, manage my event horizon and generally help stick Things together automatically so I don't have too.

So why not pass this queue of incoming email via a Goo-powered filter first? The email filter can scan incoming emails for other Things and associate them with existing Things. But perception, and association is only part of the problem. The Goo needs to take actions too. Actions include adding hyperlinks to all Things found in the email, inserting an event high up into my Care-O-Meter (e.g., friend is getting married) or performing an automatic action (e.g., restart server), or injecting a special Goo-signature into the email that contains URL-based actions to minimise context switching.

Now that would help stick Things together. ;-)

Web Meets Console

Since breaking up with RT I've been ruminating on a way to unify the web with the command-line features and profiling functions of The Goo. Can I find a web-based system for handling tasks/people/events/bugs/ideas/pain etc that can be easily unified with the rest of The Goo? I need the web-based interface for the rest of my team - this is a must have - but I don't want to go to the bother of creating the interface twice.

Ideally I want to blaze a trail from the higher order Things (e.g., pain: bugs are bad -> task: reporting system is failing -> bug: cronjob fails at the start of the month) to the lower order Things (line 618 CronJobManager.pm) and back again while staying in the one 'environment'. I don't want to do a heavy context switch from browser to command line. I also want to record *everything* in a trail.

The great news is I've found a solution! Elinks. A console-based browser derived from Lynx. It renders forms, tables and colours, but most importantly it executes local CGI scripts. This means we can call local Goo actions based on links in the interface. There was one slight hiccup with calling external editors like vi and nano but one of the project maintainers has coded a patch in the latest unstable release.

Here are some screenshots of this new hybrid console/web Goo in action:
I'm really excited about the future of The Goo now it has two environments to thrive in.

Tuesday, January 03, 2006

The Glass is Not Big Enough

If ever I get asked, "is the glass 'half full' of 'half empty'?", my standard answer is, "the glass is not big enough!" ;-)

Perception is about the frame of reference we use to see things but also the quantity of stuff we can stuff into the frame! My brain is not big enough to perceive all incoming events at once! ... so a queue forms ... and then events drop off my perceptual horizon. Ouch.

So ideally I want to perceive more, but not have to deal with all those unruly things bustling in the queue and I also want to make sure important things don't fall below the event horizon. But perception without action is pretty useless. Why queue Things up, if, when they get to the top of the queue nothing happens? You might as well have not perceived it in the first place.

I need an omnipotent helper, scanning the far event horizon, managing my incoming event queues so I can have greater perceptual breadth while at the same time preserve my attention for the really important stuff and delegate simple actions to my omnipotent helper.

Hmmm. Sounds like a lot ... but if I can solve this pain it will help me "stick Things together" better - which means this solution needs to fall within the ambit of The Goo. Stay tuned for more ideas to help solve this pain ...