<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://dotnetslackers.com/Community/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>DotNetSlackers Community</title><link>http://dotnetslackers.com/Community/blogs/</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2007.1 SP1 (Build: 30415.43)</generator><item><title>Back to blogging, but I moved</title><link>http://dotnetslackers.com/Community/blogs/simoneb/archive/2011/11/28/back-to-blogging-but-i-moved.aspx</link><pubDate>Sun, 27 Nov 2011 22:50:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37336</guid><dc:creator>simoneb</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I haven&amp;#39;t been blogging for quite some time now, but I&amp;#39;m back to blogging at &lt;a href="http://simonebu.posterous.com"&gt;simonebu.posterous.com&lt;/a&gt;. There have been many changes in my professional life so the new topics I&amp;#39;ll be blogging about may or may not be of interest, although I&amp;#39;d appreciate if you took the time to read through them!&lt;/p&gt;
&lt;p&gt;There&amp;#39;s a new rss feed, but for those who were following me already I will be pointing the current feed to the new one soon, so you don&amp;#39;t need to change anything in your subscription. For those who weren&amp;#39;t following me the new feed to subscribe is &lt;a href="http://feeds.feedburner.com/simonebu"&gt;this one&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37336" width="1" height="1"&gt;</description></item><item><title>The (probably) never  ending war of Chrome, FireFox, and IE</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/11/03/the-probably-never-ending-war-of-chrome-firefox-and-ie.aspx</link><pubDate>Thu, 03 Nov 2011 18:34:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37326</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;
Something interesting happened in October (yeh, stocks have been doing comparatively great): IE&amp;#39;s share in global desktop browser usages has dropped to a 
perilous 52%. This, combined with its barely there mobile browser usage, brings its overall share below the 50% percentage mark.&amp;nbsp;&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;p&gt;&lt;img style="width:250px;" src="http://dotnetslackers.com/Community/blogs/xun/blog/Nov2011/chrome-vs-ie.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href="http://www.frelia.com/2010/03/google-chrome-will-pay-ie-and-firefox.html"&gt;www.frelia.com&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
With interesting data invariably comes incessant probe of why. 
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why so?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
Some analysis pointed out the &lt;strong&gt;geek factor&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;The tech community has abandoned IE in droves ever since they found the delicious toy of Firefox, which is dynamic 
and cool, decidely tech friendly and fast and active in development. It started the trend of multiple tabs, a wonderful array of extensions. It gives programmers Firebugs; Chrome joined the 
browser war in 2008, soon afterwards, tech people was attracted to it by its minimal interfaces and fast and smooth performance. Chrome came in late yet learn 
fast. It soon offered a wealth of tools and even more faster development cycle. 
I believe in no time, Chrome would reach 100 or Google (1 followed by 100 :)). Chrome 
also upended the browser game by building its V8 engine that fueled the Javascript engine speed war, throwing in its own script langauge.  
&lt;/p&gt;
&lt;p&gt;
More analysis dived into the browsers&amp;#39; differences in &lt;strong&gt;speed&lt;/strong&gt;, &lt;strong&gt;interface&lt;/strong&gt;, &lt;strong&gt;support for standards (ie., html5 and css3)&lt;/strong&gt;, 
&lt;strong&gt;privacy and security and Extensions&lt;/strong&gt;.   
&lt;/p&gt;
&lt;p&gt;
In short, there is convergence among the browsers towards speedier, cleaner, more secure, and more customizable browsers. 
Surprise! With competition so fierce and stake so high, the best wins!
&lt;/p&gt;
&lt;p&gt;
Speed-wise, Firefox and IE have greatly improved their speed so much so that Chrome actually is currently losing in
this battle.
&lt;/p&gt;
&lt;p&gt;
Interface-wise, Chorme started the minimumistic approach, Firefox and IE are taking notes. This minimum approach is actually catching fire in interface design.
Google started it with its barebone google search, Facebook&amp;#39;s home page also has the clean blue. Chrome, FireFox and IE also took great effor to allow tabs 
be informative yet non-obtusive, draggable and dockable. Work like a great app. 
&lt;/p&gt;
&lt;p&gt;
In terms of standards support, in the tech community, IE is always the object of ridicule. In support of HTML5 features, IE has been falling behind.
&lt;/p&gt;
&lt;p&gt;
In extension offering, FireFox leads the way. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;
Under the hood - JavaScript Engines
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
JavaScript is currently the most important language. This in no small part is due to the quick rise and improvement of JavaScript engines, which in turn has made
this browser war so intense and so interesting and so beneficial to all of us internet users. 
&lt;/p&gt;
&lt;p&gt;
The engine behind Chrome is V8 javascript engine. Copy Wikipedia here:
&lt;/p&gt;
&lt;p class="quote"&gt;
&amp;quot;V8 increases performance by compiling JavaScript to native machine code before executing it, rather than to execute bytecode or interpreting it. Further performance increases are achieved by employing optimization techniques such as inline caching. With these features, JavaScript applications running within V8 are said to have an effective speed comparable to a compiled binary.&amp;quot;
&lt;/p&gt;
&lt;p&gt;
Firefox has a rapid evolution line of JavaScript engine, started with Rhino, the very grandpa figure started at Netscape in 1997. After that, there are &amp;quot;monkeys&amp;quot; with mostly funny names: SpdierMonkey, 
TraceMonkey, JagerMonkey, IonMoney, then tamarin. 
&lt;/p&gt;
&lt;p&gt;
IE did not have any serious JavaScript engine until IE 9. Before that (IE 8 and earlier) it uses a script interpreter for running JavaScript. Now with IE 9 JavaScript engine, 
it provides features such as JavaScript background compliation and library optimization.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;
Parting words
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
So, in the global browser competition for more market share,  
IE is in steady decline yet still dominate the scene, 
FireFox is barely holding its ground, Chrome is rapidly rising. Still nothing is certain other than that the more they compete, the more we demand, 
the greater good will come out of it. Also, we, programmers, time to work harder to meet up the challenge. 
&lt;/p&gt;
&lt;div class="footerSource"&gt;
&lt;p class="title"&gt;Source:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://en.wikipedia.org/wiki/JavaScript_engine"&gt;Wikipedia: JavaScript Engine&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blogs.msdn.com/b/ie/archive/2010/03/18/the-new-javascript-engine-in-internet-explorer-9.aspx"&gt;The New JavaScript Engine in Internet Explorer 9&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.webmonkey.com/2011/11/the-end-of-an-era-internet-explorer-drops-below-50-percent-of-web-usage/"&gt;The End of an Era: Internet Explorer Drops Below 50 Percent of Web Usage&lt;/a&gt; &lt;br /&gt;
&lt;a href="http://www.webmonkey.com/2011/11/the-end-of-an-era-internet-explorer-drops-below-50-percent-of-web-usage/"&gt;The End of an Era: Internet Explorer Drops Below 50 Percent of Web Usage&lt;/a&gt; &lt;br /&gt;
&lt;a href="http://www.pcmag.com/article2/0,2817,2382122,00.asp#fbid=coiJhG1Cozw"&gt;Chrome 10, Firefox 4.0, or IE9? The Browser Choice&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37326" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/browser+war/default.aspx">browser war</category></item><item><title>Node.js, what is that?</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/26/node-js-what-is-that.aspx</link><pubDate>Wed, 26 Oct 2011 18:30:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37321</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Node.js is just about the hottest new language on the horizon. It also has some puzzling catch-phrase such as &amp;quot;JavaScript on the server side&amp;quot;. 
It is so hot and so puzzling that I am compelled to commit one hour to watch the video sit on the home page of Node.js web site.
&lt;/p&gt;
&lt;p&gt;
One hour video is long by any standard, but the presentation guy and Node.js creator Ryan Dahl breezed it through without one single slide. 
&lt;/p&gt;
&lt;p&gt;
He joked, he coded and typed command lines, he demoed a crappy chat program written in about 5 lines using Node.js. 
(Ouch, this tech world was and still is dominated by wiz kids, almost chrismatic, not a bit nerdy.)
&lt;/p&gt;
&lt;p&gt;
 
However I was still confused even after the one-hour video. What the heck is Node.js? Why on earth we have to create our own servers?
&lt;/p&gt;
&lt;p&gt;
The statement in big font after the video does not seem to help much. As the following it goes: 
&lt;/p&gt;
&lt;p&gt;
&amp;quot;Node&amp;#39;s goal is to provide an easy way to build scalable network programs. 
... Node tells the operating system (through epoll, kqueue, /dev/poll, or select) 
that it should be notified when a new connection is made, and then it goes to sleep. 
If someone new connects, then it executes the callback. Each connection is only a small heap allocation.&amp;quot;
&lt;/p&gt;
&lt;p&gt;
??? 
&lt;/p&gt;
&lt;p&gt;
Searching around, I found quite a lot of examples where cool guys flaunting their cool code, however little clear explanations. 
&lt;/p&gt;
&lt;p&gt;
Searching more, I found quite a lot of insights and analysis, predications and dismissions. 
A testimony of how Node.js has caught the short attention span of the highly excitable yet unforgiving tech community.
&lt;/p&gt;
&lt;p&gt;
 
Eventually, I came to my senses (at least I think) what Node.js does, what makes it special.
&lt;/p&gt;
&lt;p&gt;

1. Node.js handle things asynchronously. The word &amp;quot;asynchronous&amp;quot; has been a sort of cliche. The big A in AJAX, for example, stands for &amp;quot;Asynchronous&amp;quot;. However, the asyc part of AJAX comes from
the client side, in that client (a browser) sends requests to server and still serves the page while waiting for the server to come back for a response. The server
process requests one at a time. To handle multiple requests, it spurns multiple threads. 
&lt;/p&gt;
&lt;p&gt;
When requests fly fast and numerous and from everywhere, the thread model falls short. Node.js tries to overcome the challenge by providing true asynchornousity. 
Instead of spawning a new OS thread for each request, Node.js uses one thread. The thread stays idle, however springs to action on events. On each event, the thread takes note, tasks it to one or more processes, then 
on with another request.
&lt;/p&gt;
&lt;p&gt;
2. Node.js uses an event-driven model. Event-driven is also a cliche, however Node.js gives it some new substance. 
Best illustrated the point is the article that uses The Doctor&amp;rsquo;s Office Reception Line Analogy and 
fast food The Fast Food Restaurant Analogy. Node.js event-driven model is also closely tied with its async feature. Node.js does not allow blocking I/O, that is, it never stops and waits for I/O.
&lt;/p&gt;
&lt;p&gt;

3. Node.js is server side javascript. Sort of. It adopts the syntax and event-driven concept of client side JavaScript, and strives to 
run &amp;quot;the same script&amp;quot; on both client and server side. However Node is not JavaScript, it is actully written in C, and it runs from command line in 
unix environment (support for windows is supposedly coming. There has not been a sincere effort). The underlying engine for Node.js is the V8 javascript engine (the 
same one that runs Google chrome).
&lt;/p&gt;
&lt;p&gt;

