<?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>Leancode &#187; Days Since</title>
	<atom:link href="http://leancode.com/category/projects/dayssince/feed/" rel="self" type="application/rss+xml" />
	<link>http://leancode.com</link>
	<description>bernie's small batches of software goodness</description>
	<lastBuildDate>Mon, 21 Apr 2008 05:14:39 +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>Earth Day</title>
		<link>http://leancode.com/2008/04/20/earth-day/</link>
		<comments>http://leancode.com/2008/04/20/earth-day/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 05:14:39 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Days Since]]></category>

		<guid isPermaLink="false">http://leancode.com/?p=148</guid>
		<description><![CDATA[In honor of Earth Day (April 22nd), Days Since is going green. Now, when you add a new copy of Days Since you&#8217;ll get a set of default reminders like days since I &#8220;rode my bike instead of driving&#8221; or days since I &#8220;took a quick shower&#8221; (and if you&#8217;re like me, quick shower means [...]]]></description>
			<content:encoded><![CDATA[<p>In honor of Earth Day (April 22nd), Days Since is going green.  Now, when you add a new copy of <a href="http://leancode.com/dayssince/">Days Since</a> <a href="http://fusion.google.com/add?moduleurl=http%3A//dayssince.googlecode.com/svn/trunk/dayssince.xml"><img src="http://buttons.googlesyndication.com/fusion/add.gif" border="0" alt="Add to Google" width="104" height="17" /></a> you&#8217;ll get a set of default reminders like days since I &#8220;rode my bike instead of driving&#8221; or days since I &#8220;took a quick shower&#8221; (and if you&#8217;re like me, quick shower means anything less than 30 minutes).</p>
<p>These are just defaults. You can continue to to use Days Since for all your other good or evil purposes by deleting the items that are just clutter to you, and adding your own. And, remember &#8212; it&#8217;s totally possible to have several copies of Days Since running on a single iGoogle page. So you can have environmental reminders, separate from household reminders, separate from &#8220;breaking habit&#8221; tracking (like how many days since i &#8220;chewed my fingernails&#8221; .. I have to shamefully admit mine hovers near zero).</p>
<p>Thanks to Robin over at Google Spain, who help concoct the list, provided Spanish strings, and who may include Days Since as part of a little upcoming treat &#8230;</p>
<p>And if anyone wants to comment with a short list of other earth-preserving &#8220;days since&#8221; reminders in any other languages, I&#8217;ll try to get them in.</p>
]]></content:encoded>
			<wfw:commentRss>http://leancode.com/2008/04/20/earth-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using gadgets outside of iGoogle</title>
		<link>http://leancode.com/2008/03/15/using-gadgets-outside-of-igoogle/</link>
		<comments>http://leancode.com/2008/03/15/using-gadgets-outside-of-igoogle/#comments</comments>
		<pubDate>Sun, 16 Mar 2008 00:01:21 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Days Since]]></category>
		<category><![CDATA[iGoogle]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">http://leancode.com/2008/03/15/using-gadgets-outside-of-igoogle/</guid>
		<description><![CDATA[Alyce asked: Bernie, I’m working on a Disaster Housing project in New Orleans/Gulf Coast. Is there some way for me to permanently code in Days Since Katrina Aug 29 2005 (928 days and counting!)I’d like to embed widget in communications to certain folks who refuse to move any quicker! In a very nice way, mind [...]]]></description>
			<content:encoded><![CDATA[<p>Alyce asked:</p>
<blockquote><p>Bernie, I’m working on a Disaster Housing project in New Orleans/Gulf Coast. Is there some way for me to permanently code in Days Since Katrina Aug 29 2005 (928 days and counting!)I’d like to embed widget in communications to certain folks who refuse to move any quicker! In a very nice way, mind you!</p></blockquote>
<p>Would love to say &#8220;yes&#8221; to this one.  But unfortunately the answer is &#8220;possibly.&#8221;  <img src='http://leancode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So I&#8217;ll use this as an excuse to at least start the explanation, since Google doesn&#8217;t do a good job in their information for users (or their API) to be clear about what gadgets can/can&#8217;t do. I&#8217;ll talk about <a href="http://leancode.com/dayssince/" target="_blank">Days Since</a>, but this applies to any Google Gadget.</p>
<p>The <a href="http://www.google.com/ig/authors?author=widgets%40leancode.com" target="_blank">gadgets I&#8217;ve written</a> all happened to be written first and primarily for <a href="http://google.com/ig" target="_blank">iGoogle</a>.  But gadgets can be used  in several different environments, with various limitations.</p>
<ol>
<li>iGoogle</li>
<li>Google Desktop</li>
<li>Google Sites</li>
<li>Open Social sites, like Orkut</li>
<li>Any Web Page.  Well, on any web page that supports javascript objects (e.g. a WordPress blog like this one, although you have to edit from the &#8220;code&#8221; tab). Google Pages also works.</li>
<li>And (kinda) via email with &#8220;Share this Gadget&#8221; within iGoogle</li>
</ol>
<p><strong>Add to Web Page </strong></p>
<p>Here&#8217;s an example, created using <a href="http://gmodules.com/ig/directory?synd=open">Google&#8217;s Gadget for Webpage Directory</a> and searching for Days Since.<br />
<script src="http://gmodules.com/ig/ifr?url=http://dayssince.googlecode.com/svn/trunk/dayssince.xml&amp;up_reminders=%5B%5B%22Hurricane%20Katrina%22%2C%222005-08-25T00%3A00%3A00Z%22%2C0%2C0%5D%5D&amp;up_ver=&amp;up_msg1=1&amp;synd=open&amp;w=320&amp;h=200&amp;title=Days+Since&amp;lang=all&amp;country=ALL&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js"></script></p>
<p>Google gadgets on a webpage are quite noisy &#8212; Google adds all kinds of buttons and links, etc. that make them not very attractive.</p>
<p>What to modify this embedded gadget for your own page? <a href="http://gmodules.com/ig/creator?url=http://dayssince.googlecode.com/svn/trunk/dayssince.xml&amp;up_reminders=%5B%5B%22Hurricane%20Katrina%22%2C%222005-08-25T00%3A00%3A00Z%22%2C0%2C0%5D%5D&amp;up_ver=&amp;up_msg1=1&amp;synd=open&amp;w=320&amp;h=200&amp;title=Days+Since&amp;lang=all&amp;country=ALL&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999" target="_blank">Click on Google&#8217;s editor here</a> to start where I left off, and edit the reminder and look of this gadget, and get the code to embed in your own page.</p>
<p>First thing you&#8217;ll notice is the settings that you normally see in &#8220;Edit Settings&#8221; have to be entered manually.  Here&#8217;s where the design of Days Since isn&#8217;t really compatible with embedding in the web. You have to enter the &#8220;reminders&#8221; field by hand &#8212; but in raw <a href="http://json.org/" target="_blank">json</a> format!  If you&#8217;re comfortable, go for it. Otherwise, you might add a copy of the gadget to your iGoogle page, get all the reminders looking the way you want them, and then go to &#8220;Edit Settings&#8221;, copy the reminders, and paste them into the &#8220;Add Gadget to Webpage&#8221; creator.</p>
<p><strong>Share this gadget</strong></p>
<p>If you&#8217;d like to set up some reminders and email them to a friend (or set of coworkers) who use iGoogle, that&#8217;s easy.  Just get the gadget set up like you&#8217;d like to share it, and select &#8220;Share this Gadget&#8221; from the gadget&#8217;s standard drop-down menu.</p>
<p>Enter a few email addresses, and make sure to check &#8220;Send my settings for this gadget&#8221; (this is off by default).  Now, your recipients will get the full, working gadget, with all the reminders or other settings you had set up.</p>
<p><strong>Reminding people about Katrina </strong></p>
<p>So for Alyce:</p>
<ul>
<li>If you want to do this by having the gadget be embedded in your email/newsletter, it will only work if you have a web page with your newsletter/email on it, have the gadget embedded there, and the actual email is a link to that page.  It won&#8217;t work to embed the gadget directly in the email, because mail programs rarely allow embedding javascript.</li>
<li>If you just want to send out a copy of Days Since to other iGoogle users with the &#8220;Days Since Katrina&#8221; reminder populated, just set that up in your iGoogle page, and &#8220;Share this Gadget&#8221; (and its settings).</li>
</ul>
<p>But, for the case you seem to be talking about (reminding the reluctant), I don&#8217;t know if either of these methods will achieve the desired effect.  I&#8217;m sure a little digging might find something better. But maybe the second (sharing the gadget with Days Since Katrina pre-populated) might be a soft enough touch, yet useful enough that the people you&#8217;re thinking about will play along.</p>
<p>In any case, best wishes and good luck,</p>
<p>Bernie</p>
]]></content:encoded>
			<wfw:commentRss>http://leancode.com/2008/03/15/using-gadgets-outside-of-igoogle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sorting and Highlighting added to Days Since iGoogle Gadget</title>
		<link>http://leancode.com/2007/10/11/sorting-and-highlighting-added-to-days-since-igoogle-gadget/</link>
		<comments>http://leancode.com/2007/10/11/sorting-and-highlighting-added-to-days-since-igoogle-gadget/#comments</comments>
		<pubDate>Thu, 11 Oct 2007 21:01:10 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Days Since]]></category>

		<guid isPermaLink="false">http://leancode.com/2007/10/11/sorting-and-highlighting-added-to-days-since-igoogle-gadget/</guid>
		<description><![CDATA[Days Since has gotten a bunch of refinements &#8212; fixes and features &#8212; that are based on feedback from the 1300 or so people who use it regularly. If you use the main version (added from the link to the left), you&#8217;ll get these updates automatically. Thanks especially to Ping Zou, who took the time [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://leancode.com/dayssince/">Days Since</a> <a href="http://google.com/ig/adde?moduleurl=http%3A//dayssince.googlecode.com/svn/trunk/dayssince.xml"><img src="http://buttons.googlesyndication.com/fusion/add.gif" width="104" height="17" border="0" alt="Add to Google" /></a> has gotten a bunch of refinements &#8212; fixes and features &#8212; that are based on feedback from the 1300 or so people who use it regularly. If you use the main version (added from the link to the left), you&#8217;ll get these updates automatically. Thanks especially to <a href="http://sg71cherub.spaces.live.com/">Ping Zou</a>, who took the time to prototype some of the ideas in his &#8220;days since plus&#8221; gadget.</p>
<ul>
<li><strong>Average days since are now tracked</strong>.  As you reset your reminders, Days Since is keeping track of the number of times you&#8217;ve done the task, and how long it&#8217;s been on average between times.</li>
<li><strong>Items sorted by how close to &#8220;due&#8221; they are</strong>.  Reminders are now sorted by how close they are to the average time they&#8217;ve taken in the past.</li>
<li><strong>Overdue reminders shown in red</strong>.  If it&#8217;s been longer than average for an item, the text color is red.  Note there&#8217;s no UI to explicitly set an expected period or anything &#8212; it&#8217;s all based on the running average. This has the benefit of making everything completely transparent to current users of Days Since, automatic for everyone, and it keeps the UI simple.  But for people who are more control freaks (or bipolar undisciplined/disciplined like myself) &#8212; it has the downside of keeping &#8220;overdue&#8221; as more of a flexible, historical based metric, rather than a hard deadline.  It&#8217;s likely to stay this way because it matches the philosophy of Days Since a bit better, but any feedback on wanting another alternative is welcome. </li>
<li><strong>Fixes for two major cases where data could be lost or hidden.</strong>.  Days Since has gotten a lot of great feedback since being listed this spring.  Several reports came in of lost data when adding a larger number items .. usually when hitting 30 to 40 range. Also, very long words in the description could cause the reset/delete buttons on the right to become hidden for all items. These reports were driving me nuts, since nothing is more sacred than user-entered data.  Days Since now has much better handling of the iGoogle and browser limitations that created these problems.  For the curious or other gadget developers, there will be follow-on posts here on these items.  See the <a href="http://groups.google.com/group/Google-Gadgets-API">Gadget API Group</a> for related discussions.</li>
<li><strong>Localized in more languages</strong>. In addition to Chinese translations by Ping, Google got in touch and provided Spanish and Portugese. Thanks to Natalie there at Google.</li>
<li><strong>Feedback when reminder limit is hit (iGoogle preference limit)</strong>.  If you reach the limit of what iGoogle&#8217;s preferences can store, you&#8217;ll get immediate feedback in the form of a message on the gadget.  Depending on your reminder description length, you should be able to fit around 20-30 reminders in the gadget.  If you hit the limit, just add another copy of Days Since to your page to add more.</li>
<li><strong>UI enhancements</strong>.  Including &#8220;Zebra&#8221;-style highlighting of every other line for easier reading on long lists;  Font style better matching Google&#8217;s default gadgets (the much-maligned font size=-1); more consistency and compatibility across Firefox, IE, Opera, and Safari browsers; and if anything goes wrong with formatting (e.g. long words on Opera) or Google&#8217;s dynamic resizing, scrollbars now come up so at least you can see and get to all the gadget content in a pinch.</li>
<li><strong>New storage format</strong>. This is more of a geeky feature, but you&#8217;ve always been able to go to &#8220;Edit Settings&#8221; for the gadget and see/backup/edit the JSON string that stores all your reminders. The format of that string is now updated, and the gadget automatically detects the old format and upgrades it to the new when you run the new version of the gadget.  This kind of auto-upgrade is somewhat tricky, so if you see any problems with the upgrade, please comment here. The benefits of the new format are: 1. Date is now slightly more human readable (ISO format).  2. Fewer overhead characters, so more reminders can fit within the iGoogle storage limit.</li>
<li><strong>Visible version number</strong>. If you &#8220;Edit Settings&#8221; you&#8217;ll now see a version number of the gadget code which is updated every time you save a preference.   If you find a bug or have any feedback, please also note the gadget version, browser (firefox, ie, etc.) &#038; browser version with the feedback. The version will also be used for any future schema upgrades. Thanks!</li>
<li><strong>Internal refactoring</strong>. Internally, the Days Since code got a lot of cleanup, including clean javascript namespacing.  It&#8217;s not essential when running in an IFRAME, but still nice for the future.</li>
</ul>
<p>Remaining limitations:</p>
<ul>
<li>Can&#8217;t add days since reminders that are older than 1970. (Javascript date object limitation)</li>
<li>Data appears to be lost if items are added, then gadget is moved around on igoogle page. Workaround: refresh your page to get data back (iGoogle bug)</li>
<li>Limit on # of reminders: ~2K chars for all preferences (iGoogle/browser limitation)</li>
<li>Only works on iGoogle &#8211; not Google desktop or elsewhere (Google only supports saving preferences on iGoogle)</li>
</ul>
<p>As Google&#8217;s caches update, the new Days Since will reach you.  A port of similar updates to <a href="http://leancode.com/daysuntil/">Days Until</a> and <a href="http://leancode.com/feedsparks/">Feedsparks</a> will be coming. If you see any problems or have any other ideas, feedback is welcome! </p>
]]></content:encoded>
			<wfw:commentRss>http://leancode.com/2007/10/11/sorting-and-highlighting-added-to-days-since-igoogle-gadget/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Breaking up long words in HTML with Javascript/CSS</title>
		<link>http://leancode.com/2007/07/19/breaking-up-long-words-in-html-with-javascriptcss/</link>
		<comments>http://leancode.com/2007/07/19/breaking-up-long-words-in-html-with-javascriptcss/#comments</comments>
		<pubDate>Fri, 20 Jul 2007 03:26:37 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Days Since]]></category>
		<category><![CDATA[Days Until]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://leancode.com/2007/07/19/breaking-up-long-words-in-html-with-javascriptcss/</guid>
		<description><![CDATA[[update 10/17: The substitution has been updated to cover more browsers. This should work on every major modern browser, EXCEPT Safari -- I can find no solution for that browser. If you find a solution for Safari, or a browser this doesn't work on, please comment. Thanks!] Long words can create a significant layout problem, [...]]]></description>
			<content:encoded><![CDATA[<p>[update 10/17: The substitution has been updated to cover more browsers.  This should work on every major modern browser, EXCEPT Safari -- I can find no solution for that browser. If you find a solution for Safari, or a browser this doesn't work on, please comment. Thanks!]</p>
<p>Long words can create a significant layout problem, especially for widgets which have to live in a small amount of screen space.</p>
<p><a href="http://leancode.com/dayssince/">DaysSince</a> and <a href="http://leancode.com/daysuntil/">DaysUntil</a> were both having a problem where very long words in the reminder description could push the &#8220;delete item&#8221; icon and other content off the right of the widget, make the text unreadable &#8212; and unreachable, so you can no longer delete the offending item.</p>
<p>What would be nice is to break up long words, but what&#8217;s the easiest way to do that, given that you don&#8217;t have a knowable fixed width to display in?</p>
<p>For a Javascript widget, this combination of regular expression and CSS hacks might get you what you need.</p>
<p>First, break up your strings with non-breaking spaces (nbsp), wrapped in a span that lets us make them invisible. If x holds the string with potentially long words, this regex will return this result (splitting every 9 characters).</p>
<pre><code>x.replace(/(&amp;#92;S{8,}?)/g, "$1&amp;lt;wbr/&amp;gt;&amp;lt;span class='break'&amp;gt; &amp;lt;/span&amp;gt;")</code></pre>
<p>In the regex,</p>
<ul>
<li>? is to make the match not greedy &#8212; that is, it will stop after just 8+1 characters.</li>
<li>/g is to match all 8+1 character or longer sets of non-whitespace characters</li>
<li>$1 returns the matched characters, to which we add a non-breaking space within a span that we&#8217;ll format below</li>
</ul>
<p>Next, add a new selector to your CSS for the spans you just inserted, to make them invisible (credit to <a href="http://learningtheworld.eu/">Martin Kliehm</a> for this hack).</p>
<pre><code>.break {
font-size: 1px;
line-height: 1px;
float:right !important;
float: none;
}</code></pre>
<p>All the styles are essential &#8212; the two apparently conflicting float styles are to <a href="http://modxcms.com/css-hacking-important.html">set different values for IE6 vs. other browsers</a>. </p>
<p>Days Since and Days Until have been updated with this fix (it may take some time for Google&#8217;s caches to update &#8212; so use a new copy <a href="http://fusion.google.com/add?moduleurl=http%3A//dayssince.googlecode.com/svn/trunk/dayssince.xml"><img src="http://buttons.googlesyndication.com/fusion/add.gif" width="104" height="17" border="0" alt="Add to Google"></a> to test.  </p>
<p>Any refinements we can make to this solution?  Anyone see any problems with specific browser versions?</p>
]]></content:encoded>
			<wfw:commentRss>http://leancode.com/2007/07/19/breaking-up-long-words-in-html-with-javascriptcss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First month of widget growth stats</title>
		<link>http://leancode.com/2007/06/30/first-month-of-widget-growth-stats/</link>
		<comments>http://leancode.com/2007/06/30/first-month-of-widget-growth-stats/#comments</comments>
		<pubDate>Sat, 30 Jun 2007 17:18:59 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Days Since]]></category>
		<category><![CDATA[Days Until]]></category>
		<category><![CDATA[business]]></category>

		<guid isPermaLink="false">http://leancode.com/2007/06/30/first-month-of-widget-growth-stats/</guid>
		<description><![CDATA[On one Saturday in May (the 19th), we were in the car talking about kids baths or something, and my wife said &#8220;you know that widget you talked about writing &#8212; the one that tracks how many days since we did something? I want it. You should write it.&#8221; Well, when any of my kooky [...]]]></description>
			<content:encoded><![CDATA[<p>On one Saturday in May (the 19th), we were in the car talking about kids baths or something, and my wife said &#8220;you know that widget you talked about writing &#8212; the one that tracks how many days since we did something? I want it. You should write it.&#8221; Well, when any of my kooky ideas get even a little bit of validation, it&#8217;s great.  And a command from the wife is certainly over the top. </p>
<p>So the widget was roughly done by the next evening.  On Monday night, I emailed lifehacker, not really expecting much.  Here are some charts with the usage patterns over the first 30 days since then.</p>
<p><a href='http://leancode.com/wp-content/uploads/2007/06/dayssince_pageview_chart_june_18.png' title='Days Since Pageviews Chart'><img src='http://leancode.com/wp-content/uploads/2007/06/dayssince_pageview_chart_june_18.png' width='342' alt='Days Since Pageviews Chart' /></a></p>
<p>This is a chart of pageviews for the widget. You can see the huge jump on Tuesday May 22nd, when I was luckly enough to have lifehacker post an article about the widget that morning.  It basically set the level of use moving forward.</p>
<p><a href='http://leancode.com/wp-content/uploads/2007/06/dayssince_stats_june_18.png' title='Days Since Statistics'><img src='http://leancode.com/wp-content/uploads/2007/06/dayssince_stats_june_18.png' alt='Days Since Statistics' /></a></p>
<p>This adds up to a lot of pageviews in a month.  If these were hitting one of my servers, it would be enough load that I&#8217;d be worrying a bit about spikes of traffic and slowness.  Fortunately, one of the design goals these widgets have is to use no server resources of my own: all code runs in the browser, and all data is stored in the settings of the widget itself &#8212; Google&#8217;s servers.  So these could grow to 10 or 100 times the traffic, and I wouldn&#8217;t loose sleep at night. You can also see that for these iGoogle widgets, unique views tend to run about half the pageview rate.</p>
<p>This is a good rate of usage, but still not yet quite enough to qualify for Google&#8217;s new <a href="http://www.google.com/gadgetventures/">Gadget Ventures</a> program, which offers seed funding for selected widgets with over 250,000 page views per week. With a little more press or an increase in organic growth, it&#8217;s possible it could hit that level.</p>
<p>One of the requests that came in early was &#8220;how about the same kind of thing for counting down the days until a future event?&#8221;.  There were already many countdown timers, but not one that tracked several, with easy UI for add/remove and annual recurrence. Starting from the Days Since code, two weeks later the Days Until widget was written.  But what would the conversion rate be, if this widget didn&#8217;t get the same level of press on a site like Lifehacker? Here is a 30-day graph over the same timeperiod as the one above.</p>
<p><a href='http://leancode.com/wp-content/uploads/2007/06/daysuntil_pageview_chart_june_18.png' title='Days Until Pageviews Chart'><img src='http://leancode.com/wp-content/uploads/2007/06/daysuntil_pageview_chart_june_18.png' width='342' alt='Days Until Pageviews Chart' /></a><br />
Around June 10th, I added a mini-message to Days Since, advertising the Days Until widget.  I didn&#8217;t know what kind of conversion ratio would happen &#8212; but these are clearly related and complementary things, so it turned out to be surprisingly high &#8212; today, it appears that approx 25% of Days Since users became users of the Days Until widget.<br />
<a href='http://leancode.com/wp-content/uploads/2007/06/daysuntil_stats_june_18.png' title='Days Until Statistics'><img src='http://leancode.com/wp-content/uploads/2007/06/daysuntil_stats_june_18.png' alt='Days Until Statistics' /></a></p>
<p>Between Days Since and Days Until, there has been about 13,000 unique users of the two widgets so far in this first month.  Some startups would kill for that level of unique users, but it&#8217;s just getting interesting here for the widget world.</p>
<p>So where does this go from here?  The level of usage so far makes me feel good that the relatively small investment of time is delivering value to the world &#8212; a few thousand people are finding it useful, and there&#8217;s been some really kind comments on the blog and in email.</p>
<p>From a business model perspective, there isn&#8217;t a direct one yet.  By showing what&#8217;s possible, and what Leancode is capable of, it could generate some leads (particularly from companies which want to create a closer connection with customers by providing widgets that tie into their products or services). And you could imagine creating a portfolio of time management widgets, some of which are higher-value and could have premium versions.</p>
<p>But, for now, this is just a fun and interesting experiment.</p>
]]></content:encoded>
			<wfw:commentRss>http://leancode.com/2007/06/30/first-month-of-widget-growth-stats/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Knowing when it&#8217;s been too many Days Since</title>
		<link>http://leancode.com/2007/06/20/knowing-when-its-been-too-many-days-since/</link>
		<comments>http://leancode.com/2007/06/20/knowing-when-its-been-too-many-days-since/#comments</comments>
		<pubDate>Thu, 21 Jun 2007 01:25:26 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Days Since]]></category>

		<guid isPermaLink="false">http://leancode.com/2007/06/20/knowing-when-its-been-too-many-days-since/</guid>
		<description><![CDATA[[update: These ideas have evolved into the latest mainline version of Days Since. Here's an update.] One of the early feature requests for the Days Since widget (which is getting over 400K page views/month now &#8212; more on that later) was the ability to get reminded when it&#8217;s been too long since one of your [...]]]></description>
			<content:encoded><![CDATA[<p>[update: These ideas have evolved into the latest mainline version of Days Since. <a href="http://leancode.com/2007/10/11/sorting-and-highlighting-added-to-days-since-igoogle-gadget/">Here's an update</a>.]</p>
<p>One of the early feature requests for the <a href="http://leancode.com/dayssince/">Days Since</a> widget (which is getting over 400K page views/month now &#8212; more on that later) was the ability to get reminded when it&#8217;s been too long since one of your repetitive tasks was done.  When you think about it, this kind of feature saves you a lot mental energy &#8212; instead of having to scan the whole list, you just look at those that have been flagged (or those turned red, etc.).</p>
<p>But does this mean there&#8217;s another field to enter (days until &#8220;overdue&#8221;)?  Should you enter one number for days, or perhaps a full date upon which it&#8217;s due? </p>
<p>Every additional field and option is another bit of complexity which can turn people off.  And one of the things good web apps have taught us is using the smarts of the machine to figure out some stuff for us humans is a big win. Things like a single search box that doesn&#8217;t ask lots of questions (what are you searching for? where? which category of stuff?) or a &#8220;quick add&#8221; button for a calendar that takes the whole event as a free-form string.</p>
<p>In the case of Days Since, we want to (1) Not add UI which might turn off current users (who don&#8217;t care about a concept of overdue) with clutter and extra complexity. (2) Try to have the widget do some of our work for us. (3) Not add much code &#038; complexity to the widget itself.</p>
<p>One of the users of Days Since, Ping Zou, was looking for just this kind of functionality and decided to work with the Days Since code and add it.  We&#8217;ve been tossing ideas and code and back forth, and have gotten Ping added as a first additional project member of the Days Since subversion repository on Google Code. </p>
<p>At the moment, Ping is a PHD student with the Electronic and Electrical Engineering Department, University of Sheffield. He has a blog (in Chinese), which you can see at <a href="http://sg71cherub.spaces.live.com/">http://sg71cherub.spaces.live.com/</a>. </p>
<p>Ping has also generously done a translation of the strings for the main Days Since widget to Simplified Chinese &#8212; which is great, as Days Since has been lacking non-English translations.  And for the the new features, we&#8217;re doing on a very small scale what many large projects (like Linux) do &#8212; have a &#8220;development branch&#8221; where new features and ideas are played with, and a &#8220;stable branch&#8221; where all our regular users are and changes are done carefully.  </p>
<p>If you&#8217;re interested in getting the development branch (possibly bugs and all), you can add and play with the version of days since <a href="http://dayssince.googlecode.com/svn/trunk/dayssinceplus.xml">here</a>.</p>
<p>And for everyone else, please keep any requests you have coming (in comments or in email).  In time, the ones that provide value without getting in the way of current users will make their way to the stable, production-version <a href="http://www.google.com/ig/directory?num=24&#038;url=http://dayssince.googlecode.com/svn/trunk/dayssince.xml">Days Since</a> widget.</p>
]]></content:encoded>
			<wfw:commentRss>http://leancode.com/2007/06/20/knowing-when-its-been-too-many-days-since/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Days Since Widget &#8211; v17</title>
		<link>http://leancode.com/2007/05/23/days-since-widget-v17/</link>
		<comments>http://leancode.com/2007/05/23/days-since-widget-v17/#comments</comments>
		<pubDate>Wed, 23 May 2007 23:22:33 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Days Since]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://leancode.com/2007/05/23/days-since-widget-v17/</guid>
		<description><![CDATA[The Days Since widget just got its first update since Monday. Google caches your copy of the widget, so the changes may take a while to propagate. Most of the changes are as planned from the previous post: Switch to an easier-to-understand calendar day (counters turn over at midnight). The widget previously used a 24-hour [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://leancode.com/dayssince/">Days Since</a> widget just got its first update since Monday.  Google caches your copy of the widget, so the changes may take a while to propagate.  Most of the changes are as planned from the previous post:</p>
<ul>
<li>Switch to an easier-to-understand calendar day (counters turn over at midnight). The widget previously used a 24-hour day for each reminder.  But since hours/mins are not visible, that created a guessing game as to when the counters would turn.  Refreshing your page at midnight (plus or minus a few <a href="http://tycho.usno.navy.mil/leapsec.html">leap seconds</a> since 1970) should show incremented counters.</li>
<li>The widget now has smaller icons and text, to get more reminders in the space (closer to a normal 1 line spacing). This is also more calibrated to other widgets (which tend to select small fonts).</li>
<li>Get Firefox and IE, at least, to look nearly identical.  The main differences affecting this widget are differences in how they render tables, especially with a span inside that has its own padding/margins.  Firefox expands the size of the cells to fit, IE needs a little push.</li>
<li>Fix pluralization on the screenshot, and author&#8217;s email in metadata</li>
</ul>
<p>Did not make any change to detect &#8220;enter&#8221; in the reminder textbox. You still have to hit the &#8220;add&#8221; button.</p>
<p>Please let comment here if you see any problems, or have additional feedback on features, etc.  Especially cool would be any interesting and/or funny uses for it.  The <a href="http://lifehacker.com/software/timer/days-since-igoogle-widget-tracks-how-much-time-has-passed-262483.php">lifehacker thread</a> has a good one&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://leancode.com/2007/05/23/days-since-widget-v17/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Days Since widget &#8211; planned updates</title>
		<link>http://leancode.com/2007/05/23/days-since-widget-planned-updates/</link>
		<comments>http://leancode.com/2007/05/23/days-since-widget-planned-updates/#comments</comments>
		<pubDate>Wed, 23 May 2007 17:38:52 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Days Since]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://leancode.com/2007/05/23/days-since-widget-planned-updates/</guid>
		<description><![CDATA[Days Since was written over the weekend, and then had the good fortune to hit lifehacker&#8216;s front page on Tuesday (in one day, it went from near-zero to over 3000 pageviews, and 1000 unique visitors using the widget). But that means there&#8217;s some obvious opportunities for refinement. Thanks for all the comments and suggestions! Here&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://leancode.com/dayssince/">Days Since</a> was written over the weekend, and then had the good fortune to hit <a href="http://lifehacker.com/">lifehacker</a>&#8216;s front page on Tuesday (in one day, it went from near-zero to over 3000 pageviews, and 1000 unique visitors using the widget).  But that means there&#8217;s some obvious opportunities for refinement.  Thanks for all the comments and suggestions!</p>
<p>Here&#8217;s what&#8217;s planned for an update.</p>
<ul>
<li>The widget currently uses a 24-hour day for each reminder.  But since hours/mins are not visible, that creates a guessing game as to when the counters will turn.  Switch to an easier-to-understand calendar day (counters turn over at midnight).</li>
<li>Shrink the reset button and counter down, to get more reminders in the space (closer to a normal 1 line spacing).</li>
<li>Get Firefox and IE, at least, to look nearly identical</li>
<li>Fix pluralization on the screenshot.</li>
<li>Look at getting &#8220;enter&#8221; in the reminder textbox to submit the &#8220;add&#8221; form</li>
<li>Fix author&#8217;s email, as it currently goes to a black hole &#8212; bug or feature? <img src='http://leancode.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<p>And I&#8217;ve got one call for testing help:  Two people reported loosing data when moving the widget.</p>
<p>Because Days Since stores all its data in the widget settings, if you remove it from iGoogle and re-add it, it&#8217;s expected to loose any data you have there.  But moving the widget on the iGoogle page should be fine (and I&#8217;ve and seen no problems in my testing).  I&#8217;m looking to find out if it&#8217;s something expected (like browsers with cookies turned off) or something more insidious (lost data with particular steps or particular browsers).  If anyone has used Days Since and lost reminders when you&#8217;ve moved it around on the page, please drop a comment with detail on how you got it to happen.</p>
<p>Somewhat separately, as pointed out by SeT over on the lifehacker thread, it also makes sense to have a sister widget with &#8220;Days Until&#8221;. Basically like <a href="http://calebegg.com/countdown/">Caleb&#8217;s existing Countdown widget</a>, but with this codebase &#8212; several reminders per widget.  Everything needed is there, except fitting calendar date entry into the UI.</p>
]]></content:encoded>
			<wfw:commentRss>http://leancode.com/2007/05/23/days-since-widget-planned-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Days Since iGoogle gadget v0.16</title>
		<link>http://leancode.com/2007/05/21/days-since-igoogle-gadget-v016/</link>
		<comments>http://leancode.com/2007/05/21/days-since-igoogle-gadget-v016/#comments</comments>
		<pubDate>Mon, 21 May 2007 22:21:12 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[Days Since]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://leancode.com/2007/05/21/days-since-igoogle-gadget-v016/</guid>
		<description><![CDATA[If you&#8217;re like me, perhaps you Forget how long it&#8217;s been since you actually bathed your little ones? Forget to water those poor, thirsty plants? Would like to track how long you&#8217;ve stayed away from something bad (like caffeine)? If you&#8217;re an iGoogle user, here&#8217;s a widget to help you. It&#8217;s in beta form right [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re like me, perhaps you</p>
<ul>
<li>Forget how long it&#8217;s been since you actually bathed your little ones?</li>
<li>Forget to water those poor, thirsty plants?</li>
<li>Would like to track how long you&#8217;ve stayed away from something bad (like caffeine)?</li>
</ul>
<p>If you&#8217;re an iGoogle user, here&#8217;s a widget to help you.  It&#8217;s in beta form right now.  Feedback (especially browser compatibility reports or message file translations) are very welcome!</p>
<p><img src="http://dayssince.googlecode.com/svn/trunk/screenshot.png" alt="screenshot" /><br />
<a href="http://www.google.com/ig/add?moduleurl=http://dayssince.googlecode.com/svn/trunk/dayssince.xml&#038;source=imag">Add Days Since to your own iGoogle page!</a></p>
<p>The basic idea and usage model behind Days Since has affinity with Getting Things Done and other time management techniques. Get the noise of remembering your recurring todos out of your head, and onto paper &#8212; or in this case, your iGoogle dashboard.</p>
<p>Interested? See more at <a href="http://leancode.com/dayssince/">Days Since</a></p>
]]></content:encoded>
			<wfw:commentRss>http://leancode.com/2007/05/21/days-since-igoogle-gadget-v016/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.483 seconds -->
