<?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>Imagination in VGA &#187; programming</title>
	<atom:link href="http://joshuamorse.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://joshuamorse.com</link>
	<description>Thoughts on Usability, Design, and Gadgets from Josh Morse, User Experience Designer</description>
	<lastBuildDate>Wed, 11 Jan 2012 20:19:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Meebo Auto-Away Chrome Extension</title>
		<link>http://joshuamorse.com/2011/09/24/meebo-auto-away-chrome/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=meebo-auto-away-chrome</link>
		<comments>http://joshuamorse.com/2011/09/24/meebo-auto-away-chrome/#comments</comments>
		<pubDate>Sat, 24 Sep 2011 15:30:59 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://joshuamorse.com/?p=423</guid>
		<description><![CDATA[It&#8217;s been pretty quiet around here, but I&#8217;ve finally motivated myself to publish a new Chrome extension: Meebo Auto-Away. This superceeds my old desktop program, and provides much smoother functionality. Meebo Auto-Away is a small extension that allows you to specify idle time (in seconds), and away message, and a back message. It will only [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been pretty quiet around here, but I&#8217;ve finally motivated myself to publish a new Chrome extension: Meebo Auto-Away. This superceeds my <a href="http://joshuamorse.com/2010/10/24/meebo-auto-away/">old desktop program</a>, and provides much smoother functionality.</p>
<p>Meebo Auto-Away is a small extension that allows you to specify idle time (in seconds), and away message, and a back message. It will only function if you are signed into meebo.com in a Chrome tab.</p>
<p>When your computer has been idle for the specified number of seconds, your Meebo status will automatically be set to away using the provided message. When you return from being idle, you will automatically be set to available using the provided back message.</p>
<p>If you wish to hide the Meebo Auto-Away icon, you can right-click on it and select &#8220;hide icon&#8221;. You can still manage your settings by navigating to Tools->Extensions and clicking the &#8220;options&#8221; link for Meebo Auto-Away.</p>
<p>You can install the most up-to date extension from the <a href="https://chrome.google.com/webstore/detail/jfhopeibicgomdhedaeiclfglohaphdo">Meebo Auto-Away Chrome Extensions site</a>. Alternately, you can install <a href="http://www.joshuamorse.com/Meebo-Auto-Away.crx">this .crx file</a>.</p>
<p>Questions, comments, and general feedback can be sent from <a href="http://joshuamorse.com/contact-me/">my contact page</a>.</p>
<p><a href="http://joshuamorse.com/wp-content/uploads/2011/09/Screenshot.png"><img src="http://joshuamorse.com/wp-content/uploads/2011/09/Screenshot-300x187.png" alt="Meebo Auto-Away Screenshot" title="Meebo Auto-Away Screenshot" width="300" height="187" class="aligncenter size-medium wp-image-426" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://joshuamorse.com/2011/09/24/meebo-auto-away-chrome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meebo Auto-Away &#8211; Set to Away When Idle is Detected</title>
		<link>http://joshuamorse.com/2010/10/24/meebo-auto-away/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=meebo-auto-away</link>
		<comments>http://joshuamorse.com/2010/10/24/meebo-auto-away/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 17:20:17 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[programs]]></category>

		<guid isPermaLink="false">http://joshuamorse.com/?p=389</guid>
		<description><![CDATA[This program has been superseded by my Meebo Auto-Away Chrome Extension. Meebo Auto-Away is a simple program that detects your computer&#8217;s idle status and sets your Meebo status to away after a defined amount of idle time. Background Over the years, I have used a number of instant messaging aggregators, but my favorite so far [...]]]></description>
			<content:encoded><![CDATA[<p><b>This program has been superseded by my <a href="http://joshuamorse.com/2011/09/24/meebo-auto-away-chrome/">Meebo Auto-Away Chrome Extension</a>.</b></p>
<p>Meebo Auto-Away is a simple program that detects your computer&#8217;s idle status and sets your Meebo status to away after a defined amount of idle time.</p>
<h2>Background</h2>
<p>Over the years, I have used a number of instant messaging aggregators, but my favorite so far has been <a href="http://www.meebo.com">Meebo</a>, a free, web-based tool that can handle the usual suspects, like AIM and MSN, but also ICQ and Facebook. In addition, because it is web based, I can log on from any computer and access my organized friend list and view the history of my messages.</p>
<p>My major complaint with Meebo has always been that it does not set users to away when the computer has been idle, a feature that is present on most modern instant messaging applications. The reason is that a web application cannot access the operating system to determine how long the computer has been idle. I had hoped that the Meebo notifier, a desktop application, would handle this functionality, but, alas, it does not.</p>
<p>After having several people continue to message me even though I had been away from my computer for hours, I decided that I needed to do something to solve this problem. Meebo has no public API, so I couldn&#8217;t simply write a program that checked the computer&#8217;s idle status and set a user to away through a backdoor channel.</p>
<p>Instead, I went through the front door, embedding a browser into a .Net application that I&#8217;ve christened Meebo Auto-Away. Essentially, a user logs into Meebo through the embedded browser, but Meebo Auto-Away can determin a user&#8217;s idle time and set the user to away the same way that a web browser does.</p>
<h2>Using Meebo Auto-Away</h2>
<p>To use the program, simply download the executable and run it (you will need a Windows computer with .Net installed). After the application starts, you can enter the number of seconds you would like the program to wait before setting you away and the away message you would like displayed. You can then log into Meebo through the embedded web browser. You could actually use Meebo Auto-Away for all of your instant messaging, though I would recommend minimizing it to the system tray and using Meebo in a full browser (Meebo handles multiple sessions very well).</p>
<p>You can save your current idle time and away message values as the default in the file menu. Meebo Auto-Away connects through https, so your session is secure. I do not collect any data from the Meebo Auto-Away application or install any other applications. This is a personal program that I created for my own use, and I am sharing so that others frustrated Meebo users can also enjoy setting their status to away on idle.</p>
<p>If you have any questions or find any bugs, feel free to post them in the comments.</p>
<h2>Download</h2>
<p>Note that this application is freeware. I am not an employee of Meebo or associated with them in any way, save that I use and appreciate their application. By downloading, you agree that you are using Meebo Auto-Away at your own risk. I am not responsible for any issues that result from using Meebo Auto-Away.</p>
<h3><a href="http://joshuamorse.com/wp-content/uploads/2010/10/MeeboAutoAway_v1.0.exe">Download MeeboAutoAway_v1.0</a></h3>
<h2>Screenshot</h2>
<p style="text-align: center;"><a href="http://joshuamorse.com/wp-content/uploads/2010/10/MeeboAutoAwayScreenshotv2.2.png"><img class="aligncenter size-full wp-image-411" title="MeeboAutoAwayScreenshotv2.2" src="http://joshuamorse.com/wp-content/uploads/2010/10/MeeboAutoAwayScreenshotv2.2.png" alt="MeeboAutoAwayScreenshotv2.2" width="639" height="479" /></a></p>
<p style="text-align: center;"><a href="http://joshuamorse.com/wp-content/uhttp://joshuamorse.com/wp-content/uploads/2010/10/MeeboAutoAwayScreenshotv2.1.pngploads/2010/10/MeeboAutoAwayScreenshot2.png"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://joshuamorse.com/2010/10/24/meebo-auto-away/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update to Axure + Protonotes script</title>
		<link>http://joshuamorse.com/2009/02/27/update-to-axure-protonotes-script/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=update-to-axure-protonotes-script</link>
		<comments>http://joshuamorse.com/2009/02/27/update-to-axure-protonotes-script/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 16:02:17 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Axure]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[information architecture]]></category>
		<category><![CDATA[programing]]></category>
		<category><![CDATA[Protonotes]]></category>
		<category><![CDATA[Protoshare]]></category>

		<guid isPermaLink="false">http://joshuamorse.com/?p=73</guid>
		<description><![CDATA[In a previous post, I discussed a script that I wrote to insert text into the &#60;HEAD&#62; tags off all HTML files in a directory.  The intention was to allow users of Axure prototypes to insert a Protonotes script and be able to annotate pages in their prototype, similar to the functionality of Protoshare. I [...]]]></description>
			<content:encoded><![CDATA[<p>In a <a href="http://joshuamorse.com/2009/01/14/axure-protonotes-an-alternative-to-protoshare/">previous post</a>, I discussed a script that I wrote to insert text into the &lt;HEAD&gt; tags off all HTML files in a directory.  The intention was to allow users of Axure prototypes to insert a <a href="http://www.protonotes.com">Protonotes</a> script and be able to annotate pages in their prototype, similar to the functionality of <a href="http://www.protoshare.com">Protoshare</a>.</p>
<p>I have updated the script once again to Version 3.  Two new features were added: first, you can now ignore HTML files that end with &#8220;start.html&#8221;.  These files are generated by the new Axure 5.5, and they contain frames, which can make the Protonotes tool difficult to work with.  Second, the script can now be minimized to the system tray, where it will run in the background.  While running, it will monitor it&#8217;s current directory for changes to the HTML files, and reinsert the script if it detects new or changed HTML files.  In this way, users can keep recreating Axure prototypes without having to run the Insert script again.</p>
<p><a href="http://joshuamorse.com/wp-content/uploads/2009/02/headinsert_v13.exe">Download Version 1.3 here</a>.</p>
<p><a href="http://joshuamorse.com/wp-content/uploads/2009/06/headinsert_v131.exe">Download Version 1.31 (additional debugging support) here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://joshuamorse.com/2009/02/27/update-to-axure-protonotes-script/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Axure &amp; Protonotes: an alternative to Protoshare</title>
		<link>http://joshuamorse.com/2009/01/14/axure-protonotes-an-alternative-to-protoshare/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=axure-protonotes-an-alternative-to-protoshare</link>
		<comments>http://joshuamorse.com/2009/01/14/axure-protonotes-an-alternative-to-protoshare/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 03:58:37 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Axure]]></category>
		<category><![CDATA[information architecture]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Protonotes]]></category>
		<category><![CDATA[Protoshare]]></category>

		<guid isPermaLink="false">http://joshuamorse.com/?p=33</guid>
		<description><![CDATA[Update 2/27/09: Updated the HeadInsert script again to Version 1.3.  Read about the changes here. Update 1/21/09: Added new version of HeadInsert which can ignore certain HTML files. Do a Google search on Axure vs. Protoshare vs. iRise and you may find sponsored links from each of these products explaining why they are the best. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update 2/27/09: Updated the HeadInsert script again to <a href="http://joshuamorse.com/wp-content/uploads/2009/02/headinsert_v13.exe">Version 1.3</a>.  Read about the changes <a href="http://joshuamorse.com/2009/02/27/update-to-axure-protonotes-script/">here</a>.</strong></p>
<p><strong>Update 1/21/09: Added new version of HeadInsert which can ignore certain HTML files.</strong></p>
<p>Do a Google search on Axure vs. Protoshare vs. iRise and you may find sponsored links from each of these products explaining why they are the best.  These three are the leading &#8220;designed for IA&#8221; options for wireframing and prototyping (I say designed for IA, as Visio, Omnigraffle, and other drawing/diagramming tools still have a strong following).</p>
<p>iRise was never an option for me due to the cost, so I have been using Axure for the past 8 months. I initially was able to use Axure for free thanks to their <a href="http://axure.com/cs/blogs/axure/archive/2007/08/21/Axure_2700_s-Good-Student-Program.aspx">Good Student Program</a>, and I found it to be well worth the cost when I entered the workplace. I have found it to be a great tool for wireframing, prototyping, and generating specifications.  While there is certainly room for improvement, particularly with specification generation, the community around Axure is engaged and growing, which means that new features and widget libraries are coming all the time.</p>
<p>I heard about <a href="http://www.protoshare.com/">Protoshare</a> a couple months ago.  While I haven&#8217;t used it, I have read some documentation and viewed demonstrations.  Axure still seems to be more fully featured for wireframing and prototyping, but I was intregued by Protoshare&#8217;s reviewing features.  Then, while browsing the <a href="http://www.axure.com/cs/forums/">Axure forums</a>, someone mentioned <a href="http://www.protonotes.com/">Protonotes</a>, a free tool for annotating HTML pages.  As Axure produces HTML prototypes, it seemed like the Protonote script could be inserted to achieve functionality similar to Protoshare.  By inserting the script into each page in the prototype, team members and even clients could make comments directly on the prototype/wireframe, which can then be viewed in a central location.</p>
<p>The problem is that Axure generates a new HTML page for each wireframe, so large projects can easily generate 20+ pages.  Inserting the Protonotes script into the header of each one every time the prototype is recreated isn&#8217;t really feasible.  To that end, I wrote a small program that will allow users to automatically insert a script into the header of each HTML file for their prototype.</p>
<p>Just download and extract <a href="http://joshuamorse.com/wp-content/uploads/2009/01/headinsert_v12.zip">this Zip file</a>.  Generate your Axure prototype and drop the HeadInsert.exe file into your prototype directory.  Run it, then paste your Protonotes code into the text box.  Leave the checkboxes checked (you don&#8217;t want Protonotes scripts in your frame management files) and press the insert button. For example, I pasted the following:</p>
<p>&lt;script src=&#8221;http://www.protonotes.com/js/protonotes.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
<span>&lt;</span>script type=&#8221;text/javascript&#8221;&gt;<br />
var groupnumber=&#8221;<strong>##############</strong>&#8220;;<br />
&lt;/script&gt;</p>
<p>into all of my prototype HTML files.</p>
<p>I recommend making a backup of your prototype files if they are important, as there is no way to reverse the process short of opening each .html file and removing the code you inserted (though you can always regenerate your prototype with Axure). I am not responsible for anything unexpected that happens to your files, unlikely as this is.  It&#8217;s a pretty simple script, but if any errors occur, please let me know.</p>
<p>Zip file: <a href="http://joshuamorse.com/wp-content/uploads/2009/01/headinsert_v12.zip">HeadInsert_v1.2</a></p>
<p style="text-align: center;"><a href="http://joshuamorse.com/wp-content/uploads/2009/01/inserthead2.png"><img class="aligncenter size-full wp-image-44" title="inserthead2" src="http://joshuamorse.com/wp-content/uploads/2009/01/inserthead2.png" alt="inserthead2" width="320" height="478" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://joshuamorse.com/2009/01/14/axure-protonotes-an-alternative-to-protoshare/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>The Zune Leap Year Bug: Source Code</title>
		<link>http://joshuamorse.com/2009/01/02/the-zune-leap-year-bug/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-zune-leap-year-bug</link>
		<comments>http://joshuamorse.com/2009/01/02/the-zune-leap-year-bug/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 18:24:55 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://joshuamorse.com/?p=23</guid>
		<description><![CDATA[For those who have been watching the news, Microsoft&#8217;s Zune mp3 player froze for owners on December 31. Microsoft blamed the bug on the leap year, and it seems that things have resolved themselves. Looking at the Zune source code, one can see exactly where things went wrong: while (days &#62; 365) { if(IsLeapYear(year)) { [...]]]></description>
			<content:encoded><![CDATA[<p>For those who have been watching the news, Microsoft&#8217;s Zune mp3 player froze for owners on December 31.  Microsoft <a href="http://www.forbes.com/afxnewslimited/feeds/afx/2009/01/01/afx5872995.html">blamed the bug on the leap year</a>, and it seems that things have resolved themselves.  Looking at the <a href="http://pastie.org/349916">Zune source code</a>, one can see exactly where things went wrong:</p>
<pre class="textmate-source"><span class="keyword keyword_control keyword_control_c">while</span> (days &gt; 365)
    {
        <span class="keyword keyword_control keyword_control_c">if</span>(IsLeapYear(year))
        {
            <span style="color: #ff0000;"><span class="keyword keyword_control keyword_control_c">if</span> (days &gt; 366)</span>
            {
                days -= <span class="constant constant_numeric constant_numeric_c">366</span>;
                year += <span class="constant constant_numeric constant_numeric_c">1</span>;
            }
        }
        <span class="keyword keyword_control keyword_control_c">else</span>
        {
            days -= <span class="constant constant_numeric constant_numeric_c">365</span>;
            year += <span class="constant constant_numeric constant_numeric_c">1</span>;
        }
    }</pre>
<p>For those without a programming background, the problem is that there is no &#8220;if&#8221; for day 366, just for days greater than 366 (which would be January 1 of 2009).  This means that the code gets caught in in infinite loop on the 366th day (December 31) of the year.  On January 1 of 2009, however, the &#8220;days&#8221; variable is set to 367, which causes the day to be set back to 1 (January 1) and the year to be incremented to 2009.  So the bug only lasts a day.</p>
<p>Programming 101 &#8211; be sure to test all of your cases, particularly those inside of loops.</p>
]]></content:encoded>
			<wfw:commentRss>http://joshuamorse.com/2009/01/02/the-zune-leap-year-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

