<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Pennyworth Project &#187; Other Apps</title>
	<atom:link href="http://www.pennyworthproject.org/weblog/category/other-apps/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pennyworthproject.org/weblog</link>
	<description>Open-source context-aware software &#38; services</description>
	<lastBuildDate>Tue, 02 Mar 2010 14:10:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Project Update</title>
		<link>http://www.pennyworthproject.org/weblog/2009/07/project-update/</link>
		<comments>http://www.pennyworthproject.org/weblog/2009/07/project-update/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 12:59:40 +0000</pubDate>
		<dc:creator>Chris J. Karr</dc:creator>
				<category><![CDATA[Meta]]></category>
		<category><![CDATA[Other Apps]]></category>
		<category><![CDATA[Task Views]]></category>

		<guid isPermaLink="false">http://www.pennyworthproject.org/weblog/?p=135</guid>
		<description><![CDATA[It&#8217;s been a few months since my last update, so I wanted to post a quick note to let everyone know what&#8217;s going on. Work on the assistive technologies (Task Views &#38; Shion + Pennyworth) has been steady and I&#8217;m hoping to release some updates to Pennyworth client applications soon. Not too much has changed [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a few months since my last update, so I wanted to post a quick note to let everyone know what&#8217;s going on.</p>
<p>Work on the assistive technologies (Task Views &amp; Shion + Pennyworth) has been steady and I&#8217;m hoping to release some updates to Pennyworth client applications soon.</p>
<p>Not too much has changed with Pennyworth proper. After some consideration and given some future projects coming down the pipeline, I&#8217;ve begun planning out Pennyworth 2.</p>
<p>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 &#8220;fits&#8221; on the platform.</p>
<p>I&#8217;m taking this approach (as opposed to the older approach of rewriting the system by scratch for each platform) for a couple of reasons:</p>
<p>1. As a solo developer, I don&#8217;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 <em>N</em> lines of code, and I port it to <em>P</em> platforms, I need to manage <em>N * P</em> lines of code. This is too much code to maintain and continuously debug.</p>
<p>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 <em>0.25N + 0.75P</em> By keeping <em>N</em> somewhat constant and only growing the <em>P</em>, the software development side of things will scale better as I add support for each platform.</p>
<p>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:</p>
<p>1 port:  10000 LOC (both old approach &amp; new approach)</p>
<p>2 ports: 20000 LOC (old) vs. 16700 LOC (new)</p>
<p>3 ports: 30000 LOC (old) vs. 23400 LOC (new)</p>
<p>4 ports: 40000 LOC (old) vs. 30100 LOC (new)<br />
(The 4th port is almost free when compared to the older system.)</p>
<p>5 ports: 50000 LOC (old) vs. 36800 LOC (new)</p>
<p>Since I have more 3 ports that I would like to implement, this change makes sense.</p>
<p>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.</p>
<p>To be honest, this effort is in its early phases and I probably won&#8217;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.</p>
<p>Thank you for your patience.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pennyworthproject.org/weblog/2009/07/project-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing Task Views</title>
		<link>http://www.pennyworthproject.org/weblog/2009/03/introducing-task-views/</link>
		<comments>http://www.pennyworthproject.org/weblog/2009/03/introducing-task-views/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 22:51:40 +0000</pubDate>
		<dc:creator>Chris J. Karr</dc:creator>
				<category><![CDATA[Other Apps]]></category>
		<category><![CDATA[Pennyworth]]></category>
		<category><![CDATA[Task Views]]></category>

		<guid isPermaLink="false">http://www.pennyworthproject.org/weblog/?p=105</guid>
		<description><![CDATA[Over the past several weeks, I&#8217;ve been Twittering about a new application that has been under construction. I&#8217;m happy to now lift the sheet and share what I&#8217;ve been working on. The application is called &#8220;Task Views&#8221; and it attempts to solve the problem that modern workers face when managing their tasks and todos. There [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past several weeks, I&#8217;ve been <a href="http://twitter.com/cjkarr/status/1348793341">Twittering</a> about a new application that has been under construction. I&#8217;m happy to now lift the sheet and share what I&#8217;ve been working on.</p>
<p>The application is called &#8220;Task Views&#8221; 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.</p>
<p><span id="more-105"></span></p>
<p>In my own personal life, I use <a href="http://www.fogbugz.com">FogBugz</a> to track software tasks, <a href="http://www.basecamphq.com">a Basecamp site</a> to collaborate with clients, and <a href="http://www.omnigroup.com/applications/omnifocus/">OmniFocus</a> to handle everything else. The problem with splitting things up in this way is that it leads to tunnel vision. When I&#8217;m working in FogBugz, I&#8217;ll plow through a variety of software issues, while forgetting to pick up groceries on the way home. When I&#8217;m in OmniFocus, I find it easy to overlook urgent tasks for my Basecamp client. I get things done, but often find my triumph short-lived as I discover that I didn&#8217;t do everything I needed to do, simply because I forgot to look at my other task applications.</p>
<p>Task Views solves this problem by offering a set of unified views that transcend individual systems. The program accomplishes this using <em>conduits</em>. A conduit is a bit of code that pulls tasks from another system, normalizes the fields, and imports it into the current system.</p>
<p> </p>
<p><a title="Task Views: Conduits configuration by audaciouscode, on Flickr" href="http://www.flickr.com/photos/audaciouscode/3386206364/"><img src="http://farm4.static.flickr.com/3615/3386206364_93e3e1421e.jpg" alt="Task Views: Conduits configuration" width="500" height="288" /></a> </p>
<p>Task Views currently talks to OmniFocus, <a href="http://culturedcode.com/things/">Things</a>, <a href="http://en.wikipedia.org/wiki/ICal">iCal</a>, Basecamp, <a href="http://www.microsoft.com/mac/products/entourage2008/default.mspx">Entourage</a>, and FogBugz. (Support for other systems is in the works.) The conduits fetch task information and dump it into a local database.</p>
<p> </p>
<p><a title="Task Views: List View by audaciouscode, on Flickr" href="http://www.flickr.com/photos/audaciouscode/3386201870/"><img src="http://farm4.static.flickr.com/3651/3386201870_b653ffd92d.jpg" alt="Task Views: List View" width="500" height="381" /></a> </p>
<p>The program provides a very basic list view that allows users to quickly identify and view individual tasks. However, as the image above shows, this list can grow really long, really quickly. To alleviate this problem, Task Views provides a filtering function that allows users to select subsets of the database:</p>
<p> </p>
<p><a title="Task Views: Filter by audaciouscode, on Flickr" href="http://www.flickr.com/photos/audaciouscode/3386201586/"><img src="http://farm4.static.flickr.com/3640/3386201586_553b359f43.jpg" alt="Task Views: Filter" width="500" height="402" /></a> </p>
<p>Users can construct elaborate filters by using simple Boolean rule-based logic.</p>
<p>The list view shows the main weakness of the current crop of task management applications. Almost without exception, all of them use a list metaphor to display what needs doing. Even on the largest monitors, tasks scroll off the visible screen rather quickly.</p>
<p> </p>
<p><a title="Task Views: Cloud view by audaciouscode, on Flickr" href="http://www.flickr.com/photos/audaciouscode/3385389099/"><img src="http://farm4.static.flickr.com/3583/3385389099_62a9b08323.jpg" alt="Task Views: Cloud view" width="500" height="326" /></a> </p>
<p>A cloud view provides a simple way of displaying more content in a more space-effective manner. Where as the list above shows less than a hundred items, the cloud view shows over seven hundred. However, the items are so small, that this view is clearly suboptimal.</p>
<p> </p>
<p><a title="Task Views: Cloud view by audaciouscode, on Flickr" href="http://www.flickr.com/photos/audaciouscode/3386201264/"><img src="http://farm4.static.flickr.com/3471/3386201264_708cfa8b95.jpg" alt="Task Views: Cloud view" width="500" height="327" /></a> </p>
<p>Task Views allows the user to bind the size of the text to a numeric or date value associated with the tasks. In the screenshot above, the date the tasks were created is bound to the text size. Tasks created farther in the past appear larger than more recently created items.</p>
<p> </p>
<p><a title="Task Views: Cloud view by audaciouscode, on Flickr" href="http://www.flickr.com/photos/audaciouscode/3386201100/"><img src="http://farm4.static.flickr.com/3544/3386201100_42c2c8ba43.jpg" alt="Task Views: Cloud view" width="500" height="327" /></a> </p>
<p>Categorical and text values may be bound to the color of the text items. In the screenshot above, I&#8217;ve bound a variety of colors to various projects. Color makes salient which projects need more attention than others.</p>
<p>In addition to the list and cloud views, Task Views also provides a histogram view of the task space.</p>
<p> </p>
<p><a title="Task Views: Histogram view by audaciouscode, on Flickr" href="http://www.flickr.com/photos/audaciouscode/3385388515/"><img src="http://farm4.static.flickr.com/3456/3385388515_e1b705dd7a.jpg" alt="Task Views: Histogram view" width="500" height="361" /></a> </p>
<p>The view above shows the number of tasks associated with particular projects. As the cloud view demonstrated, I have many tasks still associated with the Jarvis project.</p>
<p> </p>
<p><a title="Task Views: by audaciouscode, on Flickr" href="http://www.flickr.com/photos/audaciouscode/3386200968/"><img src="http://farm4.static.flickr.com/3538/3386200968_6927360fb4.jpg" alt="Task Views:" width="500" height="361" /></a> </p>
<p>The histogram view also provides a useful temporal perspective of the task space. In the image above, the height of the bars represent how many tasks were created on a given day. This could as easily show how many tasks were completed within a particular duration in order to better understand personal productivity patterns.</p>
<p>Not pictured above are the task update notifications. Task Views periodically refreshes itself and when a task changes, the application will alert you using an unobtrusive Growl notification. This is useful for discovering that a coworker has elevated the priority of particular item without taking the time to inform you.</p>
<p>In upcoming releases, I plan to add new views that draw upon the data visualization research and literature.</p>
<p><em>The Context Angle</em></p>
<p>Since this blog is focused on context-aware computing, there is a context angle here. I speculate that while Task Views provides a variety of views and configurations, not all of them will be appropriate in all cases. A large histogram view may be useful for when the user is planning their week, but a smaller cloud view my be more appropriate throughout the working day. Task Views is explicitly designed to be dynamically reconfigured using systems like <a href="/pennyworth/">Pennyworth</a>. Currently, the context-sensitive portions of the application are</p>
<p>1. <em>The active filter:</em> The list of visible tasks may vary with the current activity. For example, when programming, show the incomplete items from the FogBugz database. When collaborating, show items from Basecamp. When planning the upcoming week, default to OmniFocus.</p>
<p>2. <em>The active view:</em> A larger histogram is useful when explicitly planning. When doing other things, a more ambient cloud view may be more effective.</p>
<p>3. <em>Individual view configurations:</em> Date histograms may be more effective when planning, while categorical histograms may be more effective when triaging. In some cases, it may be useful to bind the size of the text in a cloud view to the date, in other cases, priority.</p>
<p>At the moment, I&#8217;m in the process of prototyping and testing this system with users with ADHD. If you&#8217;re interested in testing it yourself, post a note in the comments and I&#8217;ll get back to you. The software isn&#8217;t quite ready for release yet, but I am interested in recruiting more testers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pennyworthproject.org/weblog/2009/03/introducing-task-views/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing Jarvis</title>
		<link>http://www.pennyworthproject.org/weblog/2009/02/introducing-jarvis/</link>
		<comments>http://www.pennyworthproject.org/weblog/2009/02/introducing-jarvis/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 00:07:45 +0000</pubDate>
		<dc:creator>Chris J. Karr</dc:creator>
				<category><![CDATA[Jarvis]]></category>
		<category><![CDATA[Other Apps]]></category>

		<guid isPermaLink="false">http://context.aetherial.net/?p=91</guid>
		<description><![CDATA[It&#8217;s been a while since I&#8217;ve updated this weblog. I&#8217;ve had a busy couple of months, and the following message explains (some of) what I&#8217;ve been up to. From an e-mail I sent out earlier today: You&#8217;re receiving this mass message because I&#8217;ve been in touch with you about the Windows port of the Pennyworth [...]]]></description>
			<content:encoded><![CDATA[<p><em>It&#8217;s been a while since I&#8217;ve updated this weblog. I&#8217;ve had a busy couple of months, and the following message explains (some of) what I&#8217;ve been up to.</em></p>
<p>From an e-mail I sent out earlier today:</p>
<p>You&#8217;re receiving this mass message because I&#8217;ve been in touch with you about the Windows port of the Pennyworth system (or you belong to one of the NU mailing lists).</p>
<p>I wanted to let you know that while I&#8217;m several days late, the Windows port of the Pennyworth architecture is now online at</p>
<p> </p>
<p><a href="http://pennyworth.aetherial.net/jarvis/">http://pennyworth.aetherial.net/jarvis/</a> </p>
<p>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. :-)</p>
<p>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&#8217;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.</p>
<p>The current missing features include:</p>
<ul>
<li>The ability to modify other applications based upon context changes.</li>
<li>The ability to solicit context information from other applications.</li>
<li>The rules interface for overriding the machine learner.</li>
<li>An interface that exposes the learned context model for inspection.</li>
<li>Application auto-updating.</li>
<li>Sharing context to networked clients (including Pennyworth).</li>
<li>The ability to tweak or reset the machine learners.</li>
</ul>
<p>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 &#8220;test and see if it crashes on others&#8217; machine&#8221; release. If all goes well and the current set of functionality is stable and responsive on your systems, I&#8217;ll move onto the next steps of adding the missing functionality above.</p>
<p>I&#8217;m quite excited to be working on this and I&#8217;m looking forward to receiving your feedback on Jarvis. Ideally, I&#8217;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&#8217;s as stable and full of features as Pennyworth. Once I&#8217;ve achieved that goal, I&#8217;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.</p>
<p>Thanks for your patience, and please let me know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pennyworthproject.org/weblog/2009/02/introducing-jarvis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to report bugs</title>
		<link>http://www.pennyworthproject.org/weblog/2008/09/how-to-report-bugs/</link>
		<comments>http://www.pennyworthproject.org/weblog/2008/09/how-to-report-bugs/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 11:53:28 +0000</pubDate>
		<dc:creator>Chris J. Karr</dc:creator>
				<category><![CDATA[Meta]]></category>
		<category><![CDATA[Other Apps]]></category>
		<category><![CDATA[Pennyworth]]></category>
		<category><![CDATA[Pennyworth Punch Clock]]></category>

		<guid isPermaLink="false">http://context.aetherial.net/?p=73</guid>
		<description><![CDATA[I ran across Steven Frank&#8217;s recommendations for submitting bug reports a couple of days ago. Please check it out if you&#8217;re planning on submitting bugs for Pennyworth or related applications. It&#8217;ll help me resolve issues and get fixes back to you much more quickly.]]></description>
			<content:encoded><![CDATA[<p>I ran across <a href="http://stevenf.com/archive/reporting-bugs-in-mac-os-x-apps.php">Steven Frank&#8217;s recommendations for submitting bug reports</a> a couple of days ago.</p>
<p>Please check it out if you&#8217;re planning on submitting bugs for Pennyworth or related applications. It&#8217;ll help me resolve issues and get fixes back to you much more quickly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pennyworthproject.org/weblog/2008/09/how-to-report-bugs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pennyworth Punch Clock 1.0b3</title>
		<link>http://www.pennyworthproject.org/weblog/2008/07/pennyworth-punch-clock-10b3/</link>
		<comments>http://www.pennyworthproject.org/weblog/2008/07/pennyworth-punch-clock-10b3/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 00:34:18 +0000</pubDate>
		<dc:creator>Chris J. Karr</dc:creator>
				<category><![CDATA[Other Apps]]></category>
		<category><![CDATA[Pennyworth]]></category>
		<category><![CDATA[Pennyworth Punch Clock]]></category>

		<guid isPermaLink="false">http://context.aetherial.net/?p=33</guid>
		<description><![CDATA[Pennyworth Punch Clock 1.0b3 is now available for download. This release includes minor bug fixes, a new detailed report, support for user-specified date ranges, and a hot key (Command-Control-P) for quickly updating manual streams. Prerequisites MacOS X 10.5 &#8220;Leopard&#8221; Source There is not a source distribution available yet, but if you&#8217;d like the source code, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://pennyworth.aetherial.net/downloads/Pennyworth-Punch-Clock_1.0b3.tbz">Pennyworth Punch Clock 1.0b3 is now available for download.</a></p>
<p>This release includes minor bug fixes, a new detailed report, support for user-specified date ranges, and a hot key (Command-Control-P) for quickly updating manual streams.</p>
<p><b>Prerequisites</b></p>
<p>MacOS X 10.5 &#8220;Leopard&#8221;</p>
<p><b>Source</b></p>
<p>There is not a source distribution available yet, but if you&#8217;d like the source code, it is available via Subversion at</p>
<p><center><a href="http://context-macosx.googlecode.com/svn/trunk/Tools/Applications/">http://context-macosx.googlecode.com/svn/trunk/Tools/Applications/</a></center></p>
<p>The source requires Xcode 3 to build.</p>
<p><b>Bugs, suggestions, or comments?</b></p>
<p>Please post any feedback in the comments below or send it to <a href="mailto:pennywortht@aetherial.net">pennyworth@aetherial.net</a>. This is early release software, so there will be bugs, and the application will only improve when problems are identified and submitted.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pennyworthproject.org/weblog/2008/07/pennyworth-punch-clock-10b3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pennyworth Punch Clock 1.0b1</title>
		<link>http://www.pennyworthproject.org/weblog/2008/07/pennyworth-punch-clock-10b1/</link>
		<comments>http://www.pennyworthproject.org/weblog/2008/07/pennyworth-punch-clock-10b1/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 21:23:11 +0000</pubDate>
		<dc:creator>Chris J. Karr</dc:creator>
				<category><![CDATA[Other Apps]]></category>
		<category><![CDATA[Pennyworth Punch Clock]]></category>

		<guid isPermaLink="false">http://context.aetherial.net/?p=25</guid>
		<description><![CDATA[After a decent amount of work, I&#8217;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 [...]]]></description>
			<content:encoded><![CDATA[<p>After a decent amount of work, I&#8217;m happy to announce the release of the first application designed specially for Pennyworth: the Pennyworth Punch Clock.</p>
<p>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.</p>
<p>The software is available on <a href="http://pennyworth.aetherial.net/punchclock.html">the Pennyworth website</a>. I don&#8217;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 <a href="mailto:pennyworth@aetherial.net">via e-mail</a> 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.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pennyworthproject.org/weblog/2008/07/pennyworth-punch-clock-10b1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Updated thoughts (and to-do&#8217;s) regarding the Pennyworth Punch Clock</title>
		<link>http://www.pennyworthproject.org/weblog/2008/07/updated-thoughts-and-to-dos-regarding-the-pennyworth-punch-clock/</link>
		<comments>http://www.pennyworthproject.org/weblog/2008/07/updated-thoughts-and-to-dos-regarding-the-pennyworth-punch-clock/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 11:37:28 +0000</pubDate>
		<dc:creator>Chris J. Karr</dc:creator>
				<category><![CDATA[Other Apps]]></category>
		<category><![CDATA[Pennyworth]]></category>

		<guid isPermaLink="false">http://context.aetherial.net/?p=23</guid>
		<description><![CDATA[Thanks everyone who sent in comments and suggestions. They were immensely helpful. I&#8217;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. [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks everyone who sent in comments and suggestions. They were immensely helpful.</p>
<p>I&#8217;ve gone ahead and added the following to my PPC to-do list:</p>
<p>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.</p>
<p>2. URL Stream: This will be an optional time stream that tracks the current URL of the Safari and Firefox web browsers. I&#8217;ll probably break this into two time streams, one for each browser.</p>
<p>3. Rename the &#8220;Statistics&#8221; tab to &#8220;Reports&#8221;: 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&#8217;ll include some options for dropping such scripts in the application support folder for running the reports straight from the interface.</p>
<p>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 (&#8220;tell app &#8216;PPC&#8217; to return every slice of the timestream named &#8216;Foo&#8217;). I&#8217;m also planning on implementing a feature where calling AppleScripts can log slices to streams (&#8220;tell app &#8216;PPC&#8217; to log &#8216;Eating&#8217; to timestream named &#8216;Foo&#8217;).</p>
<p>Fortunately (with the exception of the reporting functionality), I&#8217;ve already written most of this code for other projects. I&#8217;m going to keep plugging away and see if I can have an early beta version released sometime next week.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pennyworthproject.org/weblog/2008/07/updated-thoughts-and-to-dos-regarding-the-pennyworth-punch-clock/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing Pennyworth Punch Clock</title>
		<link>http://www.pennyworthproject.org/weblog/2008/07/introducing-pennyworth-punch-clock/</link>
		<comments>http://www.pennyworthproject.org/weblog/2008/07/introducing-pennyworth-punch-clock/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 22:27:46 +0000</pubDate>
		<dc:creator>Chris J. Karr</dc:creator>
				<category><![CDATA[Other Apps]]></category>
		<category><![CDATA[Pennyworth]]></category>

		<guid isPermaLink="false">http://context.aetherial.net/?p=22</guid>
		<description><![CDATA[One of the simultaneously exciting and frustrating things working on Pennyworth is the system&#8217;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&#8217;t really demonstrate how this vision &#8220;works&#8221; without some sort [...]]]></description>
			<content:encoded><![CDATA[<p>One of the simultaneously exciting and frustrating things working on Pennyworth is the system&#8217;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&#8217;t really demonstrate how this vision &#8220;works&#8221; 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&#8217;t seem to really get this.</p>
<p>One of my major tasks over the summer is to conduct a directed search for the killer app that really lets Pennyworth shine. I&#8217;m following the <a href="http://www.growl.info/">Growl</a> model of releasing the system as a service that is accessible to other applications, and I need to find Pennyworth&#8217;s <a href="http://www.adiumx.com/">Adium</a>.</p>
<p>While I wait for a project proposal to snake through the appropriate review boards (a cost of doing business in academia), I&#8217;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&#8217;ve been working on a fairly simple application that readers of this weblog might find useful.</p>
<p><i>Pennyworth Punch Clock</i> (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 <i>time stream</i> is a timeline that describes the temporal properties of one aspect of your person. For example, a location stream might look like &#8220;home, train, school, park, school, train, home&#8221;. The elements of the stream are called <i>time slices</i>. In other words, a stream is an ordered collection of slices.</p>
<p>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.</p>
<p>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.</p>
<p><center><a href="http://www.flickr.com/photos/chicago_photo_weblog/2668473431/" title="Pennyworth Punch Clock: Main Screen by cjkarr, on Flickr"><img src="http://farm4.static.flickr.com/3135/2668473431_94a762637e.jpg" width="500" height="431" alt="Pennyworth Punch Clock: Main Screen" /></a></center></p>
<p>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 &#8220;Activity&#8221; 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.</p>
<p>In user-created streams (&#8220;Activity&#8221; is not one of them), you can log new slices to a stream by clicking the &#8220;Update Selected Stream&#8221; button. This invokes a small dialog where you can select a previously-used slice name or enter a new one.</p>
<p><center><a href="http://www.flickr.com/photos/chicago_photo_weblog/2668473291/" title="Pennyworth Punch Clock: Preferences by cjkarr, on Flickr"><img src="http://farm4.static.flickr.com/3147/2668473291_2f1a499ac8.jpg" width="500" height="431" alt="Pennyworth Punch Clock: Preferences" /></a></center></p>
<p>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&#8217;ve created a &#8220;Project&#8221; stream that I can use to tag time periods when I&#8217;m working on different projects. If you click the magnifying glass button, the &#8220;Projects&#8221; time stream details appear, including an associated color and a list of saved values:</p>
<p><center><a href="http://www.flickr.com/photos/chicago_photo_weblog/2668473233/" title="Pennyworth Punch Clock: Stream Editor by cjkarr, on Flickr"><img src="http://farm4.static.flickr.com/3132/2668473233_e6d0ac92d1_o.png" width="560" height="437" alt="Pennyworth Punch Clock: Stream Editor" /></a></center></p>
<p>This is some of the more mundane aspects of the interface, and I&#8217;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:</p>
<ul>
<li>
<p>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 &#8220;clients&#8221;.</p>
</li>
<li>
<p>Better understand how I spend my time throughout the day. I&#8217;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&#8217;d also like to better understand when I am doing these things (during lunch, late afternoon, etc.).</p>
</li>
<li>
<p>Generate better time estimates for getting things done. At the moment, I don&#8217;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.</p>
</li>
</ul>
<p>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&#8217;m playing games, but I haven&#8217;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.</p>
<p>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?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pennyworthproject.org/weblog/2008/07/introducing-pennyworth-punch-clock/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New AppleScript features coming in 1.0b5</title>
		<link>http://www.pennyworthproject.org/weblog/2008/02/new-applescript-features-coming-in-10b5/</link>
		<comments>http://www.pennyworthproject.org/weblog/2008/02/new-applescript-features-coming-in-10b5/#comments</comments>
		<pubDate>Tue, 19 Feb 2008 22:43:07 +0000</pubDate>
		<dc:creator>Chris J. Karr</dc:creator>
				<category><![CDATA[Other Apps]]></category>
		<category><![CDATA[Pennyworth]]></category>

		<guid isPermaLink="false">http://context.aetherial.net/2008/02/19/new-applescript-features-coming-in-10b5/</guid>
		<description><![CDATA[It took me long enough, but I&#8217;m happy to report that the next version of my context sensing toolkit will include some new functionality provided via AppleScript. First of all, you can query the system for current predictions and observations: tell application "Pennyworth" value of prediction named "Location" end tell might return something like Home. [...]]]></description>
			<content:encoded><![CDATA[<p>It took me long enough, but I&#8217;m happy to report that the next version of my context sensing toolkit will include some new functionality provided via AppleScript.</p>
<p>First of all, you can query the system for current predictions and observations:</p>
<pre style="font-size: larger;">tell application "Pennyworth"
  value of prediction named "Location"
end tell</pre>
<p>might return something like <code>Home</code>. Likewise,</p>
<pre style="font-size: larger;">tell application "Pennyworth"
  value of observation named "Desktop Observer (Running)"
end tell</pre>
<p>might return something like <code>Safari</code>.</p>
<p>Secondly, if you use other apps that call AppleScripts in response to events, you can now instruct the system to log the observation using</p>
<pre style="font-size: larger;">tell application "Pennyworth"
  log "My Observation" from observer "My Custom Observer" with duration 10
end tell</pre>
<p>This is equivalent to an internal observer logging observations. The &#8220;from observer&#8221; and &#8220;with duration&#8221; parameters are optional. The system will choose reasonable defaults if left empty.</p>
<p>This functionality has been requested from a few users, so I&#8217;m glad that it is now working. If you have any comments or questions, please post them in the comments below.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pennyworthproject.org/weblog/2008/02/new-applescript-features-coming-in-10b5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Genkanban and MarcoPolo</title>
		<link>http://www.pennyworthproject.org/weblog/2008/01/genkanban-and-marcopolo/</link>
		<comments>http://www.pennyworthproject.org/weblog/2008/01/genkanban-and-marcopolo/#comments</comments>
		<pubDate>Mon, 28 Jan 2008 17:29:12 +0000</pubDate>
		<dc:creator>Chris J. Karr</dc:creator>
				<category><![CDATA[Other Apps]]></category>
		<category><![CDATA[Pennyworth]]></category>

		<guid isPermaLink="false">http://context.aetherial.net/2008/01/28/genkanban-and-marcopolo/</guid>
		<description><![CDATA[The recent Mac Developer Roundtable podcast featured a good deal of information and discussion of context-sensitive interfaces and applications on the Mac platform (start listening around 50:00). I was surprised to hear one of the panel members, David Symonds, talk about a product on the Mac that sounded extremely similar to my own work. I [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.macdevnet.com/index.php/podcasts/mdr/38-mdr/153-mdr004">recent Mac Developer Roundtable podcast</a> featured a good deal of information and discussion of context-sensitive interfaces and applications on the Mac platform (start listening around 50:00). I was surprised to hear one of the panel members, David Symonds, talk about a product on the Mac that sounded extremely similar to my own work. I feared that I&#8217;d reinvented the wheel and someone had build what I wanted before I even realized it.</p>
<p>The product in question is <a href="http://www.symonds.id.au/marcopolo/">MarcoPolo</a>, a context-sensing application that uses sensors to detect the user&#8217;s &#8220;context&#8221; and take actions accordingly. The interface design is eerily similar to my own and there is quite a deal of overlap of functionality between the two apps. However, there are a few significant differences:</p>
<p>1. MarcoPolo uses a rule-based system to make sense of observations. MarcoPolo does not learn from user-provided labels, but relies upon the user to define rules that define a given context. Genkanban uses an <a href="http://en.wikipedia.org/wiki/ID3_algorithm">ID3 decision tree</a> (or a <a href="http://en.wikipedia.org/wiki/Naive_Bayes_classifier">naive Bayes classifier</a>) to accomplish the same goal.</p>
<p>2. MarcoPolo seems to have a more system-oriented action functionality than Genkanban. Recall that Gankanban can initiate an arbitrary action using either distributed notifications (and listening apps) or executing AppleScripts on context changes. MarcoPolo includes a number of specific actions that are oriented toward configuring the local system for the new context. This includes setting up the network, configuring the default printer, etc. MarcoPolo includes a ShellScript action type that allows shell scripts to be executed on context changes. This can conceivably encompass Genkanban&#8217;s AppleScript functionality. (Update: ActionScripts can be directly executed using the &#8220;Open&#8221; action.)</p>
<p>3. MarcoPolo seems oriented toward the idea that location is largely the same as context. Genkanban takes a bigger picture view and explicitly looks at location, activity, and social contexts as discrete elements of context. This finer-grained formulation allows Genkanban to take specific actions based on changes in the specific components. For example, I only care about activity when updating my Adium status message. I probably only care about location when deciding whether to activate the system screensaver.</p>
<p>That said, both Genkanban and MarcoPolo are more similar than different. The way I see things, components like Genkanban&#8217;s machine learner can be replaced with MarcoPolo&#8217;s rule-based system without much fuss (and vice versa). Genkanban&#8217;s sensors work much like MarcoPolo&#8217;s, and there&#8217;s probably no good reason that a common sensor interface couldn&#8217;t be be written so both systems&#8217; sensors are interchangeable. I couldn&#8217;t tell if MarcoPolo is issuing distributed notifications on context changes, but this may be another element that can be standardized.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pennyworthproject.org/weblog/2008/01/genkanban-and-marcopolo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
