Pennyworth Punch Clock 1.0b1

After a decent amount of work, I’m happy to announce the release of the first application designed specially for Pennyworth: the Pennyworth Punch Clock.

The Pennyworth Punch Clock (PPC) is a time tracking utility for monitoring the predictions produced by Pennyworth (activity, location, social context) along with other relevant events (active applications, current websites). PPC uses a combination of automatic and manual logging to create useful reports about how you spend your time.

The software is available on the Pennyworth website. I don’t have many instructions for getting started posted, but I will be working on those this weekend. However, if you have any questions or comments, please let me know via e-mail or in the comments below. This is an early release of an application that has a lot of potential, so I appreciate all the feedback that I receive.

July 24th, 2008 - Posted in Other Apps, Pennyworth Punch Clock | | 0 Comments

Pennyworth 1.1

Pennyworth 1.1 is now available for download.

This update fixes a variety of bugs and adds support for disabling some sensors from within the application preferences.

Prerequisites

MacOS X 10.5 “Leopard”

Growl (Recommended): Pennyworth can be used without the Growl notification system by viewing the current predictions, but this occupies precious screen real estate and you attention. In order to receive visual notifications of updated predictions, I recommend that you install and configure the Growl notification system before running Pennyworth.

Source

There is not a source distribution available yet, but if you’d like the source code, it is available via Subversion at

http://context-macosx.googlecode.com/svn/trunk/Tools/Applications/Pennyworth/

The source requires Xcode 3 to build.

Bugs, suggestions, or comments?

Please post any feedback in the comments below or send it to pennyworth@aetherial.net. This is early release software, so there will be bugs, and the application will only improve when problems are identified and submitted.

July 17th, 2008 - Posted in Pennyworth | | 0 Comments

Updated thoughts (and to-do’s) regarding the Pennyworth Punch Clock

Thanks everyone who sent in comments and suggestions. They were immensely helpful.

I’ve gone ahead and added the following to my PPC to-do list:

1. Application Stream: This will be an optional time stream (enable in the preferences) that can be turned on to track which applications are active at any given slice of time.

2. URL Stream: This will be an optional time stream that tracks the current URL of the Safari and Firefox web browsers. I’ll probably break this into two time streams, one for each browser.

3. Rename the “Statistics” tab to “Reports”: I plan on implementing this as an en export option that spits out your time streams as an XML file. Scripts and other programs can be run on this file to generate specific reports of how time has been spent. I’ll include some options for dropping such scripts in the application support folder for running the reports straight from the interface.

4. AppleScript support: Initially this will be implemented as two main classes of commands: reading and writing. Reading will allow calling scripts to get a full lists of slices in a given time slice (”tell app ‘PPC’ to return every slice of the timestream named ‘Foo’). I’m also planning on implementing a feature where calling AppleScripts can log slices to streams (”tell app ‘PPC’ to log ‘Eating’ to timestream named ‘Foo’).

Fortunately (with the exception of the reporting functionality), I’ve already written most of this code for other projects. I’m going to keep plugging away and see if I can have an early beta version released sometime next week.

July 15th, 2008 - Posted in Other Apps, Pennyworth | | 0 Comments

Introducing Pennyworth Punch Clock

One of the simultaneously exciting and frustrating things working on Pennyworth is the system’s potential. On one hand, I think that the Pennyworth system has within it the right stuff to really make computing more convenient, effective, and less frustrating. On the other hand, I can’t really demonstrate how this vision “works” without some sort of obvious application. Pennyworth by itself is able to take action on context changes using the built-in AppleScript functionality, but regular people don’t seem to really get this.

One of my major tasks over the summer is to conduct a directed search for the killer app that really lets Pennyworth shine. I’m following the Growl model of releasing the system as a service that is accessible to other applications, and I need to find Pennyworth’s Adium.