4. Node.js is still very new, therefore it has a lot of forseen and unforseen potentials and pitfalls. For one, Node.js is still a very geeky, barebone creature, its library needs to be greatly 
fleshed out to become a framework of sophistication, upon which developers can readily develop rich web applications. Despite all the buzz and excitement surrounding Node.js, there still lacks high profile 
web applications built with Node.js. 
&lt;/p&gt;
&lt;p&gt;
5. Node is meant for something, but not everything. It is meant for fast and frequent web communications, it is not meant for heavy-duty data access and computation.
&lt;/p&gt;
&lt;p class="quote"&gt;
&amp;quot;Node has changed our mental image of what a server can be. It doesn&amp;#39;t have to be running on a high-performance blade in an air-conditioned co-lo serving millions of requests and gigabytes of data. 
It can be in your pocket synchronizing your contacts whenever it finds Wi-Fi. It can be caching a web application for faster, local access. It can be a peer-to-peer web server. And it can be a number of things we haven&amp;#39;t even thought of yet. &amp;quot;
&lt;/p&gt;
&lt;p class="source"&gt;
&lt;a href="http://radar.oreilly.com/2011/06/node-javascript-success.html"&gt;
The secrets of Node&amp;#39;s success&lt;/a&gt;
&lt;/p&gt;
&lt;div class="footerSource"&gt;
&lt;p class="title"&gt;Source:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://radar.oreilly.com/2011/06/node-javascript-success.html"&gt;
The secrets of Node&amp;#39;s success&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://www.ibm.com/developerworks/opensource/library/os-nodejs/index.html"&gt;Just what is Node.js?&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://nodejs.org/"&gt;Node.js&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37321" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/node.js/default.aspx">node.js</category></item><item><title>CSS Lint, harmful or useful? </title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/24/css-lint-harmful-or-useful.aspx</link><pubDate>Mon, 24 Oct 2011 15:35:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37317</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;
While they say closed garden is the lending trend in internet, to me, the internet still feels like an ever expanding infinite loop, or maze. 
Like a little kid, I really start out just to search for a shiny pebble, I end up going far and away and lost. I end up with a pocket full of things I am excited and confused about.
&lt;/p&gt;
&lt;p&gt;
Finding &lt;a href="http://csslint.net"&gt;css lint&lt;/a&gt; is like that. I was looking for some basic css truth, then along the way I read a dozen of other articles, css related or not. 
Then I stumbled into css lint. So I copied and pasted from my reportoire of css files, linted it. Wow, it threw up a vocano of warnings at me. 
&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;p&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/Oct2011/csslint.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Source: Screen Shot of CSS lint of my css&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
Interesting.  I scanned through them. 
&lt;/p&gt;
&lt;p&gt;
&amp;quot;Values of 0 shouldn&amp;#39;t have units specified&amp;quot;; &amp;quot;Broken box model: using height with padding&amp;quot;; &amp;quot;Rule is empty&amp;quot; ...
&lt;/p&gt;
&lt;p&gt;
Make sense, I was thinking, almost delighted. Wow, this could be my css &amp;quot;spell-check&amp;quot;. 
&lt;/p&gt;
&lt;p&gt;
Then I was confused by other rules. &amp;quot;Don&amp;#39;t using adjoining classes&amp;quot;,  &amp;quot;Don&amp;rsquo;t use IDs in selectors&amp;quot;. 
&lt;/p&gt;
&lt;p&gt;
Really? What is wrong with using IDs in selectors?
&lt;/p&gt;
&lt;p&gt;
A little search quickly led me to this highly provocative article &lt;a href="http://mattwilcox.net/archive/entry/id/1054/"&gt;CSS  Lint is harmful&lt;/a&gt;, followed by fifty or so comments, mostly of them is 
a bit spiteful in tone. 
&lt;/p&gt;
&lt;p&gt;
So What are the CSS lint rules? 
&lt;/p&gt;
&lt;ul class="quote"&gt;
&lt;li&gt;Parsing errors should be fixed&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t use adjoining classes&lt;/li&gt;
&lt;li&gt;Remove empty rules&lt;/li&gt;
&lt;li&gt;Use correct properties for a display&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t use too many floats&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t use too many web fonts&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t use too may font-size declarations&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t use IDs in selectors&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t qualify headings&lt;/li&gt;
&lt;li&gt;Heading elements should have a consistent appearance across a site.&lt;/li&gt;
&lt;li&gt;Heading styles should only be defined once&lt;/li&gt;
&lt;li&gt;Be careful using width: 100%&lt;/li&gt;
&lt;li&gt;Zero values don&amp;rsquo;t need units&lt;/li&gt;
&lt;li&gt;Vendor prefixed properties should also have the standard&lt;/li&gt;
&lt;li&gt;CSS gradients require all browser prefixes&lt;/li&gt;
&lt;li&gt;Avoid selectors that look like regular expressions&lt;/li&gt;
&lt;li&gt;Beware of broken box models&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="source"&gt; Source: 
&lt;a href="http://www.nczonline.net/blog/2011/06/15/introducing-css-lint-2/"&gt; Introducing CSS Lint&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Among them, the most attacked is the rule of &amp;quot;Don&amp;rsquo;t use IDs in selectors&amp;quot;. 
&lt;/p&gt;
&lt;p class="quote"&gt;
&amp;quot;To suggest that you never use ID&amp;rsquo;s is simply throwing the baby out along with the dirty bath water. ID&amp;rsquo;s are extremely useful and you absolutely should use them. They are the fastest way a browser can select a given element. They are useful for in-page anchoring and if they&amp;rsquo;re already there in the markup then use them as style hooks. They are also, oddly enough, perfectly correct to use as long as they&amp;rsquo;re only ever one instance of that ID on any given page.&amp;quot;&lt;/p&gt;
&lt;p class="source"&gt;
Source: &lt;a href="http://mattwilcox.net/archive/entry/id/1054/"&gt;CSS Lint is harmful&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
On with my search. I found a lot of people have dismissed this rule. As it is with almost everything, never say never. Reasons are probably: 1) it has been a common practice; 2) ID by definition is mean to be unique, therefore there is no ground for re-usability concern. And, what is the difference using ID selectors and class selectors. 
&lt;/p&gt;
&lt;p&gt;
However, there are also as many people as passionately depending the rule. Using ID selectors lead to a downward spiral into specificity; IDs are meant to be specific, yet css rules by default are meant to be abstract rules. 
&lt;/p&gt;
&lt;p&gt;
So my search got me into a heated debate as with so many aspects of the web, jQuery vs. Ext Js, Flash vs. Html5. So I decided to end my aimless wondering in this maze by 
ending the search, and take away home my rules:
&lt;/p&gt;
&lt;p&gt;
1) css lint is not all evil or good, it is a good tool for you to get your css cleaner. Yes, always true are rules such as &amp;quot;no empty rules&amp;quot;, &amp;quot;zero values need no units&amp;quot;.
&lt;/p&gt;
&lt;p&gt;
2) The &amp;quot;too many&amp;quot; rules are to your discretion. Only you should know whether there are too many fonts, too many floats. However, it is good to have a second opinion.
&lt;/p&gt;
&lt;p&gt;
3) IDs in css selectors may not be too bad, at least probably not worth your effort of going back and rewriting your pass css rules. However, when you start a new project, when you 
find yourself define a set of rules just for one unique ID, think again.
&lt;/p&gt;
&lt;div class="footerSource"&gt;
&lt;p class="title"&gt;Source:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://csslint.net"&gt;CSS Lint&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://screwlewse.com/2010/07/dont-use-id-selectors-in-css/"&gt;Don&amp;rsquo;t use ID selectors in CSS&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://mattwilcox.net/archive/entry/id/1054/"&gt;CSS Lint is harmful&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://oli.jp/2011/ids/"&gt;Don&amp;rsquo;t use IDs in CSS selectors?&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37317" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/css/default.aspx">css</category></item><item><title>2011 Internet Trends From Mary Meeker (Queen of Net)</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/21/2011-internet-trends-from-mary-meeker-the-queen-of-net.aspx</link><pubDate>Fri, 21 Oct 2011 15:51:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37286</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;
The following is from the &lt;a href="http://i3.sinaimg.cn/IT/images/2011-10-19/U58P2T78D22934F1070DT20111019203309.pdf"&gt;2011 internet trend report&lt;/a&gt; by Mary Meeker (known as &amp;quot;Queen of the Net&amp;quot;) released from Web 2.0 Summit San Francisco, CA. The report is a wealth of insights and insightful charts and graphics. 
&lt;/p&gt;
&lt;p&gt;
For all of us who are in the thick of the tech world, the time is unprecedently exciting. It is going to be even better.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;1. Globality &amp;ndash; We Aren&amp;rsquo;t In Kansas Anymore&amp;hellip;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apple, Google, Amazon.com &amp;amp; Facebook Remain Mega-Leaders; yet the majority (81%) of their users are from overseas. &lt;/li&gt;
&lt;li&gt;Chinese (&amp;amp; Russian) Companies Continue to Step Up. &amp;lt;&lt;/li&gt;
&lt;li&gt;In 3 Years, China Added More Internet Users than Exist in USA&amp;hellip; China / India / Nigeria / Russia / Iran = Biggest Adders&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;2. Mobile &amp;ndash; Early Innings Growth, Still&amp;hellip;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Breakthrough Communications Technologies / Services Can Breakout Even During Breakdown Times.&lt;/li&gt;
&lt;li&gt;Despite Tremendous Ramp So Far, Smartphone Usage Still Has Huge Upside&lt;/li&gt;
&lt;li&gt;iPods Changed Media Industry&amp;hellip; iPhones Ramped Even Faster&amp;hellip; iPad Growth Leaves &amp;ldquo;Siblings&amp;rdquo; in Dust&lt;/li&gt;
&lt;li&gt;Android &amp;lsquo;Phone&amp;rsquo; Adoption Has Ramped Even Faster than iPhone&lt;/li&gt;
&lt;li&gt;Two Horse Races in Smartphones &amp;amp; Tablets, So Far&lt;/li&gt;
&lt;li&gt;Mobile Usage, search and advertising all ramping up quickly in all geographies. &lt;/li&gt;
&lt;div class="figure"&gt;
&lt;p&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/Oct2011/hierarchy%20of%20needs.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href="http://i3.sinaimg.cn/IT/images/2011-10-19/U58P2T78D22934F1070DT20111019203309.pdf"&gt;Hierarchy of Needs Revisited&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;3. User Interface &amp;ndash; Text -&amp;gt; Graphical -&amp;gt; Touch / Sound / Move&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Before Steve Jobs, computers were utilitarian tools for computation; After Jobs, computers became beautiful objects we could use in thousands of ways to aim to make life better.
&lt;/li&gt;
&lt;li&gt;Natural User Interface Revolution &amp;ndash; Now in Touch / Sound / Move Era&lt;/li&gt;
&lt;li&gt;The Next Big Thing(s)? Those Two Big Things on the Sides of Your Head&amp;hellip; Everything merges toward audio
&lt;div class="figure"&gt;
&lt;p&gt;&lt;img width="475" src="http://dotnetslackers.com/Community/blogs/xun/blog/Oct2011/onlineaudio.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href="http://i3.sinaimg.cn/IT/images/2011-10-19/U58P2T78D22934F1070DT20111019203309.pdf"&gt;Online Audio&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;4. Commerce &amp;ndash; Fast / Easy / Fun / Savings = More Important Than Ever&amp;hellip; &lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;eCommerce = Four Quarters of Accelerating Growth&lt;/li&gt;
&lt;li&gt;eCommerce Continues to Gain Share from Offline&amp;hellip; at 8% Share of USA Commerce with Lots of Headroom&lt;/li&gt;
&lt;div class="figure"&gt;
&lt;p&gt;&lt;img width="475" src="http://dotnetslackers.com/Community/blogs/xun/blog/Oct2011/ecommerce.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href="http://i3.sinaimg.cn/IT/images/2011-10-19/U58P2T78D22934F1070DT20111019203309.pdf"&gt;eCommerce Accelerating Growth&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;li&gt;Old Magazine Paradigm Finally Comes Alive. Click &amp;amp; Buy (on mobile) can really empty your wallet fast&amp;hellip;
&lt;/li&gt;
&lt;li&gt;In a Mobile-ized / Transparent World, price matters&lt;/li&gt;
&lt;div class="figure"&gt;
&lt;p&gt;&lt;img width="475" src="http://dotnetslackers.com/Community/blogs/xun/blog/Oct2011/localcommerce.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href="http://i3.sinaimg.cn/IT/images/2011-10-19/U58P2T78D22934F1070DT20111019203309.pdf"&gt;Local ECommerce is spurred by mobile development&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;5. Advertising &amp;ndash; Lookin&amp;rsquo; Good&amp;hellip;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google Paid Clicks &amp;amp; Cost-Per-Click Continue to Grow Rapidly;
&lt;/li&gt;
&lt;li&gt; Time Spent on Social Networking Sites Surpassed Portals. Social Networking CPMs is 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;6. Content Creation &amp;ndash; Changed Forever&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Content Commoditization &amp;ndash; Value Shift from Creators to Aggregators
&lt;/li&gt;
&lt;div class="figure"&gt;
&lt;p&gt;&lt;img width="475" src="http://dotnetslackers.com/Community/blogs/xun/blog/Oct2011/content.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href="http://i3.sinaimg.cn/IT/images/2011-10-19/U58P2T78D22934F1070DT20111019203309.pdf"&gt;Print Down&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;7. Technology / Mobile Leadership &amp;ndash; Americans Should Be Proud&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We are Living Through a Once Every 10-20 Years Technology Evolution &amp;ndash; The Mobile Computing Cycle&amp;hellip;
&lt;/li&gt;
&lt;li&gt;&amp;lsquo;Made in USA&amp;rsquo; Smartphone Operating Systems = 64% Share from 5% Five Years Ago
&lt;/li&gt;
&lt;li&gt;
Still Early-Innings Era of Smart-Phones to Smarter-Phones
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;8. Mega-Trend of 21st Century = Empowerment of People via Connected Mobile Devices&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Global Information Flow - Real-Time + Fast + Broad
&lt;div class="figure"&gt;
&lt;p&gt;&lt;img width="475" src="http://dotnetslackers.com/Community/blogs/xun/blog/Oct2011/globalinfoflow.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href="http://i3.sinaimg.cn/IT/images/2011-10-19/U58P2T78D22934F1070DT20111019203309.pdf"&gt;16 Minutes Before / After Japan Earthquake on 3/11/11&lt;br /&gt;Snapshots of @replies From &amp;amp; To Twitter Users in Japan&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Global Information Flow &amp;ndash;
Remote Locations Getting Connected&lt;/li&gt;
&lt;li&gt;Global Economies / People =
Increasingly Connected / Co-Dependent&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;9. Authentic Identity &amp;ndash; The Good / Bad / Ugly. But Mostly Good?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;10. Economy &amp;ndash; Lots of Uncertainty&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Stock Market Volatility = 2x Historical Average&lt;/li&gt;
&lt;li&gt;
Consumer Confidence =
Well Below Historical Average&lt;/li&gt;
&lt;li&gt;
USA Corporate Capital Spending Budgets =
Being Revised Down&lt;/li&gt;
&lt;li&gt;
GDP Growth Forecasts =
Being Revised Down&lt;/li&gt;
&lt;li&gt;
Stock Markets = Often Leading Indicators of Economic Activity
Russia -33% from 52-Week High; Oil (-24%) / China (-23%) / Europe (-23%) / S&amp;amp;P500 
(-12%) / Nasdaq (-9%)
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="footerSource"&gt;
&lt;p class="title"&gt;Source:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://i3.sinaimg.cn/IT/images/2011-10-19/U58P2T78D22934F1070DT20111019203309.pdf"&gt;INTERNET TRENDS &amp;ndash; Web 2.0 Summit -San Francisco, CA - Mary Meeker (marym@kpcb.com) &amp;ndash; October 18, 2011&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37286" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/internet+trend/default.aspx">internet trend</category></item><item><title>Microsoft's Chinese problem with IE6</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/20/microsoft-s-chinese-problem-with-ie6.aspx</link><pubDate>Thu, 20 Oct 2011 16:08:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37278</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;
Microsoft got to be so very tired of IE6, the once very popular child of their browser families, so much so that they set up a count-down website dedicated to the 
sole purpose of killing it. 
&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;p&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/Oct2011/iecountdown.png" width="480px" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href="http://www.ie6countdown.com/"&gt;Microsoft IE 6 Count Down&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
Guess who is standing in the way? China. Chinese IE6 users have been trickling down, as of today it has about 28%. But 28% 
still makes a big bleeding heart in the above map. And any percentage of Chinese users can easily knock off the whole Europe or even America.
&lt;/p&gt;
&lt;p&gt;
Right now the size of Chinese internet users stand at about 500 million users, and it is still growing. And its mobile users is even growing faster, it is estimated that the 
size of mobile users will surpass pc users as early as 2013. 
&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;p&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/Oct2011/china-internet-population.png" width="400px" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href="http://www.penn-olson.com/2011/09/30/china500-million-net-users/"&gt;China Now Has Over 500 Million Net Users [CHART]&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
I can understand why the IE6 chinese users stick with IE6, because my parents are one of them. When they started gingerly with 
internet, I taught them to click the big blue E. They remembered ever since and they are afraid of making any changes, clicking on any popups
that might bring in a flood of virus. The golden name of Microsoft somehow does not help much. Also, all they wanted is just to read
their news, so why care about IE 6, or 7, or 9? 
&lt;/p&gt;
&lt;p&gt;
Ok, with that kind of mentality and the formiddable weight China carries, Microsoft has to continue its count down for at least a few years. 
&lt;/p&gt;
&lt;div class="footerSource"&gt;
&lt;p class="title"&gt;Source:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.penn-olson.com/2011/09/30/china500-million-net-users/"&gt;China Now Has Over 500 Million Net Users [CHART]&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://www.ie6countdown.com/"&gt;Microsoft IE 6 Count Down&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://www.ie6countdown.com/"&gt;Microsoft IE 6 Count Down&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://www.resonancechina.com/2011/08/03/more-chinese-netizens-access-internet-via-mobile-than-pc/"&gt;More Chinese netizens access internet via Mobile than PC&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37278" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/browser+war/default.aspx">browser war</category></item><item><title>Tips to create robust selenium tests </title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/19/tips-to-create-robust-selenium-tests.aspx</link><pubDate>Wed, 19 Oct 2011 17:49:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37271</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;
According to a survey of open source automation testing tools, Selenium is the most popular of them all. And it is getting more and more popular everyday. As a matter of fact, it is currently
the only viable test tool to test website as a whole, because it can simulate running a website as a real user would do. And one set of tests can be run across differnt browsers.
&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;p&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/Oct2011/popularity_Selenium.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Source:&lt;a href="http://www.xoriant.com/blog/software-testing-and-qa/selenium-open-source-test-automation-tool-an-overview.html"&gt;Selenium -Open Source Test Automation: An Overview&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
However browser testing is complicated, the ubiqutous injection of asynchorons AJAX only makes the situation worse. On top of its own quirkiness, 
Selenium has to deal all of the quirkiness of differnt browsers, the possible failure of http requests, etc.
&lt;/p&gt;
&lt;p&gt;
Therefore, browser simulation does come with a cost and not all users (e.g., me) are happy. Some of the biggest challenges that Selenium have now are:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Test brittleness&lt;/li&gt;
&lt;li&gt;Infrastrucuture maintenance&lt;/li&gt;
&lt;li&gt;Test run-time during&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="source"&gt;Source: &lt;a href="http://saucelabs.com/blog/index.php/2009/08/top-5-challenges-for-selenium-users-san-francisco-meetup/"&gt;Top 5 Challenges for Selenium Users (San Francisco Meetup)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
Some of the much complained test brittleness can be avoided or alleviated by using some of the tips (I learned them from the presentation at
&lt;a href="http://saucelabs.com/blog/index.php/2011/10/top-selenium-tips-from-the-sauce-codebase/"&gt;Top Selenium Tips From The Sauce Codebase&lt;/a&gt;,
who distilled the essence from the sucesses or failures 8 million tests):
&lt;/p&gt;
&lt;p&gt;
1) Use implicit waits
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;

        public IWebElement ImplicitWaitForElement(IWebDriver webDriver, String id, int timeout = 10)

        {

           

            webDriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));

            webDriver.Url = &amp;quot;http://somedomain/url_that_delays_loading&amp;quot;;

            IWebElement myDynamicElement = webDriver.FindElement(By.Id(id));



            return myDynamicElement;

        }



