<?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>msoftnews &#187; Handling</title>
	<atom:link href="http://msoftnews.com/tag/handling/feed/" rel="self" type="application/rss+xml" />
	<link>http://msoftnews.com</link>
	<description>technology news @fingertips</description>
	<lastBuildDate>Fri, 10 Feb 2012 23:49:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Handling Multi-touch and Mouse Input in All Browsers</title>
		<link>http://msoftnews.com/uncategorized/handling-multi-touch-and-mouse-input-in-all-browsers/</link>
		<comments>http://msoftnews.com/uncategorized/handling-multi-touch-and-mouse-input-in-all-browsers/#comments</comments>
		<pubDate>Wed, 19 Oct 2011 20:51:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Handling]]></category>
		<category><![CDATA[Input]]></category>
		<category><![CDATA[Mouse]]></category>
		<category><![CDATA[multitouch]]></category>

		<guid isPermaLink="false">http://msoftnews.com/uncategorized/handling-multi-touch-and-mouse-input-in-all-browsers/</guid>
		<description><![CDATA[Touch interaction with Web sites and apps has the opportunity to improve their usability and ubiquity as the Web and Windows 8 Metro style apps play a key role on tomorrow’s touch-enabled devices. This post explains how Web developers can &#8230; <a href="http://msoftnews.com/uncategorized/handling-multi-touch-and-mouse-input-in-all-browsers/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fmsoftnews.com%2Funcategorized%2Fhandling-multi-touch-and-mouse-input-in-all-browsers%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fmsoftnews.com%2Funcategorized%2Fhandling-multi-touch-and-mouse-input-in-all-browsers%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Touch interaction with Web sites and apps has the opportunity to improve their usability<br />
    and ubiquity as the Web and Windows 8 Metro style apps play a key role on tomorrow’s<br />
    touch-enabled devices.</p>
<p>This post explains how Web developers can use the new<br />
    IE10 pointer event model along with the<br />
        iOS touch event model and the<br />
            W3C mouse event model (as<br />
                extended) to create a cross-browser, common-code handler for pointer,<br />
    touch, and mouse input.</p>
<p>A little background: I’m fortunate to have a<br />
    Samsung 700T Windows Developer Preview tablet PC. With it, I’ve been able to<br />
    enjoy the IE Test Drive multi-touch<br />
    demos Touch Effects<br />
    and Lasso Birds.<br />
    Like me, you may have noticed that Lasso Birds works across different devices and<br />
    browsers in addition to IE10. For example, its multi-touch works on iOS devices.<br />
    In this post, I’ve taken some of the patterns from Lasso Birds and generalized and extended them to include<br />
    older versions of browsers.</p>
<p>The result of my experimentation is below. It should work in your browser. A discussion<br />
    of the coding patterns and lessons learned follows below the demo.</p>
<div style="overflow: hidden; margin: 1em 0.25in; font-size: 16px; border: 1px solid gray;<br />
    box-shadow: gray 2px 2px 5px; height: 500px;">
<div class="multidrawTarget" style="width: 100%; height: 100%;">
    </div>
</div>
<h2>The Code</h2>
<p>The basic algorithm for drawing with the mouse model is straightforward:</p>
<div style="font-family: Consolas, Monospace; font-size: 13px; color: Black; text-indent: -4em;<br />
    padding: 0 0.25in;">
<div style="background-color: #f0f0f0; padding: 0 4px 2px 4px;">
<p style="margin: 0 0 0 4em;"><span style="color: Blue;">var</span> drawingStarted =<br />
            <span style="color: Blue;">false</span>;</p>
<p style="margin: 0 0 0 4em;"><span style="color: Blue;">function</span> DoEvent(eventObject)<br />
            {</p>
<p style="margin: 0 0 0 6em;"><span style="color: Blue;">if</span> (eventObject.type<br />
            == <span style="color: Maroon;">&quot;mousedown&quot;</span>) {</p>
<p style="margin: 0 0 0 8em;">drawingStarted = <span style="color: Blue;">true</span>;</p>
<p style="margin: 0 0 0 8em;">startDraw(eventObject.pageX, eventObject.pageY);</p>
<p style="margin: 0 0 0 6em;">}</p>
<p style="margin: 0 0 0 6em;"><span style="color: Blue;">else</span> <span style="color: Blue;"><br />
            if</span> (eventObject.type == <span style="color: Maroon;">&quot;mousemove&quot;</span>)<br />
            {</p>
<p style="margin: 0 0 0 8em;"><span style="color: Blue;">if</span> (drawingStarted)<br />
            {</p>
<p style="margin: 0 0 0 10em;">extendDraw(eventObject.pageX, eventObject.pageY);</p>
<p style="margin: 0 0 0 8em;">}</p>
<p style="margin: 0 0 0 6em;">}</p>
<p style="margin: 0 0 0 6em;"><span style="color: Blue;">else</span> <span style="color: Blue;"><br />
            if</span> (eventObject.type == <span style="color: Maroon;">&quot;mouseup&quot;</span>)<br />
            {</p>
<p style="margin: 0 0 0 8em;">drawingStarted = <span style="color: Blue;">false</span>;</p>
<p style="margin: 0 0 0 8em;">endDraw();</p>
<p style="margin: 0 0 0 6em;">}</p>
<p style="margin: 0 0 0 4em;">}</p>
</p></div>
</div>
<p>The only change needed to make this work with IE10’s pointer events is to add awareness<br />
    that multiple pointers can be down at the same time, each identified by a different<br />
    pointerId value. The IE10 pointer model fires separate MSPointerDown, MSPointerMove,<br />
    and MSPointerUp events for each pointer that changes state.</p>
<div style="font-family: Consolas, Monospace; font-size: 13px; color: Black; text-indent: -4em;<br />
    padding: 0 0.25in;">
<div style="background-color: #f0f0f0; padding: 0 4px 2px 4px;">
<p style="margin: 0 0 0 4em;"><span style="color: Blue;">var</span> drawingStarted =<br />
            {};</p>
<p style="margin: 0 0 0 4em;"><span style="color: Blue;">function</span> DoEvent(eventObject)<br />
            {</p>
<p style="margin: 0 0 0 6em;">eventObject.preventManipulation(); <span style="color: rgb(0,100,0);"><br />
            // without this, instead of drawing, you pan</span></p>
<p style="margin: 0 0 0 6em;"><span style="color: Blue;">var</span> pointerId = eventObject.pointerId;</p>
<p style="margin: 0 0 0 6em;"><span style="color: Blue;">if</span> (eventObject.type<br />
            == <span style="color: Maroon;">&quot;MSPointerDown&quot;</span>) {</p>
<p style="margin: 0 0 0 8em;">drawingStarted[pointerId] = <span style="color: Blue;"><br />
            true</span>;</p>
<p style="margin: 0 0 0 8em;">startDraw(pointerId, eventObject.pageX, eventObject.pageY);</p>
<p style="margin: 0 0 0 6em;">}</p>
<p style="margin: 0 0 0 6em;"><span style="color: Blue;">else</span> <span style="color: Blue;"><br />
            if</span> (eventObject.type == <span style="color: Maroon;">&quot;MSPointerMove&quot;</span>)<br />
            {</p>
<p style="margin: 0 0 0 8em;"><span style="color: Blue;">if</span> (drawingStarted[pointerId])<br />
            {</p>
<p style="margin: 0 0 0 10em;">extendDraw(pointerId, eventObject.pageX, eventObject.pageY);</p>
<p style="margin: 0 0 0 8em;">}</p>
<p style="margin: 0 0 0 6em;">}</p>
<p style="margin: 0 0 0 6em;"><span style="color: Blue;">else</span> <span style="color: Blue;"><br />
            if</span> (eventObject.type == <span style="color: Maroon;">&quot;MSPointerUp&quot;</span>)<br />
            {</p>
<p style="margin: 0 0 0 8em;"><span style="color: Blue;">delete</span> drawingStarted[pointerId];</p>
<p style="margin: 0 0 0 8em;">endDraw(pointerId);</p>
<p style="margin: 0 0 0 6em;">}</p>
<p style="margin: 0 0 0 4em;">}</p>
</p></div>
</div>
<p>Adapting the original mouse model to Apple’s iOS touch event model requires that<br />
    you iterate through the list of changedTouches for each touchstart, touchmove, and<br />
    touchend event because, in the iOS model, state changes that occur at the same time<br />
    are bundled into one event. Like the IE10 pointer model, a unique identifier identifies<br />
    each touch point.</p>
<div style="font-family: Consolas, Monospace; font-size: 13px; color: Black; text-indent: -4em;<br />
    padding: 0 0.25in;">
<div style="background-color: #f0f0f0; padding: 0 4px 2px 4px;">
<p style="margin: 0 0 0 4em;"><span style="color: Blue;">var</span> drawingStarted =<br />
            {};</p>
<p style="margin: 0 0 0 4em;"><span style="color: Blue;">function</span> DoEvent(eventObject)<br />
            {</p>
<p style="margin: 0 0 0 6em;">eventObject.preventDefault(); <span style="color: rgb(0,100,0);"><br />
            // without this, instead of drawing, you pan</span></p>
<p style="margin: 0 0 0 6em;"><span style="color: Blue;">for</span> (<span style="color: Blue;">var</span><br />
            i = 0; i &lt; eventObject.changedTouches.length; ++i) {</p>
<p style="margin: 0 0 0 8em;"><span style="color: Blue;">var</span> touchPoint = eventObject.changedTouches[i];</p>
<p style="margin: 0 0 0 8em;"><span style="color: Blue;">var</span> touchPointId = touchPoint.identifier;</p>
<p style="margin: 0 0 0 8em;"><span style="color: Blue;">if</span> (eventObject.type<br />
            == <span style="color: Maroon;">&quot;touchstart&quot;</span>) {</p>
<p style="margin: 0 0 0 10em;">drawingStarted[touchPointId] = <span style="color: Blue;"><br />
            true</span>;</p>
<p style="margin: 0 0 0 10em;">startDraw(touchPointId, touchPoint.pageX, touchPoint.pageY);</p>
<p style="margin: 0 0 0 8em;">}</p>
<p style="margin: 0 0 0 8em;"><span style="color: Blue;">else</span> <span style="color: Blue;"><br />
            if</span> (eventObject.type == <span style="color: Maroon;">&quot;touchmove&quot;</span>)<br />
            {</p>
<p style="margin: 0 0 0 10em;"><span style="color: Blue;">if</span> (drawingStarted[touchPointId])<br />
            {</p>
<p style="margin: 0 0 0 12em;">extendDraw(touchPointId, touchPoint.pageX, touchPoint.pageY);</p>
<p style="margin: 0 0 0 10em;">}</p>
<p style="margin: 0 0 0 8em;">}</p>
<p style="margin: 0 0 0 8em;"><span style="color: Blue;">else</span> <span style="color: Blue;"><br />
            if</span> (eventObject.type == <span style="color: Maroon;">&quot;touchend&quot;</span>)<br />
            {</p>
<p style="margin: 0 0 0 10em;"><span style="color: Blue;">delete</span> drawingStarted[touchPointId];</p>
<p style="margin: 0 0 0 10em;">endDraw(touchPointId);</p>
<p style="margin: 0 0 0 8em;">}</p>
<p style="margin: 0 0 0 6em;">}</p>
<p style="margin: 0 0 0 4em;">}</p>
</p></div>
</div>
<p>Merging these three individual algorithms requires noting the differences between<br />
    the event names and the unique pointer identifier attribute names and accounting<br />
    for the lack of an identifier in the mouse model.</p>
<p>In the merged model, below, I also add a check that the “move” position has actually<br />
    changed because the IE10 pointer model streams MSPointerMove events with the same<br />
    x, y position when a touch point is held down but not moved. By filtering out these<br />
    redundant moves, I eliminate calls to extendDraw() that do nothing. I implemented<br />
    this check by storing the last x,y position from a start or move in the lastXY object<br />
    and, by checking that a lastXY entry exists for a particular id, lastXY replaces<br />
    the drawingStarted object used in the previous two examples.</p>
<div style="font-family: Consolas, Monospace; font-size: 13px; color: Black; text-indent: -4em;<br />
    padding: 0 0.25in;">
<div style="background-color: #f0f0f0; padding: 0 4px 2px 4px;">
<p style="margin: 0 0 0 4em;"><span style="color: Blue;">var</span> lastXY = { };</p>
<p style="margin: 0 0 0 4em;"><span style="color: Blue;">function</span> DoEvent(eventObject)<br />
            {</p>
<p style="margin: 0 0 0 6em;"><span style="color: rgb(0,100,0);">// stop panning and<br />
            zooming so we can draw</span></p>
<p style="margin: 0 0 0 6em;"><span style="color: Blue;">if</span> (eventObject.preventManipulation)</p>
<p style="margin: 0 0 0 8em;">eventObject.preventManipulation();</p>
<p style="margin: 0 0 0 6em;"><span style="color: Blue;">else</span></p>
<p style="margin: 0 0 0 8em;">eventObject.preventDefault();</p>
<p style="margin: 0 0 0 2em">&nbsp;</p>
<p style="margin: 0 0 0 6em;"><span style="color: rgb(0,100,0);">// if we have an array<br />
            of changedTouches, use it, else create an array of one with our eventObject</span></p>
<p style="margin: 0 0 0 6em;"><span style="color: Blue;">var</span> touchPoints = (<span<br />
            style="color: Blue;">typeof</span> eventObject.changedTouches != <span style="color: Maroon;"><br />
                &#39;undefined&#39;</span>) ? eventObject.changedTouches : [eventObject];</p>
<p style="margin: 0 0 0 6em;"><span style="color: Blue;">for</span> (<span style="color: Blue;">var</span><br />
            i = 0; i &lt; touchPoints.length; ++i) {</p>
<p style="margin: 0 0 0 8em;"><span style="color: Blue;">var</span> touchPoint = touchPoints[i];</p>
<p style="margin: 0 0 0 8em;"><span style="color: rgb(0,100,0);">// pick up the unique<br />
            touchPoint id if we have one or use 1 as the default</span></p>
<p style="margin: 0 0 0 8em;"><span style="color: Blue;">var</span> touchPointId = (<span<br />
            style="color: Blue;">typeof</span> touchPoint.identifier != <span style="color: Maroon;"><br />
                &#39;undefined&#39;</span>) ? touchPoint.identifier : (<span style="color: Blue;">typeof</span><br />
            touchPoint.pointerId != <span style="color: Maroon;">&#39;undefined&#39;</span>)<br />
            ? touchPoint.pointerId : 1;</p>
<p style="margin: 0 0 0 2em">&nbsp;</p>
<p style="margin: 0 0 0 8em;"><span style="color: Blue;">if</span> (eventObject.type.match(/(down|start)$  /i))<br />
            {</p>
<p style="margin: 0 0 0 10em;"><span style="color: rgb(0,100,0);">// process mousedown,<br />
            MSPointerDown, and touchstart</span></p>
<p style="margin: 0 0 0 10em;">lastXY[touchPointId] = { x: touchPoint.pageX, y: touchPoint.pageY<br />
            };</p>
<p style="margin: 0 0 0 10em;">startDraw(touchPointId, touchPoint.pageX, touchPoint.pageY);</p>
<p style="margin: 0 0 0 8em;">}</p>
<p style="margin: 0 0 0 8em;"><span style="color: Blue;">else</span> <span style="color: Blue;"><br />
            if</span> (eventObject.type.match(/move$  /i)) {</p>
<p style="margin: 0 0 0 10em;"><span style="color: rgb(0,100,0);">// process mousemove,<br />
            MSPointerMove, and touchmove</span></p>
<p style="margin: 0 0 0 10em;"><span style="color: Blue;">if</span> (lastXY[touchPointId]<br />
            &amp;&amp; !(lastXY[touchPointId].x == touchPoint.pageX &amp;&amp; lastXY[touchPointId].y<br />
            == touchPoint.pageY)) {</p>
<p style="margin: 0 0 0 12em;">lastXY[touchPointId] = { x: touchPoint.pageX, y: touchPoint.pageY<br />
            };</p>
<p style="margin: 0 0 0 12em;">extendDraw(touchPointId, touchPoint.pageX, touchPoint.pageY);</p>
<p style="margin: 0 0 0 10em;">}</p>
<p style="margin: 0 0 0 8em;">}</p>
<p style="margin: 0 0 0 8em;"><span style="color: Blue;">else</span> <span style="color: Blue;"><br />
            if</span> (eventObject.type.match(/(up|end)$  /i)) {</p>
<p style="margin: 0 0 0 10em;"><span style="color: rgb(0,100,0);">// process mouseup,<br />
            MSPointerUp, and touchend</span></p>
<p style="margin: 0 0 0 10em;"><span style="color: Blue;">delete</span> lastXY[touchPointId];</p>
<p style="margin: 0 0 0 10em;">endDraw(touchPointId);</p>
<p style="margin: 0 0 0 8em;">}</p>
<p style="margin: 0 0 0 6em;">}</p>
<p style="margin: 0 0 0 4em;">}</p>
</p></div>
</div>
<p>The examples above specifically ignore the issues of registering to receive the events<br />
    or ensuring that they apply to the drawing target. Making this work for real and<br />
    with all browsers—including versions of Internet Explorer before IE9—requires a<br />
    bit more work. Interested parties can peruse the final version of my multi-browser,<br />
    multi-touch drawing class here.</p>
<p>By coding for touch alongside mouse, Web developers can assure their sites work with<br />
    all browsers—whether desktop, tablet, or phone.</p>
<p>—Ted Johnson, Graphics Program Manager Lead, Internet Explorer</p>
<div style="clear:both;"></div>
<p><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10227678" width="1" height="1"><br />
<a rel="nofollow" href="http://blogs.msdn.com/b/ie/archive/2011/10/19/handling-multi-touch-and-mouse-input-in-all-browsers.aspx">IEBlog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://msoftnews.com/uncategorized/handling-multi-touch-and-mouse-input-in-all-browsers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter now handling one billion tweets per week</title>
		<link>http://msoftnews.com/microsoft/twitter-now-handling-one-billion-tweets-per-week/</link>
		<comments>http://msoftnews.com/microsoft/twitter-now-handling-one-billion-tweets-per-week/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 15:53:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Billion]]></category>
		<category><![CDATA[Handling]]></category>
		<category><![CDATA[tweets]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Week]]></category>

		<guid isPermaLink="false">http://msoftnews.com/microsoft/twitter-now-handling-one-billion-tweets-per-week/</guid>
		<description><![CDATA[With the fifth anniversary of the launch of Twitter on March 21 fast approaching, the social networking site has released a few statistics to illustrate the site&#8217;s phenomenal growth. In a blog post, Twitter&#8217;s Carolyn Penner said Twitter was, &#8221;on &#8230; <a href="http://msoftnews.com/microsoft/twitter-now-handling-one-billion-tweets-per-week/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fmsoftnews.com%2Fmicrosoft%2Ftwitter-now-handling-one-billion-tweets-per-week%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fmsoftnews.com%2Fmicrosoft%2Ftwitter-now-handling-one-billion-tweets-per-week%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>With the fifth anniversary of the launch of Twitter on March 21 fast approaching, the social networking site has released a few statistics to illustrate the site&#8217;s phenomenal growth.</p>
<p>	In a blog post, Twitter&#8217;s Carolyn Penner said Twitter was, &#8221;on every measure of growth and engagement&#8221;, growing at &#8221;a record pace&#8221;&#8230;.</p>
<p><img src="http://feedads.g.doubleclick.net/~a/kDu6_GDuEq52u3SzkI7ao3PgECk/0/di" border="0" ismap="true"></img><br/><br />
<img src="http://feedads.g.doubleclick.net/~a/kDu6_GDuEq52u3SzkI7ao3PgECk/1/di" border="0" ismap="true"></img></p>
<div class="feedflare">
<img src="http://feeds.feedburner.com/~ff/neowin-main?d=dnMXMwOfBR0" border="0"></img> <img src="http://feeds.feedburner.com/~ff/neowin-main?d=7Q72WNTAKBA" border="0"></img> <img src="http://feeds.feedburner.com/~ff/neowin-main?d=H0mrP-F8Qgo" border="0"></img>
</div>
<p><img src="http://feeds.feedburner.com/~r/neowin-main/~4/VgF-FF6lcQQ" height="1" width="1"/><br />
<a rel="nofollow" href="http://feedproxy.google.com/~r/neowin-main/~3/VgF-FF6lcQQ/twitter-now-handling-one-billion-tweets-per-week">Neowin.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://msoftnews.com/microsoft/twitter-now-handling-one-billion-tweets-per-week/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tips for Handling Information Overload</title>
		<link>http://msoftnews.com/google/tips-for-handling-information-overload/</link>
		<comments>http://msoftnews.com/google/tips-for-handling-information-overload/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 14:50:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Handling]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[Overload]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://msblogs.com/google/tips-for-handling-information-overload/</guid>
		<description><![CDATA[The reality for anyone who does most of their work online is that information is endless, and keeping up with the most important information without becoming overwhelmed can be quite a challenge. As a community manager, I have to be &#8230; <a href="http://msoftnews.com/google/tips-for-handling-information-overload/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fmsoftnews.com%2Fgoogle%2Ftips-for-handling-information-overload%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fmsoftnews.com%2Fgoogle%2Ftips-for-handling-information-overload%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><img  title="Information Overload" src="http://webworkerdaily.files.wordpress.com/2010/07/information-overload.jpg?w=300&#038;h=141" alt="" width="300" height="141" class="alignright size-medium wp-image-36452" />The reality for anyone who does most of their work online is that information is endless, and keeping up with the most important information without becoming overwhelmed can be quite a challenge. As a community manager, I have to be able to process large quantities of information quickly and efficiently in order to do my job, but it&#8217;s easy to forget that not everyone lives in my world.</p>
<div class="gicw"><span class="gicw-end"></span></div>
<p>As I work with colleagues to help them get more involved in the community, the most common complaint is that they won&#8217;t be able to read everything and can&#8217;t keep up with the volume of information coming into the community. However, the key is not to try to read <em>everything</em>, but to learn how to filter and find the information that you do need to read.</p>
<h3>Filtering</h3>
<p>Most email clients have various options for filtering and processing at least some of your email automatically, which allows you to get through your email more quickly. I send community posts from mailing lists or forums to a folder with a threaded view, while also keeping them in my inbox. By keeping them in a threaded view, I can review all of the related posts together, which reduces the time I spend paying attention to each one since I can follow the entire thread. I also take similar actions for other information or community-generated traffic. This allows me to very quickly process certain types of high-volume email traffic.</p>
<p>This same principle holds for other kinds of information. I also filter my RSS feeds using Yahoo Pipes to automatically increase the relevancy of what I read; you can use similar searching and filtering on other types of data that has to be processed and dealt with quickly.</p>
<h3>The Art of Skimming and Processing<strong></strong></h3>
<p>I&#8217;ve talked before about embracing inbox zero. One of the keys to maintaining inbox zero is to be able to quickly skim through your email to process everything and decide whether you need to archive it or put it in a folder to respond later. The filtering techniques talked about earlier allow me to very quickly skim certain types of email while spending more time on others. Accepting that you can&#8217;t possibly read everything and staying disciplined about processing your email really does help you get more of the right things accomplished, rather than spending all day reading email without getting to your real work. I also use my phone to process email by setting up my &#8220;must respond&#8221; folder on the server, along with an &#8220;archive later&#8221; folder: a temporary folder where I can put email that can be easily dumped into the real archive folder on my hard drive when I get back to my laptop to save server space.</p>
<p>Like the filtering tip, skimming and processing can be applied to many other types of information. You can quickly get through your RSS reader if you flag or star items to read later when you have more time, and you can use various bookmark services to tag articles to read later. I also do this with Twitter by marking tweets as favorites from my phone if they contain a link that I want to read when I get back to a bigger screen or when I have more time.</p>
<h3>Prioritization and Time Chunks</h3>
<p>Getting through large quantities of information quickly also depends on prioritizing content to deal with important things first while also being able to work in chunks where you can be the most productive. For example, I use a color code system for emails from people who generally send me important email: my boss, the people who report to me, and a few others. By having these in orange, I can quickly see at a glance which emails should be read right away, and I prioritize this email over other types of email. I also try to process my email in big chunks; for example, my community has quite a few people from Europe and Asia, so the volume of email in the morning can be a bit intense. Since it doesn&#8217;t take too much effort to skim and process the mailing list email, I try to do it first thing in the morning while I&#8217;m making that first pot of tea. The key is that I&#8217;m only processing it to find the email that I need to do something with, but I wait to respond until I&#8217;ve had time to drink that first cup.</p>
<p>I do something similar with my RSS reader. I set aside chunks of time to spend reading feeds and have carefully prioritized folders with the most important feeds in folders near the top with less important feeds in folders near the bottom that I rarely read. I also set aside chunks of time to spend reading forum posts and other community activities.</p>
<p>These are just a few examples of ways to handle information overload with a focus on email, since that seems to be where most people get overwhelmed to start with. However, these tips also apply to handling information overload of other types.</p>
<p><em>How do you handle information overload?</em></p>
<p><strong>Related GigaOM Pro content (sub. req.):</strong> Enabling the Web Work Revolution</p>
<p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=1149864&#038;post=135532&#038;subd=gigaom&#038;ref=&#038;feed=1" /><br />
<hr />
<p>		<img src='http://a.gigaom.com/feed-injector/img/lucent-2010-05-17.gif' alt='Alcatel-Lucent NextGen Communications Spotlight &mdash; Learn More &raquo;' border='0' /></p>
<div class="feedflare">
<img src="http://feeds.feedburner.com/~ff/OmMalik?d=yIl2AUoC8zA" border="0"></img> <img src="http://feeds.feedburner.com/~ff/OmMalik?i=-5jfo6Ug9XM:1Il8ib2UrLQ:V_sGLiPBpWU" border="0"></img> <img src="http://feeds.feedburner.com/~ff/OmMalik?i=-5jfo6Ug9XM:1Il8ib2UrLQ:F7zBnMyn0Lo" border="0"></img> <img src="http://feeds.feedburner.com/~ff/OmMalik?d=qj6IDK7rITs" border="0"></img> <img src="http://feeds.feedburner.com/~ff/OmMalik?i=-5jfo6Ug9XM:1Il8ib2UrLQ:D7DqB2pKExk" border="0"></img>
</div>
<p><img src="http://feeds.feedburner.com/~r/OmMalik/~4/-5jfo6Ug9XM" height="1" width="1"/><br />
<a rel="nofollow" href="http://feedproxy.google.com/~r/OmMalik/~3/-5jfo6Ug9XM/">GigaOM</a></p>
]]></content:encoded>
			<wfw:commentRss>http://msoftnews.com/google/tips-for-handling-information-overload/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tips for Handling Information Overload</title>
		<link>http://msoftnews.com/google/tips-for-handling-information-overload-2/</link>
		<comments>http://msoftnews.com/google/tips-for-handling-information-overload-2/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 14:50:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Handling]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[Overload]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://msblogs.com/google/tips-for-handling-information-overload-2/</guid>
		<description><![CDATA[The reality for anyone who does most of their work online is that information is endless, and keeping up with the most important information without becoming overwhelmed can be quite a challenge. As a community manager, I have to be &#8230; <a href="http://msoftnews.com/google/tips-for-handling-information-overload-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fmsoftnews.com%2Fgoogle%2Ftips-for-handling-information-overload-2%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fmsoftnews.com%2Fgoogle%2Ftips-for-handling-information-overload-2%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><img  title="Information Overload" src="http://webworkerdaily.files.wordpress.com/2010/07/information-overload.jpg?w=300&#038;h=141" alt="" width="300" height="141" class="alignright size-medium wp-image-36452" />The reality for anyone who does most of their work online is that information is endless, and keeping up with the most important information without becoming overwhelmed can be quite a challenge. As a community manager, I have to be able to process large quantities of information quickly and efficiently in order to do my job, but it&#8217;s easy to forget that not everyone lives in my world.</p>
<div class="gicw"><span class="gicw-end"></span></div>
<p>As I work with colleagues to help them get more involved in the community, the most common complaint is that they won&#8217;t be able to read everything and can&#8217;t keep up with the volume of information coming into the community. However, the key is not to try to read <em>everything</em>, but to learn how to filter and find the information that you do need to read.</p>
<h3>Filtering</h3>
<p>Most email clients have various options for filtering and processing at least some of your email automatically, which allows you to get through your email more quickly. I send community posts from mailing lists or forums to a folder with a threaded view, while also keeping them in my inbox. By keeping them in a threaded view, I can review all of the related posts together, which reduces the time I spend paying attention to each one since I can follow the entire thread. I also take similar actions for other information or community-generated traffic. This allows me to very quickly process certain types of high-volume email traffic.</p>
<p>This same principle holds for other kinds of information. I also filter my RSS feeds using Yahoo Pipes to automatically increase the relevancy of what I read; you can use similar searching and filtering on other types of data that has to be processed and dealt with quickly.</p>
<h3>The Art of Skimming and Processing<strong></strong></h3>
<p>I&#8217;ve talked before about embracing inbox zero. One of the keys to maintaining inbox zero is to be able to quickly skim through your email to process everything and decide whether you need to archive it or put it in a folder to respond later. The filtering techniques talked about earlier allow me to very quickly skim certain types of email while spending more time on others. Accepting that you can&#8217;t possibly read everything and staying disciplined about processing your email really does help you get more of the right things accomplished, rather than spending all day reading email without getting to your real work. I also use my phone to process email by setting up my &#8220;must respond&#8221; folder on the server, along with an &#8220;archive later&#8221; folder: a temporary folder where I can put email that can be easily dumped into the real archive folder on my hard drive when I get back to my laptop to save server space.</p>
<p>Like the filtering tip, skimming and processing can be applied to many other types of information. You can quickly get through your RSS reader if you flag or star items to read later when you have more time, and you can use various bookmark services to tag articles to read later. I also do this with Twitter by marking tweets as favorites from my phone if they contain a link that I want to read when I get back to a bigger screen or when I have more time.</p>
<h3>Prioritization and Time Chunks</h3>
<p>Getting through large quantities of information quickly also depends on prioritizing content to deal with important things first while also being able to work in chunks where you can be the most productive. For example, I use a color code system for emails from people who generally send me important email: my boss, the people who report to me, and a few others. By having these in orange, I can quickly see at a glance which emails should be read right away, and I prioritize this email over other types of email. I also try to process my email in big chunks; for example, my community has quite a few people from Europe and Asia, so the volume of email in the morning can be a bit intense. Since it doesn&#8217;t take too much effort to skim and process the mailing list email, I try to do it first thing in the morning while I&#8217;m making that first pot of tea. The key is that I&#8217;m only processing it to find the email that I need to do something with, but I wait to respond until I&#8217;ve had time to drink that first cup.</p>
<p>I do something similar with my RSS reader. I set aside chunks of time to spend reading feeds and have carefully prioritized folders with the most important feeds in folders near the top with less important feeds in folders near the bottom that I rarely read. I also set aside chunks of time to spend reading forum posts and other community activities.</p>
<p>These are just a few examples of ways to handle information overload with a focus on email, since that seems to be where most people get overwhelmed to start with. However, these tips also apply to handling information overload of other types.</p>
<p><em>How do you handle information overload?</em></p>
<p><strong>Related GigaOM Pro content (sub. req.):</strong> Enabling the Web Work Revolution</p>
<p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=1149864&#038;post=135532&#038;subd=gigaom&#038;ref=&#038;feed=1" /><br />
<hr />
<p>		<img src='http://a.gigaom.com/feed-injector/img/lucent-2010-05-17.gif' alt='Alcatel-Lucent NextGen Communications Spotlight &mdash; Learn More &raquo;' border='0' /></p>
<div class="feedflare">
<img src="http://feeds.feedburner.com/~ff/OmMalik?d=yIl2AUoC8zA" border="0"></img> <img src="http://feeds.feedburner.com/~ff/OmMalik?i=-5jfo6Ug9XM:1Il8ib2UrLQ:V_sGLiPBpWU" border="0"></img> <img src="http://feeds.feedburner.com/~ff/OmMalik?i=-5jfo6Ug9XM:1Il8ib2UrLQ:F7zBnMyn0Lo" border="0"></img> <img src="http://feeds.feedburner.com/~ff/OmMalik?d=qj6IDK7rITs" border="0"></img> <img src="http://feeds.feedburner.com/~ff/OmMalik?i=-5jfo6Ug9XM:1Il8ib2UrLQ:D7DqB2pKExk" border="0"></img>
</div>
<p><img src="http://feeds.feedburner.com/~r/OmMalik/~4/-5jfo6Ug9XM" height="1" width="1"/><br />
<a rel="nofollow" href="http://feedproxy.google.com/~r/OmMalik/~3/-5jfo6Ug9XM/">GigaOM</a></p>
]]></content:encoded>
			<wfw:commentRss>http://msoftnews.com/google/tips-for-handling-information-overload-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

