<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.1" -->
<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/"
	>

<channel>
	<title>Things Blog</title>
	<link>http://culturedcode.com/things/blog</link>
	<description>Just another WordPress weblog</description>
	<pubDate>Wed, 25 Jun 2008 09:29:40 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.1</generator>
	<language>en</language>
			<item>
		<title>The 0.9.3 Release Got &#8220;Cancelled&#8221;</title>
		<link>http://culturedcode.com/things/blog/2008/06/the-093-release-got-cancelled.html</link>
		<comments>http://culturedcode.com/things/blog/2008/06/the-093-release-got-cancelled.html#comments</comments>
		<pubDate>Mon, 09 Jun 2008 13:54:56 +0000</pubDate>
		<dc:creator>Chris, Jürgen, and Werner</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://culturedcode.com/things/blog/2008/06/the-093-release-got-cancelled.html</guid>
		<description><![CDATA[Sort of ;)
Things 0.9.3 brings dock badges, more compact Next and Today lists, 8 bug fixes, and a new &#8220;Cancelled&#8221; status for To Do items. While the latter is obviously a new feature, the deeper reason behind it, was to remedy a limitation in previous versions.
Previously, when a project that still contained incomplete items was [...]]]></description>
			<content:encoded><![CDATA[<p>Sort of ;)</p>
<p>Things 0.9.3 brings dock badges, more compact Next and Today lists, 8 bug fixes, and a new &#8220;Cancelled&#8221; status for To Do items. While the latter is obviously a new feature, the deeper reason behind it, was to remedy a limitation in previous versions.</p>
<p>Previously, when a project that still contained incomplete items was checked off and eventually got moved to the Logbook, the incomplete items still remained in the Next or Today lists. While this is not entirely wrong, it is probably not what the user wanted. Either the user forgot to check off those items, in which case there should be a warning, or there was a deliberate decision to leave those items incomplete.</p>
<p>Of course, obsolete to-dos can always be deleted. But sometimes it is interesting to keep a record of tasks that were once considered interesting (by a client or co-worker for example), but got axed nonetheless. It is now possible to state that a task got cancelled by using the corresponding new menu command from the &#8220;Items&#8221; menu.</p>
<p><img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/06/cancelleditem.jpg' alt='cancelleditem.jpg' /></p>
<p>Also, if a user attempts to check off a project that contains incomplete items, there is warning dialog that lets the user choose whether the remaining items should be marked as completed or as cancelled.</p>
<p>We also introduced an option to show a dock badge. In Preferences you will find a new menu which allows you to select which count will be attached to Things&#8217; dock icon.</p>
<p><img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/06/dockiconbadge.jpg' alt='dockiconbadge.jpg' /></p>
<p>Please consult the <a href="http://culturedcode.com/things/wiki/index.php?title=Release_Notes">Release Notes</a> for a full list of bug fixes.</p>
]]></content:encoded>
			<wfw:commentRss>http://culturedcode.com/things/blog/2008/06/the-093-release-got-cancelled.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>A Phone, an iPod, an Internet Communicator, and a Full-Featured Task Manager!</title>
		<link>http://culturedcode.com/things/blog/2008/06/a-phone-an-ipod-an-internet-communicator-and-a-full-featured-task-manager.html</link>
		<comments>http://culturedcode.com/things/blog/2008/06/a-phone-an-ipod-an-internet-communicator-and-a-full-featured-task-manager.html#comments</comments>
		<pubDate>Mon, 02 Jun 2008 13:45:49 +0000</pubDate>
		<dc:creator>Chris, Jürgen, and Werner</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://culturedcode.com/things/blog/2008/06/a-phone-an-ipod-an-internet-communicator-and-a-full-featured-task-manager.html</guid>
		<description><![CDATA[
We have all seen how the iPhone enabled applications that weren&#8217;t possible before on any mobile device. Wouldn&#8217;t it be cool if you could carry all your to-dos in your pocket? Wouldn&#8217;t it be cool if you had a powerful responsive task manager wherever you go?
A resounding &#8220;Yes&#8221; was the answer we gave to ourselves [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/06/thingstouch-fullfeaturedtaskmanager.jpg' alt='thingstouch-fullfeaturedtaskmanager.jpg' /></p>
<p>We have all seen how the iPhone enabled applications that weren&#8217;t possible before on any mobile device. Wouldn&#8217;t it be cool if you could carry all your to-dos in your pocket? Wouldn&#8217;t it be cool if you had a powerful responsive task manager wherever you go?</p>
<p>A resounding &#8220;Yes&#8221; was the answer we gave to ourselves some time ago when we began developing what will become <strong>Things touch</strong>. Honestly, will any mobile device that you carry around ever be complete without a personal task manager? We didn&#8217;t think so either :)</p>
<p>The iPhone and iPod touch are a huge opportunity for developers and an equally huge challenge too.</p>
<h4>The opportunity</h4>
<p>iPhone and iPod touch constitute a whole new platform with a new distribution model as well - the iTunes app store. These devices are used by many people that have never owned a Mac before and some of them may never will. For a developer there is the potential of reaching a whole new group of customers. Customers that may not know Things already, or are not able to use it because they are on Windows, or may not even bother to use the desktop version at all because Things touch is already more than they bargained for.</p>
<h4>Challenges abound</h4>
<ul>
<li>The iPhone user interface is completely different from what we have become accustomed to from the desktop. Naturally, we had to recreate the code for the Things touch user interface from scratch. No way to reuse a single line from the desktop version.</li>
<li>Due to the unique limitations of the iPhone OS we couldn&#8217;t even port the data model code. Yes you assume correctly, a complete rewrite was necessary too.</li>
<li>Fraser Speirs has an <a href="http://speirs.org/2007/10/18/iphone-apps-have-to-pay-their-way/">insightful article</a> on how the market&#8217;s ability to establish a fair price for iPhone applications will eventually determine whether there is a sustainable business model for creating them. I bet that we are not the only developer having a hard time determining a price point for our iPhone application. A price point that will enable us to aggressively evolve and support Things touch for a long time to come.</li>
</ul>
<p>While developing Things touch does draw significant amounts of resources from the desktop version, it is in fact rather beneficial for it too. Recreating Things for the iPhone made simplicity even more predominant. We learned a couple of things from the process that will help us to make the desktop version even better. The same goes for the data model code. Having had the opportunity to incorporate all the lessons we&#8217;ve learned from the desktop version resulted in a fresh new code base that will find its way back into Things, providing an even better foundation for its future development. </p>
<p>In the weeks to come, we plan to write more about how Things touch will look like. But if you&#8217;d like to get a glimpse of where we are headed, you may want to peek at Chris&#8217; desk :)</p>
<p><a href="http://culturedcode.com/things/blog/wp-content/uploads/2008/06/thingstouch-interfacestilllife.jpg"><img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/06/thingstouch-interfacestilllife-thumb.jpg' alt='thingstouch-interfacestilllife-thumb.jpg' /></a></p>
<p><a href="http://culturedcode.com/things/blog/wp-content/uploads/2008/06/thingstouch-papercollage.jpg"><img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/06/thingstouch-papercollage-thumb.jpg' alt='thingstouch-papercollage-thumb.jpg' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://culturedcode.com/things/blog/2008/06/a-phone-an-ipod-an-internet-communicator-and-a-full-featured-task-manager.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Things 0.9.2 Brings Support for Leopard&#8217;s System-wide To-do Service</title>
		<link>http://culturedcode.com/things/blog/2008/05/things-092-brings-support-for-leopards-system-wide-to-do-service.html</link>
		<comments>http://culturedcode.com/things/blog/2008/05/things-092-brings-support-for-leopards-system-wide-to-do-service.html#comments</comments>
		<pubDate>Sat, 24 May 2008 15:44:01 +0000</pubDate>
		<dc:creator>Chris, Jürgen, and Werner</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://culturedcode.com/things/blog/2008/05/things-092-brings-support-for-leopards-system-wide-to-do-service.html</guid>
		<description><![CDATA[As the title suggests Things 0.9.2 not only brings iCal sync but more generally support for Leopards system-wide to-dos. What is the difference? With Mac OS X 10.5, the database that stores the user&#8217;s calendar data was integrated into the system. Developers got a whole new API that is simple and fun to work with. [...]]]></description>
			<content:encoded><![CDATA[<p>As the title suggests Things 0.9.2 not only brings iCal sync but more generally support for Leopards system-wide to-dos. What is the difference? With Mac OS X 10.5, the database that stores the user&#8217;s calendar data was integrated into the system. Developers got a whole new API that is simple and fun to work with. More importantly though, changes that are made through this new API propagate practically instantly through the system. To-dos will show up in iCal, Mail or any other participating application the very moment you press the enter key in Things. </p>
<p>On previous systems, syncing to-dos between applications was a complicated process that sometimes even had to be triggered manually. Since we wanted to provide the best experience for our users, and most of them are on Leopard anyway, it was clear that we wanted to use Leopards to-do service instead of the older slow sync. Unfortunately the new and older APIs cannot be used at the same time. Providing backwards compatibility with Tiger is a whole new development effort, which we might attempt later along with .Mac sync.</p>
<h3>Getting Started</h3>
<p>You turn on iCal sync from Things&#8217; preferences:</p>
<p><img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/05/icalsync-screenshot1.jpg' alt='icalsync-screenshot1.jpg' /></p>
<p>In addition to what you might recall from our <a href="http://culturedcode.com/things/blog/2008/04/the-ical-sync-interface-or-how-to-implement-a-new-feature.html">previous post</a>, we have now included an Options button. It opens a sheet (see below) where you can customize whether tasks show their associated project and tags in other applications.</p>
<p><img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/05/icalsync-screenshot3.jpg' alt='icalsync-screenshot3.jpg' /></p>
<p>These options are turned on by default. You can also add tags and projects from iCal or other applications. For example, adding &#8220;@Home&#8221; to the title of a to-do in iCal instructs Things to add the tag &#8220;Home&#8221; to it. There is no need to worry that this feature is triggered by accident, since only existing tags are used. You can safely enter email addresses for example. These won&#8217;t be recognized as tags and don&#8217;t trigger the creation of new tags in Things. The same goes for projects. Only existing projects are recognized and no action is taken if multiple projects with the same title exist in Things. Things is also smart enough to ignore projects that are already logged or in the trash.</p>
<p>We have carefully taken precautions to prevent you from shooting yourself in the foot :). It is not possible to delete to-dos from Things by deleting them in other applications. Since we have no control over applications that integrate with system-wide to-dos, we cannot prevent situations where a large number of to-dos might be accidentally deleted by badly written third party apps.</p>
<p>It is also not possible to delete tags, or projects from other applications. It is just too easy to accidentally type over a title deleting all meta data that might be there. And to-dos removed from their project or missing their tags might be very difficult to find. The iCal sync feature has been designed with the assumption that Things is the primary to-do manager and that other applications, like Mail or iCal, are mostly used to conveniently retrieve stuff or enter new items.</p>
<h3>Complete Control</h3>
<p>If you want complete control over the syncing process, choose &#8220;Custom&#8221; from the Sync menu. The dialog transforms into advanced mode allowing you to associate different lists (foci), tags, projects, and areas of responsibility with each calendar.</p>
<p><img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/05/icalsync-screenshot2.jpg' alt='icalsync-screenshot2.jpg' /></p>
<p>You do not need to worry whether the list of to-dos you sync with each calendar overlap. If they do, Things will simply sync with the first calendar in the list that matches. Of course, you can reorder the list of calendars in Things.</p>
<p>The criteria you associate with each calendar work both ways when it makes sense. For example, if you specify the &#8220;Errand&#8221; tag for a certain calendar, then only items having the &#8220;Errand&#8221; tag are synced with this calendar. If on the other hand you enter a new item in iCal, this item will automatically get the &#8220;Errand&#8221; tag in Things. The latter, however, only works with a single tag. If you specified multiple tags, there is no way to find out which one you would like to be added in Things. The same is true for projects and areas of responsibility. </p>
<h3>Usage Scenarios</h3>
<p>Here are some usage scenarios that might not be completely obvious:</p>
<ul class="wide">
<li>When you create a to-do in Mail using a selection of an email message, the URL for this message is added to the notes section of the corresponding item in Things. Clicking on it will open the associated email message in Mail. Please note that due to a bug in Apple Mail, it will only honor the deletion of to-dos when running. Superfluous to-dos need to be manually removed from Mail.</li>
<li>You can also use iCal subscriptions. Let&#8217;s assume you subscribed to the calendar of your significant other. Just activate this calendar in Things for the Next list for example. (You also need to make sure, that syncing to-dos is activated for the subscribed calendar both in your as well as your spouses calendar.) Your spouse can now send you to-dos, by simply adding them to the corresponding calendar. Note however that subscriptions are read only. There is no way for you to change such a to-do in iCal. Not even by checking it off. No matter what you do in Things that would normally cause the item to change calendars, or be entirely removed from iCal, will have no effect.</li>
<li>You can use applications like <a href="http://anxietyapp.com/">Anxiety</a> to create a HUD style Today list that is always visible.</li>
</ul>
<p>Chris did a great job in testing the new iCal sync feature. But with a feature like this, that can be used in so many different ways, it is quite likely that it is not yet void of bugs. Hope for the best, but expect the worst :).</p>
]]></content:encoded>
			<wfw:commentRss>http://culturedcode.com/things/blog/2008/05/things-092-brings-support-for-leopards-system-wide-to-do-service.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>What Were We Thinking?</title>
		<link>http://culturedcode.com/things/blog/2008/05/what-were-we-thinking.html</link>
		<comments>http://culturedcode.com/things/blog/2008/05/what-were-we-thinking.html#comments</comments>
		<pubDate>Mon, 19 May 2008 20:37:17 +0000</pubDate>
		<dc:creator>Chris, Jürgen, Oli, and Werner</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://culturedcode.com/things/blog/2008/05/what-were-we-thinking.html</guid>
		<description><![CDATA[Users who opened Things after last Friday were in for a surprise. Instead of seeing their tasks, they were greeted with this expiration notice:

If you were unlucky enough to open Things too early on Friday (depending on your time zone of course) downloading the new version from our web site didn&#8217;t even help. It stubbornly [...]]]></description>
			<content:encoded><![CDATA[<p>Users who opened Things after last Friday were in for a surprise. Instead of seeing their tasks, they were greeted with this expiration notice:</p>
<p><img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/05/expirationdialog2.png' style='margin-top:10px;' /></p>
<p>If you were unlucky enough to open Things too early on Friday (depending on your time zone of course) downloading the new version from our web site didn&#8217;t even help. It stubbornly kept displaying this dialog. What were we thinking??? It is with shame that we must admit: there was not much thinking involved&#8230;</p>
<p>Here&#8217;s the scoop: all of this happened completely unintentional. The dialog was displayed by mistake, due to a wrong date that has been left unaltered in the application code. Later on Friday, we fixed this and downloading the <a href="http://culturedcode.com/things/download/Things_0.9.1.2.dmg">new version</a> resolved the issue.</p>
<p>Why do we have an expiration date in the first place? Some time ago when we began to release public development versions of Things, we figured that we didn&#8217;t want those development versions still be in use after stable release versions would have become available. And we did what every developer does with public development versions: we put an expiration date into the application. We used a very distant future date to make sure the release version would be available long enough to allow users to switch to the release version. Or so we thought&#8230; The reason why Things will be released later than we initially thought deserves a blog post on its own – iPhone anyone?</p>
<p>The dialog above is kind of OK. It tells you what happened and what you can do about it. It even offers to take you straight to our web site. But to tell the truth, we didn&#8217;t expect many people to see this dialog at all, which might explain why we didn&#8217;t take as much time and effort as we did for <a href="http://culturedcode.com/things/blog/2008/02/habemus-dialogum-we-have-a-dialog.html">other dialogs</a>. If we did, we would have made sure that a manual download wasn&#8217;t necessary. After all, we do have an automatic update mechanism, don&#8217;t we? Another shortcoming is the fact that it is not clearly stated that the user&#8217;s data is not affected at all. It wasn&#8217;t made clear that applying the update wouldn&#8217;t change the user&#8217;s data in any way, let alone delete it! This has certainly led to confusion among some of our users. Which brings us to an important topic.</p>
<p>Even though the whole thing was a mistake, there were <a href="http://culturedcode.com/things/forums/read.php?5,2719">quite a few users</a> that were locked out of their data for several hours. From our point of view, this is one of the worst things that can happen. While Oliver Starr from GTD Times wrote a rather <a href="http://www.gtdtimes.com/2008/05/18/cultured-code-makes-a-critical-error-with-things/">harsh article</a> (and <a href="http://www.gtdtimes.com/2008/05/19/cultured-codethings-redux/">another one</a>), speculating whether we are &#8220;insensitive&#8221; to our users need to have a &#8220;trusted system&#8221;, the exact opposite is true. We thought about this very aspect a great deal during the design phase of Things: How will users be able to access their data? What if they wanted to stop working with Things? How will they be able to export their data? And so forth.</p>
<p>All of this really boils down to one question: Who owns the data? There is only one correct answer to this question and it is obvious: only the user owns the data. Taken seriously, this answer implied that we as developers had to choose an approach as open as possible to store the user&#8217;s data. And indeed, this was a key priority for us from the beginning. We stated it on Things&#8217; <a href="http://culturedcode.com/things/">primary landing page</a> even before this blog, the wiki, and the forums came into being.</p>
<p>To state this again very clearly, the release version of Things will save its data in an open, easy to understand and well documented, plain-text XML format. We chose XML because it is the most widely accepted file format for exchanging data between all sorts of software components. But at the same time, using modern style-sheet technology, ordinary users without any programming skills will be able to view these files nicely formatted in any web browser. It will be super easy for third parties to interoperate with the Things library by simply reading or writing small snippets of plain text files from and to the hard disk. Contrary to other solutions, like Apple Script for example, Things doesn&#8217;t even need to be running for this to work. </p>
<p>The development version currently available does not make use of the final file format yet. It <em>does</em> use a plain-text XML format, but a generic one (derived from Apple&#8217;s CoreData technology) which is easy to adapt for new Things features, but very difficult to use for third parties. The only reason it exists, is because it serves us well during the phase where Things&#8217; data model is not yet fully complete. Of course, we have been working on our own easy to use file format all along and will roll it into future development versions as soon it makes sense.</p>
]]></content:encoded>
			<wfw:commentRss>http://culturedcode.com/things/blog/2008/05/what-were-we-thinking.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>The highest form of flattery?</title>
		<link>http://culturedcode.com/things/blog/2008/05/the-highest-form-of-flattery.html</link>
		<comments>http://culturedcode.com/things/blog/2008/05/the-highest-form-of-flattery.html#comments</comments>
		<pubDate>Tue, 13 May 2008 10:11:10 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://culturedcode.com/things/blog/2008/05/the-highest-form-of-flattery.html</guid>
		<description><![CDATA[Creating a new design always involves a recombination or evolution of existing design patterns and styles. It happens ever so often that one is inspired by another site&#8217;s design and that certain aspects are carried over into the new design – albeit in a transformed and adapted way. This is the reason why web design [...]]]></description>
			<content:encoded><![CDATA[<p>Creating a new design always involves a recombination or evolution of existing design patterns and styles. It happens ever so often that one is inspired by another site&#8217;s design and that certain aspects are carried over into the new design – albeit in a transformed and adapted way. This is the reason why web design galleries exist and we are both proud and flattered that our current design has been featured in numerous galleries last summer, for example <a href="http://www.webcreme.com/2007/08/cultured-code/">here</a>, <a href="http://www.unmatchedstyle.com/gallery/culturedcode.php">here</a>, <a href="http://www.csstux.com/archives/aug2007/index.html">here</a>, and <a href="http://www.visualsafe.de/index.php?page=detail&#038;page_oid=7343">here</a>. </p>
<p>A different matter, however, are pixel by pixel rip-offs. The software developer Panic, for example, has gathered a <a href="http://www.panic.com/extras/ripoff/">whole collection</a> of those.</p>
<p>Yesterday one of our users (thanks Vitor!) pointed us to a complete rip-off of <a href="http://culturedcode.com/">our current</a> web design. It turned out to be the most blatant one I had ever seen. See for yourself:</p>
<p><a href='http://culturedcode.com/things/blog/wp-content/uploads/2008/05/ripoff-page1.jpg'><br />
<img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/05/ripoff-page1-thumb.jpg' style='border:1px solid #555;' /></a></p>
<p><a href='http://culturedcode.com/things/blog/wp-content/uploads/2008/05/ripoff-page2.jpg'><br />
<img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/05/ripoff-page2-thumb.jpg' style='border:1px solid #555;' /><br />
</a></p>
<p>I not only had quite some fun dissecting what the plagiator did do or rather didn&#8217;t do, I also learned a lot in the process. I am happy to present to you today our new tutorial: </p>
<div style="font-weight:bold;">Learn how to become a kick-ass rip-off artist in 8 easy steps.</div>
<ol class="wide" style="clear: both;">
<li>Be sure to use the same color scheme. This makes Cultured Code users feel right at home.</li>
<li>Pay attention even to the smallest of details, like the little silhoutte icons in the navigation bar, the smaller dollar sign&#8230; Only cowards cover their tracks.<br />
<img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/05/ripoff-details.jpg' style='margin-top:10px;' />
</li>
<li>Treat inconsistencies with respect. The original designer must have had a reason to use Helvetica in the navigation bar and Lucida Grande for everything else.<br />
(Which reminds me of something I forgot to update when I changed the whole website to Lucida Grande&#8230;)
</li>
<li>Don&#8217;t even think about changing one pixel of an icon. You don&#8217;t want to mess up someone else&#8217;s work. Also, keeping the same filename makes maintenance a lot easier in case the original website updates their graphics.<br />
<img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/05/ripoff-button.jpg' style='float:left;margin-right:10px;margin-top:10px'/><img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/05/ripoff-button.jpg' style='margin-top:10px;' />
</li>
<li>Paying hommage to <a href="http://www.panic.com/extras/ripoff/">Panic&#8217;s</a> Transmit truck is a must for every serious rip-off artist.<br />
<img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/05/ripoff-truck.jpg' style='margin-top:10px;' />
</li>
<li>If the original website doesn&#8217;t have a contact form to copy, create your own. It&#8217;s not that hard. You can do it!<br />
<a href='http://culturedcode.com/things/blog/wp-content/uploads/2008/05/ripoff-contact.jpg'><img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/05/ripoff-contact-thumb.jpg' style='margin-top:10px;border:1px solid #555;' /></a>
</li>
<li>And for those who still don&#8217;t get it: Leave one link unchanged to prove beyond any doubt, that you must have completely copied the entire source code.<br />
<img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/05/ripoff-link.jpg' style='margin-top:10px;' />
</li>
<li>Claim a copyright.<br />
<img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/05/ripoff-copyrightclaim.jpg' style='margin-top:10px;' />
</li>
<p>What can we learn from all of this? The bold variant of Lucida Grande looks kind of nice in the sidebar. We should try that too.</p>
]]></content:encoded>
			<wfw:commentRss>http://culturedcode.com/things/blog/2008/05/the-highest-form-of-flattery.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>The iCal Sync Interface or How to Implement a New Feature</title>
		<link>http://culturedcode.com/things/blog/2008/04/the-ical-sync-interface-or-how-to-implement-a-new-feature.html</link>
		<comments>http://culturedcode.com/things/blog/2008/04/the-ical-sync-interface-or-how-to-implement-a-new-feature.html#comments</comments>
		<pubDate>Fri, 25 Apr 2008 16:48:20 +0000</pubDate>
		<dc:creator>Chris, Jürgen, and Werner</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://culturedcode.com/things/blog/2008/04/the-ical-sync-interface-or-how-to-implement-a-new-feature.html</guid>
		<description><![CDATA[We have just finished the user interface of our new iCal sync feature (or more precisely, support for Leopard&#8217;s system wide to-dos) and would like to share some screenshots. The screenshots are taken from a private development version. But before moving to the screenshots let us give you an idea of what it is like [...]]]></description>
			<content:encoded><![CDATA[<p>We have just finished the user interface of our new iCal sync feature (or more precisely, support for Leopard&#8217;s system wide to-dos) and would like to share some screenshots. The screenshots are taken from a private development version. But before moving to the screenshots let us give you an idea of what it is like to implement a new feature.</p>
<p>Here is a list of steps we usually take when tackling a major new feature. We &#8230;</p>
<ol class="wide">
<li>Evaluate all related feature requests.</li>
<li>Decide what will actually go into the new feature. This is a quite complicated step. We try to look at common usage scenarios. We also try to guess what the majority of users would need. Sometimes we postpone features because their implementation would take too long. An example is providing foldable pocket layouts for printing. We&#8217;d love to have it, but it didn&#8217;t feel right to make everyone wait longer than necessary before a fundamental feature like printing even shows up.</li>
<li>Try to find a unified point of view if the results of step 2 are too varying or divergent.</li>
<li>Try to think of ways how we could clearly communicate the ideas of 3.</li>
<li>Create Photoshop mock-ups of the user interface.</li>
<li>Start with the actual implementation of the interface and test it. If necessary, go back any number of steps and start all over again.</li>
<li>Create the engine or logic that makes the feature work.</li>
<li>Test-drive a functional implementation of the new feature for the first time. Go back any number of steps if necessary and start all over again.</li>
<li>Extensive bug testing and fixing.</li>
<li>Seed the new version and watch for related emails and forum posts. Fix bugs and make notes for future improvements.</li>
</ol>
<p>With iCal sync we are now ready to move to step 7.</p>
<p>We had two requirements for iCal sync. On one hand, turning it on should be as simple as turning a switch. On the other hand, we wanted to take advantage of the existence of multiple calendars and make it flexible enough for usage with mobile devices and apps like <a href="http://www.anxietyapp.com/">Anxiety</a> or Apple Mail. This requires that users are able to restrict syncing to different parts of Things like Focus lists, to-dos that have certain tags, Areas of Responsibility, or even projects. Obviously having both simplicity and flexibility seems contradictory. Here is how we are doing it.</p>
<p>When you select iCal in Things&#8217; preferences for the first time you will see the simple variant of the dialog.</p>
<p><img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/04/icalsyncdialog1.jpg' alt='icalsyncdialog1.jpg' /></p>
<p>There you have it: the On/Off switch. Well, it is actually a menu and looks like this:</p>
<p><img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/04/icalsyncdialog2.jpg' alt='icalsyncdialog2.jpg' /></p>
<p>The most common requirement is to be able to export either all active to-dos (Next) or the currently pending items for today (Today), and to be able to import new to-dos created in other applications. When selecting either &#8220;Today&#8221; or &#8220;Next&#8221; from the sync menu this is exactly what you get.</p>
<p><img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/04/icalsyncdialog3.jpg' alt='icalsyncdialog3.jpg' /></p>
<p><!--If there is only one writable calendar it will be automatically selected for you.--></p>
<p>If you need the full power of the underlying engine then choose &#8220;Custom&#8221; to transform the simple variant of the dialog into the advanced one: </p>
<p><img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/04/icalsyncdialog4.jpg' alt='icalsyncdialog4.jpg' /></p>
<p>The text fields offer auto completion and only accept valid input. It is possible to drag tags, projects, or areas to these fields.</p>
<p>We believe that the advanced variant of the dialog puts an amount of flexibility at your fingertips that compares rather favorably with the competition. However, there are still more feature requests related to iCal which didn&#8217;t make it into this version. But never worry, Things will continue to be improved at full speed well beyond the 1.0 release. </p>
<p>If you would like to comment, instead of sending us email, consider to use the comments section of this article or even better the <a href="http://culturedcode.com/things/forums/">forums</a>. Your feedback will be much more valuable if your fellow users are able to read it too and respond to it.</p>
]]></content:encoded>
			<wfw:commentRss>http://culturedcode.com/things/blog/2008/04/the-ical-sync-interface-or-how-to-implement-a-new-feature.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Things 0.9.1</title>
		<link>http://culturedcode.com/things/blog/2008/04/things-091.html</link>
		<comments>http://culturedcode.com/things/blog/2008/04/things-091.html#comments</comments>
		<pubDate>Wed, 02 Apr 2008 15:48:48 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://culturedcode.com/things/blog/2008/04/things-091.html</guid>
		<description><![CDATA[The biggest new feature of Things 0.9.1 is native printing. Until now we only had Mac OS X&#8217;s built-in printing support. But since Things&#8217; to-do lists are optimized for the screen rather than paper, the results were less than desirable.
When choosing Print from the File menu, Things 0.9.1 will construct a dedicated print document which [...]]]></description>
			<content:encoded><![CDATA[<p>The biggest new feature of Things 0.9.1 is native printing. Until now we only had Mac OS X&#8217;s built-in printing support. But since Things&#8217; to-do lists are optimized for the screen rather than paper, the results were less than desirable.</p>
<p>When choosing Print from the File menu, Things 0.9.1 will construct a dedicated print document which is displayed in an extra window. Before continuing with Mac OS X&#8217;s standard print dialog users get a chance to customize the document in the following ways: </p>
<ul>
<li>Decide whether to print the entire list or just selected items.</li>
<li>Change the font size. Note that since the print document on the left does not (yet) represent the actual width of the paper, the text may appear to be larger than the actual result on paper.</li>
<li>Decide about the visibility of notes. If your list contains long notes that you do not want to print entirely, you can also choose to limit them to 8 lines of text.</li>
</ul>
<p>Clicking the Print button will then invoke Mac OS X&#8217;s standard print dialog. Particularly interesting is the Layout pane. Using the Layout pane you can arrange multiple pages on one sheet of paper.</p>
<p>As an improvement we plan to combine our dialog with some options from the standard print dialog to create what Apple calls the <a href="http://developer.apple.com/documentation/Printing/Conceptual/About_MacOSX_Printing/abtprt_chap2/chapter_2_section_4.html#/">Simplified Print Dialog</a>. The idea is to have one single simple and uncluttered dialog that suffices in most situations.</p>
<p>Things 0.9.1 also contains the following fixes and improvements (from the <a href="http://culturedcode.com/things/wiki/index.php?title=Release_Notes">Release Notes</a>):</p>
<ul>
<li>Repeating items. Fixed a bug that resulted in &#8220;after completion&#8221; option not working properly.</li>
<li>Repeating items. Resuming a previously paused item no longer crashes Things.</li>
<li>Quitting Things before closing an edited item no longer results in loosing the most recent changes.</li>
<li>The Things library is writen to disk more often now (after each edit).</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://culturedcode.com/things/blog/2008/04/things-091.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Things 0.9.0.1</title>
		<link>http://culturedcode.com/things/blog/2008/03/things-0901.html</link>
		<comments>http://culturedcode.com/things/blog/2008/03/things-0901.html#comments</comments>
		<pubDate>Tue, 18 Mar 2008 16:18:34 +0000</pubDate>
		<dc:creator>Jürgen</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://culturedcode.com/things/blog/2008/03/things-0901.html</guid>
		<description><![CDATA[The new release contains 12 bug fixes and improvements related to features we introduced in version 0.9.
A notable feature of Things 0.9, that didn&#8217;t get enough attention last time, is the new bug reporting dialog. Things 0.9 is very eager when it comes to reporting errors. In fact, a little too much so. Every little [...]]]></description>
			<content:encoded><![CDATA[<p>The new release contains <a href="http://culturedcode.com/things/wiki/index.php?title=Release_Notes">12 bug fixes and improvements</a> related to features we introduced in version 0.9.</p>
<p>A notable feature of Things 0.9, that didn&#8217;t get enough attention last time, is the new bug reporting dialog. Things 0.9 is very eager when it comes to reporting errors. In fact, a little too much so. Every little error message was promoted to a crash. This is great for developers because we get a lot of error reports and have the chance to improve the reliability of Things quickly. On the other hand, some users who never saw Things crash now did so for the first time.</p>
<p>We remedied the situation in the following way. Things will still offer to send an error report even when uncritical errors are encountered. But the error report dialog no longer forces the user to quit the application.</p>
<p>We want to apologize for the inconvenience and thank everyone who sent error reports.</p>
]]></content:encoded>
			<wfw:commentRss>http://culturedcode.com/things/blog/2008/03/things-0901.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Things 0.9</title>
		<link>http://culturedcode.com/things/blog/2008/03/things-09.html</link>
		<comments>http://culturedcode.com/things/blog/2008/03/things-09.html#comments</comments>
		<pubDate>Sat, 15 Mar 2008 12:44:45 +0000</pubDate>
		<dc:creator>Jürgen</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://culturedcode.com/things/blog/2008/03/things-09.html</guid>
		<description><![CDATA[The most substantial improvement in version 0.9 is, of course, recurring to-dos and projects. See below for an entire post describing this new feature.
Here is a list of some of the other improvements:
Choose Things Library
This is clearly an advanced feature that should be used with care. When holding down the option/alt key while opening Things, [...]]]></description>
			<content:encoded><![CDATA[<p>The most substantial improvement in version 0.9 is, of course, recurring to-dos and projects. See below for an entire post describing this new feature.</p>
<p>Here is a list of some of the other improvements:</p>
<h4>Choose Things Library</h4>
<p>This is clearly an advanced feature that should be used with care. When holding down the option/alt key while opening Things, a dialog will be displayed that lets you either create a new Things library or choose an existing one. This feature is practically identical to a similar one in iTunes.</p>
<p>You can now store your library in a place that might be more convenient for your backup routine. Choosing a web-based location is not possible.</p>
<p>This feature is probably most interesting for people who would like to carry their Things library with them. Plug in a portable or USB flash drive and move your Things library from its default location <em>Home/Library/Application Support/Cultured Code/</em> to that drive. Move the entire Things folder and don&#8217;t forget to quit Things first! The next time you open Things, it will ask you for the new location.</p>
<h4>Better error handling</h4>
<p>Things will now catch more unexpected errors and also offers a convenient way to send reports via email. Due to some limitations in Tiger this feature works best on Leopard.</p>
<h4>Duplicate</h4>
<p>There is a new Duplicate menu command in the Edit menu.</p>
<h4>Scheduled</h4>
<p>The Postponed list is now called &#8220;Scheduled&#8221;. There are a couple of improvements here. Since the Scheduled list will be the home of our recurring item templates, &#8220;Postponed&#8221; no longer seemed appropriate. But more about this in the post below. Scheduled now uses relative dates and groups items under headings like &#8220;Next week&#8221;, &#8220;April&#8221;, etc.</p>
<h4>Move to Today</h4>
<p>When an item is postponed, there is an option to automatically move it to the Today list on the specified date.</p>
<p>There are also many bug fixes, some of them quite substantial.  More details can be found in the <a href="http://culturedcode.com/things/wiki/index.php?title=Release_Notes">Release Notes</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://culturedcode.com/things/blog/2008/03/things-09.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Recurring Tasks XXL</title>
		<link>http://culturedcode.com/things/blog/2008/03/recurring-tasks-xxl.html</link>
		<comments>http://culturedcode.com/things/blog/2008/03/recurring-tasks-xxl.html#comments</comments>
		<pubDate>Sat, 15 Mar 2008 12:40:55 +0000</pubDate>
		<dc:creator>Jürgen</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://culturedcode.com/things/blog/2008/03/recurring-tasks-xxl.html</guid>
		<description><![CDATA[Early on many users told us how important an implementation of recurring tasks would be for them. Having always (mis)used iCal events for recurring tasks myself, I hadn&#8217;t seen the need for a corresponding feature in Things. So much for what difference user requests can make :). And I finally noticed that hacking recurring tasks [...]]]></description>
			<content:encoded><![CDATA[<p>Early on many users told us how important an implementation of recurring tasks would be for them. Having always (mis)used iCal events for recurring tasks myself, I hadn&#8217;t seen the need for a corresponding feature in Things. So much for what difference user requests can make :). And I finally noticed that hacking recurring tasks via iCal events isn’t that great after all. For some weeks now I have been looking forward to manage my recurring activities properly. And now I can.</p>
<p>When implementing recurring tasks one basically has the choice of either doing a primitive version like “every x days/weeks/months” or doing it in a really flexible and powerful way: enter Things 0.9.</p>
<p>Let&#8217;s look at an example: mortgage payments. Things allows rules like &#8220;Mortgage payment is due on the last day every month. Remind me 3 days in advance.&#8221; For the most part of the month you really don&#8217;t need to think about the payment. In that respect recurring tasks are no different than other postponed items except that they automatically repeat. It is thus natural to let the Postponed list handle recurrence. And since the term &#8220;Postponed&#8221; didn&#8217;t seem appropriate anymore we renamed it to &#8220;Scheduled&#8221;. This is how it works:</p>
<h4>The Scheduled list</h4>
<p>The Scheduled list does not contain the actual to-dos you are eventually going to check off, but it contains templates instead that are used to create those to-dos. This approach has a number of advantages:</p>
<p><img src='http://culturedcode.com/things/blog/wp-content/uploads/2008/03/example.jpg' alt='example.jpg' /></p>
<ul>
<li>The Scheduled list gives you a great overview of all your recurring activities. They are nicely organized by interval and provided with descriptive labels. Together with single postponed items, the Scheduled list contains everything you needn&#8217;t be concerned with just now, but will be brought to your attention on the specified dates in the future.</li>
<li>Since recurring items live in Scheduled, they don&#8217;t clutter up the lists you are working from. Instead, on the dates you specified, copies of the relevant templates are made and put into the Today list. Once completed those tasks will be logged getting out of your way until new copies are created.</li>
<li>Since the actual to-dos are completely independent from their templates, you can edit them as you wish. For example, let&#8217;s assume you want to do monthly reports that always have a certain structure. You can put an outline of that structure into the template&#8217;s note section. Every month a copy of the template is made. Consequently, each copy will already contain your outline. Each month you can then fill in different details. All monthly reports will eventually go to the Logbook where they can be review as needed.</li>
</ul>
<h4>Creating new recurring tasks</h4>
<p style="margin-bottom: 0px;">
<img style="display: block; float: right; margin-left: 1em;" src='http://culturedcode.com/things/blog/wp-content/uploads/2008/03/newrepeating.jpg' alt='newrepeating.jpg' />
</p>
<p>You can create a new template in Scheduled by clicking the toolbar button &#8220;New Repeating&#8221;.</p>
<p><img style="display: block; float: right; margin-left: 1em;" src='http://culturedcode.com/things/blog/wp-content/uploads/2008/03/actiongear1.jpg' alt='actiongear.jpg' /></p>
<p>Or you can turn an existing task or project into a repeating one by editing it and using the action gear button at the bottom right of the item.</p>
<h4>Recurrence patterns</h4>
<p>There are many options for creating recurrence patterns. For example, use &#8220;After Completion&#8221; for tasks like &#8220;tidy up desk&#8221; that don&#8217;t depend so much on the calendar, but on the last time you&#8217;ve completed them. And on Leopard you can even use iCal events as a pattern (think &#8220;Birthday calendars&#8221;). Projects can be made repeating too (check lists).</p>
<p>Implementing recurring tasks like we did was significantly more complex than we anticipated. But I believe it was worth the wait. If I am not overlooking something here, then we now have the most powerful recurring tasks implementation available. And I hope you like it.</p>
<p>We&#8217;ve gone to great length to ensure that most bugs are fixed already. But with a complex feature like this one, it is quite likely we didn&#8217;t catch everything. Please keep a close eye on it and make sure it is working as you expect. And when it doesn&#8217;t, choose <i>Things > Provide Things Feedback&#8230;</i> from Things&#8217; main menu and tell us what happened.</p>
]]></content:encoded>
			<wfw:commentRss>http://culturedcode.com/things/blog/2008/03/recurring-tasks-xxl.html/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