&lt;/code&gt;

&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
2) Use explicit the right way
&lt;/p&gt;
&lt;p&gt;
Never use static wait:
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sleep (10)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
(Why? Because a) it increases overhead, you make the webdriver wait no matter what; b) you can never predict what is the correct time interval.)
&lt;/p&gt;
&lt;p&gt;
Instead, use a condition wait
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;

  public IWebElement ExplicitWaitUntilForElement(IWebDriver webDriver, String id, int timeout = 10)

        {

            webDriver.Url = &amp;quot;http://somedomain/url_that_delays_loading&amp;quot;;

            var wait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(timeout));



            return wait.Until((d) =&amp;gt; d.FindElement(By.Id(&amp;quot;someDynamicElement&amp;quot;)));

            

        }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
or
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;

 public void WaitforElementPresent(IWebDriver webDriver, String id, int timeout = 10)

        {

            //var sw = new Stopwatch();

            //sw.Start();



           

            for (int i = 0; i&amp;lt; 60; i++)

            {

               try

                {

                    if ((webDriver.FindElement(By.Id(id)).Enabled) == true)

                        break;

                    

                   Thread.Sleep(1);

                }



                catch (Exception)

                {

                    // Continue the loop, though it may throw an exception at first

                }

            }

            

        }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So the methods above instruct the web driver within a limited time range for an element to appear before giving up and report the error. 
