<?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>Developer Tutorials' Webmaster Blog &#187; Web</title>
	<atom:link href="http://www.developertutorials.com/blog/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.developertutorials.com/blog</link>
	<description>Keeping webmasters up-to-date on technology.</description>
	<lastBuildDate>Thu, 18 Feb 2010 19:01:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>An open source clone of Meebo is now available</title>
		<link>http://www.developertutorials.com/blog/web/an-open-source-clone-of-meebo-is-now-available-95/</link>
		<comments>http://www.developertutorials.com/blog/web/an-open-source-clone-of-meebo-is-now-available-95/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 18:21:31 +0000</pubDate>
		<dc:creator>Hasin Hayder</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.developertutorials.com/blog/web/an-open-source-clone-of-meebo-is-now-available-95/</guid>
		<description><![CDATA[I was stunned when I first saw this open source version of extremely popular web based Instant Messenger service, Meebo. I was planning for a long time to develop such a clone and already collected necessary tools. But now, the wait is really over. These cool guys at soashable make a clone of Meebo where [...]]]></description>
			<content:encoded><![CDATA[<p>I was stunned when I first saw this open source version of extremely popular web based Instant Messenger service, Meebo. I was planning for a long time to develop such a clone and already collected necessary tools. But now, the wait is really over. These cool guys at <a href="http://www.soashable.com/">soashable</a> make a clone of Meebo where you can log into your favorite IM service (Yahoo, MSN, Jabber, AOL) and start chatting with your IM buddies from web. No installation &#8211; no hassle. Only for this instant get-set-go feature, meebo got this extreme popularity. </p>
<p><img src="http://bp3.blogger.com/_eS8rwzJcHas/R8eZp69TI8I/AAAAAAAAAC0/VT4FHFlFd3Y/s320/soashable-web2.png" alt="Soashable" /><br />
<img src="http://bp2.blogger.com/_eS8rwzJcHas/R8eZpq9TI7I/AAAAAAAAACs/IThmFJTK3c8/s320/soashable-web.png" alt="Soashable" /></p>
<p>Now you can make your Meebo using the code of <a href="http://www.soashable.com/">soashable</a>. You can download the source code of soashable fom it&#8217;s project page on google code, by <a href="http://code.google.com/p/soashable/">clicking here</a>
<ul style="display:none">
<li><a href="http://johnquiggin.com?2000_missing_you">2000 missing you e rotic</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.developertutorials.com/blog/web/an-open-source-clone-of-meebo-is-now-available-95/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Styling Disabled Buttons / Disabled Text Boxes in CSS</title>
		<link>http://www.developertutorials.com/blog/web/styling-disabled-buttons-disabled-text-boxes-in-css-404/</link>
		<comments>http://www.developertutorials.com/blog/web/styling-disabled-buttons-disabled-text-boxes-in-css-404/#comments</comments>
		<pubDate>Sat, 30 Aug 2008 11:08:23 +0000</pubDate>
		<dc:creator>Akash Mehta</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.developertutorials.com/blog/web/styling-disabled-buttons-disabled-text-boxes-in-css-404/</guid>
		<description><![CDATA[As your forms grow in complexity, you&#8217;ll probably find a need to temporarily disable an input &#8211; either a button, a text box, or some other element. This is quite easy in HTML &#8211; the disabled attribute comes to the rescue. But just how do you style those fields, and convey that they are temporarily [...]]]></description>
			<content:encoded><![CDATA[<p>As your forms grow in complexity, you&#8217;ll probably find a need to temporarily disable an input &#8211; either a button, a text box, or some other element. This is quite easy in HTML &#8211; the disabled attribute comes to the rescue. But just how do you style those fields, and convey that they are temporarily disabled?</p>
<p><span id="more-404"></span></p>
<p>Let&#8217;s consider this standard input field:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;input type=&quot;text&quot; value=&quot;Text.&quot; disabled /&gt;</pre></div></div>

<input type="text" value="Text." disabled />
<p>Pretty standard stuff. Your web browser will automatically style it a little, but mostly just prevent the user from editing without any real visual hints. But let&#8217;s add some basic CSS to convey the state of the input, and to standardise it across our site and on most platforms. If we add the following CSS:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">input<span style="color: #00AA00;">&#91;</span>disabled<span style="color: #00AA00;">&#93;</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#999</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#ddd</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<input type="text" value="Text." disabled style="border:1px solid #999;background-color:#ddd" />
<p>But wait &#8211; our demo uses inline styles, but your browser might not have just styled that properly if we used a full CSS declaration. We don&#8217;t set a value for the disabled attribute &#8211; it&#8217;s a <em>minimized</em> attribute. To get IE to play nicely with it (and for XHTML), we&#8217;ll have to set the value to &#8220;disabled&#8221;:</p>
<p> <em style="display:none"><a href="http://planet2025.net?the_wrestler">watch the wrestler in HD</a></em></p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;input type=&quot;text&quot; value=&quot;Text.&quot; disabled=&quot;disabled&quot; /&gt;</pre></div></div>

<p>If possible, just for total compatibility, we can also add a &#8220;disabled&#8221; class that IE6 will respect and apply styles for correctly.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;input type=&quot;text&quot; value=&quot;Text.&quot; disabled=&quot;disabled&quot; class=&quot;disabled&quot; /&gt;</pre></div></div>

<p>We can then change the CSS selector we&#8217;re using:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">input<span style="color: #00AA00;">&#91;</span>disabled<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;disabled&quot;</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">,</span> input.disabled</pre></div></div>

<p>And we&#8217;re done! This works across every major browser &#8211; IE6+ and FF1.0+ tested, and Safari 3 / Opera 9.5 should be fine as well. The Sitepoint CSS reference has further information on compatibility, <a href="http://reference.sitepoint.com/css/attributeselector#compatibilitysection" target="_blank">available here</a>.</p>
<p>Finally, if you want to see how Firefox styles disabled fields by default, load up your resource://gre/res/forms.css file (you&#8217;ll have to copy and paste it to your address bar). There are a number of lengthy selectors with just a few rules, but here&#8217;s the big one, way down the bottom:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">button<span style="color: #00AA00;">&#91;</span>disabled<span style="color: #00AA00;">&#93;</span><span style="color: #3333ff;">:active</span><span style="color: #00AA00;">,</span> button<span style="color: #00AA00;">&#91;</span>disabled<span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">,</span>
input<span style="color: #00AA00;">&#91;</span>type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;reset&quot;</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&#91;</span>disabled<span style="color: #00AA00;">&#93;</span><span style="color: #3333ff;">:active</span><span style="color: #00AA00;">,</span>
input<span style="color: #00AA00;">&#91;</span>type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;reset&quot;</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&#91;</span>disabled<span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">,</span>
input<span style="color: #00AA00;">&#91;</span>type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;button&quot;</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&#91;</span>disabled<span style="color: #00AA00;">&#93;</span><span style="color: #3333ff;">:active</span><span style="color: #00AA00;">,</span>
input<span style="color: #00AA00;">&#91;</span>type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;button&quot;</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&#91;</span>disabled<span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">,</span>
select<span style="color: #00AA00;">&#91;</span>disabled<span style="color: #00AA00;">&#93;</span> <span style="color: #00AA00;">&gt;</span> input<span style="color: #00AA00;">&#91;</span>type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;button&quot;</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">,</span>
select<span style="color: #00AA00;">&#91;</span>disabled<span style="color: #00AA00;">&#93;</span> <span style="color: #00AA00;">&gt;</span> input<span style="color: #00AA00;">&#91;</span>type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;button&quot;</span><span style="color: #00AA00;">&#93;</span><span style="color: #3333ff;">:active</span><span style="color: #00AA00;">,</span>
input<span style="color: #00AA00;">&#91;</span>type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;submit&quot;</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&#91;</span>disabled<span style="color: #00AA00;">&#93;</span><span style="color: #3333ff;">:active</span><span style="color: #00AA00;">,</span>
input<span style="color: #00AA00;">&#91;</span>type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;submit&quot;</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&#91;</span>disabled<span style="color: #00AA00;">&#93;</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">0px</span> <span style="color: #933;">6px</span> <span style="color: #933;">0px</span> <span style="color: #933;">6px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2px</span> <span style="color: #993333;">outset</span> ButtonFace<span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> GrayText<span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">cursor</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">inherit</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>GrayText is actually a system color &#8211; it&#8217;s defined by the CSS 2.1 specification and supported on and off in various browsers. These &#8220;special&#8221; color keywords are supposed to match the local system styles &#8211; on a Windows machine, for instance, Firefox would use the color: GrayText rule to style text in disabled fields with the same color that the local Windows system uses. A list of options is available on the <a href="http://reference.sitepoint.com/css/colorvalues">CSS reference</a> as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.developertutorials.com/blog/web/styling-disabled-buttons-disabled-text-boxes-in-css-404/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Five Handy Web Development Bookmarklets</title>
		<link>http://www.developertutorials.com/blog/web/five-handy-web-development-bookmarklets-367/</link>
		<comments>http://www.developertutorials.com/blog/web/five-handy-web-development-bookmarklets-367/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 13:08:24 +0000</pubDate>
		<dc:creator>Akash Mehta</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.developertutorials.com/blog/web/five-handy-web-development-bookmarklets-367/</guid>
		<description><![CDATA[When developing a UI for your web application, it&#8217;s easy to lose a lot of time waiting for reloads, dealing with browser quirks, even just trying to identify a particular element in the DOM. Here are five handy bookmarklets that will help you finish your client-side web development faster and more effectively.
1. ReCSS
ReCSS makes testing [...]]]></description>
			<content:encoded><![CDATA[<p>When developing a UI for your web application, it&#8217;s easy to lose a lot of time waiting for reloads, dealing with browser quirks, even just trying to identify a particular element in the DOM. Here are five handy bookmarklets that will help you finish your client-side web development faster and more effectively.<span id="more-367"></span></p>
<p><strong>1. ReCSS</strong><br />
ReCSS makes testing out CSS hacks easy. When you alter your CSS in an editor and save the new stylesheet, you have to reload the entire page in your browser to see the effect of the changes. Sure, you can make the edits in Firebug, but Firebug&#8217;s inbuilt editor isn&#8217;t great for much beyond the slight tweak. With AJAX-powered pages and dynamic state, reloading the page isn&#8217;t quite as simple as it sounds.</p>
<p>Enter ReCSS: this handy little bookmarklet will keep your existing page entirely intact, but reload all the CSS sheets. You may see a brief flash of white in your browser as current styles are removed, before your page renders almost immediately with the latest set of CSS rules. Check out the <a href="http://turtle.dojotoolkit.org/~david/recss.html">project page</a>.</p>
<p><strong>2. Layout Grid Bookmarklet</strong><br />
Working out pixels and laying out a page is tricky, especially when working from detailed Photoshop mockups and sketches. After some suggestions from the community about using a <a href="http://www.subtraction.com/archives/2004/1231_grid_computi.php">background image of a grid for layout</a>, Andy Budd created the Layout Grid Bookmarklet, which creates a drawing-paper style grid against the background of your page to generally measure elements with. Check out his <a href="http://www.andybudd.com/archives/2006/07/layout_grid_bookmarklet/">blog post about it</a> and the <a href="javascript:void(d=document);void(el=d.getElementsByTagName('body'));void(el%5B0%5D.style.background='url(http://www.andybudd.com/images/layoutgrid.png)');">Layout Grid Bookmarklet</a>.</p>
<p><strong>3. XRAY</strong><br />
X-RAY is a great Firebug/Safari/IE Dev-bar style inspector for web pages. It features a simple point-and-click interface, revealing some basic CSS properties and inheritance hierarchy of the selected element, as well as outlining it and displaying dimensions details. The actual interface is quite slick, and hides away neatly when you no longer want it. If you aren&#8217;t at your preferred Firebug-equipped machine, XRAY is definitely something to have on hand. Check out the <a href="http://westciv.com/xray/">project page</a> and the <a href="javascript:function%20loadScript(scriptURL)%20{%20var%20scriptElem%20=%20document.createElement('SCRIPT');%20scriptElem.setAttribute('language',%20'JavaScript');%20scriptElem.setAttribute('src',%20scriptURL);%20document.body.appendChild(scriptElem);}loadScript('http://westciv.com/xray/thexray.js');">XRAY</a> bookmarklet.</p>
<p><strong>4. Aardvark</strong><br />
Aardvark is similar to XRAY, but provides a lot more functionality for traversing the DOM visually. Ever wanted to pick a particular element, then see what happens if you move up n levels, go to the next node across, or even dive in and start editing innerHTML there and then? Aardvark provides a point-and-click interface similar to XRAY, and then a set of keyboard shortcuts for moving around, focusing on finding what you need. Aardvark is actually available as a Firefox extension, although the bookmarklet is quite convenient. Head to the <a href="http://karmatics.com/aardvark/">project page</a> and try the <a href="javascript:document.getElementsByTagName('head')[0].appendChild(document.createElement('script')).setAttribute('src','http://www.karmatics.com/aardvark/loader.js')">Aardvark</a> bookmarklet.</p>
<p><strong>5. Slayeroffice Favelet Suite</strong><br />
We&#8217;ve saved the best till last &#8211; this favelet suite will blow you away. It features everything from DOM charts to mouseover inspectors, color lists to font resizers, rulers and even a hidden field modifier. All in all, this collection of 15 utilities all in the one bookmarklet is a must for any front-end web development. While it was last revised in 2004, it in many ways offers far more functionality than Firebug, with far more detail provided by its various tools. When you&#8217;ve finished with it it, just hit escape to quietly hide it away. Head to the <a href="http://slayeroffice.com/?c=/content/tools/suite.html">project page</a> and grab the <a href="javascript:s=document.body.appendChild(document.createElement('script'));s.id='fs';s.language='javascript';void(s.src='http://slayeroffice.com/tools/suite/suite.js');">Favelet suite</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.developertutorials.com/blog/web/five-handy-web-development-bookmarklets-367/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selenium IDE: Front-end web application testing</title>
		<link>http://www.developertutorials.com/blog/web/selenium-ide-front-end-web-application-testing-322/</link>
		<comments>http://www.developertutorials.com/blog/web/selenium-ide-front-end-web-application-testing-322/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 09:00:22 +0000</pubDate>
		<dc:creator>Akash Mehta</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.developertutorials.com/blog/web/selenium-ide-front-end-web-application-testing-322/</guid>
		<description><![CDATA[Ever setup a demo for a client, only to find you had a syntax error in one of the key files? Or maybe you&#8217;ve forgotten to setup the database on the staging server and your boss is staring at a screen of MySQL errors. In this tutorial, I&#8217;ll show you how to put together a [...]]]></description>
			<content:encoded><![CDATA[<p>Ever setup a demo for a client, only to find you had a syntax error in one of the key files? Or maybe you&#8217;ve forgotten to setup the database on the staging server and your boss is staring at a screen of MySQL errors. In this tutorial, I&#8217;ll show you how to put together a simple frontend-based test suite using Selenium, to help identify these issues sooner than later.<span id="more-322"></span></p>
<p>The Selenium project provides a set of tools to handle the testing of web applications. Selenium itself is simply a portable software testing framework, where the tests can be written in HTML or a programming/scripting language. The difference with Selenium is that tests are run directly within a web browser, &#8220;just like real users do.&#8221;</p>
<p>As a result, Selenium are very much oriented towards client-side results. For example, one of the simplest tests you can run in Selenium is loading a URL and checking if a certain snippet of text is or isn&#8217;t on the page. Selenium offers a number of applications built around the same standard, but we&#8217;re interested in Selenium IDE, a Firefox extension that allows tests to be developed and run from within Firefox with no additional software installation.</p>
<p>To get started with Selenium, just head over to <a href="https://addons.mozilla.org/firefox/2079/">the addon page to download Selenium IDE</a>. Once you&#8217;ve installed it, restart Firefox and find Selenium in your Tools menu. Load it up, and find an application you want to practice on &#8211; one of your pet projects, maybe, or a website you frequently visit. Because Selenium runs on top of a standard web browser, it doesn&#8217;t care what you test, as long as it has HTML to work with.</p>
<p>The moment you start Selenium IDE, it starts recording commands. Selenium testing is composed of &#8220;test suites&#8221;, of which you may have one per application. Each suite includes cases, one of which has been created already and helpfully titled &#8220;Untitled&#8221;, and each cases consists of a series of commands to be executed in succession. When you start navigating around the current page, Selenium IDE will add those navigation procedures to the current test case, so that they can be replayed at a later stage. Start by clicking on a link; you&#8217;ll see a &#8220;clickAndWait&#8221; appear in the table panel of your Selenium window.</p>
<p>To create your Selenium tests, you can simply navigate around your website while recording. Selenium records everything from clicking links to entering data in input fields and submitting forms. To stop recording, hit the red circle in the top-right. At a basic level, this tests that your pages are being served correctly. You can then add in commands within the table &#8211; I suggest starting with &#8220;verifyTextPresent&#8221; to check if a snippet of text is found within the page (expressions allowed).</p>
<p>Once you&#8217;re finished, your test window might look something like this:</p>
<p><img src="http://www.developertutorials.com/blog/wp-content/uploads/2008/07/selenium1.png" alt="" title="Selenium IDE Test Window" width="400" height="429" class="alignnone size-full wp-image-323" /></p>
<p>To run your tests, just hit the green play buttons &#8211; you may need to slow down Selenium to wait for pages to load if you&#8217;re running tests over the internet. Remember that some of Selenium&#8217;s tests are based on the DOM, and will fail if the DOM hasn&#8217;t loaded yet even if the application is running fine.</p>
<p>To save your tests to run them later, just use the File menu. In future posts, we&#8217;ll look at more complex use of Selenium and the multitude of custom commands available. In the meantime, why not subscribe to our RSS feed?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.developertutorials.com/blog/web/selenium-ide-front-end-web-application-testing-322/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Debugging HTTP with Fiddler</title>
		<link>http://www.developertutorials.com/blog/web/debugging-http-with-fiddler-317/</link>
		<comments>http://www.developertutorials.com/blog/web/debugging-http-with-fiddler-317/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 04:00:50 +0000</pubDate>
		<dc:creator>Akash Mehta</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.developertutorials.com/blog/web/debugging-http-with-fiddler-317/</guid>
		<description><![CDATA[Fiddler is a request inspector, form tamperer and general debugging proxy for HTTP. Fiddler enables web developers to monitor HTTP requests to their web application, watch request and response headers, tamper with query strings and form values, collect statistics and even rebuild and send new requests. It has inbuilt HTTPS support using a middle-man approach, [...]]]></description>
			<content:encoded><![CDATA[<p>Fiddler is a request inspector, form tamperer and general debugging proxy for HTTP. Fiddler enables web developers to monitor HTTP requests to their web application, watch request and response headers, tamper with query strings and form values, collect statistics and even rebuild and send new requests. It has inbuilt HTTPS support using a middle-man approach, and can even decode encoded request bodies, as well as render images, and view HEX values and XML.<span id="more-317"></span></p>
<p><a href="http://www.fiddler2.com/" target="_blank">Fiddler</a> is actually a tool provided by a Microsoft employee, although works seamlessly with any browser. It requires the .net framework, and so is most likely a Windows-only application, although it may be run on Mono. When Fiddler is running, IE requests are automatically routed through it, and it runs a local transparent proxy server on port 8888. Firefox and other browsers can then be configured to route their requests through Fiddler. (I use <a href="https://addons.mozilla.org/en-US/firefox/addon/125" target="_blank">SwitchProxy</a> for added simplicity.)</p>
<p>As each HTTP request comes through, Fiddler offers a wealth of options for analysing the request:</p>
<p><img src="http://www.developertutorials.com/blog/wp-content/uploads/2008/07/fiddler-1.png" alt="" title="Fiddler overview" width="500" height="493" class="alignnone size-full wp-image-318" /></p>
<p>The inbuilt request builder enables you to use a past request as a template to send a new HTTP request manually. Fiddler can even autorespond to requests to the proxy, and expose the proxy to clients on the local network. The application also includes a number of other handy tools, including an authentication mechanism. Fiddler&#8217;s rules-based proxy system is even scriptable (C#), and a mini-editor with syntax highlighting and reference is available for constructing rule scripts.</p>
<p>Fiddler is an invaluable tool for analysing problems with a web application where HTTP may be an issue, as well as generally observing the movement of a client through the application. It overcomes HTTP&#8217;s statelessness with its session-based approach, and integrates well with other tools. It&#8217;s also a very convenient HTTP proxy. To get started, just head over to the <a href="http://www.fiddler2.com/" target="_blank">project page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.developertutorials.com/blog/web/debugging-http-with-fiddler-317/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The 10/90 rule for web analytics</title>
		<link>http://www.developertutorials.com/blog/web/the-1090-rule-for-web-analytics-275/</link>
		<comments>http://www.developertutorials.com/blog/web/the-1090-rule-for-web-analytics-275/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 18:17:53 +0000</pubDate>
		<dc:creator>Scout</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[google analytics]]></category>

		<guid isPermaLink="false">http://www.developertutorials.com/blog/web/the-1090-rule-for-web-analytics-275/</guid>
		<description><![CDATA[Some people look at graphs with blank faces. I happen to study them with a smile, like I did when I still had a cubicle job as a Quality Analyst. Ever since I discovered Google Analytics, I’ve used it religiously to increase traffic for a few niche blogs that I own with reasonable success. Google [...]]]></description>
			<content:encoded><![CDATA[<p>Some people look at graphs with blank faces. I happen to study them with a smile, like I did when I still had a cubicle job as a Quality Analyst. Ever since I discovered <strong>Google Analytics</strong>, I’ve used it religiously to increase traffic for a few niche blogs that I own with reasonable success. Google Analytics is a wonderful tool that gives you varied data to play with, and that you get all this sophistication free is just remarkable. However, data by itself won’t give you answers. Perhaps in a later evolution, GA will be able to generate action items in plain English, but that seems like a dream from a distant future.<br />
<span id="more-275"></span><br />
<strong>Avinash Kaushik</strong> of <strong>Occam’s Razor</strong> proposes a <a href="http://www.kaushik.net/avinash/2006/05/the-10-90-rule-for-magnificient-web-analytics-success.html">10/90 rule</a> in order to make web analytics work. Basically, it says that your budget should be divided as 10% for the analytics tool, and 90% for the actual living, breathing, thinking analyst(s). People and brain power trumps data gathering, and immensely important in making sense of all the gibberish. Take note that this is not a hard and fast rule. The point is that data interpretation should be the focus, because numbers themselves don’t talk. </p>
<p>The 10/90 rule is also a reproach to companies who tend to spend too much on their web analytics service, sometimes amounting to tens of thousands of dollars, when the same metrics can be had with free tools such as Google Analytics. Avinash recommends the following steps to cut cost on tools and rededicate resources to the more vital task of analysis:</p>
<ul>
<li>Apply for a free Google Analytics account at GA Sign Up Page</li>
<li>Once you get the code implement Google Analytics on your website in parallel with your favorite expensive analytics tool</li>
<li>Get a comfort level for delta between the two sets of key numbers (you know visitors, conversions, page views etc etc) and create a multiplier (my tool shows visitors 10% higher and page views 10% lower than Google). You will use this multiplier in future to compare year over year trends if you want to.</li>
<li>Cancel the contract with your favorite expensive analytics vendor and take that $50k or $100k or $200k and: 1) Hire a smart analyst for between $50k to whatever maybe your areas great salary 2) Put the rest of the money in your pocket.</li>
<li>Your smart analyst will be able to extract just as much value from GA than your old tool, in fact my prediction is that it will be a lot more.</li>
<li>As the level of savvy in your org grows, as the level of sophistication of supporting processes increased, perhaps in two years you might be ready to plunk down $200k on a web analytics tool and then be ready to extract a corresponding amount of value from it.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.developertutorials.com/blog/web/the-1090-rule-for-web-analytics-275/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The impact of the Google – Yahoo advertising collaboration</title>
		<link>http://www.developertutorials.com/blog/web/the-impact-of-the-google-%e2%80%93-yahoo-advertising-collaboration-238/</link>
		<comments>http://www.developertutorials.com/blog/web/the-impact-of-the-google-%e2%80%93-yahoo-advertising-collaboration-238/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 21:25:08 +0000</pubDate>
		<dc:creator>Scout</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[adsense]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://www.developertutorials.com/blog/web/the-impact-of-the-google-%e2%80%93-yahoo-advertising-collaboration-238/</guid>
		<description><![CDATA[The saga continues. It’s been over a week since Google and Yahoo announced their advertising partnership, and the news is still sending ripples everywhere. New York Times admonished Yahoo! CEO Jerry Yang for choosing to “become a pawn of the most dominant company on the Internet”, while Tim O’Reilly defended Yahoo!’s move as a smart [...]]]></description>
			<content:encoded><![CDATA[<p>The saga continues. It’s been over a week since <a href="http://googleblog.blogspot.com/2008/06/our-agreement-to-provide-ad-technology.html">Google and Yahoo announced their advertising partnership</a>, and the news is still sending ripples everywhere. <strong>New York Times</strong> admonished <strong>Yahoo! CEO Jerry Yang</strong> for choosing to <a href="http://www.nytimes.com/2008/06/14/business/14nocera.html"><em>“become a pawn of the most dominant company on the Internet”</em></a>, while <strong>Tim O’Reilly</strong> defended Yahoo!’s move as <a href="http://radar.oreilly.com/archives/2008/06/why-arrington-is-wrong-about-y.html">a smart way to lose deadweight and focus on what they do best</a>. TechCrunch’s <strong>Michael Arrington</strong> warned about <a href="http://www.techcrunch.com/2008/06/13/massive-destruction-of-shareholder-value-employee-morale-and-internet-health/">the dangers of a Google monopoly</a> and continues to note the ever-increasing number of top Yahoo! executives jumping ship (<a href="http://www.techcrunch.com/2008/06/21/updated-yahoo-exec-tracker-114-execs-left-since-january-2007/">114 execs as of last count</a>).<br />
<span id="more-238"></span><br />
Who can blame these people for investing so much energy debating the subject? Online advertising is a $40 billion market and rising fast, <a href="http://www.techcrunch.com/2008/06/23/top-100-advertisers-shifted-1-billion-to-the-web-last-year-at-the-expense-of-tv-and-newspapers/">eating away at TV and newspaper ad money</a>. Google already has over 40% share of online ad revenues, and with this deal to serve their ads to Yahoo!, it’s poised to grow so much more. O’Reilly argues that it’s not that big a deal, because search isn’t the end-all and be-all in the Internet &#8211; there are various other platforms to be conquered, both known and those yet to come. I do get his point, but it still leaves me asking a few questions. </p>
<p><strong>How long before a new platform weakens Google’s virtual monopoly?</strong> O’Reilly frequently sites the Internet as the dark horse that blind-sided Microsoft. What, if any, will do it for Google? True, nothing lasts forever, but even a few years is a long time, and damage may have already be done by the lack of real competition. The phrase “absolute power corrupts absolutely” has been thrown around a lot, but it’s true. I do love using a lot of Google’s services, but it needs something to keep it honest and on its toes. </p>
<p><strong>What’s gonna stop Google from gobbling (buying out) the “next big thing”?</strong> They bought <strong>YouTube</strong> relatively early and gained dominance in online video distribution. Blog syndication became popular and they acquired the most widely used RSS publishing service, <strong>FeedBurner</strong>. They understand how important the mobile market, and now they’re launching <strong>Android</strong>. Google always seem to be one step ahead of the pack. I’m wondering if perhaps it’s not a new product or platform that will take the thunder away from Google. Maybe it will just become too big that it will collapse under its own weight.</p>
<p><strong>How much more brain drain can Yahoo! take?</strong> While technology is important, it’s people that run a company, and employees are still its best asset. The alarming number of executives leaving just shows the continued loss of confidence of its own people. Unless drastic measures are taken by the top management to address this, I’m not sure how they can recover. For their sake, I hope Jerry Yang can come out of his shell and address the employees&#8217; concern and give them a clear direction. In short, be a leader.</p>
<p>Yahoo! has let Google win this battle, hoping to regroup and win the war. That’s a tall order, and <a href="http://www.techcrunch.com/2008/06/24/sources-microsoft-and-yahoo-talks-back-on/">we can only speculate on their next move</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.developertutorials.com/blog/web/the-impact-of-the-google-%e2%80%93-yahoo-advertising-collaboration-238/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New features for Google Trends</title>
		<link>http://www.developertutorials.com/blog/web/new-features-for-google-trends-230/</link>
		<comments>http://www.developertutorials.com/blog/web/new-features-for-google-trends-230/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 20:33:57 +0000</pubDate>
		<dc:creator>Scout</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[google trends]]></category>

		<guid isPermaLink="false">http://www.developertutorials.com/blog/web/new-features-for-google-trends-230/</guid>
		<description><![CDATA[Whether you’re a pro-blogger, developer, or marketer, keeping an ear to the ground is always important. Of course, there are many ways to do this, and looking at web stats is one of them. Alexa, Comscore, Hitwise, Google Trends – there’s a lot of choices out there, but the last one, due to the sheer [...]]]></description>
			<content:encoded><![CDATA[<p>Whether you’re a pro-blogger, developer, or marketer, keeping an ear to the ground is always important. Of course, there are many ways to do this, and looking at web stats is one of them. Alexa, Comscore, Hitwise, Google Trends – there’s a lot of choices out there, but the last one, due to the sheer volume of data Google has, is something that has great potential. Lately, Google has made some announcements regarding new features of Trends, and though it’s far from perfect, I’m glad to note the active development in this tool. </p>
<p><span id="more-230"></span></p>
<p>Earlier this week, they announced that as long as you’re logged in with your Google account, you’ll be able to see a normalized graph of search query trends with numbers, and you can also export the data to .CSV (handy if you like to do more in-depth statistical analysis). More recently, they’ve added a new layer that allows you to see not only the popularity of search queries, but this time of websites themselves. From the <a href="http://www.google.com/intl/en/trends/websites/help/index.html">Google Trends help page</a>:</p>
<blockquote><p>When you enter the address of a website into the search box, Trends for Websites shows you a graph reflecting the number of daily unique visitors (the number of people who visit a website) to that website. You can see these numbers on the graph after you&#8217;ve signed into your Google Account. Under the graph, you&#8217;ll also see a list of regions where visitors originated from, other websites that they have also visited, and terms they have also searched for.</p>
</blockquote>
<p>As an example, here’s the search trend for keywords <a href="http://trends.google.com/trends?q=facebook%2C+myspace&amp;ctab=0&amp;geo=all&amp;date=all&amp;sort=0">“Facebook” vs “MySpace”</a>, and here’s the website trend of the domains <a href="http://trends.google.com/websites?q=facebook.com%2C+myspace.com&amp;geo=all&amp;date=all">“Facebook.com” vs “MySpace.com”</a>.</p>
<p>As cool as it might seem, Google Trends for websites looks like it has a long way to go. For instance:</p>
<ul>
<li>Only top level domains are included. Subdomain data not available.</li>
<li>Accuracy needs improvement, as Google candidly admits.</li>
<li>Only useful for websites with relatively high-volume traffic (at least a few thousands per day).</li>
<li>People can’t request inclusion for their site, or ask for their site’s removal if it’s already there.</li>
<li>Curiously, it doesn’t show results for some Google-related sites (so far I’ve tried YouTube, Orkut, and even Google itself).</li>
</ul>
<p>If these things can be addressed, particularly the accuracy issue, then Google Trends can become the web stats authority &#8211; Goliath keeps getting bigger. Alexa, et al should definitely rethink their strategies. For more information, read more about <a href="http://www.google.com/intl/en/trends/websites/help/index.html">Google Trends for Websites</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.developertutorials.com/blog/web/new-features-for-google-trends-230/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySpace tries to become more habitable</title>
		<link>http://www.developertutorials.com/blog/web/myspace-tries-to-become-more-habitable-227/</link>
		<comments>http://www.developertutorials.com/blog/web/myspace-tries-to-become-more-habitable-227/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 04:51:12 +0000</pubDate>
		<dc:creator>Scout</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[myspace]]></category>

		<guid isPermaLink="false">http://www.developertutorials.com/blog/web/myspace-tries-to-become-more-habitable-227/</guid>
		<description><![CDATA[Do you have a MySpace account? No? Let me guess why.
MySpace has been quite popular for some time, and some people have actually used it to successfully promote their sites/businesses. I, however, could never bring myself to create an account with them. The reason? MySpace is a sight for sore eyes. The pages are crammed [...]]]></description>
			<content:encoded><![CDATA[<p>Do you have a MySpace account? No? Let me guess why.</p>
<p>MySpace has been quite popular for some time, and some people have actually used it to successfully promote their sites/businesses. I, however, could never bring myself to create an account with them. The reason? MySpace is a sight for sore eyes. The pages are crammed with widgets at every nook and cranny, they take forever to load, loud thumping music shocks you into a heart attack, navigation makes you run in circles, and the blogs look like they were stuck in the 90s. Clearly, it’s in dire need of a major makeover, and that’s exactly what they’re promising. So, better late than never?<br />
<span id="more-227"></span><br />
<strong>MySpace 2.0</strong></p>
<p>So what exactly is changing? Take a look at this <a href="http://www.adrants.com/images/Splash%20page_apps.jpg">mockup from Adrants</a>. The layout is cleaner and the elements blend much tighter. In keeping with design trends, there are plenty of rounded corners, the glassy look, “cute” icons, subtle colors and gradients. As for navigation, AJAX will reportedly be used. Internal search will now be handled by Lucene, an open-source search engine, while MySpace TV will be upgraded to Flash 9, capable of HD and full screen. A nice addition is improved profile editing for customization.</p>
<p><strong>What’s in it for you?</strong></p>
<p>Its owner, NewsCorp, is leading this change to boost their revenues, but what’s in it for you? Well, first is that if this so-called MySpace 2.0 becomes successful, the demographics may change in its favor. MySpace has always been criticized by marketers as a site for the young and the penniless, while Facebook is attracting more grownups with purchasing power. A more sober-looking MySpace may just get some converts, and attract those still uninitiated to the social networking phenomenon. </p>
<p>Second, this new design promises bigger ads spaces for promotion. No word yet if they’re going to implement Facebook-like ads, though personally I don’t see that as being far off. Third, competition is always great for consumers. Facebook just caught up with MySpace in terms of number of unique users, and from here on out these two giants will be giving it all they’ve got to make their services better. MySpace’s makeover is only the beginning of good things ahead.</p>
<p>Phase I starts today, June 18. Expect gradual changes in the coming months.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.developertutorials.com/blog/web/myspace-tries-to-become-more-habitable-227/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing email routines in web applications</title>
		<link>http://www.developertutorials.com/blog/web/testing-email-routines-in-web-applications-348/</link>
		<comments>http://www.developertutorials.com/blog/web/testing-email-routines-in-web-applications-348/#comments</comments>
		<pubDate>Sun, 15 Jun 2008 09:00:53 +0000</pubDate>
		<dc:creator>Akash Mehta</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.developertutorials.com/blog/web/testing-email-routines-in-web-applications-348/</guid>
		<description><![CDATA[For any web developer that&#8217;s ever had to build a signup routine, email is the necessary evil that takes pride of place among hated activities. Sure, a simple call to the language&#8217;s mail library will send a message through, but the moment the boss wants a HTML email, or users need attachments, everything starts to [...]]]></description>
			<content:encoded><![CDATA[<p>For any web developer that&#8217;s ever had to build a signup routine, email is the necessary evil that takes pride of place among hated activities. Sure, a simple call to the language&#8217;s mail library will send a message through, but the moment the boss wants a HTML email, or users need attachments, everything starts to get tricky. To top things off, automating testing of an email routine can be near impossible with the usual tools. Today we&#8217;ll look at some of the options for testing email routines in web applications.<span id="more-348"></span></p>
<p>The signup validation is the bane of a web application &#8211; despite disposable emails more and more common, site owners and sales staff continue to insist on tying an email address to every user. The validation email, a common task for web developers, can quickly take up far more development time than it involves user time. Making the process of building and maintaining email routines as efficient as possible is simple better for everybody.</p>
<p>The challenge is this: an email, once sent, is not actually sent. For example, when PHP&#8217;s mail() function returns true, it simply means that the message has been passed on to the system&#8217;s mail server and received succesfully. The actual email could be sent many hours later, or never at all.</p>
<p><a href="http://www.lastcraft.com/fakemail.php" target="_blank">Fakemail</a>, from the creators of <a href="http://www.developertutorials.com/blog/php/simpletest-unit-testing-for-php-332/">SimpleTest</a>, is a mail server gateway of sorts, in that it replaces your local mail server for momentarily. When an email is sent on the machine, Fakemail will pick it up and divert it to a predictable location on the filesystem.</p>
<p>We can then create reliable email systems in three easy steps:</p>
<p>1. Build a single, common email routine for the application<br />
2. Run the email routine during build tests<br />
3. Check the email was sent</p>
<p><strong>Building a common email routine</strong><br /> 
<ul style="display:none">
<li><a href="http://carlarodrigues.uol.com.br?da_vinci_code">da vinci code dvd download</a></li>
</ul>
<p>This is the single most important factor. As your email routines grow in complexity beyond a single call to a native language API, it&#8217;s important that all your email routines use the same final message sending code, if not exactly the same emailing system altogether. For PHP, I recommend the PEAR mailing classes.</p>
<p><strong>Run the email routine during build tests</strong><br />
Use <a href="http://www.developertutorials.com/blog/php/phing-a-build-system-for-php-249/">Phing</a> to automate your build process, if only to make sure you run your unit tests every time. Then use <a href="http://www.developertutorials.com/blog/php/simpletest-unit-testing-for-php-332/">SimpleTest</a> or PHPUnit (or even <a href="http://www.developertutorials.com/blog/web/selenium-ide-front-end-web-application-testing-322/">Selenium</a>) to start Fakemail and then run the signup (or similar) routine, causing an email to be sent.</p>
<p><strong>Check the email was sent</strong><br />
Finally, use a unit test or other server-side script to verify that the email was sent: assert that Fakemail created a particular file e.g. templaterecipient@localhost.1 will be created for the first email sent to templaterecipient@localhost.</p>
<p>Fakemail coexists happily with unit testing; in fact, the project website offers sample code for SimpleTest, useful for PHP developers. A similar routine in other web stacks should be fairly trivial to setup; the SimpleTest unit test is barely 20 lines long.</p>
<p>Testing email is not hard, and it can save a lot of stress later. To get started with Fakemail, just check out the extensive tutorial on <a href="http://www.lastcraft.com/fakemail.php">the project page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.developertutorials.com/blog/web/testing-email-routines-in-web-applications-348/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
