<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Jaffer Haider</title>
	<atom:link href="http://jafferhaider.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jafferhaider.wordpress.com</link>
	<description>I blame it on sleep ...</description>
	<lastBuildDate>Wed, 19 Oct 2011 04:17:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='jafferhaider.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://en.wordpress.com/i/buttonw-com.png</url>
		<title>Jaffer Haider</title>
		<link>http://jafferhaider.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://jafferhaider.wordpress.com/osd.xml" title="Jaffer Haider" />
	<atom:link rel='hub' href='http://jafferhaider.wordpress.com/?pushpress=hub'/>
		<item>
		<title>FB.login doesn&#8217;t work on Google Chrome&#8211;Facebook doesn&#8217;t seem to care</title>
		<link>http://jafferhaider.wordpress.com/2011/05/30/fb-login-doesnt-work-on-google-chromefacebook-doesnt-seem-to-care/</link>
		<comments>http://jafferhaider.wordpress.com/2011/05/30/fb-login-doesnt-work-on-google-chromefacebook-doesnt-seem-to-care/#comments</comments>
		<pubDate>Mon, 30 May 2011 06:12:27 +0000</pubDate>
		<dc:creator>Jaffer Haider</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">https://jafferhaider.wordpress.com/2011/05/30/fb-login-doesnt-work-on-google-chromefacebook-doesnt-seem-to-care/</guid>
		<description><![CDATA[If your web application’s login mechanism integrates with Facebook’s Login functionality, and if you’re using the latest Javascript SDK from Facebook, you might have noticed that users cannot login if you use the FB.login() Javascript function. This issue’s been there for quite some time now, although I only came across it a few weeks back [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=188&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If your web application’s login mechanism integrates with Facebook’s Login functionality, and if you’re using the latest Javascript SDK from Facebook, you might have noticed that users cannot login if you use the FB.login() Javascript function. This issue’s been there for quite some time now, although I only came across it a few weeks back when I updated PosterMyWall’s Facebook integration (from the legacy ‘REST’ API to the latest graph based API).</p>
<p>So far I haven’t gotten any response from Facebook as to when they’ll get around to fixing this critical issue. I’ve created a question over at Stackoverflow; <a href="http://stackoverflow.com/questions/6125254/fb-login-dialog-does-not-close-on-google-chrome">FB.login dialog does not close on Google Chrome</a>. If you have any non-hacky work-arounds, please respond over at Stackoverflow. Also, be sure to vote-up the Facebook bugzilla ticket linked to in the question.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jafferhaider.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jafferhaider.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jafferhaider.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jafferhaider.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jafferhaider.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jafferhaider.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jafferhaider.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jafferhaider.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jafferhaider.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jafferhaider.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jafferhaider.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jafferhaider.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jafferhaider.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jafferhaider.wordpress.com/188/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=188&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jafferhaider.wordpress.com/2011/05/30/fb-login-doesnt-work-on-google-chromefacebook-doesnt-seem-to-care/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f5cb05ec72417de0ee43072edf73d18e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jaffer</media:title>
		</media:content>
	</item>
		<item>
		<title>Mirrored Bitmap Graphics in Flex SDK 4.1 Anyone?</title>
		<link>http://jafferhaider.wordpress.com/2011/02/05/mirrored-bitmap-graphics-in-flex-sdk-4-1-anyone/</link>
		<comments>http://jafferhaider.wordpress.com/2011/02/05/mirrored-bitmap-graphics-in-flex-sdk-4-1-anyone/#comments</comments>
		<pubDate>Sat, 05 Feb 2011 09:02:33 +0000</pubDate>
		<dc:creator>Jaffer Haider</dc:creator>
				<category><![CDATA[postermywall.com]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[mirrored]]></category>

		<guid isPermaLink="false">https://jafferhaider.wordpress.com/2011/02/05/mirrored-bitmap-graphics-in-flex-sdk-4-1-anyone/</guid>
		<description><![CDATA[A few days ago I decided to upgrade my PosterMyWall* Flash/Flex development environment from Flex Builder 3 to the latest IDE, Flash Builder 4 (Adobe can’t seem to decide on a name …). Flash Builder 4 comes with the latest version of the Flex SDK, 4.1.*. When I compiled and ran the poster maker with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=185&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few days ago I decided to upgrade my PosterMyWall<sup>*</sup> Flash/Flex development environment from Flex Builder 3 to the latest IDE, Flash Builder 4 (Adobe can’t seem to decide on a name …). Flash Builder 4 comes with the latest version of the Flex SDK, 4.1.*.</p>
<p>When I compiled and ran the poster maker with the new SDK, I was appalled to notice that all my BitmapImage’s were mirrored horizontally. After Googling around for a bit, and going through Flex bug-fix logs, I came across <a href="https://bugs.adobe.com/jira/browse/SDK-25209" target="_blank">this bug</a> which gave me a clue as to what might be wrong.</p>
<p>The culprit is the default value of the <strong>layoutDirection</strong> property of some elements. Sometimes, based on how an element is located in the DOM, the value of layoutDirection might not be set properly. You’ll need to manually set it to LTR (or RTL) so that your images show up correctly.</p>
<p><sup>*</sup>If you haven’t checked it out already, PosterMyWall is a great <a href="http://www.postermywall.com/">online poster maker</a> that allows you to create posters and collages from your photos, which you can share online or get printed as large high quality posters.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jafferhaider.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jafferhaider.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jafferhaider.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jafferhaider.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jafferhaider.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jafferhaider.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jafferhaider.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jafferhaider.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jafferhaider.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jafferhaider.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jafferhaider.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jafferhaider.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jafferhaider.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jafferhaider.wordpress.com/185/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=185&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jafferhaider.wordpress.com/2011/02/05/mirrored-bitmap-graphics-in-flex-sdk-4-1-anyone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f5cb05ec72417de0ee43072edf73d18e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jaffer</media:title>
		</media:content>
	</item>
		<item>
		<title>PosterMyWall.Com Redesign &#8211; Lessons Learned</title>
		<link>http://jafferhaider.wordpress.com/2010/11/25/postermywall-com-redesign-lessons-learned/</link>
		<comments>http://jafferhaider.wordpress.com/2010/11/25/postermywall-com-redesign-lessons-learned/#comments</comments>
		<pubDate>Thu, 25 Nov 2010 16:14:29 +0000</pubDate>
		<dc:creator>Jaffer Haider</dc:creator>
				<category><![CDATA[postermywall.com]]></category>
		<category><![CDATA[Social Web]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[iteration]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">https://jafferhaider.wordpress.com/2010/11/25/postermywall-com-redesign-lessons-learned/</guid>
		<description><![CDATA[Yesterday I updated www.postermywall.com with the latest build, and with that went out the new visual design that Nida’s been working hard on. A side-by-side comparison of the home pages is below, with the new design on the right. June 2010 November 2010 Although it’s still too early to know if the new design will [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=178&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Yesterday I updated <a href="http://www.postermywall.com">www.postermywall.com</a> with the latest build, and with that went out the new visual design that Nida’s been working hard on. A side-by-side comparison of the home pages is below, with the new design on the right.</p>
<table border="0" cellspacing="0" cellpadding="2" width="801">
<tbody>
<tr>
<td valign="top" width="400">
<p align="center"><strong>June 2010</strong></p>
<p align="center"><a href="http://jafferhaider.files.wordpress.com/2010/11/old-ui1.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="old ui" border="0" alt="old ui" src="http://jafferhaider.files.wordpress.com/2010/11/old-ui_thumb1.jpg?w=377&#038;h=569" width="377" height="569" /></a></p>
</td>
<td valign="top" width="399">
<p align="center"><strong>November 2010</strong></p>
<p align="center"><a href="http://jafferhaider.files.wordpress.com/2010/11/new-ui1.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="new ui" border="0" alt="new ui" src="http://jafferhaider.files.wordpress.com/2010/11/new-ui_thumb1.png?w=377&#038;h=732" width="377" height="732" /></a></p>
</td>
</tr>
</tbody>
</table>
<p align="center">
<p>Although it’s still too early to know if the new design will do better than the previous one in terms of conversion rates and user experience, it is still interesting to compare our goals for the original design, the problems we faced, and how it changed over time.</p>
<h2>Problem 1: Facebook Lookalike</h2>
<p>Back when the original design was being crafted an important requirement was that it should <strong>visually look similar to Facebook.</strong> The main reason was that we envisioned tight integration with Facebook down the road. Part of that was having the user go back and forth between Facebook and PosterMyWall. Hence, to reduce the jarring effect of landing on a site very different from Facebook, we chose to look like Facebook. This eventually came back to bite us, for two reasons: </p>
<ul>
<li>A prominent concern uncovered in user testing was that the site looks too much like Facebook. That gave the site an unreliable (and unoriginal) feel. A few reviewers even pointed out that some paranoid users might mistake it for a Facebook phishing scam. We certainly didn’t want that to happen. <strong>Lesson learned:</strong> Imitation might be the sincerest form of flattery, but don’t go and copy the visual theme of a popular product. Go for originality. </li>
<li>Secondly, its really hard to do a social web product around an activity that is fundamentally <em>not</em> that social; poster making. We had originally envisioned that tight social integration with Facebook (providing social features such as comments, likes, and sharing via a user’s Facebook Wall) would help in maintaining a high coefficient of ‘virality’, thus bringing in lots of traffic and users via Facebook. Even with the presence of sharing and collaboration features that used the Facebook platform, and running a contest that promoted sharing on Facebook, we hit a dead end. <strong>Lesson learned:</strong> Unless your product or service offers something that’s innately social, don’t try too hard to give it a social twist. Or at least, don’t rely on social features to be the primary source of inbound traffic. </li>
</ul>
<p>With the new design, the goal was to look dissimilar from Facebook and at the same time give the user a feeling of reliability and trustworthiness. That’s the main reason for going with a color palette with blues and grays in it. (ref: <a href="http://www.smashingmagazine.com/2010/01/28/color-theory-for-designers-part-1-the-meaning-of-color/" target="_blank">Color Theory for Designers</a>)</p>
<h2>Problem 2: Where’re the Posters?</h2>
<p>Another noticeable difference between the two designs is the emphasis on poster content in the new design. There are a lot of a poster backgrounds visible to the user as soon as they land on the homepage. There are none in the old one. <strong>Visibility of content that the site provides does a better job of setting user expectations than textual descriptions of what the site has to offer</strong>. </p>
<p>We were always aware of the fact that our poster backgrounds were hard to get to, since they were hidden in a dialog in the Flash based poster maker; we just needed to invest some time in a solution that worked. Early on, we didn’t have a lot of poster backgrounds to offer the user in the first place, hence our focus was on explaining what the site did via slides and bullets. </p>
<h2>Problem 3: Making Changes</h2>
<p>When the original design was created, it didn’t take into account some of the features that would be added later on. That was because at that time, we were simply not sure what features would be demanded by users. </p>
<p>Because we had hired a UI consultant (a good friend) to do the Photoshop design work for us, it was sometimes time consuming to go back and forth on the design for newer features. Because of that, on many occasions we would just jimmy rig the UI of a new feature into the existing design without asking him to design it for us. That resulted in the design not aging gracefully. In the above screenshot, the list of blog posts, the ‘InstaCollage’ ad in the top right, and the footer are some examples of design elements that were added later on. </p>
<p>Hence we learned that for a fledgling startup, in which product evolution is inevitable,<strong> you need to have a designer with whom you can iterate designs with quickly and efficiently</strong>. The overhead of working remotely was just too much for us to properly harness the designer’s skills. This time around, we’ve got an in house designer, which is great.</p>
<hr />Looking forward to seeing how the design does. Hoping to blog more about my experience of engineering PosterMyWall in the coming days.
<p>Oh and if you have feedback on the design, I’d love to hear it!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jafferhaider.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jafferhaider.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jafferhaider.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jafferhaider.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jafferhaider.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jafferhaider.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jafferhaider.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jafferhaider.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jafferhaider.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jafferhaider.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jafferhaider.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jafferhaider.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jafferhaider.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jafferhaider.wordpress.com/178/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=178&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jafferhaider.wordpress.com/2010/11/25/postermywall-com-redesign-lessons-learned/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f5cb05ec72417de0ee43072edf73d18e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jaffer</media:title>
		</media:content>

		<media:content url="http://jafferhaider.files.wordpress.com/2010/11/old-ui_thumb1.jpg" medium="image">
			<media:title type="html">old ui</media:title>
		</media:content>

		<media:content url="http://jafferhaider.files.wordpress.com/2010/11/new-ui_thumb1.png" medium="image">
			<media:title type="html">new ui</media:title>
		</media:content>
	</item>
		<item>
		<title>The Come Back Post</title>
		<link>http://jafferhaider.wordpress.com/2010/11/10/the-come-back-post/</link>
		<comments>http://jafferhaider.wordpress.com/2010/11/10/the-come-back-post/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 14:07:30 +0000</pubDate>
		<dc:creator>Jaffer Haider</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">https://jafferhaider.wordpress.com/2010/11/10/the-come-back-post/</guid>
		<description><![CDATA[Wow it’s almost been a year since I posted anything here. Time to dust off the virtual cobwebs and get back in action! A lot has happened since my last post, here’s a 30,000ft view: My MSE program at Carnegie Mellon University wrapped up in December 2009. After waiting for the holiday season travel insanity [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=173&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Wow it’s almost been a year since I posted anything here. Time to dust off the virtual cobwebs and get back in action!</p>
<p>A lot has happened since my last post, here’s a 30,000ft view:</p>
<ul>
<li>My MSE program at Carnegie Mellon University wrapped up in December 2009. After waiting for the holiday season travel insanity to die down, I and Nida flew back from Pittsburgh in January 2010. Being at CMU was a great experience, one I will cherish forever. The MSE program was really grueling, but rewarding at the same time. A big shout out to my CMU team mates, Sam, Soo-Yung, Benjamas, and Guido! You guys rock!</li>
<li>Since coming back (actually a little before that) I’ve been working on <a href="http://www.postermywall.com" target="_blank">PosterMyWall</a> with a partner in Silicon Valley. Working independently on a new product where you make every decision (and thus are responsible for it) has been an interesting experience. I’m glad I took this route, as its been a lot of fun and I’ve learned a lot. All we need to do now is start selling posters …</li>
<li>I’ve got a sweet home office setup. Much better than <a href="http://jafferhaider.wordpress.com/2008/01/22/working-from-home/" target="_blank">before</a>. Will upload pictures one of these days.</li>
</ul>
<p>That’s all the personal stuff I’m willing to divulge on the Internet for now :p</p>
<p>Stay tuned for more Web/Usability/Tech posts!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jafferhaider.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jafferhaider.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jafferhaider.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jafferhaider.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jafferhaider.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jafferhaider.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jafferhaider.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jafferhaider.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jafferhaider.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jafferhaider.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jafferhaider.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jafferhaider.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jafferhaider.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jafferhaider.wordpress.com/173/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=173&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jafferhaider.wordpress.com/2010/11/10/the-come-back-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f5cb05ec72417de0ee43072edf73d18e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jaffer</media:title>
		</media:content>
	</item>
		<item>
		<title>Brainstorming a Tech company name</title>
		<link>http://jafferhaider.wordpress.com/2009/10/30/brainstorming-a-tech-company-name/</link>
		<comments>http://jafferhaider.wordpress.com/2009/10/30/brainstorming-a-tech-company-name/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 00:57:01 +0000</pubDate>
		<dc:creator>Jaffer Haider</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[company]]></category>
		<category><![CDATA[name]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[techcrunch]]></category>

		<guid isPermaLink="false">http://jafferhaider.wordpress.com/?p=170</guid>
		<description><![CDATA[Brainstorming a name for a software company that I&#8217;m a part of (well, as soon as we sign an LLC with this name). A post on 10 company name types on TechCrunch is useful.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=170&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Brainstorming a name for a software company that I&#8217;m a part of (well, as soon as we sign an LLC with this name). A post on <a href="http://www.thenameinspector.com/10-name-types/" target="_blank">10 company name types on TechCrunch</a> is useful.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jafferhaider.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jafferhaider.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jafferhaider.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jafferhaider.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jafferhaider.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jafferhaider.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jafferhaider.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jafferhaider.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jafferhaider.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jafferhaider.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jafferhaider.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jafferhaider.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jafferhaider.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jafferhaider.wordpress.com/170/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=170&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jafferhaider.wordpress.com/2009/10/30/brainstorming-a-tech-company-name/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f5cb05ec72417de0ee43072edf73d18e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jaffer</media:title>
		</media:content>
	</item>
		<item>
		<title>Encouraging User contributions online &#8211; the Community Activity Awareness pattern</title>
		<link>http://jafferhaider.wordpress.com/2009/10/24/encouraging-user-contributions-online-the-community-activity-awareness-pattern/</link>
		<comments>http://jafferhaider.wordpress.com/2009/10/24/encouraging-user-contributions-online-the-community-activity-awareness-pattern/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 21:01:48 +0000</pubDate>
		<dc:creator>Jaffer Haider</dc:creator>
				<category><![CDATA[Social Web]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[encouraging contribution]]></category>
		<category><![CDATA[interaction]]></category>
		<category><![CDATA[users]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://jafferhaider.wordpress.com/2009/10/24/encouraging-user-contributions-online-the-community-activity-awareness-pattern/</guid>
		<description><![CDATA[As part of a homework for a Social Web course, I had to consider factors that research showed had an effect on user contribution on social websites (contribution can be anything from commenting, to rating, to making edits on a wiki page), and link them with popular design patterns used for crafting the user experience [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=169&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As part of a homework for a Social Web course, I had to consider factors that research showed had an effect on user contribution on social websites (contribution can be anything from commenting, to rating, to making edits on a wiki page), and link them with popular design patterns used for crafting the user experience for such websites.</p>
<p>We primarily looked at the <a href="http://developer.yahoo.com/ypatterns/" target="_blank">Yahoo! Design Pattern Library</a> and tried to enhance patterns with more details, rationale for why they work, and more importantly, back our claims with credible references.</p>
<p>I didn’t find an equivalent design pattern in Yahoo’s library for the method of encouraging contribution that I was thinking of. I’ve seen this pattern used a lot on the Internet. I thought it might be good to give it some rigor and analyze why it works, in what situations it would work well, and how can it be improved. Below is the description of the <strong>Community Activity Awareness</strong> design pattern that I proposed (yes I know, I’m not good with names). The gist of the pattern is <em>“When providing a user with the opportunity to contribute to the website, show information about how other users have responded (positively) to that particular contribution action”</em>.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="85">
<p>Pattern name</p>
</td>
<td valign="top" width="553">
<p>Community Activity Awareness</p>
</td>
</tr>
<tr>
<td valign="top" width="85">
<p>Problem statement</p>
</td>
<td valign="top" width="553">
<p>People might ignore requests for contributing to a website (any contribution that increases social content on the site, such as rating, ‘liking’, or leaving comments) if they are not given information about the contributions of other members of the community.</p>
</td>
</tr>
<tr>
<td valign="top" width="85">
<p>Solution sketch</p>
</td>
<td valign="top" width="553">
<p><a href="http://jafferhaider.files.wordpress.com/2009/10/clip_image002.gif"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="clip_image002" border="0" alt="clip_image002" src="http://jafferhaider.files.wordpress.com/2009/10/clip_image002_thumb.gif?w=244&#038;h=60" width="244" height="60" /></a></p>
<p>Image 1 Mockup of a particular implementation of the pattern</p>
</td>
</tr>
<tr>
<td valign="top" width="85">
<p>Use when</p>
</td>
<td valign="top" width="553">
<p>Use this pattern when you want to tell the user about the activities and opinions of other members of the community about certain content on the website. This pattern can also be used to show popular trends amongst the community to the user. This pattern should also be used when the website wants to nudge the user into performing a certain action (such as commenting on an article).</p>
</td>
</tr>
<tr>
<td valign="top" width="85">
<p>Don’t use when</p>
</td>
<td valign="top" width="553">
<p>Do not use this pattern when you are looking to collect unbiased information, or the ‘wisdom of crowds’ [4] about a certain topic, since this pattern divulges the opinion of other members of the community to the user before they (the user) have weighed in with their opinion. For example, this pattern should not be used for an online poll, or when ratings are used as votes (in the traditional sense) to select someone or something. The reason for this is the <i>anchoring and adjustment</i> heuristic [1] that we as people are prone to. This heuristic states that people’s estimates are influenced by suggested starting points (or anchors).</p>
</td>
</tr>
<tr>
<td valign="top" width="85">
<p>Solution statement</p>
</td>
<td valign="top" width="553">
<p><strong>When providing a user with the opportunity to contribute to the website, show information about how other users have responded (positively) to that particular contribution action.</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="85">
<p>Solution description &amp; examples</p>
</td>
<td valign="top" width="553">
<p>There are many ways in which information about the actions of other users (relevant to the current action that a user is about to perform) can be communicated. Obviously, it greatly depends on the nature of the action. </p>
<p>If the action is a simple ‘click’ operation (such as ‘vote up’, ‘vote down’, ‘like’), then information about the community’s activity can be provided in the following ways:</p>
<p>· Showing only the <i>number</i> of users who have performed the same action.</p>
<p>· <i>Pointing out</i> certain users (who might be connected to the user in some way; e.g. part of their social network) who performed the same action.</p>
<p>· A mixture of both of the above.</p>
<p>If the action is a little more demanding, such as writing a comment or a review, then information about the community’s activity can be provided in the following ways:</p>
<p>· Showing <i>responses </i>of users who performed the same action.</p>
<p>· Showing the number of users <i>and</i> their responses.</p>
<p>This pattern is nicely demonstrated by Facebook’s ‘like’ feature. </p>
<p><a href="http://jafferhaider.files.wordpress.com/2009/10/clip_image004.gif"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="clip_image004" border="0" alt="clip_image004" src="http://jafferhaider.files.wordpress.com/2009/10/clip_image004_thumb.gif?w=244&#038;h=62" width="244" height="62" /></a></p>
<p><a name="_Ref242798593">Image </a>2 Facebook &#8216;like&#8217; feature (user pointed out)</p>
<p>Image 2 shows the case of when the user is shown that another member of the community liked the content item they are looking at. The action in this case is ‘like’ (the button to perform this action is highlighted), and the information is presented just below the action button.</p>
<p>Another instance of this feature on Facebook is shown in Image 3.</p>
<p><a href="http://jafferhaider.files.wordpress.com/2009/10/clip_image006.jpg"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="clip_image006" border="0" alt="clip_image006" src="http://jafferhaider.files.wordpress.com/2009/10/clip_image006_thumb.jpg?w=244&#038;h=137" width="244" height="137" /></a></p>
<p><a name="_Ref242799203">Image </a>3 Facebook &#8216;like&#8217; feature (numeric count of users)</p>
<p>This case simply shows the number of people who liked this content, and clicking on the number of people provides the user with more details about each person.</p>
<p>Another common use of this pattern is shown by the commenting system on YouTube, as shown in Image 4.</p>
<p><a href="http://jafferhaider.files.wordpress.com/2009/10/clip_image008.jpg"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="clip_image008" border="0" alt="clip_image008" src="http://jafferhaider.files.wordpress.com/2009/10/clip_image008_thumb.jpg?w=244&#038;h=46" width="244" height="46" /></a></p>
<p><a name="_Ref242799671">Image </a>4 YouTube comments</p>
<p>In this case the user is shown the total number of comments (83) and a paginated list of those comments below. The action to be performed in this case is to leave a comment on the video, and a link to perform this action (‘Sign in to post a Comment’) is shown right next to the information about the community’s response to that action.</p>
<p>A slight variant of this pattern can be seen on the Yahoo! Buzz website. Image 5 shows the widget that displays information on the latest user activity related to the ‘Buzz Up’ action (which is just a fancy name for a ‘vote up’). </p>
<p><a href="http://jafferhaider.files.wordpress.com/2009/10/clip_image010.gif"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="clip_image010" border="0" alt="clip_image010" src="http://jafferhaider.files.wordpress.com/2009/10/clip_image010_thumb.gif?w=182&#038;h=244" width="182" height="244" /></a></p>
<p><a name="_Ref242800298">Image </a>5 Yahoo! Buzz updates</p>
<p>The difference in this case is that the actual action (buzzing up content) is not available at the place this information is displayed. The user has to click on the article’s name to see the entire article along with the option to buzz it up. This implementation of Buzz Updates can be improved by making a ‘buzz up’ option visible when the user moves their mouse over a particular article’s section. This would allow the user to instantly perform the action that they’ve been told has been performed by other members of the community.</p>
<p>Another example of this pattern in a different context is shown below in Image 6.</p>
<p><a href="http://jafferhaider.files.wordpress.com/2009/10/clip_image012.jpg"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="clip_image012" border="0" alt="clip_image012" src="http://jafferhaider.files.wordpress.com/2009/10/clip_image012_thumb.jpg?w=244&#038;h=72" width="244" height="72" /></a></p>
<p><a name="_Ref242800717">Image </a>6 Online Forum&#8217;s &#8216;Currently Active Users&#8217; section</p>
<p>This is the ‘Currently Active Users’ section on an online forum, which is located near the bottom of the page. This allows users to see which other members of the community are viewing the particular sub-section of the forum that they are viewing. In this case, the action is the actual <i>viewing</i> of content of a certain section of the forum (and possibly contributing to a discussion). Thus showing this information can have the effect of the user spending more time on a particular section of the forum that has a large number of active users. This is just speculation, and also based on my experience of being affected by this information; the user might think that since there are so many people viewing this section of the forum that there must be active/useful/popular discussions going on, and they would be more likely to look at topics in that part of the forum. </p>
<p>Another different incarnation of this pattern is in the ‘Trending Topics’ widget on Twitter, as shown in Image 7.</p>
<p><a href="http://jafferhaider.files.wordpress.com/2009/10/clip_image014.gif"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="clip_image014" border="0" alt="clip_image014" src="http://jafferhaider.files.wordpress.com/2009/10/clip_image014_thumb.gif?w=172&#038;h=244" width="172" height="244" /></a></p>
<p><a name="_Ref242852738">Image </a>7 Twitter Trending Topics</p>
<p>The action in this case is tweeting about a certain topic, and the information provided is what other people are tweeting about. This information is provided relatively close to the place of action (the ‘tweet box’ at the top of the profile page). This use of the pattern is different because information about individual users or the number of users is not given. Instead, the fact that a topic is a trend <i>implies</i> that a lot of people are tweeting about it. Thus it has a similar effect as displaying the number of people tweeting about this topic.</p>
</td>
</tr>
<tr>
<td valign="top" width="85">
<p>Rationale</p>
</td>
<td valign="top" width="553">
<p>Kraut and Resnick discuss their claim that <i>people will be more willing to contribute in an online community if they see that others are also contributing</i> in [2]. Their reasons for this claim are:</p>
<p>· Seeing others’ behavior activates a <i>social proof</i> heuristic, which states that in ambiguous situations, people will rely on the behavior of surrounding people and be influenced by it.</p>
<p>· People usually don’t want to contribute to a lost cause, and seeing others in the community making contributions will give the perception that that piece of content is ‘alive’ and perhaps useful to the group in some way. Related to this is the notion that people mostly don’t want to contribute when no one else is.</p>
<p>· People’s sense of fairness sometimes creates an obligation to contribute when they see that others have done so.</p>
<p>Harper [5] also conducted a study that showed that giving users information about the performance of other users increased their contribution in the short term. In that particular case the number of ratings (at a move site) were tracked, and people who had been emailed a newsletter containing comparisons with other people rated, on average, double the movies than people who’s newsletters didn’t have any comparison information.</p>
</td>
</tr>
<tr>
<td valign="top" width="85">
<p>References</p>
</td>
<td valign="top" width="553">
<p>[1] Tversky, A., &amp; Kahneman, D. (1974). Judgment under uncertainty: Heuristics</p>
<p>and biases. Science, 185, 1124-1130</p>
<p>[2] Kraut, R. E., &amp; Resnick, P. (In press). Encouraging online contributions to online communities. In R. E. Kraut, P. Resnick, S. Kiesler, J. Riedl, Y. Chen &amp; J. Konstan (Eds.), Designing from theory: Using the social sciences as the basis for building online communities.</p>
<p>[3] Cialdini, R. B. (2001). Influence: Science and practice (4rd ed.). New York, NY, US: Allyn and Bacon.</p>
<p>[4] Wikipedia contributors, &quot;The Wisdom of Crowds,&quot; <i>Wikipedia, The Free Encyclopedia,</i> <a href="http://en.wikipedia.org/w/index.php?title=The_Wisdom_of_Crowds&amp;oldid=315858186">http://en.wikipedia.org/w/index.php?title=The_Wisdom_of_Crowds&amp;oldid=315858186</a> (accessed October 9, 2009).</p>
<p>[5] <a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.81.9940&amp;rep=rep1&amp;type=pdf">Harper, F., Li, S., Chen, Y., &amp; Konstan, J. (2007).</a> Social comparisons to motivate contributions to an online community. Lecture Notes In Computer Science, 4744, 148. [OR]</p>
</td>
</tr>
</tbody>
</table>
<p>I hope this is useful for you if you’re designing the social features of your site. Recommendations for improvements are welcome!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jafferhaider.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jafferhaider.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jafferhaider.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jafferhaider.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jafferhaider.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jafferhaider.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jafferhaider.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jafferhaider.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jafferhaider.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jafferhaider.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jafferhaider.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jafferhaider.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jafferhaider.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jafferhaider.wordpress.com/169/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=169&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jafferhaider.wordpress.com/2009/10/24/encouraging-user-contributions-online-the-community-activity-awareness-pattern/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f5cb05ec72417de0ee43072edf73d18e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jaffer</media:title>
		</media:content>

		<media:content url="http://jafferhaider.files.wordpress.com/2009/10/clip_image002_thumb.gif" medium="image">
			<media:title type="html">clip_image002</media:title>
		</media:content>

		<media:content url="http://jafferhaider.files.wordpress.com/2009/10/clip_image004_thumb.gif" medium="image">
			<media:title type="html">clip_image004</media:title>
		</media:content>

		<media:content url="http://jafferhaider.files.wordpress.com/2009/10/clip_image006_thumb.jpg" medium="image">
			<media:title type="html">clip_image006</media:title>
		</media:content>

		<media:content url="http://jafferhaider.files.wordpress.com/2009/10/clip_image008_thumb.jpg" medium="image">
			<media:title type="html">clip_image008</media:title>
		</media:content>

		<media:content url="http://jafferhaider.files.wordpress.com/2009/10/clip_image010_thumb.gif" medium="image">
			<media:title type="html">clip_image010</media:title>
		</media:content>

		<media:content url="http://jafferhaider.files.wordpress.com/2009/10/clip_image012_thumb.jpg" medium="image">
			<media:title type="html">clip_image012</media:title>
		</media:content>

		<media:content url="http://jafferhaider.files.wordpress.com/2009/10/clip_image014_thumb.gif" medium="image">
			<media:title type="html">clip_image014</media:title>
		</media:content>
	</item>
		<item>
		<title>The complete solution for implementing a deep-copy clone() method in ActionScript 3</title>
		<link>http://jafferhaider.wordpress.com/2009/10/18/the-complete-solution-for-implementing-a-deep-copy-clone-method-in-actionscript-3/</link>
		<comments>http://jafferhaider.wordpress.com/2009/10/18/the-complete-solution-for-implementing-a-deep-copy-clone-method-in-actionscript-3/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 16:28:53 +0000</pubDate>
		<dc:creator>Jaffer Haider</dc:creator>
				<category><![CDATA[Action Scripnt]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[clone]]></category>

		<guid isPermaLink="false">http://jafferhaider.wordpress.com/2009/10/18/the-complete-solution-for-implementing-a-deep-copy-clone-method-in-actionscript-3/</guid>
		<description><![CDATA[When I started out to write a clone method for a few of my AS3 classes, I looked online and didn’t find any official information about cloning classes from Adobe. There were however a few solutions that were hacked together to provide the same functionality (here and here). These solutions have one big problem though, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=152&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When I started out to write a clone method for a few of my AS3 classes, I looked online and didn’t find any official information about cloning classes from Adobe. There were however a few solutions that were hacked together to provide the same functionality (<a href="http://www.as3dp.com/2008/09/23/actionscript-30-clone-a-prelude-to-the-prototype-design-pattern/" target="_blank">here</a> and <a href="http://www.rozengain.com/blog/2009/02/10/easy-deep-clone-method-for-actionscript-30/" target="_blank">here</a>). <strong>These solutions have one big problem though,</strong> <strong>they don’t work with classes which have non-primitive properties</strong>. </p>
<p>My solution mostly builds on top of these solutions but it also provides the ability to clone classes which have properties that are custom class. And it also works with inheritance.</p>
<p>I’ve placed all helper methods in a CloneUtility class for better modularity. We’ll be using these methods in the code examples below.</p>
<p> <code>
<p>public class CloneUtility      <br />{       <br />&#160;&#160;&#160; /**       <br />&#160;&#160;&#160;&#160; * This method registers an alias for a class. This registration is required for writing and reading the       <br />object in AMF format. If the object is not registered, a runtime error will be thrown when the object is written       <br />in preparation for a clone.       <br />&#160;&#160;&#160;&#160; *       <br />&#160;&#160;&#160;&#160; * @param object The object to register.       <br />&#160;&#160;&#160;&#160; * @return void       <br />&#160;&#160;&#160;&#160; */       <br />&#160;&#160;&#160; public static function registerClass(object:Object) : void {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; var qualifiedClassName : String = getQualifiedClassName(object).replace( &quot;::&quot;, &quot;.&quot; );       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; registerClassAlias(qualifiedClassName, getDefinitionByName(qualifiedClassName) as Class );       <br />&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160; /**      <br />&#160;&#160;&#160;&#160; * This method writes the passed object to a byte array. This method is supposed to be used in the       <br />clone() method of the object that is passed.       <br />&#160;&#160;&#160;&#160; *       <br />&#160;&#160;&#160;&#160; * @param object The object to clone.       <br />&#160;&#160;&#160;&#160; * @return void       <br />&#160;&#160;&#160;&#160; */&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160; public static function writeObjectToByteArray(object:Object) : ByteArray {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; var qualifiedClassName : String = getQualifiedClassName(object).replace( &quot;::&quot;, &quot;.&quot; );       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; var bytes : ByteArray = new ByteArray(); </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; registerClassAlias(qualifiedClassName, getDefinitionByName(qualifiedClassName) as Class );      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; bytes.writeObject(object);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; bytes.position = 0;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return bytes;       <br />&#160;&#160;&#160; }       <br />}</p>
<p> </code>
<p>For an example of how to make your classes cloneable, I’ll go with the example of class A and its subclass B. (B extends A)</p>
<p>This technique of making a deep copy works by writing the object to a bytestream, and then reading it back in as a new object. To facilitate this process, the super class (A) will need to implement the IExternalizable interface, which requires the implementation of two methods:</p>
<p> <code>
<p>public function writeExternal(output:IDataOutput):void      <br />public function readExternal(input:IDataInput):void</p>
<p> </code>
<p>The parent class would look something like this (explained with inline comments).</p>
<p> <code>
<p>public class A implements IExternalizable      <br />{       <br />&#160;&#160;&#160; private var prop1:String;       <br />&#160;&#160;&#160; private var prop2:int;       <br />&#160;&#160;&#160; public function A()       <br />&#160;&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; // we need to register class to be able to write and read it back successfully       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; CloneUtility.registerClass(this);       <br />&#160;&#160;&#160; }       <br />&#160;&#160;&#160; /**       <br />&#160;&#160;&#160;&#160; * This method is responsible for returning a deep copy of this object.       <br />&#160;&#160;&#160;&#160; *       <br />&#160;&#160;&#160;&#160; * @return the cloned copy of this object       <br />&#160;&#160;&#160;&#160; */       <br />&#160;&#160;&#160; public function clone():A {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; var bytes : ByteArray = CloneUtility.writeObjectToByteArray(this);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return bytes.readObject() as A;       <br />&#160;&#160;&#160; }       <br />&#160;&#160;&#160; /**       <br />&#160;&#160;&#160;&#160; * All properties of the class must be written to output.       <br />&#160;&#160;&#160;&#160; *       <br />&#160;&#160;&#160;&#160; * @param output The stream to which to write to       <br />&#160;&#160;&#160;&#160; * @return void       <br />&#160;&#160;&#160;&#160; */       <br />&#160;&#160;&#160; public function writeExternal(output:IDataOutput):void {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; output.writeUTF(prop1);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; output.writeInt(prop2);       <br />&#160;&#160;&#160; }       <br />&#160;&#160;&#160; /**       <br />&#160;&#160;&#160;&#160; * All properties of the class must be read from the input, in the same order as they were written out.       <br />&#160;&#160;&#160;&#160; *       <br />&#160;&#160;&#160;&#160; * @param input The stream from which to read from       <br />&#160;&#160;&#160;&#160; * @return void       <br />&#160;&#160;&#160;&#160; */       <br />&#160;&#160;&#160; public function readExternal(input:IDataInput):void {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; prop1 = input.readUTF();       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; prop2 = input.readInt();       <br />&#160;&#160;&#160; }       <br />}</p>
<p> </code>
<p>Note that the writeExternal() and readExternal() methods will be invoked when the clone method is invoked (by the write and read calls).</p>
<p>The sub-class, B, would look something like this.</p>
<p> <code>
<p>public class B extends A      <br />{       <br />&#160;&#160;&#160; private var prop3:uint;       <br />&#160;&#160;&#160; /**       <br />&#160;&#160;&#160;&#160; * The constructor registers this class to enable it for cloning.       <br />&#160;&#160;&#160;&#160; */       <br />&#160;&#160;&#160; public function B()       <br />&#160;&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; super();       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; // subclasses need to register themselves as well       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; CloneUtility.registerClass(this);       <br />&#160;&#160;&#160; }       <br />&#160;&#160;&#160; /**       <br />&#160;&#160;&#160;&#160; * This method writes all properties of this object to output.       <br />&#160;&#160;&#160;&#160; *       <br />&#160;&#160;&#160;&#160; * @param output The stream to which to write to       <br />&#160;&#160;&#160;&#160; * @return void       <br />&#160;&#160;&#160;&#160; */       <br />&#160;&#160;&#160; public override function writeExternal(output:IDataOutput):void {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; super.writeExternal(output);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; output.writeUnsignedInt(prop3);       <br />&#160;&#160;&#160; }       <br />&#160;&#160;&#160; /**       <br />&#160;&#160;&#160;&#160; * This method reads all properties of this object from input.       <br />&#160;&#160;&#160;&#160; *       <br />&#160;&#160;&#160;&#160; * @param input The stream from which to read from       <br />&#160;&#160;&#160;&#160; * @return void       <br />&#160;&#160;&#160;&#160; */       <br />&#160;&#160;&#160; public override function readExternal(input:IDataInput):void {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; super.readExternal(input);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; prop3 = input.readUnsignedInt();       <br />&#160;&#160;&#160; }       <br />}</p>
<p> </code>
<p>Note that the sub-class doesn’t need to override the clone method, just the writeExternal() and readExternal() methods.</p>
<p>So far it’s been pretty simple. The cool thing however is that you can also easily clone classes that have a custom class (which supports cloning) as a property. Below is code of a class C that has a property of type B.</p>
<p> <code>
<p>public class C implements IExternalizable      <br />{       <br />&#160;&#160;&#160; private var customProp:B;       <br />&#160;&#160;&#160; /**       <br />&#160;&#160;&#160;&#160; * The constructor registers object to enable cloning.       <br />&#160;&#160;&#160;&#160; */       <br />&#160;&#160;&#160; public function C():void       <br />&#160;&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; CloneUtility.registerClass(this);       <br />&#160;&#160;&#160; }       <br />&#160;&#160;&#160; /**       <br />&#160;&#160;&#160;&#160; * Make a deep copy of this object.       <br />&#160;&#160;&#160;&#160; *       <br />&#160;&#160;&#160;&#160; * @return A duplicated object of type C       <br />&#160;&#160;&#160;&#160; */       <br />&#160;&#160;&#160; public function clone():C       <br />&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; var bytes : ByteArray = CloneUtility.writeObjectToByteArray(this);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return bytes.readObject() as C;       <br />&#160;&#160;&#160; }       <br />&#160;&#160;&#160; /**       <br />&#160;&#160;&#160;&#160; * This method writes all properties of this object to output.       <br />&#160;&#160;&#160;&#160; *       <br />&#160;&#160;&#160;&#160; * @param output The stream to which to write to       <br />&#160;&#160;&#160;&#160; * @return void       <br />&#160;&#160;&#160;&#160; */&#160; <br />&#160;&#160;&#160; public function writeExternal(output:IDataOutput):void {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; output.writeObject(customProp);       <br />&#160;&#160;&#160; }       <br />&#160;&#160;&#160; /**       <br />&#160;&#160;&#160;&#160; * This method reads all properties of this object from input.       <br />&#160;&#160;&#160;&#160; *       <br />&#160;&#160;&#160;&#160; * @param input The stream from which to read from       <br />&#160;&#160;&#160;&#160; * @return void       <br />&#160;&#160;&#160;&#160; */       <br />&#160;&#160;&#160; public function readExternal(input:IDataInput):void {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; // note that you should cast as the parent custom class (if there is one)       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; customProp = input.readObject() as A;       <br />&#160;&#160;&#160; }       <br />}</p>
<p> </code>
<p>Note that you will use output.writeObject() and input.readObject() for custom classes. These methods will invoke the writeExternal() and readExternal() methods that are implemented by those custom classes.</p>
<p>Let me know if this works for you or if you have any suggestions for improvements!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jafferhaider.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jafferhaider.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jafferhaider.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jafferhaider.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jafferhaider.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jafferhaider.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jafferhaider.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jafferhaider.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jafferhaider.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jafferhaider.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jafferhaider.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jafferhaider.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jafferhaider.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jafferhaider.wordpress.com/152/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=152&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jafferhaider.wordpress.com/2009/10/18/the-complete-solution-for-implementing-a-deep-copy-clone-method-in-actionscript-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f5cb05ec72417de0ee43072edf73d18e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jaffer</media:title>
		</media:content>
	</item>
		<item>
		<title>Code Complete 2; The Missing Link in Software Education</title>
		<link>http://jafferhaider.wordpress.com/2009/05/12/code-complete-2-the-missing-link-in-software-education/</link>
		<comments>http://jafferhaider.wordpress.com/2009/05/12/code-complete-2-the-missing-link-in-software-education/#comments</comments>
		<pubDate>Mon, 11 May 2009 21:58:22 +0000</pubDate>
		<dc:creator>Jaffer Haider</dc:creator>
				<category><![CDATA[CMU]]></category>
		<category><![CDATA[Pakistan]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[SoftwareEngineering]]></category>
		<category><![CDATA[code complete 2]]></category>
		<category><![CDATA[reading]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://jafferhaider.wordpress.com/2009/05/12/code-complete-2-the-missing-link-in-software-education/</guid>
		<description><![CDATA[I recently bought a copy of Code Complete 2, one of the many books on software engineering that I’ve been meaning to read for a long time. It focuses on a very small part of what I’ve been studying and practicing at my MSE program; software construction.&#160; By construction the book means the actual writing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=151&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1/183-1934183-0975913?ie=UTF8&amp;s=books&amp;qid=1241926830&amp;sr=8-1"><img style="display:inline;border-width:0;margin:0 0 0 5px;" title="CodeComplete2_thumb_3" border="0" alt="CodeComplete2_thumb_3" align="right" src="http://jafferhaider.files.wordpress.com/2009/05/codecomplete2_thumb_3.png?w=144&#038;h=176" width="144" height="176" /></a>I recently bought a copy of <a href="http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1/183-1934183-0975913?ie=UTF8&amp;s=books&amp;qid=1241926830&amp;sr=8-1" target="_blank">Code Complete 2</a>, one of the many books on software engineering that I’ve been meaning to read for a long time. It focuses on a very small part of what I’ve been studying and practicing at my MSE program; software construction.&#160; </p>
<p>By construction the book means the actual writing of code. It is the central part of software development since the requirements elicitation that precedes it is aimed at finding out what is to be constructed, and the testing phase that follows aims to verify the construction. </p>
<p>After going through the table of contents and skimming some chapters, I was amazed at why I wasn’t taught anything like this in my undergraduate Computer Science degree. In fact, I think one of the reasons why programs such as the MSE program at Carnegie Mellon exist is to fill in the deficiency of sound software engineering skills in CS undergrads. During my undergrad program, even though we had a ‘software engineering’ course, we were still not taught about basic construction techniques such as version control, peer reviews, and managing quality at the code level. I’m pretty sure this is the case for a lot of other programs out there as well.</p>
<p>Perhaps it is due to the fact that software engineering is still a very young field, but there is a huge gap between what is being taught in Computer Science undergraduate courses and what is required out there in the industry. I’m not sure about the statistics on how many undergrads get jobs in the industry right away, but in countries like Pakistan where research is not a priority, I’m willing to bet a majority of CS undergrad students look for jobs in the industry instead of pursuing higher studies and research.</p>
<p>This is exactly why programs need to prepare students for writing industry ready code. Books such as CC2 are vital tools for polishing your skills as a software engineer. I firmly believe that we would have a lot less failed projects and more happy customers if people looking to write code for a living would catch up on their <strong><a title="Coding Horror reading list" href="http://www.codinghorror.com/blog/archives/000020.html">reading</a></strong> first.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jafferhaider.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jafferhaider.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jafferhaider.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jafferhaider.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jafferhaider.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jafferhaider.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jafferhaider.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jafferhaider.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jafferhaider.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jafferhaider.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jafferhaider.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jafferhaider.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jafferhaider.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jafferhaider.wordpress.com/151/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=151&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jafferhaider.wordpress.com/2009/05/12/code-complete-2-the-missing-link-in-software-education/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f5cb05ec72417de0ee43072edf73d18e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jaffer</media:title>
		</media:content>

		<media:content url="http://jafferhaider.files.wordpress.com/2009/05/codecomplete2_thumb_3.png" medium="image">
			<media:title type="html">CodeComplete2_thumb_3</media:title>
		</media:content>
	</item>
		<item>
		<title>Windows 7 &#8211; Finally a worthy successor to XP</title>
		<link>http://jafferhaider.wordpress.com/2009/05/10/windows-7-finally-a-worthy-successor-to-xp/</link>
		<comments>http://jafferhaider.wordpress.com/2009/05/10/windows-7-finally-a-worthy-successor-to-xp/#comments</comments>
		<pubDate>Sun, 10 May 2009 03:35:08 +0000</pubDate>
		<dc:creator>Jaffer Haider</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[2019]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[windows7]]></category>

		<guid isPermaLink="false">http://jafferhaider.wordpress.com/2009/05/10/windows-7-finally-a-worthy-successor-to-xp/</guid>
		<description><![CDATA[I installed the long awaited RC to Windows 7 last week, finally upgrading from Windows XP. I didn’t particularly loath Vista as most people did, but I never felt the need to upgrade to Vista. But Windows 7 blew me away in the first few minutes of using it. I’m probably not going back to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=149&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I installed the long awaited <a href="http://www.microsoft.com/windows/windows-7/download.aspx">RC</a> to Windows 7 last week, finally upgrading from Windows XP. I didn’t particularly loath Vista as most people did, but I never felt the need to upgrade to Vista. But Windows 7 blew me away in the first few minutes of using it. I’m probably not going back to XP ever again.</p>
<p>I installed 7 on my Dell Vostro 1500, and the first thing that amazed me was that it downloaded and installed all the right drivers. And not generic OEM drivers, official vendor drivers that I had had to manually install in Windows XP.</p>
<p>The new taskbar in my opinion is the best of both worlds; the Mac dock and the old taskbar. Pinning applications to the taskbar is really handy, and now I never have to worry about how many windows I’m going to open.</p>
<p>HomeGroups and the ability to share and stream media across Windows 7 machines is something that I’m looking forward to using on a home server setup. The concept of libraries is also very handy, although perhaps a little unintuitive at first. </p>
<p>Performance, especially hibernate and restore times have been vastly improved, especially if you compare with XP.</p>
<p>Microsoft has been working on some really cool stuff lately. Live Mesh, Windows Live Essentials, IE8, MEDV, and now Windows 7. I’m waiting impatiently for <a href="http://www.istartedsomething.com/20090228/microsoft-office-labs-vision-2019-video/" target="_blank">their vision of 2019</a> to come true. <img src='http://jafferhaider.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jafferhaider.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jafferhaider.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jafferhaider.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jafferhaider.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jafferhaider.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jafferhaider.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jafferhaider.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jafferhaider.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jafferhaider.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jafferhaider.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jafferhaider.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jafferhaider.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jafferhaider.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jafferhaider.wordpress.com/149/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=149&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jafferhaider.wordpress.com/2009/05/10/windows-7-finally-a-worthy-successor-to-xp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f5cb05ec72417de0ee43072edf73d18e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jaffer</media:title>
		</media:content>
	</item>
		<item>
		<title>Evolution of the PC &#8211; Where are we headed?</title>
		<link>http://jafferhaider.wordpress.com/2009/03/07/evolution-of-the-pc-where-are-we-headed/</link>
		<comments>http://jafferhaider.wordpress.com/2009/03/07/evolution-of-the-pc-where-are-we-headed/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 06:13:00 +0000</pubDate>
		<dc:creator>Jaffer Haider</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://jafferhaider.wordpress.com/2009/03/07/evolution-of-the-pc-where-are-we-headed/</guid>
		<description><![CDATA[I’m reading In Search of Stupidity: Over 20 Years of High-Tech Marketing Disasters these days which talks about some high profile and some not to high profile blunders in the early days of the tech industry. It feels so unreal to read about the early incarnations of the ‘computer’, which supported at most 640KB and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=148&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I’m reading <a href="http://www.amazon.com/Search-Stupidity-High-Tech-Marketing-Disasters/dp/B001G0OANQ/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1236405438&amp;sr=8-2" target="_blank">In Search of Stupidity: Over 20 Years of High-Tech Marketing Disasters</a><em> </em>these days which talks about some high profile and some not to high profile blunders in the early days of the tech industry. It feels so unreal to read about the early incarnations of the ‘computer’, which supported at most 640KB and were heavy enough to induce back pains. </p>
<p>I remember seeing and touching some of these old dinosaurs, and it’s amazing how fast we’ve progressed. I was wondering what people 20-30 years down the line will think of our Macbook Pros, our Netbooks and our HP Dragons. I wonder how quaint our operating systems and software will look to them. </p>
<p>Even today we can see change happening as the concept of the PC being the sole repository for everything is becoming antiquated as more and more things are getting pushed to the cloud. I’m really impressed by some of Microsoft’s new Live services, particularly <a href="http://www.mesh.com" target="_blank">Live Mesh</a>. It will be interesting to see what role Windows 7 plays in this transition of everything to the Web and how Windows as an operating system will evolve over the decades.</p>
<p>Exciting times indeed.</p>
<p>Rant ends here. Now I’m going to enjoy spring break!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jafferhaider.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jafferhaider.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jafferhaider.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jafferhaider.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jafferhaider.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jafferhaider.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jafferhaider.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jafferhaider.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jafferhaider.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jafferhaider.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jafferhaider.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jafferhaider.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jafferhaider.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jafferhaider.wordpress.com/148/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jafferhaider.wordpress.com&amp;blog=693429&amp;post=148&amp;subd=jafferhaider&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jafferhaider.wordpress.com/2009/03/07/evolution-of-the-pc-where-are-we-headed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f5cb05ec72417de0ee43072edf73d18e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jaffer</media:title>
		</media:content>
	</item>
	</channel>
</rss>