&lt;/p&gt;
&lt;p&gt;
3) Create a magic login method
&lt;/p&gt;
&lt;p&gt;
In a lot of selenium test cases, we call the same login method again to gain the entry to another password protected pages. Doing so has quite some drawbacks: a) Login failure will invariably cause the failure of the other tests;
b) Overhead. If a login method takes, say 10 secs., then 100 tests would waste 1,000 secs on simply login.
&lt;/p&gt;
&lt;p&gt;
So instead, the Sauce Lab teams to create a magic login page to allow automatic login, that is create VIP test account to allow unlimited access for inspection purposes.
&lt;/p&gt;
&lt;p&gt;
Source:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.xoriant.com/blog/software-testing-and-qa/selenium-open-source-test-automation-tool-an-overview.html"&gt;Selenium -Open Source Test Automation: An Overview&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://seleniumhq.org/docs/04_webdriver_advanced.html"&gt;WebDriver: Advanced Usage&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://saucelabs.com/blog/index.php/2011/10/top-selenium-tips-from-the-sauce-codebase/"&gt;Top Selenium Tips From The Sauce Codebase&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://saucelabs.com/blog/index.php/2009/08/top-5-challenges-for-selenium-users-san-francisco-meetup/"&gt;Top 5 Challenges for Selenium Users (San Francisco Meetup)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
&lt;a href="http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/14/selenium-page-object-pattern.aspx"&gt;Selenium - Page Object Pattern&lt;/a&gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37271" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/Selenium+test/default.aspx">Selenium test</category></item><item><title>CSS best practices or traps?</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/18/css-best-practices-or-traps.aspx</link><pubDate>Tue, 18 Oct 2011 16:32:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37265</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&amp;nbsp;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/Oct2011/css.png"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/Oct2011/css.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Have developed numerous web site now, big and small, fancy and dumb, started clean or jumped in middle way. Sometimes I was&amp;nbsp;responsible&amp;nbsp;for the whole site (front UI and backend database), sometimes just the UI side. A lot of times, css has been treated in a ad-hoc fashion, as a result, css has grown into a mass of snarling classes and elements with funny ids, living across a great many css pages.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;For example,&amp;nbsp;&lt;br /&gt;
(To be fair to myself, the classes are tweaks from Ext original ones.)
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
#tagReviewMrcContainergrid  .x-grid3-hd.x-grid3-cell.x-grid3-td-1,
#tagReviewMrcContainergrid  .x-grid3-hd.x-grid3-cell.x-grid3-td-2,
#tagReviewMrcContainergrid  .x-grid3-hd.x-grid3-cell.x-grid3-td-3,
#tagReviewMrcContainergrid  .x-grid3-hd.x-grid3-cell.x-grid3-td-4,
#tagReviewMrcContainergrid  .x-grid3-hd.x-grid3-cell.x-grid3-td-5,
#tagReviewMrcContainergrid  .x-grid3-hd.x-grid3-cell.x-grid3-td-6
{
	
	background-image:url(&amp;#39;../images/snipe-sprite.gif&amp;#39;);
	background-position:right -91px;
	background-repeat:no-repeat;

} 
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;Now whenever the site needs a face-lift or extreme make over, the old css will be the first one to be under the knife, be patched, shifted, or discarded. Oh, boy, the giant&amp;nbsp;octopus&amp;nbsp;with great many arms, where do I even start?
&lt;/p&gt;
&lt;p&gt;
Facebook has had the same problem, and fortunately they got a css master Nicole Sullivan that is keen on keeping css simple and organized. Facebook is decidedly complex and feature rich, however, it is also decidedly and has a deceivingly simple clean look. It&amp;#39;s css is simple and pleasant to read: 
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
table.component_table {
    padding-left: 5px;
    padding-top: 5px;
}
table.component_table td.icons {
    text-align: center;
    vertical-align: middle;
    width: 20px;
}
table.component_table td.content {
    white-space: nowrap;
    width: 200px;
}
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;What are the problems? What are the traps that we stepped into however she managed to escape&lt;/p&gt;
&lt;p&gt;In a presentation at Webstock conference, Nicole laid out the problems and some principles. The problems are with the majority of sites are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Duplication of property value pairs&lt;/li&gt;
&lt;li&gt;Duplication of elements&lt;/li&gt;
&lt;li&gt;Growing specificity&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/Oct2011/css_specificity.png"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/Oct2011/css_specificity.png" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;According to her, the so-called best practices are actually the traps that trapped us to those problems.
&lt;/p&gt;
&lt;p&gt;
Yes, we ought to follow the best practices with a grain of salt. Yeah, like everything, too much of anything is not such a good thing.So the so-called best practices under attack are:
&lt;/p&gt;
&lt;p&gt;
1. Classitis
&lt;/p&gt;
&lt;p&gt;
Classes are our friends. Seeing a lot of IDs is actually very bad. Run from this kind of code:
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
However, when define classes, try not made classes too narrow or too broad. That is to say, both extreme micro-managing and macro-managing are bad. Balance is the key. 
&lt;/p&gt;
&lt;p&gt;
2. Never add an non-semantic element
&lt;/p&gt;
&lt;p class="quote"&gt;
You want your content to be marked up in beautiful HTML that uses a diverse set of tags like P, UL, OL, LI, H1-6, strong, em. Add a few extra wrapper elements to keep your content nicely cordoned off from your containers or separate out decorative flourishes! Your HTML will be clean and your CSS predictable.
&lt;/p&gt;
&lt;p&gt;
3. Never add a non-semantic class
&lt;/p&gt;
&lt;p&gt;
Never want a  class like &amp;quot;bigRedText&amp;quot; or &amp;quot;giantRedText&amp;quot;. 
&lt;/p&gt;
&lt;p class="quote"&gt;
CSS needs abstractions. We need to be able to solve a particular problem really well, and then allow people to go on using that solution long afterward. 
&lt;/p&gt;
&lt;p&gt;
3. Use decadent selectors
&lt;/p&gt;
&lt;p class="quote"&gt;
Never has more terrible advice been given (ok, ok, I exaggerate, but for CSS, this is as bad as it gets). The descendent selector is *only* appropriate between multiple nodes of the same object (say, a tab container and its&amp;rsquo; tabs), and even then, only when you are absolutely certain that there will never be any markup changes. Very hard to guarantee, no?
&lt;/p&gt;
&lt;p&gt;
4. Sites need to look exactly the same in every browser
&lt;/p&gt;
&lt;p&gt;
Yes, it would be nice to look fancy across all browsers, but not all browsers are created equal, that is why, you should give up forcing a round corner on IE 6, or making your site look exactly the same pixel by pixel.
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;See Also&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.stubbornella.org/content/2011/04/28/our-best-practices-are-killing-us/"&gt;Our (CSS) Best Practices Are Killing US&lt;/a&gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37265" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/css/default.aspx">css</category></item><item><title>Selenium - Page Object Pattern</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/14/selenium-page-object-pattern.aspx</link><pubDate>Fri, 14 Oct 2011 13:37:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37248</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/Oct2011/http_imgload.jpg"&gt;&lt;img style="float:left;padding:10px;" border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/Oct2011/http_imgload.jpg" alt="" /&gt;&lt;/a&gt;After&lt;a href="http://dotnetslackers.com/Community/blogs/xun/archive/2011/09/26/is-not-selenium-web-driver-buggy.aspx"&gt; bitching and moaning about the instability of Selenium&lt;/a&gt;, after &lt;a href="http://dotnetslackers.com/Community/controlpanel/blogs/posteditor.aspx?SelectedNavItem=Posts&amp;amp;sectionid=52&amp;amp;postid=37224"&gt;searching high and low for alternatives&lt;/a&gt;, I am back to Selenium again, convinced it is still the best in town. Yep, it is flexible, it is free, it is being actively developed therefore improved by day. I can write my unit tests in C# or any other server languages. And it is getting more and more backings from major vendors. I can even take my tests to the Cloud, e.g., the SauceLab.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Enough of justifications.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Selenium Page Object Pattern&lt;/p&gt;
&lt;p&gt;One of the test designs in Selenium that has gained more and more popularity is Page Object Pattern, the core of it is to wrap your page into classes with members and methods, and in testing. Then tests can call the methods to initiate any interactions with the page UI, the way normal users does, login, run report, click a button, etc. It is a OOO approach, and its advantages are:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;
&lt;ul&gt;
&lt;li&gt;Clean separation between test code and page specific code.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Single repository for the services or operations offered by individual page object.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;So take an example of login, a normal selenium login test would be written as the following:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana, sans-serif;line-height:16px;font-size:x-small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre style="font-size:1em;background-color:#f0f0f0;border-top-style:solid;border-right-style:none;border-bottom-style:solid;border-left-style:none;border-top-width:1px;border-right-width:medium;border-bottom-width:1px;border-left-width:medium;color:#333333;overflow-x:auto;overflow-y:auto;padding-top:5px;padding-right:5px;padding-bottom:5px;padding-left:30px;"&gt;&lt;span class="c" style="color:#808080;"&gt;/***&lt;/span&gt;
&lt;span class="c" style="color:#808080;"&gt; * Tests login feature&lt;/span&gt;
&lt;span class="c" style="color:#808080;"&gt; */&lt;/span&gt;
&lt;span class="kd" style="color:#008000;font-weight:bold;"&gt;public&lt;/span&gt; &lt;span class="kd" style="color:#008000;font-weight:bold;"&gt;class&lt;/span&gt; &lt;span class="nc" style="color:#b00060;font-weight:bold;"&gt;Login&lt;/span&gt; &lt;span class="o" style="color:#303030;"&gt;{&lt;/span&gt;

        &lt;span class="kd" style="color:#008000;font-weight:bold;"&gt;public&lt;/span&gt; &lt;span class="kt" style="color:#303090;font-weight:bold;"&gt;void&lt;/span&gt; &lt;span class="nf" style="color:#0060b0;font-weight:bold;"&gt;testLogin&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;()&lt;/span&gt; &lt;span class="o" style="color:#303030;"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;.&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;type&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;inputBox&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;,&lt;/span&gt; &lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;testUser&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;);&lt;/span&gt;
                &lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;.&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;type&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;,&lt;/span&gt; &lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;my supersecret password&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;);&lt;/span&gt;
                &lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;.&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;click&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;sign-in&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;);&lt;/span&gt;
                &lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;.&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;waitForPageToLoad&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;PageWaitPeriod&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;);&lt;/span&gt;
                &lt;span class="n"&gt;Assert&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;.&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;assertTrue&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;.&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;isElementPresent&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;compose button&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;),&lt;/span&gt;
                                &lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;Login was unsuccessful&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;);&lt;/span&gt;
        &lt;span class="o" style="color:#303030;"&gt;}&lt;/span&gt;