While I wait for a project proposal to snake through the appropriate review boards (a cost of doing business in academia), I’ve been thinking about applications that I could release to the general public that helps me explore this space to begin to understand what people want and need. I am happy to say that I’ve been working on a fairly simple application that readers of this weblog might find useful.

Pennyworth Punch Clock (PPC) is a time tracking application that uses Pennyworth to help you recall and analyze how, where, and with who you spend your time with. PPC does this by using the idea of time streams and time slices. A time stream is a timeline that describes the temporal properties of one aspect of your person. For example, a location stream might look like “home, train, school, park, school, train, home”. The elements of the stream are called time slices. In other words, a stream is an ordered collection of slices.

By default Pennyworth exposes three time streams: Activity, Location, and Social Context. PPC listens for changes in these streams and logs them automatically. However, you will likely prefer to define other streams that you populate automatically: projects, official roles, billing rates, phone calls, and so on. To be honest, I expect that my notion of useful time streams differs greatly from the next person, and PPC is designed to accommodate these differences by being as general as possible.

The application is still in its early stages of development, but I wanted to publish a few screenshots of the work in progress to spark a conversation about who might consider using this software and how.

Pennyworth Punch Clock: Main Screen

This first window shows the main time log. Time streams are in the upper half of the split pane and slices logged to each stream are visible in the lower half. In this screenshot, I have the “Activity” stream selected. The logs may be filtered by time as shown with the pulldown containing various options for narrowing or expanding the scope of the log.

In user-created streams (”Activity” is not one of them), you can log new slices to a stream by clicking the “Update Selected Stream” button. This invokes a small dialog where you can select a previously-used slice name or enter a new one.

Pennyworth Punch Clock: Preferences

In the preferences tab, you can create or remove new user-defined streams in addition to setting the standard update checking options. In this screen, I’ve created a “Project” stream that I can use to tag time periods when I’m working on different projects. If you click the magnifying glass button, the “Projects” time stream details appear, including an associated color and a list of saved values:

Pennyworth Punch Clock: Stream Editor

This is some of the more mundane aspects of the interface, and I’d be interested in learning more from you about what you might find useful in an application such as this. Personally, I plan on using this application to accomplish the following tasks:

  • Create a finer-grained log of how I spend my time. In particular, I am interested in tracking how much time I spend on different projects for different “clients”.

  • Better understand how I spend my time throughout the day. I’d like to have some hard data about how much time I spend dealing with e-mail, idly surfing the web, and so on in order to be able to identify and fix particular problem areas. I’d also like to better understand when I am doing these things (during lunch, late afternoon, etc.).

  • Generate better time estimates for getting things done. At the moment, I don’t have enough information about how long it takes to do something like set up a web site, write a 10 page paper, etc. to come up with anything better than off-the-cuff predictions about how long something similar will take in the future.

Once I get the statistical and reporting features of the application in decent shape, I plan on thinking about how to make this application proactive in the sense of providing prompts to the user. For example, I may set up a built in prompt that nags me when the system detects I’m playing games, but I haven’t allocated time for gaming. Another prompt would be one that encourages me to do a little exercise and stretch after programming for a long stretch to reduce the chances of RSI.

I am interested in hearing from any interested readers out there. If you had a convenient and flexible tool for tracking and tagging how you spend your time, what would you do with it?

July 14th, 2008 - Posted in Other Apps, Pennyworth | | 2 Comments

Pennyworth 1.0

Pennyworth 1.0 is now available for download.

This release includes some major bug fixes and feature enhancements. Please see the notes below.

New Features

Bonjour Listener: Remote clients can now log observations to Pennyworth by sending a REST request to

http://HOST:PORT/log?name=SENSOR_NAME&value=SENSOR_VALUE&key=KEY&duration=DURATION

Local hosts running Pennyworth can be located using the “_pennyworth._tcp” Bonjour name. The server must be enabled in the preferences and a key must be selected for the server. (This is much like a password that the client must provide to verify that it’s logging to the proper Pennyworth installation.)

