<?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>Aleem Bawany &#187; Technophilia</title>
	<atom:link href="http://aleembawany.com/category/technophilia/feed/" rel="self" type="application/rss+xml" />
	<link>http://aleembawany.com</link>
	<description>tech, web and the rest</description>
	<lastBuildDate>Sat, 05 Jun 2010 22:41:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>TEDx Karachi</title>
		<link>http://aleembawany.com/2010/06/04/tedx-karachi/</link>
		<comments>http://aleembawany.com/2010/06/04/tedx-karachi/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 14:59:27 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[Pakistan]]></category>
		<category><![CDATA[Technophilia]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=1036</guid>
		<description><![CDATA[I have attended a number of conferences in Karachi and even spoken at a few but today's conference at TedX was in a separate league. What made it so interesting is that like all things TED, it was diverse. There were speakers from the creative arts, business, energy and technology. The crowd was equally diverse and the talks were very inspirational because the speakers didn't hold out--they really spoke out. The event was extremely well organized with each of the 18 minute talks carrying a carefully rehearsed and condensed theme.]]></description>
			<content:encoded><![CDATA[<p>I have attended a number of conferences in Karachi and even spoken at a few but today&#8217;s conference at TedX was in a separate league. What made it so interesting is that like all things TED, it was diverse. There were speakers from the creative arts, business, energy and technology. The crowd was equally diverse and the talks were very inspirational because the speakers didn&#8217;t hold out&#8211;they really spoke out. The event was <a href="http://teeth.com.pk/blog/2010/06/01/tedx-comes-to-karachi">extremely well organized</a> with each of the 18 minute talks carrying a carefully rehearsed and condensed theme.</p>
<p>It felt like the cirque de soleil of conferences with a healthy mix of audience engagement, ranging from an abrupt ovation for our country with a national anthem who intent was to rebase the audience back to our country&#8217;s patriotic roots, to motivational talks which engaged the audience in a 30 second breathing exercise and acknowledgement of people in adjacent seats&#8211;all designed to underline the prominence of &#8220;presence&#8221;, &#8220;awareness&#8221; and connecting. The topic on energy for a change focused on solutions and the Thar coal mines, whose 4% reserves are enough to sustain the entire country. Micro-finance seems to be another recurring theme in the financial and charitable circles and there was plenty of quantification and empirical evidence of it being implemented and working in Pakistan. All talks came from people who are out there on the field, accomplishing these things.</p>
<p>The talks had plenty of substance and mind fodder. It&#8217;s easy to get pigeon-holed into our respective trades so it was a good change to get a richer, broader perspective from people across the various walks of life.</p>
<p>It&#8217;s a shame that it will be another year before the next TEDx, but I&#8217;m hoping there are other forums in between that continue the discussion.</p>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2010/06/04/tedx-karachi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Express Tribune</title>
		<link>http://aleembawany.com/2010/04/13/the-express-tribune-3/</link>
		<comments>http://aleembawany.com/2010/04/13/the-express-tribune-3/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 15:23:41 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[New Media]]></category>
		<category><![CDATA[Pakistan]]></category>
		<category><![CDATA[Technophilia]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=974</guid>
		<description><![CDATA[What on the onset seemed quite trivial actually turned out to be quite hard. <a href="http://tribune.com.pk/">The Express Tribune</a> launched just 2 days ago with a stunning paper and a web portal to match. Building large scale systems like The Express Tribune news portal and turning it around in 6 months requires a team of determined masochists and some really quick thinking.]]></description>
			<content:encoded><![CDATA[<p>What on the onset seemed quite trivial actually turned out to be quite hard. <a href="http://tribune.com.pk/">The Express Tribune</a> launched just 2 days ago with a stunning paper and a web portal to match.</p>
<p>Building large scale systems like The Express Tribune news portal and turning it around in 6 months requires a team of determined masochists and some really quick thinking. One has to think about scalability, performance, security, architecture and pliability of the product. One also has to think about usability, information architecture and layouts. About user interactivity, community engagement and publication workflows. Integration with television and print and a coherent new media strategy.</p>
<p>But it&#8217;s here and it&#8217;s far from over. Going in, I was confident that we would easily come out ahead of the competition (whom I have written about <a href="http://aleembawany.com/2008/08/28/dawn-com-barely-worth-the-effort/">here</a> and <a href="http://aleembawany.com/2010/02/07/jang-news-advertising-vs-user-experience/">here</a>) but I never thought I would have so much fun doing it.</p>
<p>The Express Tribune website uses some existing platforms and our developer toolkit is quite powerful, but to get to where we wanted to go, we got neck deep in every aspect of the system.</p>
<p>Beyond being just a pretty website, it has some behind the scenes features where it really shines out. This is where the competition has a lot of catching up to do. For example, assigning headlines and stories to sections or updating the page layout happens directly from the section itself, rather than going in to some specialized administrative screen. The image management and carousels are first class features and not just an after thought. The News in Pictures and slide shows can be done in under 5 minutes. The pages load blazingly fast, because we optimized not only the caching mechanisms but also the web server, database server, application server and even the operating system.</p>
<p>The user interface follows some hard principles. For example, the comment preview feature is painstakingly simple and dynamic so users know exactly how their words will appear. The submit button is below the comment preview by design, so the user is forced to preview on his way to the submit button. The design follows a horizontal rhythm using grid-based layouts. The weather widget updates the weather without having to refresh the page and on the back end we do some very specific caching so we can handle thousands of users, yet provide the latest weather updates or auto updating stock charts. The alerts ticker is directly linked to the Express 24/7 television station which requires some trickery on the part of both, the television platform as well as the web platform.</p>
<p>The interesting bits about strategy are something I cannot talk about other than to say that if the website works well for you and you find yourself interacting more and more, it&#8217;s because we put the user first. And in the short and long term both, our strategy will allow us to surpass the competition and out-pace them so we maintain the lead.</p>
<p>With internet penetration growing the way it is, I have no doubt that The Express Tribune portal will provide common ground for a lot of avid readers and have interesting side effects.</p>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2010/04/13/the-express-tribune-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Jang News: Advertising vs User Experience</title>
		<link>http://aleembawany.com/2010/02/07/jang-news-advertising-vs-user-experience/</link>
		<comments>http://aleembawany.com/2010/02/07/jang-news-advertising-vs-user-experience/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 15:45:08 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[New Media]]></category>
		<category><![CDATA[Pakistan]]></category>
		<category><![CDATA[Technophilia]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=845</guid>
		<description><![CDATA[The <a href="http://jang.com.pk/" title="Jang News Online">Jang News</a> website is one that just keeps getting worse with each passing day. It's lacklustre and shows absolutely no concern for its readers or the news that it serves. The website is a big hoarding with no less than <strong>19 advertisements</strong> on the website's front page while at the same time carries <strong>less than 100 words of actual news</strong>. And it looks really ugly to boot.]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://jang.com.pk/" title="Jang News Online">Jang News</a> website is one that just keeps getting worse with each passing day. When I wrote a review of <a href="/2008/08/28/dawn-com-barely-worth-the-effort/">Dawn.com Beta website launch</a>, I highlighted their technical and interface shortcomings but the Jang News&#8217; website is not worthy of even that. It&#8217;s lacklustre and shows absolutely no concern for its readers or the news that it serves.</p>
<p>The website is a big hoarding with no less than <strong>20 advertisements</strong> on the front page while at the same time carries <strong>less than 100 words of actual news</strong>. And it looks really ugly.</p>
<p><a href="http://aleembawany.com/wp-content/uploads/2010/02/jang-news-advertising.jpg" title="Jang News Online Website"><img src="http://aleembawany.com/wp-content/uploads/2010/02/jang-news-advertising.jpg" alt="" title="Jang News Online Advertisements" width="600" height="597" /></a></p>
<p>This is what happens when you <strong>just don&#8217;t care about the readers</strong>. This is what happens when designers develop, developers design, business units dictate the roadmap and talent in general lacks. This is also what happens when you just don&#8217;t understand <strong>interaction design</strong>, information architecture, usability or have been oblivious to the paradigm shifts in online advertising and technological trends. This screen capture of the Jang News website clearly highlights all this.</p>
<p>The actual news content is highlighted in green boxes while the rest of the page is mostly advertisements. All ad slots highlighted in red are available for sale while unsold ad space is used for in-house products. The <a href="http://www.jang.com.pk/ad-tariff/newtariff/index.html">advertising tariffs</a> section of the website indicates the type of ads available for sale on Jang News Online which includes video and expandable ads at a premium. The <strong>annoying expandable ads</strong> block access to the news until readers close them (shown in the screen capture) while video ads block the rest of the page because they take so long to load (Pakistan has very low broadband penetration in any case).</p>
<p>Jang News Online gets a considerable amount of traffic because the Jang News Group has entrenched itself as the face of news over the past 70 years that it has been around&#8211;a time during which it enjoyed <strong>little or no competition</strong> which helps explain their complacency.</p>
<p>Now, I am not even sure why an advertiser would want to publish one ad amongst 20 when it&#8217;s well known that users develop <a href="http://www.google.com/search?q=banner+blindness">banner blindness</a> and moreover the website&#8217;s ad space is extremely diluted and the screen interface is so cluttered.</p>
<p>The page reminds me of the days popup ads ran rampant until readers expressed rage and all major browsers (Internet Explorer, Firefox, Safari, et al) reacted by featuring popup blockers to put an end to it all. Unfortunately, in Jang&#8217;s case it&#8217;s not easy to block the spam. The website&#8217;s front page is practically an <strong>online hoarding</strong> which seems to take it&#8217;s cue from the <a href="http://www.milliondollarhomepage.com/">million dollar homepage</a> (whose sole purpose is to show advertisements) rather than a news site. One may easily pass this off as spam in its current state.</p>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2010/02/07/jang-news-advertising-vs-user-experience/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Online Strategy &amp; Development in a Nutshell</title>
		<link>http://aleembawany.com/2010/01/28/online-strategy-development-in-a-nutshell/</link>
		<comments>http://aleembawany.com/2010/01/28/online-strategy-development-in-a-nutshell/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 09:24:09 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Technophilia]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=825</guid>
		<description><![CDATA[Microsoft Innovation Center hosted the Microsoft Web Days session today where I gave a talk about online strategy and development (in a nutshell). Even thought it was in a nutshell, I slipped in some details which meant skimming over a lot of other things during latter part of the brief 30 minute presentation. The presentation covered frameworks, interaction design, business models, strategies, tools, trends and user experience among other things.]]></description>
			<content:encoded><![CDATA[<p>Microsoft Innovation Center hosted the Microsoft Web Days session today where I gave a talk about online strategy and development (in a nutshell). Even thought it was in a nutshell, I slipped in some details which meant skimming over a lot of other things during latter part of the brief 30 minute presentation. The presentation covered frameworks, interaction design, business models, strategies, tools, trends and user experience among other things.</p>
<p>There are some valuable lessons in this for all budding web developers and web entrepreneurs.</p>
<p><object style="margin:0px" width="505" height="415"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=onlinestrategyanddevelopmentinanutshell-100127144415-phpapp02&#038;stripped_title=online-strategy-and-development-in-a-nutshell&#038;rel=0" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=onlinestrategyanddevelopmentinanutshell-100127144415-phpapp02&#038;stripped_title=online-strategy-and-development-in-a-nutshell&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="505" height="415"></embed></object></p>
<p>Download PowerPoint: <a href="/wp-content/uploads/2010/01/Online-Strategy-and-Development-in-a-Nutshell.ppt">Online Strategy and Development in a Nutshell</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2010/01/28/online-strategy-development-in-a-nutshell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tr.im Goes Open &#8211; Bad Move or Marketing Ploy?</title>
		<link>http://aleembawany.com/2009/08/17/tr-im-goes-open-bad-move-or-marketing-ploy/</link>
		<comments>http://aleembawany.com/2009/08/17/tr-im-goes-open-bad-move-or-marketing-ploy/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 23:25:08 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Technophilia]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=802</guid>
		<description><![CDATA[Tr.im is a URL shortening services useful for applications like Twitter where the length of posts is restricted to around 140 letters and short URLs are desirable. Recently tr.im announced that it was going out of business and shutting down but soon after they reversed their position and Eric Woodward offered to bear the costs of operations out of his own pocket if donations fell short. A move that is probably even worse than shutting down.]]></description>
			<content:encoded><![CDATA[<p><a title="Trim URL Shortener" href="http://tr.im/">Tr.im</a> is a URL shortening services that converts your URL from <code>http://aleembawany.com/2009/08/17/tr-im-goes-open-bad-move-or-marketing-ploy/</code> to something like <code>http://tr.im/wzz0</code>. It&#8217;s useful for services like Twitter where the length of posts is restricted to around 140 letters.</p>
<p>In a seemingly abrupt move, tr.im recently announced the <a href="http://blog.tr.im/post/159489555/tr-im-to-december-31-2009">decision to shut down</a> at the end of this year blaming the <a href="http://bit.ly/">bit.ly</a> and Twitter partnership for driving them out of business. I have not used either service other than for test driving so I don&#8217;t have a bias either way but it makes sense for Twitter to go with best of the breed so it is unclear why tr.im needs to place the blame with either bit.ly or Twitter. The situation was pareto efficient and one or the other had to lose out. It makes sense for Twitter to partner with or acquire such a service because it is complimentary to their business (tiny posts with tiny URLs).</p>
<p>Soon after announcing their intent to go out of business, tr.im reversed their position and Eric Woodward offered to bear the <a href="http://blog.tr.im/post/165049236/tr-im-to-be-community-owned">costs of operations out of his own pocket</a> if donations fell short&#8211;a move that is even worse than going out of business.</p>
<h2 id="toc-revenue-model">Revenue Model</h2>
<p>The revenue model suggests that for the most part, such a service is very difficult to sustain. The revenue model for URL shortening services would depend either on showing disruptive advertisements or tracking user patterns and selling intelligence.</p>
<p>In the former case, users would probably stop using the service if they saw an ad before being redirect to long URL. In the latter case, tr.im would need considerable market share to track behavioural data.</p>
<p>Tr.im shot itself in the foot by claiming it will simply go belly up because the business is bad. There goes their chance of getting acquired for a good price.</p>
<p>All this is offset by the fact that it allowed tr.im to receive a lot of media attention and might drive up usage but smart users will shy away from a service that&#8217;s on life support and business continuity is of utmost importance. The smarter strategy was to get acquired much like bit.ly did.</p>
<h2 id="toc-why-go-open">Why go open?</h2>
<p>The technical challenge of converting long URLs to short ones is trivial so the value-proposition to the community is not that great but let&#8217;s assume that since it&#8217;s free it&#8217;s good. The problem then again is that it will encourage users to create their own competing services to bit.ly and since the revenue model for the most part does not have a compelling monetization strategy, these services will eventually go out of business and intensify the link-rot problem.</p>
<p>The primary motivation for going open seems to be the move toward donations where the community would donate code as well as money to keep the servers running for the millions of links that will accumulate over time. This works well for Wikipedia because it is a natural monopoly and can fall back on ads if needed. And again, Wikipedia has completely different dynamics compared to tr.im which functions simply to shorten the length of links with equal or better services already available that pose a lesser risk of going bust.</p>
<h2 id="toc-a-nasty-time-bomb">A Nasty Time Bomb</h2>
<p>When Eric Woodward proposes that he will fund this from his own pocket if donations fall short, the community should be concerned. What is something happens to Eric? Does he leave behind a trust fund? Not only that but the costs are ever-increasing because all links will need to be supported for all of time or thousands if not millions of links will break.</p>
<p>The longer the service stays in operation, the greater the risk it poses. If it goes out of business 2 years from now it might end taking out a couple million URLs with it which will be even worse than if it went out of business today.</p>
<p>So the costs will be ever-increasing, the risks will also be ever-increasing and there is no good revenue model to sustain the service. In fact if it becomes community owned, all data will be free so tr.im cannot depend on behavioural tracking data as a revenue strategy. Tr.im will continue to be a burden on the community and not only that, but if other unsustainable services come up replicating its code, the link rot problem will get compounded. And all those people who make donations will see their money go to waste when they realize the tr.im will need piles of cash, month after month with no other source of cash flow.</p>
<p>I hope I am wrong about this.</p>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2009/08/17/tr-im-goes-open-bad-move-or-marketing-ploy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Earnings Season</title>
		<link>http://aleembawany.com/2009/07/23/earnings-season/</link>
		<comments>http://aleembawany.com/2009/07/23/earnings-season/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 23:25:38 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[Finance]]></category>
		<category><![CDATA[Technophilia]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=791</guid>
		<description><![CDATA[Earnings season is upon us. Today the DOW touched it's highest annual level of 9000 while the Nasdaq jumped 2.9%, it's twelfth daily consecutive gain. Following is a summary of interesting earnings highlights in the tech sector to show just where things stand.]]></description>
			<content:encoded><![CDATA[<p>Earnings season is upon us. Today the DOW touched it&#8217;s highest annual level of 9000 while the Nasdaq jumped 2.9%, it&#8217;s twelfth daily consecutive gain. Following is a summary of interesting earnings highlights in the tech sector to show just where things stand.</p>
<p><strong>Microsoft&#8217;s</strong> (MSFT) fourth-quarter net income dropped 29% to $3.05 billion and revenue fell 17% to $13.10 billion. It was hurt by a global slump in demand for PCs and servers. Sales in the client division which produces Window OS, fell 29% and earnings fell 33%. Google will be introducing the Chrome OS soon while Microsoft will be launching it&#8217;s own Windows 7 in October of this year.</p>
<p><strong>Apple</strong> (AAPL) reported third-quarter profits increase by 15% to $1.23 billion and revenue rose 12% to $8.33 billion. Apple sold 5.2 million iPhones, a 700% increase YoY. Macintosh saw 4% rise in shipments to 2.6 million units, however, revenue fell 8% to 3.33 billion due to price cuts on some MacBooks. iPod sales dropped 7% YoY to 10.2 million and revenues declined 11% to 1.49 billion. This is the natural effect of cannibalization by iPhone and iTouch.</p>
<p><strong>Amazon </strong>(AMZN) said its second-quarter net slid 10% to $142 million, though sales increased 14% to $4.65 billion. The company, which announced an agreement to buy online retailer Zappos.com yesterday for $850 million, said it expects net sales of between $4.75 billion and $5.25 billion in the third quarter.</p>
<p><strong>Yahoo</strong> (YHOO) said its second-quarter revenue slid 13% to $1.57 billion but profits rose 8% to $141.4 million due to layoffs of 700 employees to 13,000 total, and other cost-cutting measures. A Yahoo/Microsoft deal is back in the negotiating room as the companies seek to form a partnership against rival Google, which means the deal would have to be approved by regulators due to antitrust concerns. The companies have skirted the negotiations over the past 2 years until they came to head a few months ago with CEO Jerry Yang when negotiations failed and Yahoo stock fell considerably as the recession hit. Yahoo, this past Tuesday launched a <a title="Yahoo New Home Page" href="http://m.www.yahoo.com/">new home page</a> and announced a deal with AT&amp;T to sell display advertising.</p>
<p><strong>AMD</strong> (AMD) posted second quarter losses of $330 million while revenue was down from $1.36 billion to $1.18 billion. Margins for its chips business were down from 35% to 27% a stark contrast from rival Intel&#8217;s report of increasing gross margins. Intel&#8217;s revenues also in turn increased 12%. AMD blamed the declines on under-utilized factories which lead to a reduction in margins and also lower chip prices.</p>
<p><strong>Google</strong> (GOOG) reported a revenue increase for 2.9% to $5.52 billion while profits rose 19% to $1.48 billion due to cost cuts and laying off some 300 employees. Google commands one-third of the $24.5 billion U.S. Internet advertising market. Mr. Schmidt reported a recovery in advertising spend in travel and shopping but finance sector remains weak. The bulk of the growth came for search advertisements as advertisers turn to more predictable and targetted ads on Google.</p>
<p><strong>TomTom</strong> (TOM2), a dutch navigation equipment manufacturer reports 61% drop in second quarter profits to $28 million while the top line saw a decline of  19% to $522 million. The company expects to a total industry demand of 15 million Portable Navigation Device units in Europe and 17 million in North America for the complete fiscal year of which it expects that 11 to 12 million units will be of TomTom. The company also suffers stiff competition from the likes of iPhone and other similar phones in the market which provide a navigation facility among other things.</p>
<p><strong>Wipro</strong> (WIT) reported a 12% rise in first-quarter profits to $210 million making it the third Indian software company to beat forecasts. Earlier, bigger rival Tata reported a 22% increase in profits while Infosys reported a 17% increase in profits. Wipro, India&#8217;s third largest software maker booked revenues from IT services, products, customer care and lighting businesses.  IT Services registered revenues of $1.03 billion which makes up 77% of Wipro&#8217;s revenue stream and margins in the same division grew from 20.9% to 22.3%.</p>
<p><strong>LG</strong> Electronics, South Korea&#8217;s second largest consumer electronic company after Samsung, reported quarterly net income increase for 62% to $918 million and earnings increased 14% to 1.2 billion. LG expects strong outlook in LCD and handset business. The company sold nearly 30 million handsets in the quarter and operating margin on these handsets increased from 6.7% to 11% QoQ.</p>
<p>Elsewhere, <strong>Cisco</strong> (CSCO) signed a deal with Marriot hotels for telepresence services in 25 locations. Telepresence helps reduce travel costs and Mariott cancelled previous deals with <strong>HP</strong> (HPQ) telepresence solutions for $120K each plus $10K monthly fee. Last year alone, HP sold Cisco gear worth $1 billion but tough economic times has lead to tough competition between the two. Cisco&#8217;s top of the line telepresence sells for $300K vs HP&#8217;s $350K. <strong>BBC</strong> has dumped project Kangaroo, an Internet TV service that was planned in collaboration with two other television networks. The project was ruled out in February due to antitrust issues from the Competition Commission. BBC wrote off some $15 million in the project for the FY ended April 30. The BBC iPlayer gets 41 million+ hits a month and BBC is currently exploring other options for profitable online television broadcasting.</p>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2009/07/23/earnings-season/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSON Serializers In .NET</title>
		<link>http://aleembawany.com/2009/05/22/json-serializers-in-net/</link>
		<comments>http://aleembawany.com/2009/05/22/json-serializers-in-net/#comments</comments>
		<pubDate>Fri, 22 May 2009 16:22:59 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[Technophilia]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=696</guid>
		<description><![CDATA[<p>I was introduced to the various serialization options in .NET while trying to build the <a href="http://aleembawany.com/2009/03/27/aspnet-mvc-create-easy-rest-api-with-json-and-xml/">JSON and XML</a> filters for ASP.NET MVC. In this post I'll take a look at the different JSON serializers available in .NET and the reasons to pick one over the other.</p>
]]></description>
			<content:encoded><![CDATA[<p>I was introduced to the various serialization options in .NET while trying to build the <a href="http://aleembawany.com/2009/03/27/aspnet-mvc-create-easy-rest-api-with-json-and-xml/">JSON and XML filter for ASP.NET MVC</a>. In this post I&#8217;ll take a look at the different JSON serializers in .NET and the reasons to pick one over the other.</p>
<h2 id="toc-javascriptserializer">JavaScriptSerializer</h2>
<p>The <a title="JavaScriptSerializer" href="http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx"><code>JavaScriptSerializer</code></a> lives in the <a title="System.Web.Script.Serialization namespace" href="http://msdn.microsoft.com/en-us/library/system.web.script.serialization.aspx">System.Web.Script.Serialization</a> namespace and the usage is fairly straight forward for serialization:</p>
<pre class="prettyprint">JavaScriptSerializer serializer = new JavaScriptSerializer();
String json = serializer.Serialize(data);</pre>
<p>For deserialization however, there is a minor annoyance in that the deserializer accepts a generic type along with the content:</p>
<pre class="prettyprint">serializer.Deserialize&lt;T&gt;(String s)</pre>
<p>which can be a problem if the type T is not known at compile time and needs to be dynamic. The work around is a bit ugly as I <a title="Invoke JavaScriptSerializer with Dynamic Type" href="http://stackoverflow.com/questions/856665/how-to-turn-a-type-instance-into-a-generic-type-argument">learnt</a> because it uses reflection to create a generic method but it works:</p>
<pre class="prettyprint">var result = typeof(JavaScriptSerializer).GetMethod("Deserialize")
             .MakeGenericMethod(JsonDataType)
             .Invoke(serializer, new object[] { inputContent });</pre>
<p>The <code>JavaScriptSerializer</code> is excellent for general purpose serialization and deserialization, however, one downside is that it cannot handle circular references.</p>
<p>A useful feature of the <code>JavaScriptSerializer</code> is that you can also implement a custom <a title="JavaScriptConverter custom serialization" href="http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptconverter.aspx"><code>JavaScriptConverter</code></a> and pass that in to <code>JavaScriptSerializer</code> for fine-grained control over the serialization/deserialization. However, for it to be really useful you need to know the types at compile time and have references to those types. This really limits the usefulness of this feature because by referencing those classes your code becomes tightly coupled so you cannot easily use it in something like an MVC filter.</p>
<p>The <code>JavaScriptSerializer</code> includes all public fields and properties for serialization by default which makes it useful when working with auto-generated classes or if you don&#8217;t have access to the source. This is different from how <code>DataContractJsonSerializer</code> works.</p>
<h2 id="toc-datacontractjsonserializer">DataContractJsonSerializer</h2>
<p>The <a title="DataContractJsonSerializer in .NET" href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx"><code>DataContractJsonSerializer</code></a> lives in the <a title="System.Runtime.Serialization.Json namespace" href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.aspx">System.Runtime.Serialization.Json</a> namespace. Unlike the <code>JavaScriptSerializer</code>, the <code>DataContractJsonSerializer</code> is a contract-based serializer so classes or members need to have the <code><a title="DataContract Attribute for serialization with DataContractSerializer" href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractattribute.aspx">[DataContract]</a></code>, <code><a title="DataMember Attribute for serialization with DataContractSerializer" href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datamemberattribute.aspx">[DataMember]</a></code> or the <code><a title="Serializable Attribute" href="http://msdn.microsoft.com/en-us/library/system.serializableattribute.aspx">[Serializable]</a></code> attribute.</p>
<pre class="prettyprint">[Serializable]
class Person {
    public String Name;
    public Int32 Age;
}

...

String json;
using (var stream = new MemoryStream()) {
    DataContractJsonSerializer serializer =
       new DataContractJsonSerializer(data.GetType());
    serializer.WriteObject(stream, data);
    json = Encoding.UTF8.GetString(stream.ToArray());
}</pre>
<p>And for deserialization:</p>
<pre class="prettyprint">using(var stream = new MemoryStream(Encoding.Unicode.GetBytes(json)) {
    Object data = serializer.ReadObject(stream);
}</pre>
<p>Since <code>DataContractJsonSerializer</code> is contract based and relies on attributes, it is not particularly suitable for auto-generated classes (unless they have these attributes) or when source is not accessible because the relevant attributes <a title="DataMember Attribute at Runtime for DataContractSerializer" href="http://stackoverflow.com/questions/713543/set-datacontracts-datamember-attributes-during-runtime">cannot be added at runtime</a> as far as I know. However, for other situations attributes are an easy way to control the serialization aspects.</p>
<p>The most compelling feature of the <code>DataContractJsonSerializer</code> is that it can handle complex object graphs with circular references. This makes it particularly useful with the <a title="New Features in Entity Framework 4.0" href="http://aleembawany.com/2009/05/17/new-features-in-entity-framework-40-v2/">Entity Framework 4.0</a> which now support T4 templates allowing required <code>[Serializable]</code> or <code>[DataMember]</code> attributes to be added to auto-generated classes.</p>
<p><strong>Update:</strong> In .NET 3.5 SP1, DataContractSerializer added support for <a href="http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/13/50934.aspx">classes without attributes</a> (or POCO objects).</p>
<h2 id="toc-json-in-mvc">Json in MVC</h2>
<p>The <a title="ASP.NET MVC Json Serializer" href="http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.json.aspx">System.Web.Mvc</a> namespace contains the <code>Json</code> function intended for use within ASP.NET MVC. There is no real reason to use it outside of ASP.NET MVC when <code>JavaScriptSerializer</code> and <code>DataContractJsonSerializer</code> are available. This function makes it extremely easy to serialize objects to a JSON string. It is not intended for deserialization, however, serialization is just one call:</p>
<pre class="prettyprint">String content = Json(data);</pre>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2009/05/22/json-serializers-in-net/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>New Features in Entity Framework 4.0 (V2)</title>
		<link>http://aleembawany.com/2009/05/17/new-features-in-entity-framework-40-v2/</link>
		<comments>http://aleembawany.com/2009/05/17/new-features-in-entity-framework-40-v2/#comments</comments>
		<pubDate>Sun, 17 May 2009 09:02:35 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[Technophilia]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=684</guid>
		<description><![CDATA[<p>Entity Framework 4.0 is just around the corner and it will bring some long awaited relief. I previously wrote and explained the issues around <a title="POCO and Persistence Ignorance in the Entity Framework" href="http://aleembawany.com/2009/04/06/persistence-ignorance-in-adonet-entity-framework/">Persistence Ignorance and POCO</a> as they apply to the Entity Framework. So obviously I'm quite excited about migrating from the interim EFPocoAdapter over to EF 4.0. Let's take a quick look at the new features in Entity Framework 4.0.</p>]]></description>
			<content:encoded><![CDATA[<p>Entity Framework 4.0 is just around the corner and it will bring some long awaited relief. I previously wrote and explained the issues around <a title="POCO and Persistence Ignorance in the Entity Framework" href="http://aleembawany.com/2009/04/06/persistence-ignorance-in-adonet-entity-framework/">Persistence Ignorance and POCO</a> as they apply to the Entity Framework. So obviously I&#8217;m quite excited about migrating from the interim EFPocoAdapter over to EF 4.0. Let&#8217;s take a quick look at the new features in Entity Framework 4.0.</p>
<h2 id="toc-poco-support">POCO Support</h2>
<p>If you are not up to date on POCO, quickly read up on <a title="Entity Framework support for POCO" href="http://aleembawany.com/2009/04/06/persistence-ignorance-in-adonet-entity-framework/">POCO and Persistence Ignorance</a> first. Entity Framework 4.0 has full support for POCO or Plain Old CLR Objects.</p>
<p>If you have a class called Person with name, address and phone number then that&#8217;s how it will stay. It will not have EntityKey or some other such properties. It does not need to implement any interface specific to Entity Framework nor does it need to add any special attributes on properties and methods.</p>
<p>You can pass this plain object around much more cleanly and your domain logic is not polluted with any persistence code. This is also useful for Test Driven Development (TDD)  or migrating out of EF to another framework down the line.</p>
<h2 id="toc-entity-model-designer-improvements">Entity Model Designer Improvements</h2>
<p>Previously you had to design the database schema in SQL Server and then import that into the Entity Designer. With 4.0 you can build the <a title="Entity Framework Model First" href="http://blogs.msdn.com/efdesign/archive/2008/09/10/model-first.aspx">model first</a> in the Entity Designer and generate your database and classes from there.  Alternately a lot of DDD (Domain Driven Design) folks prefer to hand code their model classes. Since those classes end up being POCO and EF has full support for POCO, it works out quite well for everyone.</p>
<h2 id="toc-t4-templates">T4 templates</h2>
<p>Currently the Entity Designer generates classes from models by using EntityClassGenerator which provides little to no control over the generated classes. In 4.0 you will have <a title="T4 templates" href="http://msdn.microsoft.com/en-us/library/bb126445.aspx">T4 templates</a> which provide for greater control over the generated classes with <a title="T4 Templates for Entity Framework" href="http://blogs.msdn.com/efdesign/archive/2009/01/22/customizing-entity-classes-with-t4.aspx">richer functionality</a> like adding attributes to properties or having the generated classes implement a custom interface.</p>
<p>T4 templates are used not only to generate classes but also to generate tables if you choose to start off by building the models first. For example, by default the mapping is table-per-type which can be overridden through T4 templates to produce a table-per-hierarchy schema. You can also add prefixes to the generated table names and so on.</p>
<h2 id="toc-self-tracking-entities-and-n-tier-applications">Self Tracking Entities and N-Tier applications</h2>
<p>Self tracking entities are a very cool feature of the Entity Framework that allow for N-tier applications. Currently when you have entities on which you wish to track changes, the object context does that for you. However, the object context only exists in the current tier and if you decide to pass that object around to other tiers where the context is not present, you cannot track the entities any more. For example, if you pass the Person object to the UI layer which presents it to the user for modification, those modifications are not being tracked because the object context is not available in the UI tier. N-tier support can now handle this scenario quite elegantly.</p>
<p>One way to do this is to generate <strong>self-tracking entities</strong> as these entities have logic to track changes within. If the UI modifies the Person object&#8217;s address, the Person object will now contain information on how it&#8217;s been modified because it is self-tracking. When you pass the Person object back to the data tier, the object can easily relay what&#8217;s changed and the context can use this to persist the object.</p>
<p>Of course, this means that the object is not POCO any more because it has logic to track changes within itself so there is yet another approach. You can pass the POCO object back to the Entity Framework and attach it to the context which can then do a diff on the object and the original object to determine what&#8217;s changed. This requires more processing obviously.</p>
<h2 id="toc-proxy-tracking">Proxy Tracking</h2>
<p>Besides diff&#8217;ing the POCO entities or using self-tracking entities for change detection, another approach is provided by the Entity Framework 4.0 which is proxy tracking. It provides the benefits of POCO without the performance implications of doing a diff (to check what&#8217;s changed each time the POCO object is re-attached to the context) albiet it cannot be used in an n-tier scenario.</p>
<p>If using proxies to track changes, EF sets up proxy classes to communicate with your POCO classes. These proxy classes inherit from the POCO classes and any property getter/setter calls are still made to the POCO class but through the proxy class. This allows the Entity Framework to stay in sync with entities at all times. You do however need to be a bit careful if you are going to serialize these objects because the resulting output could be a proxy object (though easily remedied by calling something like EFPocoAdapter&#8217;s ProxiesToPoco() equivalent in EF 4.0).</p>
<h2 id="toc-conclusion">Conclusion</h2>
<p>This is going to be a big release for EF to bring it in line with the other major ORMs out there. The MVC community right now favors Linq to SQL but hopefully we&#8217;ll see more ASP.NET MVC + Entity Framework projects coming out.</p>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2009/05/17/new-features-in-entity-framework-40-v2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Properties vs Fields</title>
		<link>http://aleembawany.com/2009/05/14/properties-vs-fields/</link>
		<comments>http://aleembawany.com/2009/05/14/properties-vs-fields/#comments</comments>
		<pubDate>Thu, 14 May 2009 21:35:53 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[Technophilia]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=676</guid>
		<description><![CDATA[<p>There has been a lot of discussion around this topic and I only recently caught up and found some interesting gems from a variety of locations. Jon Skeet's article <a href="http://csharpindepth.com/Articles/Chapter8/PropertiesMatter.aspx">Why Properties Matter</a> is a good starting point. Robert Paulson also has a <a href="http://stackoverflow.com/questions/205568/have-trivial-properties-ever-saved-your-bacon/207146#207146">comprehensive list</a> of pros. Summary of the pros and cons follows.</p>
]]></description>
			<content:encoded><![CDATA[<p>There has been a lot of discussion around this topic and I only recently caught up and found some interesting gems from a variety of locations. Jon Skeet&#8217;s article <a href="http://csharpindepth.com/Articles/Chapter8/PropertiesMatter.aspx">Why Properties Matter</a> is a good starting point. Robert Paulson also has a <a href="http://stackoverflow.com/questions/205568/have-trivial-properties-ever-saved-your-bacon/207146#207146">comprehensive list</a> of pros. To summarize the pros and cons:</p>
<ol>
<li>Properties allow access modifiers on getters and setters
<pre class="prettyprint">
public string Name { get; private set; }</pre>
<p>which makes the property read only publicly but read/write privately.</li>
<li>Properties can be virtual. Fields cannot be overwritten.</li>
<li>Properties can be declared in an interface. Fields cannot.</li>
<li>Properties provide fine-grained control such as data validation or simultaneously logging to a file.</li>
<li>.NET (by design) uses properties for data-binding making them necessary.</li>
<li>Changing a field to a property (or vice-versa) breaks binary compatibility, thus it&#8217;s a <a href="http://blogs.msdn.com/abhinaba/archive/2006/04/11/572694.aspx">breaking change</a> (requires recompilation). It may be desirable to use properties for future extensibility instead of thinking YAGNI.</li>
<li>Moving from fields to properties breaks source compatibility. For example, if you are using reflection on any of the fields which have since been changed to properties, then the code for reflection will need to be updated (PropertyInfo vs FieldInfo). Similarly, serialization will also break.</li>
<li>Since properties can contain some additional logic, they can throw arbitrary exceptions. Fields cannot.</li>
<li>Break points can be set on properties making them easier to debug. They can&#8217;t be set on fields.</li>
<li>Fields can be used for <code>ref</code> or <code>out</code> arguments but properties can&#8217;t.</li>
<li>Properties can do lazy loading
<pre class="prettyprint">
public string Name {
    get {
        if (this._name = null) LoadName();
        return this._name;
    }
}
</pre>
</li>
</ol>
<p>These reasons should be good enough to persuade you to use properties instead of fields.</p>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2009/05/14/properties-vs-fields/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI Compressor for NAnt</title>
		<link>http://aleembawany.com/2009/04/08/yui-compressor/</link>
		<comments>http://aleembawany.com/2009/04/08/yui-compressor/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 01:38:39 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[Technophilia]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=654</guid>
		<description><![CDATA[I had my first go with <a href="http://nant.sourceforge.net/">NAnt</a> just a few hours ago and it was so easy, I am already porting my batch scripts over and creating build scripts with a few good examples off the web as my starting point.]]></description>
			<content:encoded><![CDATA[<p>I had my first go with <a href="http://nant.sourceforge.net/">NAnt</a> just a few hours ago and it was so easy, I am already porting my batch scripts over and creating build scripts with a few good examples off the web as my starting point.</p>
<p>I came across the <a href="http://ra-ajax.org/custom-nant-jsmin-task-for-minifying-javascript-files.blog">JSMin</a> task for NAnt which was pretty good but not as good as YUI Compressor. I came across a .NET C# port of the JAVA based YUI Compressor and also found a <a href="http://code.google.com/p/devfuelnet/source/browse/trunk/DevFuel.NAnt.Tasks/YuiCompressorTask.cs">custom task</a> for it but no DLL. I threw the two together with the latest <a href="http://yuicompressor.codeplex.com/">.NET port of YUI Compressor</a> and put it up on my projects for download under <a href="http://aleembawany.com/projects/nant/yui-compressor/">NAnt task for YUI Compressor</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2009/04/08/yui-compressor/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->