&lt;span class="o" style="color:#303030;"&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Now with Page oject pattern design in mind, we would wrap the login page in its own object,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana, sans-serif;line-height:16px;font-size:x-small;"&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;pre style="font-size:1em;background-color:#f0f0f0;border-top-style:solid;border-right-style:none;border-bottom-style:solid;border-left-style:none;border-top-width:1px;border-right-width:medium;border-bottom-width:1px;border-left-width:medium;color:#333333;overflow-x:auto;overflow-y:auto;padding:5px;"&gt;&lt;span class="c" style="color:#808080;"&gt;/**&lt;/span&gt;
&lt;span class="c" style="color:#808080;"&gt; * Page Object encapsulates the Sign-in page.&lt;/span&gt;
&lt;span class="c" style="color:#808080;"&gt; */&lt;/span&gt;
&lt;span class="kd" style="color:#008000;font-weight:bold;"&gt;public&lt;/span&gt; &lt;span class="kd" style="color:#008000;font-weight:bold;"&gt;class&lt;/span&gt; &lt;span class="nc" style="color:#b00060;font-weight:bold;"&gt;SignInPage&lt;/span&gt; &lt;span class="o" style="color:#303030;"&gt;{&lt;/span&gt;

        &lt;span class="kd" style="color:#008000;font-weight:bold;"&gt;private&lt;/span&gt; &lt;span class="n"&gt;Selenium&lt;/span&gt; &lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;;&lt;/span&gt;

        &lt;span class="kd" style="color:#008000;font-weight:bold;"&gt;public&lt;/span&gt; &lt;span class="nf" style="color:#0060b0;font-weight:bold;"&gt;SignInPage&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Selenium&lt;/span&gt; &lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;)&lt;/span&gt; &lt;span class="o" style="color:#303030;"&gt;{&lt;/span&gt;
                &lt;span class="k" style="color:#008000;font-weight:bold;"&gt;this&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;.&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;selenium&lt;/span&gt; &lt;span class="o" style="color:#303030;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;;&lt;/span&gt;
                &lt;span class="k" style="color:#008000;font-weight:bold;"&gt;if&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(!&lt;/span&gt;&lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;.&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;getTitle&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;().&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;equals&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;Sign in page&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;))&lt;/span&gt; &lt;span class="o" style="color:#303030;"&gt;{&lt;/span&gt;
                        &lt;span class="k" style="color:#008000;font-weight:bold;"&gt;throw&lt;/span&gt; &lt;span class="k" style="color:#008000;font-weight:bold;"&gt;new&lt;/span&gt; &lt;span class="nf" style="color:#0060b0;font-weight:bold;"&gt;IllegalStateException&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;This is not sign in page, current page is: &amp;quot;&lt;/span&gt;
                                        &lt;span class="o" style="color:#303030;"&gt;+&lt;/span&gt;&lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;.&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;getLocation&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;());&lt;/span&gt;
                &lt;span class="o" style="color:#303030;"&gt;}&lt;/span&gt;
        &lt;span class="o" style="color:#303030;"&gt;}&lt;/span&gt;

        &lt;span class="c" style="color:#808080;"&gt;/**&lt;/span&gt;
&lt;span class="c" style="color:#808080;"&gt;         * Login as valid user&lt;/span&gt;
&lt;span class="c" style="color:#808080;"&gt;         *&lt;/span&gt;
&lt;span class="c" style="color:#808080;"&gt;         * @param userName&lt;/span&gt;
&lt;span class="c" style="color:#808080;"&gt;         * @param password&lt;/span&gt;
&lt;span class="c" style="color:#808080;"&gt;         * @return HomePage object&lt;/span&gt;
&lt;span class="c" style="color:#808080;"&gt;         */&lt;/span&gt;
        &lt;span class="kd" style="color:#008000;font-weight:bold;"&gt;public&lt;/span&gt; &lt;span class="n"&gt;HomePage&lt;/span&gt; &lt;span class="nf" style="color:#0060b0;font-weight:bold;"&gt;loginValidUser&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;userName&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;,&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;)&lt;/span&gt; &lt;span class="o" style="color:#303030;"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;.&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;type&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;usernamefield&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;,&lt;/span&gt; &lt;span class="n"&gt;userName&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;);&lt;/span&gt;
                &lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;.&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;type&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;passwordfield&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;,&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;);&lt;/span&gt;
                &lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;.&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;click&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;sign-in&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;);&lt;/span&gt;
                &lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;.&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;waitForPageToLoad&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;waitPeriod&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;);&lt;/span&gt;

                &lt;span class="k" style="color:#008000;font-weight:bold;"&gt;return&lt;/span&gt; &lt;span class="k" style="color:#008000;font-weight:bold;"&gt;new&lt;/span&gt; &lt;span class="nf" style="color:#0060b0;font-weight:bold;"&gt;HomePage&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;);&lt;/span&gt;
        &lt;span class="o" style="color:#303030;"&gt;}&lt;/span&gt;
&lt;span class="o" style="color:#303030;"&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;And the new login test would be:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana, sans-serif;line-height:16px;font-size:x-small;"&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;pre style="font-size:1em;background-color:#f0f0f0;border-top-style:solid;border-right-style:none;border-bottom-style:solid;border-left-style:none;border-top-width:1px;border-right-width:medium;border-bottom-width:1px;border-left-width:medium;color:#333333;overflow-x:auto;overflow-y:auto;padding:5px;"&gt;&lt;span class="c" style="color:#808080;"&gt;/***&lt;/span&gt;
&lt;span class="c" style="color:#808080;"&gt; * Tests login feature&lt;/span&gt;
&lt;span class="c" style="color:#808080;"&gt; */&lt;/span&gt;
&lt;span class="kd" style="color:#008000;font-weight:bold;"&gt;public&lt;/span&gt; &lt;span class="kd" style="color:#008000;font-weight:bold;"&gt;class&lt;/span&gt; &lt;span class="nc" style="color:#b00060;font-weight:bold;"&gt;TestLogin&lt;/span&gt; &lt;span class="o" style="color:#303030;"&gt;{&lt;/span&gt;

        &lt;span class="kd" style="color:#008000;font-weight:bold;"&gt;public&lt;/span&gt; &lt;span class="kt" style="color:#303090;font-weight:bold;"&gt;void&lt;/span&gt; &lt;span class="nf" style="color:#0060b0;font-weight:bold;"&gt;testLogin&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;()&lt;/span&gt; &lt;span class="o" style="color:#303030;"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;SignInPage&lt;/span&gt; &lt;span class="n"&gt;signInPage&lt;/span&gt; &lt;span class="o" style="color:#303030;"&gt;=&lt;/span&gt; &lt;span class="k" style="color:#008000;font-weight:bold;"&gt;new&lt;/span&gt; &lt;span class="n"&gt;SignInPage&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;);&lt;/span&gt;
                &lt;span class="n"&gt;HomePage&lt;/span&gt; &lt;span class="n"&gt;homePage&lt;/span&gt; &lt;span class="o" style="color:#303030;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;signInPage&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;.&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;loginValidUser&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;userName&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;,&lt;/span&gt; &lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;);&lt;/span&gt;
                &lt;span class="n"&gt;Assert&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;.&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;assertTrue&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;selenium&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;.&lt;/span&gt;&lt;span class="na" style="color:#0000c0;"&gt;isElementPresent&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;(&lt;/span&gt;&lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;compose button&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;),&lt;/span&gt;
                                &lt;span class="s" style="background-color:#fff0f0;"&gt;&amp;quot;Login was unsuccessful&amp;quot;&lt;/span&gt;&lt;span class="o" style="color:#303030;"&gt;);&lt;/span&gt;
        &lt;span class="o" style="color:#303030;"&gt;}&lt;/span&gt;