Face Count Sensor: This sensor uses attached cameras (such as the iSight) to count the number of recognizable faces visible at set times. (Face recognition is achieved using the OpenCV library for computer vision.) This feature must be enabled in the preferences.

Bug Fixes

This release fixes the bug where the system would prompt for the location of the “Shion” application.

Prerequisites

MacOS X 10.5 “Leopard”

Growl (Recommended): Pennyworth can be used without the Growl notification system by viewing the current predictions, but this occupies precious screen real estate and you attention. In order to receive visual notifications of updated predictions, I recommend that you install and configure the Growl notification system before running Pennyworth.

Source

There is not a source distribution available yet, but if you’d like the source code, it is available via Subversion at

http://context-macosx.googlecode.com/svn/trunk/Tools/Applications/Pennyworth/

The source requires Xcode 3 to build.

Bugs, suggestions, or comments?

Please post any feedback in the comments below or send it to pennyworth@aetherial.net. This is early release software, so there will be bugs, and the application will only improve when problems are identified and submitted.

July 5th, 2008 - Posted in Pennyworth | | 0 Comments

Pennyworth 1.0b9

Pennyworth 1.0b9 is now available for download.

This release includes some major bug fixes and feature enhancements. Please see the notes below after installing.

Installation / Upgrade Notes

Pennyworth 1.0b9 includes a variety of new and tweaked sensors. Consequently, you need to reset your machine learners. This functionality may be accessed from the preferences:

Resetting the learners will require that you retrain the system once more. I apologize that this is necessary, but it was important that I make the necessary changes. I don’t anticipate that this will be necessary in the future.

You will also need to download the updated AppleScript sensors from the Script Manager. These sensors (as well as any custom ones) will need to be in the AppleScript/Sensors folder under the Pennyworth application support folder.

New Features

Native calendar sensor that allows Pennyworth to more efficiently use iCal (and other CalendarStore-based application) data. (Don’t forget to delete your iCal AppleScript if you installed one.)

Enhanced learner view that allows users to collapse parts of the decision tree for better navigability.

Night and day sensor.

Bug Fixes

Various machine learner tweaks

More robust wireless sensor

User interface tweaks

Prerequisites

MacOS X 10.5 “Leopard”

Growl (Recommended): Pennyworth can be used without the Growl notification system by viewing the current predictions, but this occupies precious screen real estate and you attention. In order to receive visual notifications of updated predictions, I recommend that you install and configure the Growl notification system before running Pennyworth.

Source

There is not a source distribution available yet, but if you’d like the source code, it is available via Subversion at

http://context-macosx.googlecode.com/svn/trunk/Tools/Applications/Pennyworth/

The source requires Xcode 3 to build.

Bugs, suggestions, or comments?

Please post any feedback in the comments below or send it to pennyworth@aetherial.net. This is early release software, so there will be bugs, and the application will only improve when problems are identified and submitted.

June 22nd, 2008 - Posted in Pennyworth | | Comments Off

AppleScript Manager

I’ve recently put the finishing touches on a new Pennyworth feature: the AppleScript Manager.

AppleScript Manager

This is an within-application interface for finding and deploying new Pennyworth AppleScripts with a minimum of fuss. New sensors and actions can be uploaded to the Pennyworth website. These new scripts will show up in the interface above, allowing you to install them with one click.

Once the scripts are installed, you can edit them by double-clicking them in the table view to invoke Script Editor. It’s a minor feature, but one that should save you some trips hunting for these files within your Library folder.

This feature will be out in 1.0b8.

April 28th, 2008 - Posted in Pennyworth | | 1 Comments

Pennyworth 1.0b7

Pennyworth 1.0b7 is now available for download.

This release includes some minor bug fixes and a new power source observer. I expect that this new observer will be useful for laptop-based road warriors.

