The Pennyworth Project

Just another WordPress site

This site will disappear soon

Over the next couple of weeks, I’ll be merging The Pennyworth Project with my company Audacious Software. Aside from a URL and aesthetic change, the result will be functionally equivalent with what what is here now. I don’t have any plans to change the licensing of any of the applications distributed here, and I retain my commitment to open research.

The reason for the change is that after a year, I still haven’t found the bandwidth to set up the 503(c) corporation with the state of Illinois, recruit board members, and secure funding for the new entity. Fortunately, Audacious Software is on very good financial footing and can provide the resources required to move forward with ubiquitous context-aware computing. This move is intended to make my life easier and when my life is easier, more code gets written.

Thanks for your patience, and I’ll see you on the other side.

Posted by admin at 2:07 pm on February 3, 2010 . Filed under Meta.

Project Update

It’s been a few months since my last update, so I wanted to post a quick note to let everyone know what’s going on.

Work on the assistive technologies (Task Views & Shion + Pennyworth) has been steady and I’m hoping to release some updates to Pennyworth client applications soon.

Not too much has changed with Pennyworth proper. After some consideration and given some future projects coming down the pipeline, I’ve begun planning out Pennyworth 2.

In short, PW2 will be a re-implementation of the Pennyworth architecture designed to work on multiple platforms and devices. The plan is to implement the core of the system in cross-platform C and use native languages and tools to wrap the core in a user interface that “fits” on the platform.

I’m taking this approach (as opposed to the older approach of rewriting the system by scratch for each platform) for a couple of reasons:

1. As a solo developer, I don’t have the time or energy to manage and support full ports to each platform in each respective language. Assuming that the average size of a Pennyworth port is N lines of code, and I port it to P platforms, I need to manage N * P lines of code. This is too much code to maintain and continuously debug.

2. While some code will necessarily be unique to each port, I believe that the bulk will be portable across platforms. If 25% of the Pennyworth code is generic in this sense, the amount of code to manage becomes 0.25N + 0.75P By keeping N somewhat constant and only growing the P, the software development side of things will scale better as I add support for each platform.

The current Pennyworth implementation has approximately 10000 lines of code. Of that code, about a third (0.33) is a good candidate for the platform-neutral core. Using the assumption that other implementations will have a similar amount of code in the same proportion, the project will scale in the following way:

1 port: 10000 LOC (both old approach & new approach)

2 ports: 20000 LOC (old) vs. 16700 LOC (new)

3 ports: 30000 LOC (old) vs. 23400 LOC (new)

4 ports: 40000 LOC (old) vs. 30100 LOC (new)
(The 4th port is almost free when compared to the older system.)

5 ports: 50000 LOC (old) vs. 36800 LOC (new)

Since I have more 3 ports that I would like to implement, this change makes sense.

3. I also believe that sharing the core code will allow me to implement a more robust and efficient system across platforms. By including resource-constrained devices (such as mobile phones) to the mix, it easier to notice inefficient and unstable code.

To be honest, this effort is in its early phases and I probably won’t have anything ready for testing until later this year. However, I do think that the short-term pain will result in long term gain as I develop a framework and approach for getting Pennyworth on more devices.

Thank you for your patience.

Posted by admin at 12:59 pm on July 11, 2009 . Filed under Meta,Other Apps,Task Views.

New directions for the Pennyworth project

First of all, welcome to the new weblog for Pennyworth and other context-related work. In the coming days, I’ll be shutting down the Context Blog in favor of this one. I’ve already imported the content from that site, so there is no reason that you shouldn’t update your bookmarks accordingly.

Second, I wanted to share some details about new Pennyworth work and how things will proceed moving forward. There are some big changes afoot, and this post describes how the project will move forward.

As some of you already know, I am leaving my graduate program at Northwestern University in order to pursue a full-time job as a software entrepreneur. My new venture is called Audacious Software and I’ve been busy over the past couple of months putting together a new company. The work isn’t complete, but progress is steadily being made.

The original plan was that my new company would continue Pennyworth development as a research activity. I’m still a strong believer in the idea of context-aware computing and I have concrete plans to develop and market a variety of context-aware applications and services in the months ahead. However, after some discussions with other people, I came up with the idea that the Pennyworth work should be its own separate entity in order to make collaborations with others simpler and more efficient. Consequently, I’m in the process of setting up a non-profit corporation to manage and hold Pennyworth and other related properties. I’m using the same model followed by many other open source projects, such as Mozilla, Software in the Public Interest (Debian), and FreeBSD.

My goal in establishing a standalone entity for Pennyworth is to engage other parties interested in collaborating on context-aware technology so that we can collectively put this technology in the hands of users everywhere. Audacious Software is the first sponsor of this work and I hope to find other companies, universities, and organizations willing to partner with in the months ahead. I’ll post more details about this as they become available.

So, what activities will this organization pursue? At the moment, there are three:

1. Continue the Pennyworth and Jarvis work to create and distribute a robust context-inference system for Mac OS X and Windows desktops.

2. Develop and distribute a variety of “example” applications that demonstrate how to use context effectively and spark others’ imagination about what’s possible with using context.

3. Continue to research how to better sense and distribute context in new environments. This includes mobile platforms (iPhone, Android, Maemo, etc.), alternative operating systems (Linux, *BSD), and emerging computing platforms (Chumby, Arduino, etc.).