&lt;span class="o" style="color:#303030;"&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;So now we get a suite of page objects with clearly defined methods and services and tests can issue their tests by calling services with appropriate parameters. The code is cleaner and more readable.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Some principles of Page Oject Pattern:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Page obect itself should never make any assertions or verification. This is the job of a test.&lt;/li&gt;
&lt;li&gt;Page object, however, upon its initiation, should ensure all elements are loaded.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;A page object does not need to represent an entire page, but only to capture the critical components and services that are to be tested.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;See Also:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://seleniumhq.org/docs/06_test_design_considerations.html"&gt;Test Design Considerations&lt;/a&gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37248" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/Selenium+test/default.aspx">Selenium test</category></item><item><title>How Google Guys get paid? How to be one of them?</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/13/how-google-guys-get-paid-how-to-be-one-of-them.aspx</link><pubDate>Thu, 13 Oct 2011 15:24:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37246</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;You know, I know that Google guys are paid pretty well. Do you remember in Sept. 2010, ALL Google employees got 10% raise? Now here is a pictures of what the best paid jobs in Google and roughly how much.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/salary-google.jpg"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/salary-google.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You probably already have known that it is incredibly hard to be part of Google, but how hard? Here is an overview:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/hiring-google.jpg"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/hiring-google.jpg" border="0" width="560" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;See Also:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/12/feel-good-about-it-job-market-and-go-mobile.aspx"&gt;Feel good about IT job market. And Go Mobile!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.businessinsider.com/infographics-process-of-getting-hired-at-google-2011-10"&gt;INFOGRAPHIC: The Incredibly Difficult Process Of Getting Hired At Google&lt;/a&gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37246" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/IT+job+market/default.aspx">IT job market</category></item><item><title>Feel good about IT job market. And Go Mobile!</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/12/feel-good-about-it-job-market-and-go-mobile.aspx</link><pubDate>Wed, 12 Oct 2011 14:25:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37243</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/SF-AA738A_THEVA_NS_20110202181314.gif"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/SF-AA738A_THEVA_NS_20110202181314.gif" border="0" style="float:left;padding:10px;" alt="" /&gt;&lt;/a&gt;The national job market as a whole is depressing, but on the IT side, especially in the silicon valley, it is quite sunny.&lt;/p&gt;
&lt;p&gt;Do you know that:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;According to Dice&amp;#39;s annual survey, the average Silicon Valley tech salary in 2010 rose nearly 3% to $99,028 a year. That compared with an increase of less than a 1% nationwide to $79,384 a year. Silicon Valley has been tops in tech salaries for at least the past six years, adds Dice.&lt;/p&gt;
&lt;p&gt;-&lt;a href="http://online.wsj.com/article/SB10001424052748703439504576116192416198636.html"&gt; Local Technology Salaries Lead the Nation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;IT layoffs have dropped to their lowest level in a decade, and demand for techies is expected to jump 32% by 2018.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And if you have time or opportunity, please go Mobile now, because&amp;nbsp;Jobs connected to mobile applications is one of the fastest growing hiring requests on Dice. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And the six hottest new jobs in IT are:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Business architect:&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The role of the business architect is to fashion high-level company strategy with technology in mind. &amp;nbsp;Think MBA with an IT focus.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Data scientist&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Not your regular sql data developers (though that is useful too), but data scientist that use data analytics to bring stategic insight therefore business opportunitites from the enormous data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Social media architect&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Social media does not just mean just Facebook and Twitter, but also IBM, Jive, and Yammer and a multitude of runner-ups. &amp;nbsp;This creates a demand for IT pros with the specialized knowledge to build secure communities within a business network and between businesses and customers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mobile technology expert&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Is not this obvious?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enterprise mobile developer&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;What distinguishes enterprise dev positions from general mobile dev jobs is their focus on compliance and security, according to Stewart Tan of Accretive Solutions, an executive search firm and consultancy. &amp;quot;Building mobile apps, architecting mobile strategies, and securing those devices&amp;quot; are the top concerns facing the enterprise today.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cloud architect&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;quot;There&amp;#39;s so much positive momentum toward cloud integration,&amp;quot; says Ron Gula, CEO of Tenable Network Security. &amp;quot;People who can really identify the architecture from a simplicity point of view are going to be in demand.&amp;quot;&lt;/p&gt;
&lt;p&gt;See Also:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.infoworld.com/t/information-technology-careers/the-6-hottest-new-jobs-in-it-052"&gt;The 6 hottest new jobs in IT&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37243" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/IT+job+market/default.aspx">IT job market</category></item><item><title>Google Dart: Javascript killer or just another language</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/11/google-dart-javascript-killer-or-just-another-language.aspx</link><pubDate>Tue, 11 Oct 2011 17:29:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37242</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:240px;"&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/091511_Gabatek_Google-Dart.large.jpg"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/091511_Gabatek_Google-Dart.large.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Oh, boy, don&amp;#39;t we already have too many programming languages? Now Google is throwing Dart at JavaScript, the uniquituous script languages that runs at the heart of every browser on every platform. Every platform, mobile phones, mobile tablets, plus Macs and Pcs, that is exactly what makes Javascript a problem.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In the &lt;a href="https://gist.github.com/1208618"&gt;widely-read (maybe intentionally) leaked memo&lt;/a&gt;, Google declared that &amp;quot;JavaScript&amp;nbsp;has has fundamental flaws that cannot be fixed merely by evolving the&amp;nbsp;language&amp;quot; and they have taken two strategies to&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;a) Co-exist with JavaScript in the begining&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;b) Replace JavaScript eventually&lt;/p&gt;
&lt;p&gt;The would-be advantanges or potential of Darts are (as claimed by Google and as Dart is still in its infancy): &lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;a. OOO (object-oriented), structured and flexible; &lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;b. familiar syntax like C++;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;c. High performance across all platforms&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So what are &amp;quot;the fundamental flaws&amp;quot; referred by Google?&lt;/p&gt;
&lt;p&gt;A&lt;span style="font-family:&amp;#39;Lucida Grande&amp;#39;, Arial, sans-serif;line-height:20px;"&gt;ccording to Miller, is that it cannot be tooled and has inherent performance problems, thus rendering it inadequate for complex browser-based apps. &amp;quot;The cyclone of innovation is increasingly moving off the Web onto iOS and other closed platforms,&amp;quot; Miller wrote. &amp;quot;The Web development community has been backed into using large amounts of JavaScript largely to work around the deficiencies in the platform.... Even smaller-scale apps written by hobbyist developers have to navigate a confusing labyrinth of frameworks and incompatible design patterns.&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Keep throwing Darts, Google!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;See Also:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.infoworld.com/t/web-development/google-dart-aimed-supplanting-fundamentally-flawed-javascript-173096"&gt;Google Dart aims to supplant &amp;#39;fundamentally flawed&amp;#39; JavaScript&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://googlecode.blogspot.com/2011/10/dart-language-for-structured-web.html"&gt;Dart: a language for structured web programming&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 style="font-family:Georgia, Times, serif;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0.25em;padding-left:0px;font-size:2em;line-height:1.14em;"&gt;&lt;/h1&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37242" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/javascript/default.aspx">javascript</category><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/Dart/default.aspx">Dart</category></item><item><title>Comics Time: How to detect a geek</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/07/comics-time-how-to-detect-a-geek.aspx</link><pubDate>Fri, 07 Oct 2011 16:34:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37236</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/howtodetect.png"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/howtodetect.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="font-size:14pt;"&gt;&lt;strong&gt;&lt;i&gt;It does work without them&lt;/i&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/art-programming.jpg"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/art-programming.jpg" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="font-size:14pt;"&gt;&lt;strong&gt;Why Geek loves gadget?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/gadget-love.jpg"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/gadget-love.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;All of the above is from The Tech Comics section in&lt;a&gt;&amp;nbsp;http://itmanagement.earthweb.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://itmanagement.earthweb.com/cnews/article.php/3832671"&gt;Tech comics&lt;/a&gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37236" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/humor/default.aspx">humor</category></item><item><title>Apple Logo redesigned / Quoting Steve Jobs</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/06/quoting-steve-jobs.aspx</link><pubDate>Thu, 06 Oct 2011 16:20:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37235</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Apple logo redesigned. By a Hong Kong student.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/jobs.jpg"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/jobs.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/jobs.jpg"&gt;&lt;/a&gt;&amp;ldquo;Being the richest man in the cemetery doesn&amp;rsquo;t matter to me &amp;hellip; Going to bed at night saying we&amp;rsquo;ve done something wonderful&amp;hellip; that&amp;rsquo;s what matters to me.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;[The Wall Street Journal, May 25, 1993]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;I&amp;rsquo;ll always stay connected with Apple. I hope that throughout my life I&amp;rsquo;ll sort of have the thread of my life and the thread of Apple weave in and out of each other, like a tapestry. There may be a few years when I&amp;rsquo;m not there, but I&amp;rsquo;ll always come back.&amp;quot;&lt;/p&gt;
&lt;p&gt;[Playboy, Feb. 1, 1985]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;You can&amp;rsquo;t connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future. You have to trust in something &amp;mdash; your gut, destiny, life, karma, whatever. This approach has never let me down, and it has made all the difference in my life.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;[Stanford commencement speech, June 2005]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work. And the only way to do great work is to love what you do. If you haven&amp;rsquo;t found it yet, keep looking. Don&amp;rsquo;t settle. As with all matters of the heart, you&amp;rsquo;ll know when you find it. And, like any great relationship, it just gets better and better as the years roll on. So keep looking until you find it. Don&amp;rsquo;t settle.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;[Stanford commencement speech, June 2005]&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&amp;quot;That&amp;#39;s been one of my mantras &amp;ndash; focus and simplicity. Simple can be harder than complex: You have to work hard to get your thinking clean to make it simple. But it&amp;#39;s worth it in the end because once you get there, you can move mountains.&amp;quot; &amp;ndash; Business Week , 1998.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&amp;quot;Picasso had a saying: &amp;#39;Good artists copy, great artists steal.&amp;#39; We have always been shameless about stealing great ideas &amp;hellip; I think part of what made the Macintosh great was that the people working on it were musicians, poets, artists, zoologists and historians who also happened to be the best computer scientists in the world.&amp;quot; &amp;ndash; quote from a 1994 interview shared by Huffington Post .&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&amp;quot;Remembering that I&amp;#39;ll be dead soon is the most important tool I&amp;#39;ve ever encountered to help me make the big choices in life. Because almost everything &amp;ndash; all external expectations, all pride, all fear of embarrassment or failure &amp;ndash; these things just fall away in the face of death, leaving only what is truly important.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose. You are already naked. There is no reason not to follow your heart.&amp;quot; &amp;ndash; Stanford University commencement address, 1995.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37235" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/Steve+Jobs/default.aspx">Steve Jobs</category></item><item><title>The Apple of Steve Jobs</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/06/the-apple-of-steve-jobs.aspx</link><pubDate>Thu, 06 Oct 2011 14:39:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37234</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/jobs.png"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/jobs.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In China, this is what People said about Steve Jobs and his apple&lt;/p&gt;
&lt;p&gt;There are three APPLEs that have changed the world.&lt;/p&gt;
&lt;p&gt;In Genesis, Eve ate the apple that was evil but seductive, and so did Adam, after which they discovered sin, and God punished them for their disobedience. And the life of suffering as we know it starts.&lt;/p&gt;
&lt;p&gt;Newton, from observing an apple fall from a tree, discovered the Universal Law of Gravitation.&lt;/p&gt;
&lt;p&gt;Then there is the Apple of Steve jobs that changed the world of personal computers, then the definition of a phone, the mobile industry.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37234" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/Apple/default.aspx">Apple</category><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/Jobs/default.aspx">Jobs</category></item><item><title>This will be the web in the future</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/05/this-will-be-the-web-in-the-future.aspx</link><pubDate>Wed, 05 Oct 2011 16:56:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37233</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Embrace the future and the unpredicability of the future.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://bradfrostweb.com/blog/web/for-a-future-friendly-web/"&gt;Brad Frost spoke about the need to think beyond the present web landscape and start to think and work towards a web for the future.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/web1.png"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/web1.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://bradfrostweb.com/blog/web/for-a-future-friendly-web/"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id="__ss_9516437" style="width:425px;"&gt;
&lt;div style="padding:5px 0 12px;"&gt;Too bad, I cannot embed the slideshow or video. But some of the gist and quotes:&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Smart content - &amp;nbsp;People&amp;#39;s capacity for BULLSHIT is rapidly dimining.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/web2.png"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/web2.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Web is everything and everywhere. Think about context. Think about the other 70% of use cases of the web, &amp;nbsp;watching TV, waiting in Line, #Pooping (my favorite).&lt;/p&gt;
&lt;p&gt;Think mobile. Think about mobile apps.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/mobile.png"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/mobile.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Go global, start from mobile. Mobile site can grow into a full-featured, mobile-first, adaptive web site. &amp;nbsp;Desktop-only site is not scalable.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/globle%20site.png"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/globle%20site.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37233" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/future+web/default.aspx">future web</category></item><item><title>Do you swear while coding?</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/10/04/do-you-swear-while-coding-committing.aspx</link><pubDate>Mon, 03 Oct 2011 21:35:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37232</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;When you code, hit a blocker, a bug, a wall, what do you do? You pull your hair, hit your head, search frantically online, beg for help, lose your sleep, or refuse to sleep ... what else? Do you swear? Yes, I do. But definitely not so publically, profusely and in writting, as in&amp;nbsp;&lt;a href="https://github.com/AndrewVos/github-statistics/blob/master/profanity.yml"&gt;Github commit comments&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It takes some *** to swear like this.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The same developer also had some statistics about which languages make you swear more.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/swearing.jpg"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/swearing.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It is C++. &lt;/p&gt;
&lt;p&gt;&lt;i&gt;C++ takes top honors, but just barely. Ruby and JavaScript are neck and 
neck behind C++. After that it drops off considerably with C, Java and 
C# placing in the middle. Python and PHP developers are either very 
happy about using those languages, or perhaps just very mild-mannered 
developers. Of course just because they don&amp;rsquo;t swear in commits doesn&amp;rsquo;t 
mean they don&amp;rsquo;t swear. As one commenter on Vos&amp;rsquo;s post says, &amp;ldquo;I program 
in Python, but all my cussing is related to IE.&amp;rdquo;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;See Also:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;http://www.webmonkey.com/2011/02/cussing-in-commits-which-programming-language-inspires-the-most-swearing/&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37232" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/humor/default.aspx">humor</category></item><item><title>JavaScript Debugger for FireFox, Chrome and IE</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/09/30/javascript-debugger-for-firefox-chrome-and-ie.aspx</link><pubDate>Fri, 30 Sep 2011 17:17:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37230</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;What do you use for javascript debugging, element / DOM inspecting, css validation and checking, monitor network activy, etc.? &lt;/p&gt;
&lt;p&gt;For FireFox, we use &lt;b&gt;Firebug&lt;/b&gt; as well as the &lt;b&gt;Web Developer extension. &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Firebug&lt;/b&gt;:&lt;/p&gt;
&lt;p&gt;Very easy to use. If you are not using it or think otherwise, it got to be your fault&lt;img src="http://dotnetslackers.com/Community/emoticons/emotion-1.gif" alt="Smile" /&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/firebug.jpg"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/firebug.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Web Developer Toolbar:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/firefox%20web%20developer.png"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/firefox%20web%20developer.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Use this to read and delete cookies, clear caches, enable or 
disable form elements, whatever.&lt;/p&gt;
&lt;p&gt;For Chrome, I just learned there was &lt;b&gt;Chrome debugger&lt;/b&gt; (short cut key:&lt;b&gt; CTRL+Shift+J).&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/chrome-javascript%20debugger.png"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/chrome-javascript%20debugger.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For IE, use &lt;b&gt;IE developer toolbar&lt;/b&gt;. It is not as easy to use as FireBug, however, sometimes when things go wrong in nowhere else bug IE, you will have to resort to this tool for some insights.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/ie%20debugger.png"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/ie%20debugger.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37230" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/javascript+debugger/default.aspx">javascript debugger</category></item><item><title>Firefox 7 and the speed war among browsers</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/09/30/firefox-7.aspx</link><pubDate>Fri, 30 Sep 2011 00:28:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37228</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Was it just yesterday Mozilla released FireFox 7,&amp;nbsp; was it just last month it released Firefox 6?&lt;/p&gt;
&lt;p&gt; What is new in FireFox 7? Nothing you can see. But Firefox 7 is said to have reduced memory usage by 50 percent, which is
 great news if you have 16 tabs open all the time.Like me, whenever I checked my process memory usage, Firefox is always on top.&lt;/p&gt;
