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.

Task Views 1.0b5

Task Views 1.0b5 is now available for download.

This release fixes a handful of bugs, updates the interface slightly, includes support for AppleScript, and introduces the new Calendar view.

I’m still working on the documentation, so please take a look at the initial introduction to get started. I will also post a follow-up blog post that describes the new features in more detail.

If you have any ideas, suggestions, or bugs to report, please post them in the comments below.


Posted by admin at 1:38 pm on July 22, 2009 . Filed under Task Views.

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.

Jarvis 1.0b5

Jarvis 1.0b5 is now available for download.

This is a minor bugfix release that addresses a handful of issues with Windows XP.

Thanks for giving the software a spin and let me know of any bugs or other issues in the comments below.

Posted by admin at 4:44 pm on April 13, 2009 . Filed under Jarvis.

Task Views 1.0b3

Task Views 1.0b3 is now available for download.

This is the first public release that includes support for the list, cloud, and histogram views. This version of the software is also compatible with iCal, OmniFocus, Things, Basecamp, and FogBugz.

I’m still working on the documentation, so please take a look at the initial introduction to get started.

If you have any ideas, suggestions, or bugs to report, please post them in the comments below.


Posted by admin at 10:22 pm on April 4, 2009 . Filed under Task Views.

Introducing Task Views

Over the past several weeks, I’ve been Twittering about a new application that has been under construction. I’m happy to now lift the sheet and share what I’ve been working on.

The application is called “Task Views” and it attempts to solve the problem that modern workers face when managing their tasks and todos. There are a variety of great task management applications (desktop and web alike), but the realities of the modern workplace is that we find ourselves using a variety of solutions to attack the same problem: getting things done.

Read more…

Posted by admin at 10:51 pm on March 25, 2009 . Filed under Other Apps,Pennyworth,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.

Jarvis 1.0b2

Jarvis 1.0b2 is now available for download.

Because of some of the major bug fixes in this release, please remove any previously-installed versions of Jarvis using Add/Remove Programs in the Windows Control Panel.

Now onto the major changes:

1. Jarvis now has a proper installer that allows users to choose where to install the application.

2. The installer adds a shortcut to your Startup menu. (Delete this if you don’t want Jarvis to start on login.)

3. The installer checks for the appropriate Windows prerequisites (.Net 3.5 & Windows XP service pack 3 or greater).

4. The first pass of the user interface is complete. The Rules and Learners interfaces are complete and functional, and I’ve added new preference options for configuring the training hot key and manipulating the machine learners.

5. I’ve fixed a variety of bugs that cause crashes on startup.

This is still an incomplete release in that it talks to few applications to collect context information and still has no way to automate other applications in response to changes in users’ environment. These will be focuses for the next release cycle.

Thanks for giving the software a spin and let me know of any bugs or other issues.

Posted by admin at 9:28 am on February 14, 2009 . Filed under Jarvis.

Jarvis: Next Steps

Now that a version of Jarvis is available and people are talking about it, I wanted to lay out some rough plans for future development.

First of all, I am going to try and release a new version every couple of weeks. I’m planning to push out another public release two weeks from yesterday.

Priorities for Jarvis 1.0b2:

1. Correct the bugs reported in 1.0b1. I already have a bug filed for a hot key issue on XP.

2. Implement the rules interface. This is the Windows equivalent of this.

3. Implement an interface that exposes a visual representation of the machine learner. Pennyworth uses a nested set diagram for this purpose, but I’m planning on using something more akin to a flowchart for Jarvis. The functionality lets users see the model that the system constructed to predict context and this allows them to be better “teachers”.

5. Finish implementing the preferences interface, including options for manipulating the learners.

6. Misc minor UI tweaks.

7. Add pruning to the C4.5 decision tree algorithm.

8. More application sensors. Particularly, Firefox & Chrome “current web site” sensors.

This is a tall order, but one that should be achievable in the next two weeks. Don’t forget to send any feedback of your own to


Posted by admin at 5:49 am on February 3, 2009 . Filed under Jarvis.

Introducing Jarvis

It’s been a while since I’ve updated this weblog. I’ve had a busy couple of months, and the following message explains (some of) what I’ve been up to.

From an e-mail I sent out earlier today:

You’re receiving this mass message because I’ve been in touch with you about the Windows port of the Pennyworth system (or you belong to one of the NU mailing lists).

I wanted to let you know that while I’m several days late, the Windows port of the Pennyworth architecture is now online at 

Jarvis represents my initial efforts at bringing the context-sensing approach embodied in Pennyworth to the platform(s) that the rest of the world is using. 🙂

This is a very early release and at the moment, it can observe you, learn context models from your corrections, and predict your context in real-time. That’s about all that it does at the moment. In next several weeks, I will be adding new features and functionality in order to achieve feature parity with Pennyworth.

The current missing features include:

  • The ability to modify other applications based upon context changes.
  • The ability to solicit context information from other applications.
  • The rules interface for overriding the machine learner.
  • An interface that exposes the learned context model for inspection.
  • Application auto-updating.
  • Sharing context to networked clients (including Pennyworth).
  • The ability to tweak or reset the machine learners.

My main goal in releasing this initial version is to begin to identify any brittleness in the system that may be a result of any of the combinations of hardware and software that you use. In other words, this is the “test and see if it crashes on others’ machine” release. If all goes well and the current set of functionality is stable and responsive on your systems, I’ll move onto the next steps of adding the missing functionality above.

I’m quite excited to be working on this and I’m looking forward to receiving your feedback on Jarvis. Ideally, I’ll be able to turn your feedback around quickly and do a series of releases every couple of weeks between now and June. By June, I hope to have iterated the system enough times that it’s as stable and full of features as Pennyworth. Once I’ve achieved that goal, I’ll be in touch with some of you to talk about how we can make Jarvis talk with your applications in order to start building a smart context-aware Windows environment.

Thanks for your patience, and please let me know what you think.

Posted by admin at 6:07 pm on February 2, 2009 . Filed under Jarvis,Other Apps.

Older Posts »