In the weeks ahead, I plan on resume posting to this weblog regularly so that the work I’ve been doing becomes more visible to outside readers. In the chaos of starting a new company (or two) and managing the transition from graduate school to startup, my updates became less frequent than I would have liked. To make for this, I have a series of posts in the works that should hit all three points mentioned above.

Posted by admin at 9:42 pm on March 23, 2009 . Filed under Meta.

Updated Pennyworth website

I’ve recently revised the Pennyworth website to make it more useful and understandable to new users. I’d like to invite any readers out there to give it a look and let me know if I’ve succeeded in this endeavor or if more work is necessary. Any comments or suggestions that you may have will be greatly appreciated.

Posted by admin at 2:58 pm on September 29, 2008 . Filed under Meta,Pennyworth.

How to report bugs

I ran across Steven Frank’s recommendations for submitting bug reports a couple of days ago.

Please check it out if you’re planning on submitting bugs for Pennyworth or related applications. It’ll help me resolve issues and get fixes back to you much more quickly.

Posted by admin at 5:53 am on September 8, 2008 . Filed under Meta,Other Apps,Pennyworth,Pennyworth Punch Clock.

At C4[2] next week

I wanted to let any potential C4[2] attendees know that I’ll be attending the indie Mac developer conference next week.

If anyone would like to get together for drinks or dinner that weekend, shoot me an e-mail and I’ll see about getting something arranged. Likewise, you can keep an eye open for me at the conference.

I’d be particularly interested in talking to any developers who might be interested in taking their apps and making them context-aware.

Posted by admin at 3:09 pm on August 29, 2008 . Filed under Meta.

The Group Context Widget: Wanna play?

Lately, I’ve spent a great deal of space blogging about development of the Pennyworth context-sensing system. I want to blog about something a bit different today: a Pennyworth application.

One of my research goals is to investigate the effects of introducing context-sensing technology in environments such as the modern workplace. On one hand, there are likely some potential positive benefits, such as allowing coworkers to monitor each others’ availability in order to minimize interruptions. On the other hand, there will be some potential downsides, such as an overbearing manager using the technology to try and re-implement a twisted version of Scientific Management in the office.

Over the past couple of months, I’ve developed such a monitoring application called “Group Context”. The idea is that Pennyworth logs context updates to a web service, and different views of that service can be used to build different displays of participants’ context. This can be used to track a user’s “contextual timeline” over the past 24 hours or display an aggregate view of everyone’s most recent context. I have a couple private implementations running in web browsers, Chumbies, iPhones, and the like. Today, I spent some time building a simple Dashboard widget for Mac OS X users that is another display:

Group Context Widget

Currently, the widget looks pretty lonely as I’m the only one logging context at the moment. As more people participate, the more this will fill up and become more interesting.

I’d like to invite any interested readers to explore this with me. I’m planning on keeping this somewhat private, so if you’d like to view others’ contexts, you must participate in turn. If you decide to join this virtual group, you should send me (via e-mail) the name you would like to use in the display (a pseudonym is fine) and an icon to represent you. In return, I’ll send you a small Pennyworth action script that will log your context to the web service and a copy of the Dashboard widget in addition to pointers to TOP SECRET URLs that implement some of the other views I mentioned above.

You must have a running instance of Pennyworth to participate and you can choose to withdraw from this at any time. If you are also uncomfortable logging particular context details, I’ll be happy to help you modify the action script to exclude or mask those details.

Update: I fixed the e-mail link. Sorry about that.

Posted by admin at 4:47 pm on August 28, 2008 . Filed under Meta,Pennyworth.

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.


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.


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

The source requires Xcode 3 to build.

Bugs, suggestions, or comments?

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

Posted by admin at 12:02 pm on April 3, 2008 . Filed under Meta.

GrowlHUD 1.5

If you’re using Growl with Genkanban and would like some consistency between the Growl notifications and the predictions window, check out Growl HUD 1.5. It uses Leopard’s new HUD windows, so it should look rather nice.

Thanks Ricky!

Posted by admin at 10:39 am on February 16, 2008 . Filed under Meta.

The Context Blog leaves the drydock

Welcome to The Context Blog. I began this weblog on a bit of a whimsy when I realized that I didn’t have a good place to discuss some of my ongoing work and thoughts in the area of context-aware applications and adaptive user interfaces. This area is intended to serve as a half-way point between the chaos inside my head and more formal avenues such as conferences, journals, and books.

A bit about me: I am graduate student at Northwestern University in the Media, Technology, and Society MA/Ph.D. program in the School of Communication. My main research interest is conceptualizing, describing, implementing, and deploying new kinds of applications and user interfaces in both traditional desktop and ubiquitous computing environments.

At the moment, I am working on creating context-aware applications on MacOS X. These applications currently include a context-sensing and learning toolkit, a home automation application, and a “smart” CallerID-based notification system for traditional landline phones. Over the next few weeks, I’ll discuss these specific pieces of software in more detail.

In addition to the technology, I am also interested in studying the impact of these technologies in everyday situations and observing how “smarter” applications change (or not) users’ interactions with both their own computers and other users. Will making applications more knowledgeable about their users make them more effective and usable? I think so, but I’m still far from able to make that case definitively, and this humble weblog will chronicle that journey.

In closing, thanks for tuning in and I hope that you’ll stick around for the ride.

Posted by admin at 12:31 am on January 27, 2008 . Filed under Meta.