&lt;p&gt;FireFox7 is said to have much sped up too. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Probably not that much, in this article, &lt;i&gt;Browser Speed Tests: Firefox 7, Chrome 14, Internet Explorer 9, and More, &lt;/i&gt;guess who wins? Opera! Does anyone even use Opera? But Anyway, here are some simple and hard and cold facts:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/cold.png"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/cold.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/domcss.png"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/domcss.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/javascript.png"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/javascript.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/memory.png"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/memory.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Quote from the Article:&lt;/p&gt;
&lt;p&gt;Obviously, there&amp;#39;s a lot more to browser choice than speed&amp;mdash;variety of
 extensions, customizability, and so on&amp;mdash;but when it comes to 
performance, here&amp;#39;s how our favorite browsers. We gave each contender a 
point value for its placing in each of the above tests, then tallied up 
the totals and divided them by the total number of points each &lt;i&gt;could&lt;/i&gt; have received.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Opera 11.51&lt;/b&gt;: 82%&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Firefox 7&lt;/b&gt;: 73%&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Internet Explorer 9&lt;/b&gt;: 47.5%&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Chrome 14&lt;/b&gt;: 43%&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;i&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37228" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/Firefox/default.aspx">Firefox</category><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/browser+war/default.aspx">browser war</category></item><item><title>Funny (and insightful) quotes about programming </title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/09/28/funny-and-insightful-quotes-about-programming.aspx</link><pubDate>Wed, 28 Sep 2011 16:07:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37225</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;div style="font-family:Arial, Helvetica, sans-serif;margin-top:10px;margin-right:10px;margin-bottom:10px;margin-left:10px;background-image:initial;background-attachment:initial;background-origin:initial;background-clip:initial;background-color:#ffffff;color:#000000;background-position:initial initial;background-repeat:initial initial;"&gt;
&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/punitionis8.jpg"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/punitionis8.jpg" border="0" alt="" /&gt;&lt;/a&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;You never finish a program, you just stop working on it.&lt;i&gt; -Anonymous&lt;/i&gt;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span&gt;If the code doesn&amp;#39;t bother you, don&amp;#39;t bother it.&amp;nbsp;&lt;/span&gt;&lt;i&gt;&amp;nbsp;-Anonymous&lt;/i&gt;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;There is only one thing more painful than learning from experience and that is not learning from experience. &lt;i&gt;- Archibald McLeish&lt;/i&gt;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;Measuring programming progress by lines of code is like measuring aircraft building progress by weight.&lt;i&gt;- Bill Gates - From wikiquotes.org&lt;/i&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span&gt;Fast, good, cheap: pick any two.&lt;/span&gt;&lt;i&gt;&amp;nbsp;-Anonymous&lt;/i&gt;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;Pasting code from the internet into production code is like chewing gum found in the street. &lt;i&gt;- Mike Johnson&lt;/i&gt;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;Hacking is like sex. You get in, you get out, and hope that you didn&amp;#39;t leave something that can be traced back to you. &lt;i&gt;-Anonymous&lt;/i&gt;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;Sometimes it pays to stay in bed on Monday, rather than spending the rest of the week debugging Monday&amp;#39;s code. &lt;i&gt;- Christopher Thompson&lt;/i&gt;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;"&gt;Walking on water and developing software from a specification are easy if both are frozen.&lt;i&gt; -Edward V. Berard&lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style="font-family:Arial, Helvetica, sans-serif;margin-top:10px;margin-right:10px;margin-bottom:10px;margin-left:10px;background-image:initial;background-attachment:initial;background-origin:initial;background-clip:initial;background-color:#ffffff;color:#000000;background-position:initial initial;background-repeat:initial initial;"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family:Arial, Helvetica, sans-serif;margin-top:10px;margin-right:10px;margin-bottom:10px;margin-left:10px;background-image:initial;background-attachment:initial;background-origin:initial;background-clip:initial;background-color:#ffffff;color:#000000;background-position:initial initial;background-repeat:initial initial;"&gt;&lt;a target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fdotnetslackers.com%2fCommunity%2fblogs%2fxun%2farchive%2f2011%2f09%2f28%2ffunny-and-insightful-quotes-about-programming.aspx"&gt;Dot Net Kick&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family:Arial, Helvetica, sans-serif;font-size:85%;margin-top:10px;margin-right:10px;margin-bottom:10px;margin-left:10px;background-image:initial;background-attachment:initial;background-origin:initial;background-clip:initial;background-color:#ffffff;color:#000000;background-position:initial initial;background-repeat:initial initial;"&gt;
&lt;/div&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37225" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/funny+quotes/default.aspx">funny quotes</category></item><item><title>JavaScript Test Frameworks? Which one?</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/09/28/javascript-test-framework.aspx</link><pubDate>Tue, 27 Sep 2011 21:05:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37224</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;JavaScript had been notorious for debugging, until we got Firebug. &lt;/p&gt;
&lt;p&gt;How about unit test javascript code? I&amp;nbsp; have been struggling with Selenium Test, are there any other choices? Turned out there are many, turned out I have no idea which one to choose. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Is it jsUnity?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Lightweight Universal JavaScript Testing Framework&lt;br /&gt;&lt;br /&gt;jsUnity is a lightweight universal JavaScript testing framework that is context-agnostic. It doesn&amp;#39;t rely on any browser capabilities and therefore can be run inside HTML, ASP, WSH or any other context that uses JavaScript/JScript/ECMAScript.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Could it be Jasmine?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Jasmine is a behavior-driven development framework for testing your JavaScript code. It does not depend on any other
      JavaScript frameworks. It does not require a DOM. And it has a clean, obvious syntax so that you can easily write tests.&lt;/p&gt;
&lt;p&gt;&lt;code class="javascript"&gt;&lt;span class="nx"&gt;describe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Jasmine&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;makes testing JavaScript awesome!&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;yourCode&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;toBeLotsBetter&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;
    &lt;/div&gt;
&lt;p&gt;&lt;strong&gt;How about YUI 2?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;YUI Test is a testing framework for browser-based JavaScript 
solutions. Using YUI Test, you can easily add unit testing to your 
JavaScript solutions. While not a direct port from any specific xUnit 
framework, YUI Test does derive some characteristics from &lt;a href="http://www.nunit.org/"&gt;nUnit&lt;/a&gt; and &lt;a href="http://www.junit.org/"&gt;JUnit&lt;/a&gt;. 
    &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Or &lt;strong&gt;Js-Test-Driver&lt;/strong&gt; by Google? &lt;/p&gt;