I also want to use this as an opportunity to draw attention to the new Pennyworth website. The new Pennyworth website will replace this one as the primary distribution point for Pennyworth. The new site is intended to be a fairly static site with information about the application for users and developers. I’m still tweaking the site - so send me your comments and thoughts - but I needed to “ship” some time.

In addition to the new site, I set up a Pennyworth Google Group in order to foster a freer conversation about the program than exists now. If have any interest in the application and would like to talk about it, this group is the place for you.

Finally, with this new version, the Pennyworth appcast has been moved to

http://pennyworth.aetherial.net/appcast.xml

so update your bookmarks accordingly.

Prerequisites

MacOS X 10.5 “Leopard”

Growl (Recommended): Pennyworth can be used without the Growl notification system by viewing the current predictions, but this occupies precious screen real estate and you attention. In order to receive visual notifications of updated predictions, I recommend that you install and configure the Growl notification system before running Pennyworth.

Source

There is not a source distribution available yet, but if you’d like the source code, it is available via Subversion at

http://context-macosx.googlecode.com/svn/trunk/Tools/Applications/Pennyworth/

The source requires Xcode 3 to build.

Bugs, suggestions, or comments?

Please post any feedback in the comments below or send it to pennyworth@aetherial.net. This is early release software, so there will be bugs, and the application will only improve when problems are identified and submitted.

April 20th, 2008 - Posted in Pennyworth | | 0 Comments

Pennyworth update, Growl tweaks, and context-aware notification systems

I wanted to post an entry documenting where Pennyworth is now and some of the next steps I am taking with respect to its development and my own research.

Pennyworth

The C4.5 decision tree implemented in the last release has proven itself to be a much better “brain” than the previous machine learner. I’ve been running Pennyworth fairly constantly for the past week and it’s picking up the context as it should and I find myself training it only on the rare occasion to correct the model when it’s seeing something new. I’m quite pleased with how this has worked out.

That said, I’m contemplating at the moment removing the “interrupt me every X seconds” training mode. This is a fairly standard practice to use in evaluating machine learners (collect a representative sample of features to label and evaluate). However, in the context of this particular machine learner and the user’s interaction with it, I think that this method is unnecessarily burdensome and doesn’t really help the learner. In any case, if a time-based training mode remains in Pennyworth, I’ll be advocating the “train it when it’s wrong” approach in the documentation (that I need to write).

Growl

Pennyworth is designed to work with the Growl notification system, and I’ve been refining both programs so that they can operate in a more harmonious manner. Pennyworth now has a “Suppress Growl notifications” preference in the development build. This is intended for those of you who become annoyed by all of the notifications Pennyworth emits on context change.

I’ve also contributed a patch to the Growl developers that adds support for choosing an appropriate notification style or sound effect through AppleScript. Combined with Pennyworth’s AppleScript-based action-taking component (I need a better name for this), Pennyworth can control Growl and its notifications. This leads us to…

Context-aware notification systems

Last summer when I began working on a context-sensing platform for MacOS X, my goal was to build a context-aware notification system that changed its behavior in order to present the best style of notification, given the user’s state. The fundamental premise underlying this idea is that not all notification styles are appropriate for all situations. For example, a low-interruption notification style is appropriate for “unrelated” information when the user is heavily focused on a specific task. (See “Attuning Notification Design to User Goals and Attention Costs” by McCrickard & Chewar for more details.)

With the modifications to Growl, I can now use Pennyworth+Growl to begin exploring this space. I implemented an example of this over the weekend that worked quite well in my own tests. My specific problem was that I don’t like getting frequent notifications when I am gaming. Due to the MacOS X display system, overlaying a notification on an OpenGL canvas flickers the display and reduces the frames drawn per second (FPS). So, I wanted to change the notification style of two applications when I’m playing Warcraft: Pennyworth and Cidney.

