<?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</title>
	<atom:link href="http://aleembawany.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://aleembawany.com</link>
	<description>tech, web and the rest</description>
	<lastBuildDate>Thu, 29 Nov 2012 08:14:27 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5</generator>
		<item>
		<title>Habib Bank Limited (HBL) Internet Banking Security</title>
		<link>http://aleembawany.com/2011/09/10/habib-bank-limited-hbl-internet-banking-security/</link>
		<comments>http://aleembawany.com/2011/09/10/habib-bank-limited-hbl-internet-banking-security/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 20:11:00 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[banking]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=1309</guid>
		<description><![CDATA[Internet Banking is something that should be taken for granted. Every bank should offer it, no excuses. The same online banking services also need to ensure highest levels of security, no excuses.]]></description>
				<content:encoded><![CDATA[<p>Internet Banking is something that should be taken for granted. Every bank should offer it, no excuses. The same online banking services also need to ensure highest levels of security, no excuses.</p>
<p>The Habib Bank Limited (HBL) website has a glaring security gap in its <a href="https://www.hblibank.com/">HBL Internet Banking</a> service, even though it may not be immediately apparent by just looking at the interface.</p>
<p><img src="http://aleembawany.com/wp-content/uploads/2011/09/image3.png" alt="HBL Internet Banking Login" width="393" height="251" /></p>
<p>HBL Internet Banking requires users to enter a few select letters of their password by clicking on the virtual on-screen keyboard (they do it this way for other arguable reasons). The implementation of this implies that the password is stored in the database in plaint-text or similar—which is how they can verify individual letters of the password <em>(Update: as verified by the HBL lead, they do not use one-way hashing or store combinations)</em>. Storing passwords in plain-text means that someone with access to the database can read them clear as day. <strong>You should never store passwords in plain-text and no one should ever be able to read your password.</strong></p>
<p><a href="http://www.mcb.com.pk/">Muslim Commercial Bank</a> (MCB) also stores plain-text password, at least for password reset requests. Though the temporary password is set to expire within a day and it is possible they only store the temporary passwords in plain-text, it is still quite bad from a security standpoint, though not as bad as HBL’s implementation.</p>
<p><strong><em>Update: though it is possible here that they generate a random password and only store the encrypted version, which would mean MCB is not storing it in plain-text. It seems that is likely the case, in which case this is perfectly acceptable behaviour.</em></strong></p>
<p><img src="http://aleembawany.com/wp-content/uploads/2011/09/image4.png" alt="MCB Internet Banking Password Reset" width="311" height="196" /></p>
<h2 id="toc-you-just-dont-store-passwords-in-plain-text">You Just Don’t Store Passwords in Plain Text</h2>
<p>It is a <em>password</em> after all. No one should have access to your passwords unless you explicitly let them in on the secret. Not even the developers at HBL or anyone in their IT team. Why should they? In the U.S. such behavior would even be deemed illegal since it is extremely negligent.</p>
<p>The problem is worse than it sounds. It is well known that most users reuse their passwords across different sites. If your HBL password gets compromised and you use the same password on another bank account, email account or social website, those accounts are now also compromised.</p>
<p>In HBL’s case, their database administrators can easily get access to thousands of account holders’ usernames and passwords.</p>
<p>And what if HBL servers ever get hacked? If the passwords were stored in their encrypted form instead of plain-text, a hacker would still have a hard time defrauding the accounts. But with plain-text passwords, a hacker would have instant access to every user’s password. He could then login as that user and HBL would never be the wiser because the hacker can log in through all the proper channels.</p>
<p>Even worse, undoing the damage after a security breach with plain-text passwords can be a nightmare. First, HBL would have to issue a notice to all users to change their password. It would also have to instruct them to change the password on any other account where they may have used the same password—quite embarrassing. HBL would then have to lock all accounts and disable user access to online banking until customers phone in or visit their nearest branch to have their passwords reset. Even then, it would have to disallow resetting the password to the previous one.</p>
<p>If even the most basic security best-practices were employed, the passwords would be much safer. These practices are so common, it is disconcerting to learn that the developers were oblivious to it and what other security blunders lurk within.</p>
<p><em>Technical Background: Passwords are encrypted with a one-way hashing algorithm that results in another reasonably long and convoluted string of text. Encrypting “<code>secret</code>” this way would result in “<code>e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4</code>”. For most practical purposes, the resulting text cannot be reversed to get “<code>secret</code>”. So how do you verify if the user entered the correct password when logging in? You simply encrypt the entered password and verify that it results in “<code>e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4</code>”. This makes it secure and no one ever needs to know your password.</em></p>
<h2 id="toc-update-september-15-2011">Update: September 15, 2011</h2>
<p>Some comments have asked how I came to the conclusion that passwords are stored in plain text. As I mention in the first paragraph&#8211;it&#8217;s not entirely obvious but if you have a basic understanding of password encryption schemes, you can draw some reasonable conclusions.</p>
<p>Passwords are stored using a one-way hashing algorithm. MD5 and SHA-1 are popular one-way hash functions for this purpose. As I mention in the technical details, all passwords are encrypted using similar <a href="http://en.wikipedia.org/wiki/Cryptographic_hash_function">cryptographic hash functions</a>.</p>
<p><em>Why is it done this way?</em></p>
<p>It&#8217;s so that no one can reverse an encrypted password such as “<code>e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4</code>”. That&#8217;s why it&#8217;s called a one-way hash function. Since all passwords are stored in the database in their encrypted form, they are secure. The encrypted password “<code>e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4</code>” is quite useless to an attacker. He can&#8217;t do anything with it. He cannot reverse it to get the original passwords. That&#8217;s the beauty of one-way cryptographic hash functions.</p>
<p><em>If no one knows the password, how does the computer know the correct password was entered?</em></p>
<p><em></em>The computer asks the user for their password. It then encrypts whatever the user entered, using the same one-way hashing function and verifies that it results in the same encrypted password. If it does, the password entered was correct.</p>
<p><em>How do you know HBL is not using a one-way cryptographic hash function to encrypt their password?</em></p>
<p>When you encrypt  “<code>secret</code>”, it results in “<code>e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4</code>”. But HBL asks you to enter specific characters. So say you enter “<code>s</code>”, “<code>r</code>” and “<code>t</code>”. In that case HBL would has to fill in the other blanks “<code>_ec_e_</code>”. That shows that HBL knows a part of your password because it fills in these blanks for you.</p>
<p><em>But that&#8217;s only part of the password. Not the whole password, is it?</em></p>
<p>Well, HBL asks you to enter different letters from your password each time. That means it knows your full password and each time it fills in the remaining blanks. So on a subsequent login attempt it may ask you to fill in different blanks such as “<code>s__r_t</code>” which means it knows the whole password.</p>
<p><em>I still don&#8217;t believe you. Are you making this up?</em></p>
<p>Don&#8217;t take my word for it. Try asking on <a title="Stack Overflow" href="http://stackoverflow.com/">stackoverflow.com</a> or <a title="Super User" href="http://superuser.com">superuser.com</a> or a serious security mailing list. Just refer them to this post and ask them for their opinion. If you want to discuss particulars or have some pressing concerns, you can find my email address at the bottom of my <a href="http://aleembawany.com/about/">about</a> page.</p>
<h2 id="toc-update-september-17-2011">Update: September 17, 2011</h2>
<p>The lead developer for HBL (Abdul Azeem Yasin) had this to say on the matter of one-way hashing of passwords:</p>
<blockquote><p>Between your claim that SHA1 and md5 being the more secure way of storing password is again your opinion.</p></blockquote>
<p>I could only hope that it was my opinion&#8211;and such a grand one at that. SHA-1 is the U.S federal standard (now being bumped by SHA-2). It was designed by the National Security Agency (NSA) which just happens to be cryptography intelligence agency of the U.S. Department of Defence.</p>
<p>And again, the lack of understanding is further exemplified:</p>
<blockquote><p>put e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4 at http://www.md5decrypter.co.uk/ and  you will get your hashed password in this case secret Imagine storing hashes in database and some one with access to the db or some one invading an application and having access to thousands of hashes :)</p></blockquote>
<p>Rainbow table attacks aren&#8217;t new. That&#8217;s why you use a good password salt. You can also use bcrypt (which has built in salting and even harder to brute force).</p>
<blockquote><p>You do realize that it would have been impossible to do partial password authentication in case of one way hashing.</p></blockquote>
<p>Impossible, <a href="http://www.smartarchitects.co.uk/news/9/15/Partial-Passwords---How.html">really</a>?</p>
<p>He also continues to defend that an HSM is the equivalent of one-way hashing and that using public/private keys are a good way to go about it. Since the plain-text passwords are behind an HSM, that makes it okay. In fact, his explanation makes it clear:</p>
<blockquote><p>Now when the user comes in to authenticate a pin verification message is sent to HSM in case of partial password a sentinel value is set i.e. if the password is abcdef123 and abcd is taken as an input from user abcd$$$$$ is sent to HSM  by encrypting it with public key of HSM. HSM decrypts it and only check the password positions which are not sentinel values.</p></blockquote>
<p>Which is like saying, since the HSM provides a very secure environment, you can stuff in there whatever you want. Doesn&#8217;t matter if it&#8217;s all your user&#8217;s passwords even though the means exist to encrypt each password individually. Nor does it help to allege that one-way password encryption is really something that is just my &#8220;opinion&#8221; (mine, and practically every operating system, major website and software company in the world).</p>
<p>What&#8217;s even more surprising is that he feels everyone is wrong and he is absolutely right. Reminds me of the the most popular security question on ServerFault about the most dangerous kind security auditor to have in your company, &#8220;<a href="http://serverfault.com/questions/293217/our-security-auditor-is-an-idiot-how-do-i-give-him-the-information-he-wants">Our security auditor is an idiot, how do I give him the information he wants</a>&#8220;?</p>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2011/09/10/habib-bank-limited-hbl-internet-banking-security/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Apple&#8217;s Ultimate Platform Strategy</title>
		<link>http://aleembawany.com/2011/02/18/apples-strategy-for-the-ultimate-platform/</link>
		<comments>http://aleembawany.com/2011/02/18/apples-strategy-for-the-ultimate-platform/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 07:47:50 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=1134</guid>
		<description><![CDATA[The <a href="http://aleembawany.com/2010/08/23/platforms-strategy/" title="The Platform Strategy">Platform Strategy</a> is a potent one if you can get it right. Typically, a platform allows other platforms to be built on top of it and is prone to disruption. Web Browsers have the potential to disrupt the operating system underneath. Similarly, Adobe Flash has the potential to disrupt the core browser underneath. Apple is seeking to build a platform that is open to contribution but closed to disruption. The company has shown this intent by blocking Flash and Java. It is now setting out to do the same with retail platforms built on top of it's own iTunes retail platform, a move that could ultimately lead to a tremendously enviable platform if it works out.]]></description>
				<content:encoded><![CDATA[<p>I have written about the <a href="http://aleembawany.com/2010/08/23/platforms-strategy/">Platform Strategy</a> before, a remarkably potent strategy if you can get it right. Linux and Microsoft Windows are both platforms because they allow others to build on top. The web browser is also a platform. Facebook became a platform when it decided to allowed third-party applications to be built on top of it.</p>
<p>It&#8217;s possible to build a platform on top of other platforms, and occasionally the platform that sits on top gets the upper hand. Web browsers for example, sit on top of operating systems. The web browser platform, over the years, has evolved considerably enough to threaten the underlying operating system platform. Email, chat and document authoring all work quite well within the browser but were once primarily in the operating system domain. As browsers continue to advance in capabilities (video, offline mode, built-in storage) they can usurp even greater chunks of functionality originally provided by the operating system.</p>
<p>Since browsers work across all popular platforms, users may not ultimately care whether their laptop is running Windows or Mac, so long as the browser works fine and allows them to conduct their daily activities. This is a threat that Microsoft has long recognized and some might even say, is the reason for stifling the Internet Explorer browser.</p>
<p>A platform like Adobe Flash sits even higher atop the browser platform. Flash is capable of doing more than the browser can do on its own. That&#8217;s why a lot of games are built on Flash with complex physics engines and animations. Most video is still served using Flash, which the new HTML5 standard hopes to remedy by providing its own video decoder. Java also had similar ambitions of becoming the platform that sat atop all other platforms. Had it executed well, it would have been possible to write applications once in Java and then run them on all other platforms. And it was hoped that if all applications were written in Java then the underlying platform wouldn&#8217;t even matter any more.</p>
<p>And so it is with Apple&#8217;s iPhone and iTunes platforms.  Currently, Apple does not want its platform to be displaced by another platform that sits on top. That&#8217;s the reason why Steve Jobs so vehemently rejected Adobe Flash. If Flash were enabled on the iPhone, it would be possible to download applications written in Flash and run them on the iPhone. In fact, Adobe Flash already has thousands of games waiting to flood the iPhone if only it were possible. Applications sold on iTunes would face some serious competition if Flash were allowed on the iPhone. Adobe could then build its own store and its own music and video download services. The same holds for Java which is also banned on the iPhone.</p>
<p>Similarly, with Amazon&#8217;s Kindle bookstore application and Raphsody&#8217;s music application, Apple fears that applications of this nature threaten the iTunes music, books and videos business by building a secondary retail platform for digital content. In fact, since Jail Breaking the iPhone has been deemed legal in the U.S., it is possible to sell all sorts applications for the iPhone without ever going through the AppStore (though for now, there are many technical hurdles preventing this from happening).</p>
<p>Apple has acted strategically to strike a balance in what it does and does not allow iPhone applications to do. It also exercises full control over which applications are allowed on the AppStore, through an approval process which can take weeks. This sort of regulation does not have much precedent and is fairly unique to the iPhone. Facebook doesn&#8217;t have an approval process. Windows doesn&#8217;t either, nor does Google&#8217;s Android platform. In fact the latter two allow complete freedom which is probably why they need an antivirus to protect naive users from downloading malicious applications.</p>
<p>Apple&#8217;s ambition is to build a platform that is self-sustaining and free of long term threats to its core digital retail business including books, music, videos and applications. In its recent announcement, Apple gave the likes of Kindle and Raphsody until June 30<sup>th</sup> to <a href="http://www.apple.com/pr/library/2011/02/15appstore.html">share 30% of sales revenue from digital content</a> with Apple, as is already the case with iPhone applications. This stipulation applies to all digital content sales including magazines, newspapers, video, music, etc. Apple would rather that all transactions happen through its own platform or marketplace. If not then iTunes could soon be disrupted by other stores sitting atop the iPhone.</p>
<p>Apple is currently facing anti-trust scrutiny from regulators since this restriction limits the competition to Apple&#8217;s own iTunes business.  However, if Apple is able to pull this off (and for the moment, that is a big if), its platform will become one of a kind. It will be a platform that is completely regulated and well protected from the pitfalls of most other platforms. It will be a platform that is open to development and creativity but closed to disruption&#8211;a game that Apple knows all too well.</p>
<p>The next few months should bring a lot of drama and excitement to the mix.</p>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2011/02/18/apples-strategy-for-the-ultimate-platform/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Reminder on Usability</title>
		<link>http://aleembawany.com/2011/02/02/a-reminder-on-usability/</link>
		<comments>http://aleembawany.com/2011/02/02/a-reminder-on-usability/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 14:54:25 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[new media]]></category>
		<category><![CDATA[pakistan]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=1107</guid>
		<description><![CDATA[Usability and accessibility go hand in hand. Usually this is because something that's built to be highly user-friendly is generally also accessible to handicapped persons, or for that matter, even handicapped devices. A tea cup without a a handle is not user-friendly, nor is it accessible. It might be chic, but that's about it. For similar reasons, it's a bad idea to change around hyperlink colors and styles.]]></description>
				<content:encoded><![CDATA[<p>Usability and accessibility go hand in hand. Usually this is because something that&#8217;s built to be user-friendly is generally also accessible to handicapped persons, or for that matter, even handicapped devices. A tea cup without a handle is not user-friendly, nor is it accessible. It might be chic, but that&#8217;s about it.</p>
<p>Pakistan in general has poor regulations or controls in place and few if any buildings provide wheelchair ramps, let alone consult with semioligists. Fortunately, there is some saving grace on the web, because the W3C consortium along with countless other bodies, provides guidelines on accessibility. And engineers can build accessible sites with little effort.</p>
<p>Unfortunately, with Cascading Style Sheets (CSS) it&#8217;s easy to make a total mess of accessibility guidelines. Dawn has had little or no guidance with their portal improvements but that&#8217;s no excuse to have <strong>black links</strong>.</p>
<p><a href="http://aleembawany.com/wp-content/uploads/2011/02/dawn-links.jpg"><img title="dawn-links" src="http://aleembawany.com/wp-content/uploads/2011/02/dawn-links.jpg" alt="" width="385" height="390" /></a></p>
<p>Firstly, these <strong>links are hard to distinguish</strong> from bold text since they are identical to bold text. So now if the page has both, bold text and hyperlinks then the only way for a user to discover that is by hovering their mouse over it. The whole web is built on hyperlinks and it&#8217;s because of these lovely links that we can go off on tangents and then use the browser history feature (such as back and forward buttons) to keep track. But in this case the <strong>user has no idea what&#8217;s immediately clickable</strong> without inspecting each block of bold text. Just as frustrating is the experience of a user hovering over what seems like a link, only to discover that it&#8217;s just bold text. To make matters worse, Dawn&#8217;s <strong>visited links are the same color as unvisited links</strong>, so the user doesn&#8217;t really know if he has already read the hyperlinked article. That&#8217;s loss of information for no good reason.</p>
<p>Secondly, with the above change, hyperlinks have hijacked the bold style. Bold text competes with hyperlinks for attention but the reader will not know what the author truly intended to highlight. In fact, when the content writer finds his copy on the web, he&#8217;ll quickly realize that <strong>all the wrong stuff is appearing in bold</strong> and the emphasis of passages will be almost arbitrary.</p>
<p>Bolded, black links are bad enough but it should still be pointed out that <strong>underlines on hyperlinks are also preferred</strong> and are the default, by design. That&#8217;s because there are still some color blind people out there who would like to know what information is hyperlinked and can be consumed through a click. Even if you leave alone the color blind people, there are still plenty of devices that are handicapped in that they don&#8217;t have color screens. The users of these devices rely on the underlines as well.</p>
<p>In fact, for this and other reasons, the <a title="underlines are deprecated in HTML4" href="http://www.w3.org/TR/REC-html40/present/graphics.html#edef-U">use of underlines is altogether deprecated</a> for all other text and reserved exclusively for hyperlinks. This way hyperlinks get the prominence they deserve.</p>
<p><em>Note</em>: Underlines are typically used in print because early typewriters could not do bold text. Purists will argue that artificial devices such as bold text or underlined text should not be used at all, instead, the writing itself should draw any emphasis. This is true for literary pieces, however for informational pieces, especially on the web, bold text improves the scannability of articles.</p>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2011/02/02/a-reminder-on-usability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VPS Configuration for Apache, MySQL, PHP</title>
		<link>http://aleembawany.com/2010/11/26/vps-configuration-for-apache-mysql-php/</link>
		<comments>http://aleembawany.com/2010/11/26/vps-configuration-for-apache-mysql-php/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 06:24:48 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=1090</guid>
		<description><![CDATA[<p>After having tried out SliceHost and Amazon EC2 micro instance, <a href="http://www.linode.com/?r=fc58a2c7fd6a52bd284d7d7a43c951c248cff227">Linode</a> is the only VPS that worked out well for my needs even though EC2 Micro offers 768MB RAM versus Linode's 512MB. The main bottleneck I faced was with WordPress sites which are taxing on CPU and disk IO. They also leak memory. But with the right configuration it's easy enough to get things smoothed out.</p>]]></description>
				<content:encoded><![CDATA[<p>After having tried out SliceHost and Amazon EC2 micro instance, <a href="http://www.linode.com/?r=fc58a2c7fd6a52bd284d7d7a43c951c248cff227">Linode</a> is the only VPS that worked out well for my needs even though EC2 Micro offers 768MB RAM versus Linode&#8217;s 512MB. The main bottleneck I faced was with WordPress sites which are taxing on CPU and disk IO. They also leak memory.</p>
<p>After trying out various LAMP configurations the one that worked best in the end was generated using Linode&#8217;s own <a href="http://www.linode.com/stackscripts/view/?StackScriptID=1&#038;r=fc58a2c7fd6a52bd284d7d7a43c951c248cff22">configuration script</a> presented here with minor changes. This script is for the default install which includes Apache 2 + PHP Prefork + MySQL 5 and modifies the config files directly (my.cnf, php.ini, apache2.conf).</p>
<p>The script also makes backups of the config file (though if you run it twice, the old backup will be overwritten so make your own backups just in case).</p>
<p>The script sets MaxRequestsPerChild to 500 which is helpful to mitigate WordPress/PHP memory leaks since this causes Apache to recycle worker processes every so often. You should experiment with higher settings here until you encounter memory leak issues.</p>
<pre class="prettyprint">#!/bin/bash
#
# StackScript Bash Library
#
# Copyright (c) 2010 Linode LLC / Christopher S. Aker <caker@linode.com>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright notice, this
# list of conditions and the following disclaimer in the documentation and/or
# other materials provided with the distribution.
#
# * Neither the name of Linode LLC nor the names of its contributors may be
# used to endorse or promote products derived from this software without specific prior
# written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
# SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
# DAMAGE.

function mysql_tune {
   # Tunes MySQL's memory usage to utilize the percentage of memory you specify, defaulting to 40%
   # $1 - the percent of system memory to allocate towards MySQL

   MYSQLCONF=/etc/mysql/my.cnf
   cp $MYSQLCONF $MYSQLCONF.backup

   if [ ! -n "$1" ];
      then PERCENT=40
      else PERCENT="$1"
   fi

   # sed -i -e 's/^#skip-innodb/skip-innodb/' $MYSQLCONF # disable innodb - saves about 100M

   MEM=$(awk '/MemTotal/ {print int($2/1024)}' /proc/meminfo) # how much memory in MB this system has
   MYMEM=$((MEM*PERCENT/100)) # how much memory we'd like to tune mysql with
   MYMEMCHUNKS=$((MYMEM/4)) # how many 4MB chunks we have to play with

   # mysql config options we want to set to the percentages in the second list, respectively
   OPTLIST=(key_buffer sort_buffer_size read_buffer_size read_rnd_buffer_size myisam_sort_buffer_size query_cache_size)
   DISTLIST=(75 1 1 1 5 15)

   for opt in ${OPTLIST[@]}; do
      sed -i -e "/\[mysqld\]/,/\[.*\]/s/^$opt/#$opt/" $MYSQLCONF
   done

   for i in ${!OPTLIST[*]}; do
      val=$(echo | awk "{print int((${DISTLIST[$i]} * $MYMEMCHUNKS/100))*4}")
      if [ $val -lt 4 ]
         then val=4
      fi
      config="${config}\n${OPTLIST[$i]} = ${val}M"
   done

   sed -i -e "s/\(\[mysqld\]\)/\1\n$config\n/" $MYSQLCONF
}

function apache_tune {
   # Tunes Apache's memory to use the percentage of RAM you specify, defaulting to 40%
   # $1 - the percent of system memory to allocate towards Apache

   APACHECONF=/etc/apache2/apache2.conf

   cp $APACHECONF $APACHECONF.backup

   if [ ! -n "$1" ];
      then PERCENT=40
      else PERCENT="$1"
   fi

   PERPROCMEM=10 # the amount of memory in MB each apache process is likely to utilize
   MEM=$(grep MemTotal /proc/meminfo | awk '{ print int($2/1024) }') # how much memory in MB this system has
   MAXCLIENTS=$((MEM*PERCENT/100/PERPROCMEM)) # calculate MaxClients
   MAXCLIENTS=${MAXCLIENTS/.*} # cast to an integer
   MAXREQUESTSPERCHILD=500
   KEEPALIVETIMEOUT=2
   sed -i -e "s/\(^[ \t]*MaxClients[ \t]*\)[0-9]*/\1$MAXCLIENTS/" $APACHECONF
   sed -i -e "s/\(^[ \t]*MaxRequestsPerChild[ \t]*\)[0-9]*/\1$MAXREQUESTSPERCHILD/" $APACHECONF
   sed -i -e "s/\(^[ \t]*KeepAliveTimeout[ \t]*\)[0-9]*/\1$KEEPALIVETIMEOUT/" $APACHECONF
}

function php_tune {
   PHPINI=/etc/php5/apache2/php.ini

   # Tunes PHP to utilize up to 32M per process
   sed -i'-orig' 's/memory_limit = [0-9]\+M/memory_limit = 32M/' $PHPINI
}

mysql_tune 40
apache_tune 40
php_tune

/etc/init.d/apache2 reload
/etc/init.d/mysql reload
</pre>
<p>By default the script allocates 40% memory each to MySQL and Apache. You can change two lines near the bottom to read <code>mysql_tune 50</code> and <code>apache_tune 30</code> for example, if you want to allow MySQL to use 50% memory and Apache 30%. However, make sure the Apache + MySQL combined don&#8217;t take more than 80% otherwise the rest of the system won&#8217;t have any RAM left to work with.</p>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2010/11/26/vps-configuration-for-apache-mysql-php/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Platforms Strategy</title>
		<link>http://aleembawany.com/2010/08/23/platforms-strategy/</link>
		<comments>http://aleembawany.com/2010/08/23/platforms-strategy/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 13:00:38 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[business]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=1063</guid>
		<description><![CDATA[The platforms strategy is a fairly new concept in business nomenclature. A platform is typically one that allows others to build freely and openly on top of itself. The more open and free it is, the more rapidly it is likely to grow.
]]></description>
				<content:encoded><![CDATA[<p>The platforms strategy is a fairly new concept in business nomenclature. A platform is typically one that allows others to build freely and openly on top of itself. The more open and free it is, the more rapidly it is likely to grow.</p>
<p>Microsoft Windows, for example, allows any vendor to build software for Windows without restrictions.</p>
<p>Similarly, when Facebook announced that it would allow any vendor to build applications on top of its ‘social media platform’, it fully embraced the platforms strategy and achieved rapid growth in return.</p>
<p>In fact, over a very short period of time, Facebook boasts over half a million applications in active use with over a million developers and entrepreneurs.</p>
<p>Of the 500 million active users on Facebook, 70 per cent use at least one of these third-party applications each month. Facebook dominates the web as the largest social network, getting more hits than the next top 30 websites combined, while Microsoft dominates the consumer PC market with 91 per cent market share (as of late 2009). The platform strategy has proven instrumental in both cases.</p>
<h2 id="toc-microsoft-or-apple">Microsoft or Apple?</h2>
<p>Microsoft is the epitome of a platforms strategy because not only does it allow application developers to thrive, it also has a rich ecosystem of certified trainers providing accreditation and diplomas to technicians, repair shops specialising in Microsoft personal computers and partners authorised to sell Windows software licences in their respective localities.</p>
<p>Furthermore, Microsoft has also lent its platform to hardware makers like Dell and HP through tactics such as volume discounts, co-branding and application bundling.</p>
<p>The company has ensured its success by tying itself to the success of millions of other businesses. Apple, on the other hand, missed out on the party early on because it chose to take charge of repairs itself. The company also decided to control distribution and no initiatives were given to third-party vendors.</p>
<p>Apple’s iPhone platform is also extremely tight-fisted: all applications must be sold through Apple’s AppStore where Apple frequently exercises its right to reject applications from being listed or remove them without notice. It also charges 30 per cent commission on all revenues.</p>
<p>Although this anti-platforms strategy has crippled its computer sales, which now comprise only about 25 per cent of the company’s total revenue, it has worked tremendously well for the iPhone and iPod.</p>
<p>A platforms strategy requires not only inviting others to build on the platform, but also encouraging them to build an entire business around your platform.</p>
<p>The more open the platform, the more tremendous its growth. The Internet itself is the greatest platform upon which companies like Google and Facebook are built.</p>
<p><em>Published in <a title="Platforms Strategy - Aleem Bawany" href="http://tribune.com.pk/story/42008/platforms-strategy/">The Express Tribune</a>, August 23rd, 2010.</em></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;"><strong>The platforms strategy is a fairly new concept in business  nomenclature. A platform is typically one that allows others to build  freely and openly on top of itself. The more open and free it is, the  more rapidly it is likely to grow.</strong></div>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2010/08/23/platforms-strategy/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<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[Uncategorized]]></category>
		<category><![CDATA[pakistan]]></category>
		<category><![CDATA[tech]]></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>Top 1000 Most-visited Sites on the Web</title>
		<link>http://aleembawany.com/2010/05/31/top-1000-most-visited-sites-on-the-web/</link>
		<comments>http://aleembawany.com/2010/05/31/top-1000-most-visited-sites-on-the-web/#comments</comments>
		<pubDate>Mon, 31 May 2010 13:59:51 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[new media]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=1019</guid>
		<description><![CDATA[Google's just released list of "1000 most-visited sites on the web" is a real treat and quite interesting to analyze. It has to be one of the most accurate lists given Google's massive network reach. The list contains Unique Users (UU) and Page Views (PV). Besides Orkut, Google has not listed any of it's own sites in the list so Google News, Google Search and GMail may very well be in the top 1000 but absent from this list. I also calculated the Average Page Views (APV) to show how many pages each user visits on average on the site.]]></description>
				<content:encoded><![CDATA[<p>Google&#8217;s just released list of &#8220;<a href="http://www.google.com/adplanner/static/top1000/">1000 most-visited sites on the web</a>&#8221; is a real treat and quite interesting to analyze. It has to be one of the most accurate lists given Google&#8217;s massive network reach. The list contains Unique Users (UU) and Page Views (PV). Besides Orkut, Google has not listed any of it&#8217;s own sites in the list so Google News, Google Search and GMail may very well be in the top 1000 but absent from this list. I also calculated the Average Page Views (APV) to show how many pages each user visits on average on the site.</p>
<p>Interested readers may view a dynamically sortable table of the complete list of <a href="http://aleembawany.com/topsites/">top 1000 most visited sites on the web</a> which also has APV added (<strong>Warning</strong>: on slow computers it may take a while to load or crash your browser since it&#8217;s a long list that requires Javascript processing).</p>
<p>I used it to gather the following data for sites in the News category.</p>
<h2 id="toc-news-current-events">News &amp; Current Events</h2>
<p>This category includes sites with an online and television presence, covering current and breaking news.</p>
<ul>
<li><a href="http://bbc.co.uk">BBC</a> (#43) with 45 million UU and 56 APV, the highest in the overall News category</li>
<li><a href="http://ifeng.com/">ifeng.com</a> (#55) in Chinese/Mandarin</li>
<li><a href="http://cnn.com/">CNN</a> (#64) with 34 million UU and 38 APV</li>
<li><a href="http://digg.com/">Digg</a> (#252) is also impressive given that its a community driven news aggregator that runs automatically</li>
<li><a href="http://foxnews.com/">FoxNews</a> (#279) with 11 million UU and 8 APV</li>
</ul>
<h2 id="toc-newspapers">Newspapers</h2>
<p>This category includes the traditional print newspapers complemented by an online presence</p>
<ul>
<li><a href="http://www.nytimes.com/">NYTimes</a> (#83) takes the top spot with 26 million UU and 23 APV</li>
<li><a href="http://yomiuri.co.jp/">Yomiuri</a> (#213) with 20 APV</li>
<li><a href="http://dailymail.co.uk/">Daily Mail</a> (#236) with 22 APV</li>
<li><a href="http://wsj.com/">WSJ</a> (#277) with 15 APV</li>
<li><a href="http://mainichi.jp/">Mainichi</a> (#287) with 7 APV</li>
<li><a href="http://guardian.co.uk/">Guardian</a> (#310) with 16 APV</li>
</ul>
<h2 id="toc-business-news">Business News</h2>
<ul>
<li><a href="http://ce.cn/">CE.CN</a> (#500) with 7.4 million UU and 5 APV giving it 34 million monthly PV</li>
<li><a href="http://forbes.com/">Forbes</a> (#633) with 6.1 million UU and 18 APV giving it 110 million monthly PV</li>
</ul>
<h2 id="toc-local-news">Local News</h2>
<p>This category includes online news sites which focus on national coverage<a href="http://ig.com.br/"></a></p>
<ul>
<li><a href="http://ig.com.br/">iG.com.br</a> (#477) out of Brazil</li>
<li><a href="http://zjol.com.cn/">zjol.com.cn</a> (#746) out of China</li>
</ul>
<h2 id="toc-social-networks">Social Networks</h2>
<p>Of the top 1000 sites, the ones with the highest APV are comprised primarily of social networking sites along with a few classifieds and shopping sites. This makes sense because people spend a lot of time on social networking sites viewing a lot of pages.</p>
<h2 id="toc-page-views">Page Views</h2>
<p>Facebook is the grand daddy of all websites. Not only does it have the highest number of UU at 540 million, its PV count gets even more impressive with an APV count of 1056. Facebook gets a total of 570 billion page views per month which is more than all the next 30 websites combined! Yahoo web portal is a paltry second with 70 billion page views from it&#8217;s 490 million unique users.</p>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2010/05/31/top-1000-most-visited-sites-on-the-web/feed/</wfw:commentRss>
		<slash:comments>1</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[Uncategorized]]></category>
		<category><![CDATA[new media]]></category>
		<category><![CDATA[pakistan]]></category>
		<category><![CDATA[tech]]></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>Understanding Abstract Classes in PHP</title>
		<link>http://aleembawany.com/2010/04/03/understanding-abstract-classes-in-php/</link>
		<comments>http://aleembawany.com/2010/04/03/understanding-abstract-classes-in-php/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 19:44:20 +0000</pubDate>
		<dc:creator>Aleem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://aleembawany.com/?p=934</guid>
		<description><![CDATA[Abstract classes are an often misunderstood feature of PHP object-oriented programming (OOP) and the source of confusion when considered versus an Interface. The obvious reason for using an Interface is that a child class can implement multiple interfaces but extend only a single abstract class. However, if multiple inheritance is not required then people often go with abstract classes just because they provide the option of later adding base functionality within the abstract class. This is not entirely unreasonable but the reasons for creating abstract classes should be more than that.]]></description>
				<content:encoded><![CDATA[<p>Abstract classes are an often misunderstood feature of PHP object-oriented programming (OOP) and the source of confusion when considered versus an Interface. The obvious reason for using an Interface is that a child class can implement multiple interfaces but extend only a single abstract class. However, if multiple inheritance is not required then people often go with abstract classes just because they provide the option of later adding base functionality within the abstract class. This is not entirely unreasonable but the reasons for creating abstract classes should be more than that.</p>
<h2 id="toc-why-use-abstract-classes">Why Use Abstract Classes?</h2>
<p>An <em>Abstract</em> class provides concrete base functions as well as abstract functions that must be implemented by <em>concrete child</em> classes—binding them into a contract so to speak, if they wish to make use of the base functionality.</p>
<p>This is a subtle but important point and this is where abstract classes really shine. They can call abstract functions from within base concrete functions. Jumping straight to an example is the clearest way to explain this.</p>
<pre class="prettyprint">abstract class Animal {
  function greeting() {
    $sound = $this-&gt;sound();      // exists in child class by contract
    return strtoupper($sound);
  }
  abstract function sound();      // this is the contract
}

class Dog extends Animal {
  function sound() {              // concrete implementation is mandatory
    return &quot;Woof!&quot;;
  }
}

$dog = new Dog();
echo $dog-&gt;greeting();            // WOOF!</pre>
<p>This opens up a whole lot of interesting possibilities. For example, you can write a <code>drive()</code> function that calls <code>$this->start(); $this->accelerate();</code> in an abstract class. Then create a motorcycle class that defines its own <code>start()</code> and <code>accelerate()</code> functions that may be different from those in the car class. In turn, the motorcycle and car can both be driven by just calling <code>drive()</code> without having to implement it locally.</p>
<h2 id="toc-characteristics-of-abstract-classes">Characteristics of Abstract Classes</h2>
<p>Make a note of these characteristics to lock down your understanding of abstract classes:</p>
<ol>
<li>Single inheritance. Child classes can extend only one class at a time. </li>
<li>Abstract classes cannot be instantiated &#8212; no <code>new Animal();</code> </li>
<li>Abstract classes can define class variables of type <em>const</em> only. </li>
<li>Abstract class A can be extended by another abstract class B. Abstract class B can implement none or any of the abstract functions in A. </li>
<li>In the previous case, a child class C which extends abstract class B must implement all abstract functions in B as well as the abstract functions in A which have not already been implemented in B. </li>
<li>The signature of the concrete functions and abstract functions must be the same. However, if an abstract function is defined as <code>abstract function speak($greeting);</code> then it is okay to implement it as <code>function speak($greeting, $shout = FALSE)</code> but not <code>function speak($greeting, $shout)</code>. </li>
<li>The visibility of functions in the child classes must be the same or <em>less restrictive</em> than the parent class. Thus, a <code>protected</code> abstract function can be implemented as either <code>protected</code> or <code>public</code> but not <code>private</code>. </li>
<li>Declaring functions as <code>static abstract</code> throws a strict warning in PHP 5.2 or earlier, however, as of PHP 5.3 this is allowed.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://aleembawany.com/2010/04/03/understanding-abstract-classes-in-php/feed/</wfw:commentRss>
		<slash:comments>6</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[Uncategorized]]></category>
		<category><![CDATA[new media]]></category>
		<category><![CDATA[pakistan]]></category>
		<category><![CDATA[tech]]></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>7</slash:comments>
		</item>
	</channel>
</rss>