&lt;p&gt;(Quote from http://stackoverflow.com/questions/300855/looking-for-a-better-javascript-unit-test-tool)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;pros&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Supports all major browsers/operating systems&lt;/li&gt;
&lt;li&gt;Run on multiple clients at once&lt;/li&gt;
&lt;li&gt;Don&amp;#39;t need to run server/clients on development computer (no need for IE)&lt;/li&gt;
&lt;li&gt;Run tests from command line (jar) (can be integrated in ant/maven)&lt;/li&gt;
&lt;li&gt;Eclipse plugin&lt;/li&gt;
&lt;li&gt;IntelliJ plugin&lt;/li&gt;
&lt;li&gt;Supports multiple JavaScript test frameworks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;cons&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Doesn&amp;#39;t show results for os or browser version. Only browser names. It does however print out the version in the test results.&lt;/li&gt;
&lt;li&gt;No history of previous test results&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TestSwarm&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;(Quote from http://stackoverflow.com/questions/300855/looking-for-a-better-javascript-unit-test-tool)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;John Resig (jQuery) has created a tool for distributed JavaScript testing, TestSwarm. Mainly for open source JavaScript projects, but TestSwarm is open source, so you can set up a server yourself for corporate testing. Although this might require that you to do some modifications.&lt;br /&gt;&lt;br /&gt;pros:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Supports all major browsers/operating systems&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Run on multiple clients at once&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Don&amp;#39;t need to run server/clients on development computer (no need for IE)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Automatic run tests on all clients when you commit something (or whenever you modify the script to run the tests)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Show history of test results pr commit&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Supports multiple JavaScript test frameworks&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Have test results for OS and browser versions&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Crowdsource to test in a multitude of browsers&lt;br /&gt;&lt;br /&gt;cons:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Can not break your build through ant/maven&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Don&amp;#39;t notice the test fail before commit&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; No IDEplug-in&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Finally, here comes Qunit &lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A powerful approach to test driven development in Javasscript. It&amp;#39;s used by the jQuery project to test its code and plugins but is 
capable of testing any generic JavaScript code (and even capable of 
testing JavaScript code on the server-side).
&lt;/p&gt;
&lt;p&gt;QUnit is especially useful for regression testing: Whenever a bug
 is reported, write a test that asserts the existence of that particular
 bug. Then fix it and commit both. Every time you work on the code 
again, run the tests. If the bug comes up again - a regression - you&amp;#39;ll 
spot it immediately and know how to fix it, because you know what code 
you just changed.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anyone out there can decide on a winner?&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37224" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/javascript+unit+test/default.aspx">javascript unit test</category></item><item><title>Is not Selenium Web Driver buggy? </title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/09/26/is-not-selenium-web-driver-buggy.aspx</link><pubDate>Mon, 26 Sep 2011 19:29:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37223</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The past six months, I have been using Selenium for automated tests on browsers, mainly IE and Firefox. The tests are run daily with an automated build and the results have been unstable therefore frustrating. The problems are:&lt;/p&gt;
&lt;p&gt;a) Tests with IE are buggy. Sometimes, WebDriver.getPageSource() seems to skip some of the page source.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;b) For the same test on the same page, WebDriver&lt;span style="font-family:arial, sans-serif;"&gt;.findElement returns different results from moment to moment.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;c) It is especially so with an AJAX page, because it cannot detect whethere an ajax call is complete.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;There have been valiant effort trying to solve the problem, such as&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.activelylazy.co.uk/2010/05/05/testing-asynchronous-applications-with-webdriver/"&gt;http://blog.activelylazy.co.uk/2010/05/05/testing-asynchronous-applications-with-webdriver/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;However, since it still takes selenium driver to run inderterministically, it can still variably come back and produce an error message.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/selenium.png"&gt;&lt;img border="1" src="http://dotnetslackers.com/Community/blogs/xun/blog/selenium.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There have been so much outcries about &amp;quot;unstable seleniums&amp;quot;, that Google test team produces the post &amp;quot;&lt;a href="http://googletesting.blogspot.com/2009/06/my-selenium-tests-arent-stable.html"&gt;http://googletesting.blogspot.com/2009/06/my-selenium-tests-arent-stable.html&lt;/a&gt;&amp;quot; defending Selenium. But, yes, Selenium is buggy.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37223" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/Selenium+test/default.aspx">Selenium test</category></item><item><title>2011 Digital 100: The World's Most Valuable Startups </title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/09/24/2011-digital-100-the-world-s-most-valuable-startups.aspx</link><pubDate>Fri, 23 Sep 2011 21:09:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37221</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;span style="font-family:arial, helvetica, sans-serif;line-height:16px;"&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:1em;margin-right:0px;margin-bottom:0px;margin-left:0px;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin-top:1em;margin-right:0px;margin-bottom:0px;margin-left:0px;padding:0px;"&gt;&amp;nbsp;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/digital-100-2011.jpg"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/digital-100-2011.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-family:arial, helvetica, sans-serif;line-height:16px;"&gt;From&amp;nbsp;&lt;a href="http://www.businessinsider.com/2011-digital-100#ixzz1YoQHemzw" style="text-decoration:none;color:#003399;"&gt;http://www.businessinsider.com/2011-digital-100#ixzz1YoQHemzw&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The top 10:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:arial, helvetica, sans-serif;line-height:16px;"&gt;&lt;a href="http://www.businessinsider.com/2011-digital-100#ixzz1YoQHemzw" style="text-decoration:none;color:#003399;"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial, helvetica, sans-serif;line-height:16px;"&gt;&lt;/span&gt;&lt;span style="font-family:arial, helvetica, sans-serif;line-height:16px;"&gt;1.&amp;nbsp;&lt;a href="http://www.businessinsider.com/2011-digital-100#1-facebook-1" style="text-decoration:none;color:#1d637d;"&gt;Facebook&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial, helvetica, sans-serif;line-height:16px;"&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:1em;margin-right:0px;margin-bottom:0px;margin-left:0px;padding:0px;"&gt;2.&amp;nbsp;&lt;a href="http://www.businessinsider.com/2011-digital-100#2-zynga-2" style="text-decoration:none;color:#1d637d;"&gt;Zynga&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin-top:1em;margin-right:0px;margin-bottom:0px;margin-left:0px;padding:0px;"&gt;3.&amp;nbsp;&lt;a href="http://www.businessinsider.com/2011-digital-100#3-groupon-3" style="text-decoration:none;color:#1d637d;"&gt;Groupon&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin-top:1em;margin-right:0px;margin-bottom:0px;margin-left:0px;padding:0px;"&gt;4.&amp;nbsp;&lt;a href="http://www.businessinsider.com/2011-digital-100#4-twitter-4" style="text-decoration:none;color:#1d637d;"&gt;Twitter&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin-top:1em;margin-right:0px;margin-bottom:0px;margin-left:0px;padding:0px;"&gt;5.&amp;nbsp;&lt;a href="http://www.businessinsider.com/2011-digital-100#5-dropbox-5" style="text-decoration:none;color:#1d637d;"&gt;Dropbox&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin-top:1em;margin-right:0px;margin-bottom:0px;margin-left:0px;padding:0px;"&gt;6.&amp;nbsp;&lt;a href="http://www.businessinsider.com/2011-digital-100#6-wikimedia-foundation-wikipedia-6" style="text-decoration:none;color:#1d637d;"&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin-top:1em;margin-right:0px;margin-bottom:0px;margin-left:0px;padding:0px;"&gt;7.&amp;nbsp;&lt;a href="http://www.businessinsider.com/2011-digital-100#7-vente-privee-7" style="text-decoration:none;color:#1d637d;"&gt;Vente-Privee&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin-top:1em;margin-right:0px;margin-bottom:0px;margin-left:0px;padding:0px;"&gt;8.&amp;nbsp;&lt;a href="http://www.businessinsider.com/2011-digital-100#8-livingsocial-8" style="text-decoration:none;color:#1d637d;"&gt;LivingSocial&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin-top:1em;margin-right:0px;margin-bottom:0px;margin-left:0px;padding:0px;"&gt;9.&amp;nbsp;&lt;a href="http://www.businessinsider.com/2011-digital-100#9-craigslist-9" style="text-decoration:none;color:#1d637d;"&gt;Craigslist&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin-top:1em;margin-right:0px;margin-bottom:0px;margin-left:0px;padding:0px;"&gt;10.&amp;nbsp;&lt;a href="http://www.businessinsider.com/2011-digital-100#10-palantir-technologies-10" style="text-decoration:none;color:#1d637d;"&gt;Palantir Technologies&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin-top:1em;margin-right:0px;margin-bottom:0px;margin-left:0px;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37221" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/top+10+startups+2011/default.aspx">top 10 startups 2011</category></item><item><title>Bits and pieces of css3</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/09/24/bits-and-pieces-of-css3.aspx</link><pubDate>Fri, 23 Sep 2011 20:18:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37220</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The past few days, i have fast-fed and spma-fed myself css3. I love it. 
Why not? It has many cool features that you just pull them out of your 
pocket like a shiny coin. &lt;br /&gt;&lt;br /&gt;Before css3, to do round corners, you 
have to have a load of javascript files and css files to get it to work;
 Drop shadows? Your best hope would be drop a pre-made image; Border 
made with an image, do not think about it! Pretty text with some 
customized fonts? No way, unless again you drop some borrowed 
javascripts in you file; Pretty text with shadows, No way!&lt;br /&gt;
&lt;br /&gt;Now after css3 ... (Officially, we are not quite in the era of after
 css3 yet. css3 is yet to become a w3c standard and some browsers only 
support a subset of the new features, while older browsers (e.g., ie, 7 
&amp;amp; 8) support none of them.)&lt;br /&gt;
&lt;br /&gt;Still why not jump in knowing you have the cool stuff and there are 
almost always remedies for anything. As a web developer, sooner or later
 you will probably have to learn anyway.&lt;br /&gt;&lt;br /&gt;Bits and pieces of what I have learned:&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;1. Layout&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;How to realize multiple column layout? Before we either use table or multiple floating divs, now in css we can simply say:&lt;br /&gt;&lt;br /&gt;
&lt;code&gt;
&amp;nbsp; .threecols&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; columns: 3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moz-column-width: 200px;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -webkit-column-width: 200px;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -moz-column-gap: 20px;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -webkit-column-gap: 20px;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -moz-column-rule: 1px solid #ddccb5;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -webkit-column-rule: 1px solid #ddccb5;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/code&gt;
&lt;br /&gt;&lt;br /&gt;&lt;b&gt;
2. Round-corners&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To have round corners, we only need to the 
border-radius property. This is probably a common-sense now as 
round-corners has been talked about over and over.
&lt;code&gt;
&lt;br /&gt;&lt;br /&gt;.roundcorner&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; border-radius: 5px;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -moz-border-radius: 5px;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -webkit-border-radius: 5px;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; background-color: #fff;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; border: 2px solid #897048;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; padding: 10px;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; width: 310px;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/code&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;3. Text special effects&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;code&gt;
.text_stroke&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; font-size: 30pt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; color: #c00; /* text color */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -webkit-text-stroke: 1px #000; /* stroke color and weight */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/code&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;code&gt;
.text_wrap&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; word-wrap: break-word;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; width: 200px;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/code&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;code&gt;
.text_shadow&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; color: #897048;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; background-color: #fff;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; text-shadow: 2px 2px 2px #ddccb5;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; font-size: 30pt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/code&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;code&gt;
.text_overflow&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; color: #897048;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; font-size: 30pt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; overflow: ellipsis;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; white-space: nowrap;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; width: 12em;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/css3.png"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/xun/blog/css3.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To be continued ...&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37220" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/css3/default.aspx">css3</category></item><item><title>He's dead, Jim!</title><link>http://dotnetslackers.com/Community/blogs/xun/archive/2011/09/22/he-s-dead-jim.aspx</link><pubDate>Thu, 22 Sep 2011 15:38:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:37218</guid><dc:creator>xxxd</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Yesterday happened upon the death of &amp;quot;Jim&amp;quot;, the blue screen of death of Chrome. &lt;/p&gt;
&lt;p&gt;
&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/chrome-death.png" alt="" /&gt;
&lt;/p&gt;
&lt;p&gt;
That reminded me the new &amp;quot;cute&amp;quot; death screen of windows 8.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/BSOD-windows-81.jpg"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/BSOD-windows-81.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That made me check out the very unimaginative and un-cute death screen of firefox.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/firefoxdeath.jpg"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/firefoxdeath.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That then reminded me of the much dreaded, not cute-at-all mother screen of death of all, the blue screen of death of earlier windows.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/blog/220px-Windows_XP_Blue_Screen_of_Deat.png"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/blog/220px-Windows_XP_Blue_Screen_of_Deat.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=37218" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/xun/archive/tags/screenshot+of+death/default.aspx">screenshot of death</category></item></channel></rss>