I wanted to eliminate Pennyworth notifications because they are a frequent offender when I temporarily switch out of WoW to check mail or the web while I’m playing. When I do one or the other, I get this rapid sequence of “Activity: E-Mail”, “Activity: Web Browsing”, “Activity: World of Warcraft” messages when I’m multitasking this way. They don’t do me any good and just end up annoying me.

Likewise, when I’m playing WoW, I’m often not interruptible because I’m playing the Battlegrounds. So, when I receive an incoming phone call and notifications from Cidney (a desktop-based virtual Caller ID program), I’d rather listen for the custom ringtones that I’ve assigned to important people rather than be interrupted with a visual notification.

Given these constraints, I put together a script that implements the following pseudocode to deal with this contextual situation:

    if Activity is “Playing World of Warcraft”:

      tell Growl:

        Use the Null notification style for World of Warcraft
        Use the Null notification style for Cidney
    else if World of Warcraft is not running:

      tell Growl:

        Use the Smoke notification style for World of Warcraft
        Use the Smoke notification style for Cidney

Basically, this script tells Growl to use an invisible notification style the first time it detects me playing World of Warcraft. When I switch activities, it checks if WoW is still running before re-enabling the notifications for the two applications. Since I will probably be coming back to Warcraft if it’s still running, it doesn’t re-enable the notifications until I quit the program.

In an ideal world, I’d be able to refine this script a bit more by having it detect when I’m within an attention/focus-heavy context within World of Warcraft. When I’m playing the battlegrounds, interruptions are not okay. However, when I’m scanning the auction house or traveling from one zone to another, interruptions are acceptable. Unfortunately, until I am able to poke within the WoW process to determine what I’m doing in-game, this fine-grained, within-application context sensing probably isn’t possible. (Though, as I type this, a birdie in my head is whispering “make an add-on”.)

The example above is just one instance of how we can use context-aware notifications within our computing environments. “World of Warcraft” may be substituted with “Writing Novel” or other attention-heavy tasks. As long as users are okay writing AppleScript to define the relationships between context and notifications, the current system will be adequate and useful. I hope that it’s clear how a user could add other specialized configurations by simply adding conditions to the if/else statement above (e.g. “else if Activity is ‘Watching Film’ then turn off all notifications”).

I’ll be packaging up the various parts of this system with the next release of Pennyworth for those interested in defining their own context-aware notification configurations and replicating the above.

In a future post, I may think about the potential of adding a machine learner that determines the right combinations of styles and contexts for the user. The script above could easily be intuited by a decision tree, given access to information such as the current notification styles. I also haven’t touched on the idea of taking action on context changes (”play some opera when I’m reading, play some trashy Euro-techno when I’m programing”). I’ll be bringing this idea up in a later post when my thoughts become a bit more organized on the topic of the types of context-aware applications that may be built in addition to notification and home automation systems.

April 13th, 2008 - Posted in Pennyworth | | Comments Off

Pennyworth 1.0b6

Pennyworth 1.0b6 is now available for download.

This release includes the smarter C4.5 decision tree, the label management interface, and a new network observer that determines the IP networks your computer currently belongs to.

Prerequisites

MacOS X 10.5 “Leopard”

Growl (Recommended): Pennyworth can be used without the Growl notification system by viewing the current predictions, but this occupies precious screen real estate and you attention. In order to receive visual notifications of updated predictions, I recommend that you install and configure the Growl notification system before running Pennyworth.

Source

There is not a source distribution available yet, but if you’d like the source code, it is available via Subversion at

http://context-macosx.googlecode.com/svn/trunk/Tools/Applications/Pennyworth/

The source requires Xcode 3 to build.

Bugs, suggestions, or comments?

Please post any feedback in the comments below or send it to context@aetherial.net. This is early release software, so there will be bugs, and the application will only improve when problems are identified and submitted.

April 3rd, 2008 - Posted in Meta | | 0 Comments

Next Page »