<?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>web technologist &#187; Frontend Tech</title>
	<atom:link href="http://www.shinstudio.com/blog/category/frontend-tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.shinstudio.com/blog</link>
	<description>web 2.0, frontend, ajax, flash, css, dhtml, php</description>
	<lastBuildDate>Thu, 26 Jan 2012 09:50:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>meta tags for iphone site</title>
		<link>http://www.shinstudio.com/blog/frontend-tech/meta-tags-for-iphone-site/</link>
		<comments>http://www.shinstudio.com/blog/frontend-tech/meta-tags-for-iphone-site/#comments</comments>
		<pubDate>Sun, 15 May 2011 05:10:45 +0000</pubDate>
		<dc:creator>sh.kim</dc:creator>
				<category><![CDATA[Frontend Tech]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.shinstudio.com/blog/?p=506</guid>
		<description><![CDATA[TweetCurrently I&#8217;m working on a site that is expected to work fine on iPhone devices. Obviously I knew that I had to dig up meta tags for iPhone site for Safari on the iPhone devices. Found this and here are the list of it: &#60;meta name=&#8221;apple-mobile-web-app-capable&#8221; content=&#8221;yes&#8221;&#62; : sets whether a web application runs in [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton506" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Ffrontend-tech%2Fmeta-tags-for-iphone-site%2F&amp;text=meta%20tags%20for%20iphone%20site&amp;related=&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Ffrontend-tech%2Fmeta-tags-for-iphone-site%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://www.shinstudio.com/blog/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Currently I&#8217;m working on a site that is expected to work fine on iPhone devices. Obviously I knew that I had to dig up meta tags for iPhone site for Safari on the iPhone devices.</p>
<p>Found <a href="http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html#//apple_ref/doc/uid/TP40008193">this</a> and here are the list of it:</p>
<ul>
<li>&lt;meta name=&#8221;apple-mobile-web-app-capable&#8221; content=&#8221;yes&#8221;&gt; : sets whether a web application runs in full-screen mode. (refer to the documentation for the potential values)</li>
<li>&lt;meta name=&#8221;apple-mobile-web-app-status-bar-style&#8221; content=&#8221;black&#8221;&gt; : Sets the style of the status bar for a web application. (refer to the documentation for the potential values)</li>
<li>&lt;meta name=&#8221;format-detection&#8221; content=&#8221;telephone=no&#8221;&gt; : Enables or disables automatic detection of possible phone numbers in a webpage in Safari on iOS.</li>
<li>&lt;meta name = &#8220;viewport&#8221; content = &#8220;width = 320,<br />
       initial-scale = 2.3, user-scalable = no&#8221;&gt; : Changes the logical window size used when displaying a page on iOS.</li>
</ul>
<p>Mostly I was using viewport. <img src='http://www.shinstudio.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.shinstudio.com/blog/frontend-tech/meta-tags-for-iphone-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Site Scalability/Performance</title>
		<link>http://www.shinstudio.com/blog/backend-tech/site-scalabilityperformance/</link>
		<comments>http://www.shinstudio.com/blog/backend-tech/site-scalabilityperformance/#comments</comments>
		<pubDate>Thu, 20 May 2010 20:24:59 +0000</pubDate>
		<dc:creator>sh.kim</dc:creator>
				<category><![CDATA[Backend Tech]]></category>
		<category><![CDATA[Frontend Tech]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.shinstudio.com/blog/?p=440</guid>
		<description><![CDATA[TweetThis is old blog post by Peter Van Dijck, which he posted presentation materials regarding site performance and scalability, but it is still very good resource. Check it out.]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton440" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Fbackend-tech%2Fsite-scalabilityperformance%2F&amp;text=Site%20Scalability%2FPerformance&amp;related=&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Fbackend-tech%2Fsite-scalabilityperformance%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://www.shinstudio.com/blog/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>This is old blog post by Peter Van Dijck, which he posted presentation materials regarding site performance and scalability, but it is still very good resource.</p>
<p><a href="http://poorbuthappy.com/ease/archives/2007/04/29/3616/the-top-10-presentation-on-scaling-websites-twitter-flickr-bloglines-vox-and-more">Check it out</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shinstudio.com/blog/backend-tech/site-scalabilityperformance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>misperception of H.264 on the Flash</title>
		<link>http://www.shinstudio.com/blog/frontend-tech/misperception-of-h-264-on-the-flash/</link>
		<comments>http://www.shinstudio.com/blog/frontend-tech/misperception-of-h-264-on-the-flash/#comments</comments>
		<pubDate>Wed, 19 May 2010 01:41:34 +0000</pubDate>
		<dc:creator>sh.kim</dc:creator>
				<category><![CDATA[Frontend Tech]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[H.264]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.shinstudio.com/blog/?p=438</guid>
		<description><![CDATA[TweetIt&#8217;s a very good read. As he pointed out in his blog post, I think for some reasons many people seem to believe in HTML5 video without knowing the fact that there is *no standard in the video codec* yet. We all know that Apple is pursuing H.264 for video codec as a standard, but [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton438" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Ffrontend-tech%2Fmisperception-of-h-264-on-the-flash%2F&amp;text=misperception%20of%20H.264%20on%20the%20Flash&amp;related=&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Ffrontend-tech%2Fmisperception-of-h-264-on-the-flash%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://www.shinstudio.com/blog/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>It&#8217;s a very <a href="http://www.mikechambers.com/blog/2010/05/17/top-flash-misperceptions-h-264-video-is-going-to-kill-flash/?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed%3A+MikeChambers+%28Mike+Chambers%29&#038;utm_content=Google+Reader">good read</a>.</p>
<p>As he pointed out in his blog post, I think for some reasons many people seem to believe in HTML5 video without knowing the fact that there is *no standard in the video codec* yet.</p>
<p>We all know that Apple is pursuing H.264 for video codec as a standard, but there is still possibility not all browser vendors agree to use one video codec in the next several years for whatever reasons. Also there will be always newer codec that replaces H.264 and what will happen to the unofficial video codec standard?</p>
<p>As for the video player itself, video tag provides limited feature set whileas Flash player can have rich feature sets. In order to add new features to the video player (video tag), browser has to be upgraded whileas Flash author can upgrade the feature sets more freely. </p>
<p>I just feel that web is still messy and will be as it was as developers worked to fix compatibility issues between IE and Netscape. Now it&#8217;s another form of incompatibility issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shinstudio.com/blog/frontend-tech/misperception-of-h-264-on-the-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>html5 mobile support</title>
		<link>http://www.shinstudio.com/blog/frontend-tech/html5-mobile-support/</link>
		<comments>http://www.shinstudio.com/blog/frontend-tech/html5-mobile-support/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 01:51:48 +0000</pubDate>
		<dc:creator>sh.kim</dc:creator>
				<category><![CDATA[Frontend Tech]]></category>

		<guid isPermaLink="false">http://www.shinstudio.com/blog/?p=413</guid>
		<description><![CDATA[Tweeti searched about html5 mobile support and found this great post. Things that I thought about were while reading the post: 1. HTML5 features for the mobile site may accelerate adaption of better mobile browser to mobile devices. For those who do not have the latest phone, sorry, but you might have more choices soon? [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton413" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Ffrontend-tech%2Fhtml5-mobile-support%2F&amp;text=html5%20mobile%20support&amp;related=&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Ffrontend-tech%2Fhtml5-mobile-support%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://www.shinstudio.com/blog/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>i searched about html5 mobile support and found this <a href="http://www.cloudfour.com/html5-from-a-mobile-perspective/">great post</a>.</p>
<p>Things that I thought about were while reading the post:</p>
<p>1. HTML5 features for the mobile site may accelerate adaption of better mobile browser to mobile devices. For those who do not have the latest phone, sorry, but you might have more choices soon?<br />
2. it&#8217;s not directly related to this html5 mobile support post, but voice lines may be dead soon. Instead, it will be all about data plan as voice call can be made through app. Which may trigger mobile device companies such as motorola or samsung to adapt full browsing experience for all their devices *faster*. More html5 enabled borwser penetration rate follows? who knows.<br />
3. mobile web application doesn&#8217;t necessarily have to be complex application. Even with a simple site, using html5 new APIs, site can fully utilize all the awesome features (geolocation, etc)<br />
4. HTML5 applications are mainly for iPhone, Android, and Palm Web OS devices. <del datetime="2010-05-11T21:52:44+00:00">Nothing else</del>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shinstudio.com/blog/frontend-tech/html5-mobile-support/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>html5 forms</title>
		<link>http://www.shinstudio.com/blog/frontend-tech/html5-forms/</link>
		<comments>http://www.shinstudio.com/blog/frontend-tech/html5-forms/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 05:10:42 +0000</pubDate>
		<dc:creator>sh.kim</dc:creator>
				<category><![CDATA[Frontend Tech]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[html5 forms]]></category>

		<guid isPermaLink="false">http://www.shinstudio.com/blog/?p=393</guid>
		<description><![CDATA[TweetI checked html 5 form spec at w3.org website and found quite interesting form types. Those are: search tel url datetime date month week time datetime-local number range color As you can see there are so many types in HTML 5 specs. And validation for the specific data type MUST be done on the browser [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton393" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Ffrontend-tech%2Fhtml5-forms%2F&amp;text=html5%20forms&amp;related=&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Ffrontend-tech%2Fhtml5-forms%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://www.shinstudio.com/blog/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>I checked html 5 form spec at w3.org website and found quite interesting form types. Those are:</p>
<ul>
<li>search</li>
<li>tel</li>
<li>url</li>
<li>datetime</li>
<li>date</li>
<li>month</li>
<li>week</li>
<li>time</li>
<li>datetime-local</li>
<li>number</li>
<li>range</li>
<li>color</li>
</ul>
<p><span id="more-393"></span><br />
As you can see there are so many types in HTML 5 specs. And validation for the specific data type MUST be done on the browser side according to the w3.org doc. So FE engineers do not have to implement own validation for the form fields any more. </p>
<p>However, even if client side validation is done by the browser, server-side data validation MUST be accompanied. Using javascript, hackers can change the type attribute anyway they want and bypass client validation by setting them to &#8220;TEXT&#8221;. </p>
<p>There are also some new attributes introduced in the HTML 5 spec. Those are:</p>
<ul>
<li>autocomplete</li>
<li>pattern</li>
<li>placeholder</li>
<li>valueAsDate</li>
<li>valueAsNumber</li>
<li>list</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.shinstudio.com/blog/frontend-tech/html5-forms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript String.replace with regex</title>
		<link>http://www.shinstudio.com/blog/frontend-tech/javascript-string-replace-with-regex/</link>
		<comments>http://www.shinstudio.com/blog/frontend-tech/javascript-string-replace-with-regex/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 03:23:44 +0000</pubDate>
		<dc:creator>sh.kim</dc:creator>
				<category><![CDATA[Frontend Tech]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[frontend]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[regex]]></category>

		<guid isPermaLink="false">http://www.shinstudio.com/blog/?p=391</guid>
		<description><![CDATA[TweetI often use String.replace in JavaScript whenever I have to use JavaScript. Today was the day that I ended up with using it for my work. I know that String.replace supports regular expression to match your string, but I was not clear if I could use &#8220;capturing groups&#8221; and &#8220;quantifiers&#8221;. As I guessed, I was [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton391" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Ffrontend-tech%2Fjavascript-string-replace-with-regex%2F&amp;text=JavaScript%20String.replace%20with%20regex&amp;related=&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Ffrontend-tech%2Fjavascript-string-replace-with-regex%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://www.shinstudio.com/blog/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>I often use String.replace in JavaScript whenever I have to use JavaScript. Today was the day that I ended up with using it for my work. I know that String.replace supports regular expression to match your string, but I was not clear if I could use &#8220;capturing groups&#8221; and &#8220;quantifiers&#8221;. As I guessed, I was able to use quantifiers in the replace string like the sample below:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">    <span style="color: #003366; font-weight: bold;">var</span> link_template <span style="color: #339933;">=</span> <span style="color: #3366CC;">'&lt;ol&gt;<span style="color: #000099; font-weight: bold;">\</span>
        &lt;li&gt;&lt;label&gt;Link 1 Title:&lt;/label&gt;&lt;input class=&quot;text&quot; id=&quot;relLink1title&quot; name=&quot;relLink{1}title&quot; value=&quot;&quot; /&gt;&lt;/li&gt;<span style="color: #000099; font-weight: bold;">\</span>
        &lt;li&gt;&lt;label&gt;Link 1 URL:&lt;/label&gt;&lt;input class=&quot;text&quot; id=&quot;relLink1url&quot; name=&quot;relLink{1}url&quot; value=&quot;&quot; /&gt;&lt;/li&gt;<span style="color: #000099; font-weight: bold;">\</span>
        &lt;li&gt;&lt;label&gt;Link 1 Img URL:&lt;/label&gt;&lt;input class=&quot;text&quot; id=&quot;rellink1imgurl&quot; name=&quot;rellink{1}imgurl&quot; value=&quot;&quot; /&gt;&lt;/li&gt;<span style="color: #000099; font-weight: bold;">\</span>
        &lt;li class=&quot;btn&quot;&gt;&lt;span&gt;&lt;a href=&quot;#&quot; class=&quot;new-related-link&quot;&gt;Add a New Link&lt;/a&gt; | &lt;a href=&quot;#&quot; class=&quot;remove-related-link&quot;&gt;Remove&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;<span style="color: #000099; font-weight: bold;">\</span>
        &lt;/ol&gt;'</span><span style="color: #339933;">;</span>
&nbsp;
    link_template <span style="color: #339933;">=</span> link_template.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/(&lt;label&gt;.*?)(\d)(.*?&lt;\/label&gt;)/im</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'$1 2 $2'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.shinstudio.com/blog/frontend-tech/javascript-string-replace-with-regex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initial Page Load &#8211; FE Performance Tuning</title>
		<link>http://www.shinstudio.com/blog/frontend-tech/initial-page-load-fe-performance-tuning/</link>
		<comments>http://www.shinstudio.com/blog/frontend-tech/initial-page-load-fe-performance-tuning/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 01:35:39 +0000</pubDate>
		<dc:creator>sh.kim</dc:creator>
				<category><![CDATA[Frontend Tech]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[deferloading]]></category>
		<category><![CDATA[frontend]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.shinstudio.com/blog/?p=375</guid>
		<description><![CDATA[Tweet1. Introduction Why is the site performance so important? The poor site performance impacts company&#8217;s revenue and user&#8217;s engagement. Shopzila: 5 seconds speed up resulted in a 25% increase in page views, 10% increase in revenue, a 50% reduction in hardware, and a 120% increase traffic from Google. Amazon: every 100ms of latency cost them [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton375" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Ffrontend-tech%2Finitial-page-load-fe-performance-tuning%2F&amp;text=Initial%20Page%20Load%20%26%238211%3B%20FE%20Performance%20Tuning&amp;related=&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Ffrontend-tech%2Finitial-page-load-fe-performance-tuning%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://www.shinstudio.com/blog/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p><strong>1. Introduction</strong></p>
<p>Why is the site performance so important? The poor site performance impacts company&#8217;s revenue and user&#8217;s engagement.</p>
<ul>
<li>Shopzila: 5 seconds speed up resulted in a 25% increase in page views, 10% increase in revenue, a 50% reduction in hardware, and a 120% increase traffic from Google.</li>
<li>Amazon: every 100ms of latency cost them 1% in sales</li>
<li>google: extra .5 seconds in search page generation time dropped traffic by 20%</li>
<li>a broker could lose $4 million in revenues per millisecond if their electronic trading platform is 5 milliseconds behind the competition.</li>
<li>facebook: regardless of site speed, users spend around the same amount of time on facebook, which means if the site is running slowly users are going to be seeing fewer pages in the same amount of time.</li>
</ul>
<p>So the conclusion is that fast site is better. </p>
<p><span id="more-375"></span><br />
<strong>2. Site performance is Latency experienced by users</strong></p>
<p>It&#8217;s measured from a guest request to the presentation of the page at the browser. There are many factors that contribute to the site performance. Facebook has defined 3 factors and those are:</p>
<ul>
<li>network transfer time &#8211; time from the user&#8217;s browser to the server.</li>
<li>server generation time &#8211; time spent on the server</li>
<li>client render time &#8211; time the browser spends on parsing the HTML, loading JavaScript/css/images and rendering contents.</li>
</ul>
<p>80-90% of the end-user response time is spent on the frontend according to <a href="http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it">Todd hoff</a>. Therefore, it is a logical decision that it is better to focus on the frontend before jumping into other areas for the site performance.</p>
<p>(Site benchmark is also important, When the site cannot serve as many guests as it should, FE optimization won&#8217;t matter.)</p>
<p><strong>3. Page Speed &#038; YSlow Tips</strong></p>
<p>We have heard about them so many times already and are well aware of those tips. However, few tips from Page speed are worthy to look at.</p>
<p><strong>3.1 Optimize the order of styles and scripts</strong></p>
<blockquote><p>
Many browsers block the downloading of resources referenced in the document after scripts until those scripts are downloaded and executed. On the other hand, if other files are already in the process of being downloaded when a JS file is referenced, the JS file is downloaded in parallel with them</p></blockquote>
<p>The recommendations from google Page Speed are :</p>
<ol>
<li>Put external scripts after external stylesheets if possible</li>
<li>Put inline scripts after other resources if possible.</li>
</ol>
<p>For more details, go to the source link specified in the section.</p>
<p>Source: <a href="http://code.google.com/speed/page-speed/docs/rtt.html#PutStylesBeforeScripts">http://code.google.com/speed/page-speed/docs/rtt.html#PutStylesBeforeScripts</a></p>
<p><strong>3.2 Defer Loading of JavaScript</strong></p>
<blockquote><p>    Deferring loading of JavaScript functions that are not called at startup reduces the initial download size, allowing other resources to be downloaded in parallel, and speeding up execution and rendering time.</p>
<p>Source: <a href="http://code.google.com/speed/page-speed/docs/payload.html#DeferLoadingJS">http://code.google.com/speed/page-speed/docs/payload.html#DeferLoadingJS</a></p></blockquote>
<p>Defer loading of JavaScript has been one of my focuses for the site performance in fact.</p>
<p><strong>4. Focus on the viewable area</strong></p>
<p>[diagram here]</p>
<p>It&#8217;s recommended to focus on the portion of the page that guests see first as they come to the site. This concept is very similar to the news feed on the facebook home page. 15 stories are loaded at first as the initial load. After that, additional 15 stories appear as user scrolls down.</p>
<blockquote><p>What Yang found, however, is that when people do scroll beyond the initial 15 stories they&#8217;re shown, they&#8217;re <strong>happy to wait the extra second or two</strong> for 30 new stories to load, which results in a significant boost in engagement.</p></blockquote>
<p><strong>5. Deferload everything if possible</strong></p>
<p>According to the research done by clicktale blog :</p>
<blockquote>
<ul>
<li>between 64% to 68% of the page views are likely to reach the 1k pixel line and 15% to 20% will reach the bottom of the page.</li>
<li>Below 540 pixels, both visitor attention and page exposure decline exponentially.</li>
<li>The most valuable web page real-estate is located near the page top, between 0 and 800 pixels. Visitor attention and page exposure peak at about the 540 pixel-line.</li>
</ul>
</blockquote>
<p>That could translate into this: the page components below the viewport are <strong>not</strong> likely to be downloaded for <strong>32%</strong> to <strong>36%</strong> of users if the defer loading technique were implemented. If the entire page&#8217;s file size were <strong>200KB</strong> and then file size of the page components (mainly images and flash media file) out of viewport were 50KB, our target size for the initial load would be <strong>150KB</strong> (potentially 33% less download for users). Although there might be guests that scroll down to all the way bottom, there are guests that click away from the first screen.</p>
<p>Source: <a href="http://blog.clicktale.com/2007/10/05/clicktale-scrolling-research-report-v20-part-1-visibility-and-scroll-reach/ &#038; http://blog.clicktale.com/2007/12/04/clicktale-scrolling-research-report-v20-part-2-visitor-attention-and-web-page-exposure/">http://blog.clicktale.com/2007/10/05/clicktale-scrolling-research-report-v20-part-1-visibility-and-scroll-reach/ &#038; http://blog.clicktale.com/2007/12/04/clicktale-scrolling-research-report-v20-part-2-visitor-attention-and-web-page-exposure/</a>
</p></blockquote>
<p>References</p>
<ul>
<li><a href="http://www.slideshare.net/gemstonesystems/true-cost-of-latency">http://www.slideshare.net/gemstonesystems/true-cost-of-latency</a></li>
<li><a href="http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it">http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it</a></li>
<li><a href="http://www.techcrunch.com/2009/08/30/a-look-behind-the-curtain-at-facebooks-optimization-efforts/">http://www.techcrunch.com/2009/08/30/a-look-behind-the-curtain-at-facebooks-optimization-efforts/</a></li>
<li><a href="http://code.google.com/speed/page-speed/docs/rtt.html">http://code.google.com/speed/page-speed/docs/rtt.html</a></li>
<li><a href="http://en.oreilly.com/velocity2009/public/schedule/detail/7611">http://en.oreilly.com/velocity2009/public/schedule/detail/7611</a></li>
</ul>
<p>- More To Come -</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shinstudio.com/blog/frontend-tech/initial-page-load-fe-performance-tuning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript Debugging in Internet Explorer</title>
		<link>http://www.shinstudio.com/blog/frontend-tech/javascript-debugging-in-internet-explorer/</link>
		<comments>http://www.shinstudio.com/blog/frontend-tech/javascript-debugging-in-internet-explorer/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 16:59:34 +0000</pubDate>
		<dc:creator>sh.kim</dc:creator>
				<category><![CDATA[Frontend Tech]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.shinstudio.com/blog/uncategorized/javascript-debugging-in-internet-explorer/</guid>
		<description><![CDATA[TweetThis is to bookmark to an article on how to debug JS in Internet Explorer. Check out how]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton373" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Ffrontend-tech%2Fjavascript-debugging-in-internet-explorer%2F&amp;text=JavaScript%20Debugging%20in%20Internet%20Explorer&amp;related=&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Ffrontend-tech%2Fjavascript-debugging-in-internet-explorer%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://www.shinstudio.com/blog/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>This is to bookmark to an article on how to debug JS in Internet Explorer. </p>
<p><a href="http://www.ajaxonomy.com/2008/tutorials/javascript-debugging-in-internet-explorer">Check out how</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.shinstudio.com/blog/frontend-tech/javascript-debugging-in-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>geolocation in Firefox 3.5</title>
		<link>http://www.shinstudio.com/blog/frontend-tech/geolocation-in-firefox-3-5/</link>
		<comments>http://www.shinstudio.com/blog/frontend-tech/geolocation-in-firefox-3-5/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 20:40:18 +0000</pubDate>
		<dc:creator>sh.kim</dc:creator>
				<category><![CDATA[Frontend Tech]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.shinstudio.com/blog/?p=354</guid>
		<description><![CDATA[TweetI came crossed geolocation feature that was introduced in Firefox 3.5. That is very neat functionality that marketings will love for targeted ads. And also for web developer/engineers, it&#8217;s something that we can customize the web content based on the users&#8217; location. It used to require somewhat complex process to get (not technology side tho) [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton354" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Ffrontend-tech%2Fgeolocation-in-firefox-3-5%2F&amp;text=geolocation%20in%20Firefox%203.5&amp;related=&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Ffrontend-tech%2Fgeolocation-in-firefox-3-5%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://www.shinstudio.com/blog/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>I came crossed geolocation feature that was introduced in Firefox 3.5. That is very neat functionality that marketings will love for targeted ads. And also for web developer/engineers, it&#8217;s something that we can customize the web content based on the users&#8217; location. </p>
<p>It used to require somewhat complex process to get (not technology side tho) the information.</p>
<p>Anyways, in this <a href="http://hacks.mozilla.org/2009/06/geolocation/">link</a> you get to see how to access the core API for.</p>
<p>And then here&#8217;s the properties of position object:</p>
<ul>
<li>QueryInterface</li>
<li>coords : xpconnect wrapped</li>
<li>timestamp</li>
<li>getInterfaces</li>
<li>getHelperForLanguage</li>
<li>contractID</li>
<li>classDescription : wifi geo location position object</li>
<li>classID</li>
<li>implementationLanguage</li>
<li>flags : 8</li>
<li>SINGLETON : 1</li>
<li>THREADSAFE : 2</li>
<li>MAIN_THREAD_ONLY : 4</li>
<li>DOM_OBJECT : 8</li>
<li>PLUGIN_OBJECT : 16</li>
<li>EAGER_CLASSINFO : 32</li>
<li>CONTENT_NODE : 64</li>
<li>RESERVED</li>
</ul>
<p>And interestingly position.coords has some unique properties:</p>
<ul>
<li>QueryInterface</li>
<li>latitude</li>
<li>longitude</li>
<li>altitude</li>
<li>accuracy</li>
<li>altitudeAccuracy</li>
<li>heading</li>
<li><strong>speed</strong></li>
</ul>
<p>As you can see it has speed property. So in theory, with the available properties you can make GPS system on the web. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.shinstudio.com/blog/frontend-tech/geolocation-in-firefox-3-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use cache technologies to improve performance of your site.</title>
		<link>http://www.shinstudio.com/blog/backend-tech/use-cache-technologies-to-improve-performance-of-your-site/</link>
		<comments>http://www.shinstudio.com/blog/backend-tech/use-cache-technologies-to-improve-performance-of-your-site/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 08:53:14 +0000</pubDate>
		<dc:creator>sh.kim</dc:creator>
				<category><![CDATA[Backend Tech]]></category>
		<category><![CDATA[Frontend Tech]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[module level cache]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[squid-cache]]></category>
		<category><![CDATA[view level cache]]></category>

		<guid isPermaLink="false">http://www.shinstudio.com/blog/?p=309</guid>
		<description><![CDATA[As the number of users grow, is it necessary to increase the number of servers? Well. The answer to the question really depends. Some might say to buy more hardware to support increasing visits. Some might say before buying more hardware, tune up your software by optimizing the code and squeeze any power out of the box. But in this post, I'm not going to discuss software tune ups.]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton309" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Fbackend-tech%2Fuse-cache-technologies-to-improve-performance-of-your-site%2F&amp;text=Use%20cache%20technologies%20to%20improve%20performance%20of%20your%20site.&amp;related=&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Fwww.shinstudio.com%2Fblog%2Fbackend-tech%2Fuse-cache-technologies-to-improve-performance-of-your-site%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://www.shinstudio.com/blog/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>As the number of users grow, is it necessary to increase the number of servers? Well. The answer to the question really depends. Some might say to buy more hardware to support increasing visits. Some might say before buying more hardware, tune up your software by optimizing the code and squeeze any power out of the box. But in this post, I&#8217;m not going to discuss software tune ups.</p>
<p>I&#8217;m going to talk about cache technologies.</p>
<p><strong>cache layer</strong><br />
I&#8217;d like to start with the concept of proxy layer. What proxy layer provides is a memory storage between frontend(FE) layer and API layer. So that the actual requests made from users do not overload API server; thus, the site performs much better. Proxy server would store returned XML data from API and when the same API request was made from FE, proxy would return the same data stored in the memory to FE removing extra calls to API. Frontend layer is a typical HTTP server while API layer is a data layer. Usually this technique is used in multi tier architecture. This is usual 3 tier architecture.</p>
<pre>
DB -> API -> FE
</pre>
<p>When we introduce proxy layer to it, 3 tier architecture becomes this:</p>
<pre>
DB -> API -> Proxy -> FE
</pre>
<p>As you can see, the major advantages of Proxy layer are:</p>
<ol>
<li>It is very fast since it accesses memory instead of hard disc</li>
<li>It reduces overhead to one layer dramatically</li>
<li>It delivers content really quickly</li>
<li>It improves response time(better roundtrip numbers)</li>
<li>It provides better usability to users as content is delivered a lot faster</li>
<li>It can hold old data for specified time in case database blows</li>
</ol>
<p>It just has all good things. <img src='http://www.shinstudio.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Commonly used cache technology for the cache layer is <a href="http://www.squid-cache.org/">squid cache</a>. If your organization&#8217;s web site is getting popular and needs performance tune up, it may be a good idea to invest some time and money to implement cache layer.</p>
<p>As I covered cache layer, let&#8217;s move to view level cache.</p>
<p><strong>View Level Cache</strong><br />
View Level Cache is a cache technique to store your HTML markup output into memory or harddisc. This could be a whole markup for the page, markup for a partial page, or markup for several parts of the page. As the term implies the view level cache occurs on the frontend layer. Also there is another term, <strong>Module Level Cache</strong> referring to View Level Cache. For example, in my blog there are several sections in the page. Those are links, archives, and so on. Each section is a module and the final markup of those modules can be cached for 5 mins to how many minutes you like.</p>
<p><strong>What&#8217;s so good about View Level Cache(Module Level Cache)</strong><br />
As I explained in the previous paragraph, it stores the final markup of a module. Which means you can reduce cpu load, which would have used to generate that module for the time you specified. That means also it does not have to make several requests to database like MySQL. So when your site got hit by dig users or reditt users, View Level Cache would&#8217;ve helped to ease heavy traffic much.</p>
<p><strong>View Level Cache technologies</strong><br />
If you are using php, the common technology for the view level cache is <a href="http://us3.php.net/apc">APC</a>. The usage of APC is relatively easy. In php, another technique you can use is a file cache. And heavy traffic&#8217;ed sites also use <a href="http://www.danga.com/memcached/">memcached</a>, which is a distributed memory object caching system. I am not going to show how to use each technology in this post as each topic deserves its own post. <img src='http://www.shinstudio.com/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p><strong>Do not cache all by accident</strong><br />
When you apply cache layer to your Frontend, be warned that caching all content is bad usually, specially if your site is dynamic. You do not want to cache user A&#8217;s name and display it when user B, C, and D visits your site. Also if one of your pages needs user specific data in a form tag with hidden input field and somewhat you caches it, the next visitor to your site will use the same data from the previous visitor, which is bad. See where I am going with this? So it will be nice if you can communicate with visual designer so that she can visually distinguish what can be cached and what not.</p>
<p><strong>Results out of cache</strong><br />
The site that has implemented cache technique well could support 200 to 300 hits per second. That translates to 12000 to 18000 hits per second. I know this from my experience. You do not need a lot of servers to support 200 hits/sec site. All you need is one FE box if your site has 200 hits/sec.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shinstudio.com/blog/backend-tech/use-cache-technologies-to-improve-performance-of-your-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

