text: Something interesting happened in October (yeh, stocks have been doing comparatively great): IE'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.
  Source:
  With interesting data invariably comes incessant probe of why.
  Why so?
  Some analysis pointed out the geek factor.
  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.
  More analysis dived into the browsers' differences in speed, interface, support for standards (ie., html5 and css3),
  privacy and security and Extensions.
  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!
  Speed-wise, Firefox and IE have greatly improved their speed so much so that Chrome actually is currently losing in
  this battle.
  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'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.
  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.
  In extension offering, FireFox leads the way.
  Under the hood - JavaScript Engines
  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.
  The engine behind Chrome is V8 javascript engine. Copy Wikipedia here:
  "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."
  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 "monkeys" with mostly funny names: SpdierMonkey,
  TraceMonkey, JagerMonkey, IonMoney, then tamarin.
  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.
  Parting words
  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.
  Source:
  Wikipedia: JavaScript Engine
  The New JavaScript Engine in Internet Explorer 9
  The End of an Era: Internet Explorer Drops Below 50 Percent of Web Usage
  The End of an Era: Internet Explorer Drops Below 50 Percent of Web Usage
  Chrome 10, Firefox 4.0, or IE9? The Browser Choice
  Node.js is just about the hottest new language on the horizon. It also has some puzzling catch-phrase such as "JavaScript on the server side".
  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.
  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.
  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.)
  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?
  The statement in big font after the video does not seem to help much. As the following it goes:
  "Node'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."
  ???
  Searching around, I found quite a lot of examples where cool guys flaunting their cool code, however little clear explanations.
  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.
  Eventually, I came to my senses (at least I think) what Node.js does, what makes it special.
  1. Node.js handle things asynchronously. The word "asynchronous" has been a sort of cliche. The big A in AJAX, for example, stands for "Asynchronous". 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.
  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.
  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’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.
  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 "the same script" 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).
  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.
  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.
  . "
  The secrets of Node's success
  The secrets of Node's success
  Just what is Node.js?
  Node.js
  While.
  CSS Lint
  Don’t use ID selectors in CSS
  CSS Lint is harmful
  Don’t use IDs in CSS selectors?
  The following is from the 2011 internet trend report by Mary Meeker (known as "Queen of the Net") released from Web 2.0 Summit San Francisco, CA. The report is a wealth of insights and insightful charts and graphics.
  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.
  1. Globality – We Aren’t In Kansas Anymore…
  2. Mobile – Early Innings Growth, Still…
  Source: Hierarchy of Needs Revisited
  3. User Interface – Text -> Graphical -> Touch / Sound / Move
  Source: Online Audio
  4. Commerce – Fast / Easy / Fun / Savings = More Important Than Ever…
  Source: eCommerce Accelerating Growth
  Source: Local ECommerce is spurred by mobile development
  5. Advertising – Lookin’ Good…
  6. Content Creation – Changed Forever
  Source: Print Down
  7. Technology / Mobile Leadership – Americans Should Be Proud
  8. Mega-Trend of 21st Century = Empowerment of People via Connected Mobile Devices
  Source: 16 Minutes Before / After Japan Earthquake on 3/11/11Snapshots of @replies From & To Twitter Users in Japan
  9. Authentic Identity – The Good / Bad / Ugly. But Mostly Good?
  10. Economy – Lots of Uncertainty
  INTERNET TRENDS – Web 2.0 Summit -San Francisco, CA - Mary Meeker (marym@kpcb.com) – October 18, 2011
  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.
  Source: Microsoft IE 6 Count Down
  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.
  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.
  Source: China Now Has Over 500 Million Net Users [CHART]
  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?
  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.
  China Now Has Over 500 Million Net Users [CHART]
  Microsoft IE 6 Count Down
  Microsoft IE 6 Count Down
  More Chinese netizens access internet via Mobile than PC
  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.
  Source:Selenium -Open Source Test Automation: An Overview
  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.
  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:
  Source: Top 5 Challenges for Selenium Users (San Francisco Meetup)
  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
  Top Selenium Tips From The Sauce Codebase,
  who distilled the essence from the sucesses or failures 8 million tests):
  1) Use implicit waits;
  }
  2) Use explicit the right way
  Never use static wait:
  sleep (10)
  (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.)
  Instead, use a condition wait
  public IWebElement ExplicitWaitUntilForElement(IWebDriver webDriver, String id, int timeout = 10)
  {
  webDriver.Url = "";
  var wait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(timeout));
  return wait.Until((d) => d.FindElement(By.Id("someDynamicElement")));
  }
  or
  public void WaitforElementPresent(IWebDriver webDriver, String id, int timeout = 10)
  {
  //var sw = new Stopwatch();
  //sw.Start();
  for (int i = 0; i< 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
  }
  }
  }
  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.
  3) Create a magic login method
  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.
  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.
  Source:
  Selenium -Open Source Test Automation: An Overview
  WebDriver: Advanced Usage
  Top Selenium Tips From The Sauce Codebase
  Top 5 Challenges for Selenium Users (San Francisco Meetup)
  Selenium - Page Object Pattern
  Have developed numerous web site now, big and small, fancy and dumb, started clean or jumped in middle way. Sometimes I was responsible 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.
  For example,
  (To be fair to myself, the classes are tweaks from Ext original ones.)
  ;
  }
  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 octopus with great many arms, where do I even start?
  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's css is simple and pleasant to read:
  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;
  }
  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;
  }
  What are the problems? What are the traps that we stepped into however she managed to escape
  In a presentation at Webstock conference, Nicole laid out the problems and some principles. The problems are with the majority of sites are:
  According to her, the so-called best practices are actually the traps that trapped us to those problems.
  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:
  1. Classitis
  Classes are our friends. Seeing a lot of IDs is actually very bad. Run from this kind of code:
  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.
  2. Never add an non-semantic element
  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.
  3. Never add a non-semantic class
  Never want a class like "bigRedText" or "giantRedText".
  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.
  3. Use decadent selectors
  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’ tabs), and even then, only when you are absolutely certain that there will never be any markup changes. Very hard to guarantee, no?
  4. Sites need to look exactly the same in every browser
  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.
  See Also
  Our (CSS) Best Practices Are Killing US
  After bitching and moaning about the instability of Selenium, after searching high and low for alternatives, 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.
  Enough of justifications.
  Selenium Page Object Pattern
  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:
  So take an example of login, a normal selenium login test would be written as the following:
  /***
  *");
  }
  }
  Now with Page oject pattern design in mind, we would wrap the login page in its own object,
  /**
  * the new login test would be:
  /***
  * Tests login feature
  */
  public class TestLogin {
  public void testLogin() {
  HomePage homePage = signInPage.loginValidUser("userName", "password");
  Assert.assertTrue(selenium.isElementPresent("compose button"),
  "Login was unsuccessful");
  }
  }
  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.
  Some principles of Page Oject Pattern:
  See Also:
  Test Design Considerations
  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.
  You probably already have known that it is incredibly hard to be part of Google, but how hard? Here is an overview:
  Feel good about IT job market. And Go Mobile!
  INFOGRAPHIC: The Incredibly Difficult Process Of Getting Hired At Google
  The national job market as a whole is depressing, but on the IT side, especially in the silicon valley, it is quite sunny.
  Do you know that:
  According to Dice'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.
  - Local Technology Salaries Lead the Nation
  IT layoffs have dropped to their lowest level in a decade, and demand for techies is expected to jump 32% by 2018.
  And if you have time or opportunity, please go Mobile now, because Jobs connected to mobile applications is one of the fastest growing hiring requests on Dice.
  And the six hottest new jobs in IT are:
  Business architect:
  The role of the business architect is to fashion high-level company strategy with technology in mind. Think MBA with an IT focus.
  Data scientist
  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.
  Social media architect
  Social media does not just mean just Facebook and Twitter, but also IBM, Jive, and Yammer and a multitude of runner-ups. This creates a demand for IT pros with the specialized knowledge to build secure communities within a business network and between businesses and customers.
  Mobile technology expert
  Is not this obvious?
  Enterprise mobile developer.
  Cloud architect
  "There's so much positive momentum toward cloud integration," says Ron Gula, CEO of Tenable Network Security. "People who can really identify the architecture from a simplicity point of view are going to be in demand."
  The 6 hottest new jobs in IT
  Oh, boy, don'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.
  In the widely-read (maybe intentionally) leaked memo, Google declared that "JavaScript has has fundamental flaws that cannot be fixed merely by evolving the language" and they have taken two strategies to
  a) Co-exist with JavaScript in the begining
  b) Replace JavaScript eventually
  The would-be advantanges or potential of Darts are (as claimed by Google and as Dart is still in its infancy):
  a. OOO (object-oriented), structured and flexible;
  b. familiar syntax like C++;
  c. High performance across all platforms
  So what are "the fundamental flaws" referred by Google?."
  Keep throwing Darts, Google!
  Google Dart aims to supplant 'fundamentally flawed' JavaScript
  Dart: a language for structured web programming
  It does work without them
  Why Geek loves gadget?
  All of the above is from The Tech Comics section in
  Tech comics
  Apple logo redesigned. By a Hong Kong student.
   China, this is what People said about Steve Jobs and his apple
  There are three APPLEs that have changed the world.
  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.
  Newton, from observing an apple fall from a tree, discovered the Universal Law of Gravitation.
  Then there is the Apple of Steve jobs that changed the world of personal computers, then the definition of a phone, the mobile industry.
  Embrace the future and the unpredicability of the future.
  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.
  Smart content - People's capacity for BULLSHIT is rapidly dimining.
  Web is everything and everywhere. Think about context. Think about the other 70% of use cases of the web, watching TV, waiting in Line, #Pooping (my favorite).
  Think mobile. Think about mobile apps.
  Go global, start from mobile. Mobile site can grow into a full-featured, mobile-first, adaptive web site. Desktop-only site is not scalable.
  Link to us
  All material is copyrighted by its respective authors. Site design and layout
  is copyrighted by DotNetSlackers.
  Advertising Software by Ban Man Pro