<?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>Francis Shanahan[.com] &#187; performance</title>
	<atom:link href="http://francisshanahan.com/index.php/tag/performance/feed/" rel="self" type="application/rss+xml" />
	<link>http://francisshanahan.com</link>
	<description>Thoughts on technology from a citizen scientist</description>
	<lastBuildDate>Fri, 27 Jan 2012 14:18:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>A Better Web Development Stack</title>
		<link>http://francisshanahan.com/index.php/2009/a-better-web-development-stack/</link>
		<comments>http://francisshanahan.com/index.php/2009/a-better-web-development-stack/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 13:34:33 +0000</pubDate>
		<dc:creator>Francis</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Headline]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://francisshanahan.com/www/?p=1728</guid>
		<description><![CDATA[Last time I griped about ASP.NET ATLAS [LINK]. Ok so with that said, what&#8217;s the alternative? When I wrote my book (Amazon.com Mashups) I did most of the Javascript coding by hand. It wasn&#8217;t bad but it wasn&#8217;t always easy. I tried ATLAS/ASP.NET AJAX and it sucks. I&#8217;ve moved on. 
Decision criteria are as follows:
1) The stack should be fast, it should perform and add minimal overhead to my pages.
2) It should not impede interoperability. I want my code to play nice with others.
3) It should not slow me down. ...]]></description>
			<content:encoded><![CDATA[<p>Last time I griped about ASP.NET ATLAS [<a href="http://francisshanahan.com/www/index.php/2009/the-problems-with-aspnet-ajax/">LINK</a>]. Ok so with that said, what&#8217;s the alternative? When I wrote my book (Amazon.com Mashups) I did most of the Javascript coding by hand. It wasn&#8217;t bad but it wasn&#8217;t always easy. I tried ATLAS/ASP.NET AJAX and it sucks. I&#8217;ve moved on. </p>
<p>Decision criteria are as follows:<br />
1) The stack should be fast, it should perform and add minimal overhead to my pages.<br />
2) It should not impede interoperability. I want my code to play nice with others.<br />
3) It should not slow me down. I do like Studio as an IDE and don&#8217;t think at this point I could switch to Eclipse.<br />
4) The stack shouldn&#8217;t limit my control. With ASP.NET AJAX the biggest gripe I have is lack of fine grained control over the markup rendered. </p>
<p>Nowadays I&#8217;m favouring the following stack</p>
<p>a) Javascript library: JQuery and Prototype are my current favourites.  They&#8217;re both fairly equal and I use them both interchangeably. I&#8217;m using Prototype for my next project although when I switched this site to WordPress I used JQuery. Both are small &lt;30KB and easy to rampup on. </p>
<p>b) Visual effects: With minimalist design you don&#8217;t need a whole lot here. I use a mixture; I like Script.acul.ous as a core so far with add ons like jCarousel for special circumstances. </p>
<p>With this combo total JS over the wire is under 50KB compressed. </p>
<p>c) CSS layout: I write my own CSS but for layout I use YUI Grid. Very small, cross browser, does everything I need and nothing I don&#8217;t. 4KB thank you very much. </p>
<p>d) Server-side: (data-side) I&#8217;m still using ASP.NET nowadays but no ATLAS. I need to produce less markup and only that which I can control. No wacky $ concatenated Ids here please. I use the DataSerializers to produce JSON for data. JSON has proven more flexible than web services,  just as interoperable as XML and less verbose. For transactional systems I&#8217;d still favour web services with the WS-* stack, everything in it&#8217;s place. </p>
<p>I can&#8217;t point at the site yet but there is one coming that uses this stack. Compared to <a href="http://foolstr.com">Foolstr.com</a> it has been a much more pleasant development experience and the site does run faster. </p>
<p>With so many options out there, what&#8217;s YOUR preferred stack? </p>
]]></content:encoded>
			<wfw:commentRss>http://francisshanahan.com/index.php/2009/a-better-web-development-stack/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Improving Performance #1: Hyper Cache vs Super Cache 2</title>
		<link>http://francisshanahan.com/index.php/2009/hyper-cache-vs-super-cache-2/</link>
		<comments>http://francisshanahan.com/index.php/2009/hyper-cache-vs-super-cache-2/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 04:56:37 +0000</pubDate>
		<dc:creator>Francis</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[caching]]></category>
		<category><![CDATA[hyper cache]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[super cache]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://francisshanahan.com/www/?p=1803</guid>
		<description><![CDATA[WordPress is nice but it&#8217;s a bit of a hog CPU-wise. Jeff Atwood has a nice piece on this entitled &#8220;Behold WordPress, Destroyer of CPUs&#8220;. 
We have a big set of releases coming up at work and I&#8217;ve become a bit obsessed with performance. We&#8217;re not using WordPress but I figured performance improvement, just like anything, starts at home. So ever since installing WordPress with this Arthemia theme I&#8217;ve been tweaking to try to get the most out of it. 
I&#8217;m measuring performance using Fiddler 2, starting with clear browser, ...]]></description>
			<content:encoded><![CDATA[<p>WordPress is nice but it&#8217;s a bit of a hog CPU-wise. Jeff Atwood has a nice piece on this entitled &#8220;<a href="http://www.codinghorror.com/blog/archives/001105.html">Behold WordPress, Destroyer of CPUs</a>&#8220;. </p>
<p>We have a big set of releases coming up at work and I&#8217;ve become a bit obsessed with performance. We&#8217;re not using WordPress but I figured performance improvement, just like anything, starts at home. So ever since installing WordPress with this Arthemia theme I&#8217;ve been tweaking to try to get the most out of it. </p>
<p>I&#8217;m measuring performance using Fiddler 2, starting with clear browser, no cache and summing up the entire browser session, the HTML, CSS, JS and media. Not very scientific but better than nothing. </p>
<p>The first place to look was the plugin space and there are a few third-party HTML fragment caching plugins available. Naturally I tried WP-CACHE, that didn&#8217;t do much and is pretty much acknowledged as being out of date. It&#8217;s successor is an add on called &#8220;Super Cache&#8221; so I tried that. Not as smooth as I expected. </p>
<p>As soon as it was installed I noticed was my site throwing PHP errors all over the place. A few minutes debugging showed the config had incorrectly chosen some non-existent directory settings. With that fixed Super Cache started caching. I noticed de-activating and then re-activating this plugin screwed up the config and I had to manually edit some files each time. Less than ideal to say the least. </p>
<p>With caching on, response time improved as PHP no longer had to generate pages on the fly but I wasn&#8217;t blown away by any means. </p>
<p>After a few weeks I noticed the site would hang periodically and time out. Just doing nothing. I couldn&#8217;t diagnose this issue but once I de-activated Super Cache things seemed to come back to life. </p>
<p>My thinking is that Super Cache had used a Mutex to lock a file and somehow reached a race condition. In any case I started looking for a new caching product. That&#8217;s when I met Hyper Cache. </p>
<p>Hyper Cache is a lighter-weight caching plugin than the aforementioned SC. No directories to mess with, no editing extraneous files. I just installed it and off it went. </p>
<p>Measuring page rendering time through Fiddler there was not much improvement but the cache seems to rebuild faster with HyperCache and I haven&#8217;t had any mutex/file locking issues so far. </p>
<p>So with PHP on IIS I&#8217;ve found Hyper Cache worked better for me than Super Cache. </p>
]]></content:encoded>
			<wfw:commentRss>http://francisshanahan.com/index.php/2009/hyper-cache-vs-super-cache-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The Problems with ASP.NET AJAX</title>
		<link>http://francisshanahan.com/index.php/2009/the-problems-with-aspnet-ajax/</link>
		<comments>http://francisshanahan.com/index.php/2009/the-problems-with-aspnet-ajax/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 14:14:51 +0000</pubDate>
		<dc:creator>Francis</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[atlas]]></category>
		<category><![CDATA[efficient code]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://francisshanahan.com/www/?p=1726</guid>
		<description><![CDATA[It&#8217;s no secret I&#8217;ve long been a fan of .NET and the ASP.NET stack.  I feel the team really got it right making developers highly productive and the Visual Studio IDE is second to none.  After spending some long hours with Atlas and ASP.NET AJAX though I&#8217;m afraid I can&#8217;t say the same. 
ATLAS on top of ASP.NET is an example of a retro-fitted round tube jammed into a square hole. The whole notion of AJAX is that it&#8217;ll serve PARTIAL pages, snippets of data, merged with presentation ...]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s no secret I&#8217;ve long been a fan of .NET and the ASP.NET stack.  I feel the team really got it right making developers highly productive and the Visual Studio IDE is second to none.  After spending some long hours with Atlas and ASP.NET AJAX though I&#8217;m afraid I can&#8217;t say the same. </p>
<p>ATLAS on top of ASP.NET is an example of a retro-fitted round tube jammed into a square hole. The whole notion of AJAX is that it&#8217;ll serve PARTIAL pages, snippets of data, merged with presentation on the browser side. Unfortunately ASP.NET AJAX adopted the notion of the UpdatePanel with which I have the following issues:</p>
<p>a) Update Panels are not partial page, they&#8217;re full page. The entire page posts back.  Where&#8217;s the speed gain?</p>
<p>b) The page&#8217;s DOM is brutalized. Each &lt;div&gt; tags&#8217; id is generated for you which could&#8217;ve been nice. Unfortunately the generated ids are incredibly verbose, meaningless strings of dollar concatenated craziness.  Here&#8217;s an example from Foolstr:</p>
<p><code>&lt;a id="<strong>ctl00_contentMain_ContentList1_repContents_ctl02_cmdAgree</strong>" class="myH1" href="javascript:__doPostBack('ctl00$contentMain$ContentList1$repContents$ctl02$cmdAgree','')"&gt;Agree&lt;/a&gt; </code></p>
<p>c) Not only are these ids/names duplicated and incredibly long, they&#8217;re impossible to reference from anything other than ASP.NET AJAX. For example, if you want to combine with a third party JS library like Scriptaculous, you&#8217;re out of luck (it can be done but only with some big hoop jumping through). Unfortunately there&#8217;s little the developer can do to trim them down without overriding a lot of the default behaviour of .NET.</p>
<p>d) It&#8217;s non-intuitive. Essentially ASP.NET AJAX adopts a server-side style and mindset to client-side processing.</p>
<p>e) There&#8217;s no focus on the data contract. I don&#8217;t have to write a JSON API or an XML/REST api or anything. This might be good for some but I think it&#8217;s never a good idea to shift focus off the data.</p>
<p>f) It&#8217;s lazy. It encourages a laziness in the developer. Just code as normal and slap it in an Update Panel. Meh.</p>
<p>Those are the gripes. I have to say the third party vendors have only compounded the problem. You&#8217;d think 3rd party controls&#8217;d be lightweight, optimized and fast but so far what I&#8217;ve seen is they&#8217;re even worse. This is mostly a symptom of them having been built on top of an already broken paradigm. </p>
<p>Most 3rd party controls include the ASP.NET AJAX stuff as a pre-requisite. That makes them heavy. I&#8217;m talking 100KB of javascript before you&#8217;ve drawn anything. 250KB plus in pure javascript alone for a grid. That&#8217;s before you bind it to data. There has to be a better way, there IS a better way. </p>
<p>What do YOU consider the perfect web development stack? </p>
]]></content:encoded>
			<wfw:commentRss>http://francisshanahan.com/index.php/2009/the-problems-with-aspnet-ajax/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

