IE7 speed compared to IE8, IE9 and Chrome and how google solved it on google maps

For the company I work for, I’m developing a mapping system to plot properties on a map.

We are using google maps, with custom markers, and a fare amount of GPolygon to plot the outcodes and sector codes on the map.

Some of our customers unfortunately are using IE7 so I’m doing some client side performance testing.

The test is a real basic one:

image

I create a GMap, create 5 polygons with 5 corners, create 20 polygons with 20 corners, so the same using svg, plot a matrix of markers 10×10 and then another of 20×20.

Here are some expected but interesting results:

https://onedrive.live.com/redir?resid=A117AA5E007A0648%212016

It’s interesting to see that drawing a lot of markers is a lot slower than drawing polygons. I was curious to see how google solved this problem, so running fiddler I started to analyse the my browser requests when viewing properties on google maps.

It turned out, google use layers to plot the markers, so instead of plotting hundreds of elements on  top of the map, it’s creating a transparent png image wit those markers on it and than layering this png on top of the map:

So basically the first layer show the earth

layer1

the second layer display the streets

layer2

and the third layer is where they plot the additional data to display on the map

layer3

what they then do is to track the position of the mouse on the map, and as soon as the mouse stops they do a webservice call to get more information about that specific tile.

very smart google, very smart….

My favourite Chrome plugin (Feedly) has a new wonderful version

I’ve been using Feedly for a long time. It’s a smart plugin that connects to Google Reader and presents your blogs in a magazine-like page.

It’s super cool because it presents you with nice images, that helps you screening what you want to read.

Another of my favourite plugins was Shareaholic, but I’ve been having some problems recently sharing stuff on Facebook because of the popup blocker in Chrome.

Now finally Feedly took over Shareholic and started to offer a sharing service via Feedly Mini.

You can read more on the official blog: http://blog.feedly.com/2010/11/08/feedly-mini-redesigned/

 

Thanks Feedly to make my life a little bit better Smile

UoW, Repository and EF

Given UoW:
"Maintains a list of objects affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems."
and Repository:
"Mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects."

Why do you think it’s useful to apply UoW and the Repository pattern to EF?

I think the DataContext in EF IS a UoW in some way, and an EF entity IS a Repository.
Agree, UoW patter is helpful in a complex scenario with multiple contexts, with different connections.
What do you think about it?

answer here please:
http://stackoverflow.com/questions/4146979/uow-repository-and-ef

 

[update]
References:
http://blogs.microsoft.co.il/blogs/gilf/archive/2010/06/21/revisiting-the-repository-and-unit-of-work-patterns-with-entity-framework.aspx
http://msdn.microsoft.com/en-us/magazine/dd882510.aspx

Unveil the Power of BDD with SpecFlow and Selenium Part 1

I am working at a business intelligent product for estate agents, and being it a quite unique and new product, the specs are always changing to meet the agents requirements, that are often very different depending on their market.

First: Selenium is clearly the product I want to use to do UI testing. It’s the most widely adopted product to do Test Automation for Web Applications, and it’s used an supported by Google.
For a certain period I considered to use WebAii, I love their APIs, much more .NET friendly, but It couldn’t run tests with chrome at that time, so I dropped it for Selenium.

Second: I needed a way to keep business requirements in sync with my behaviour testing suite. BDD is a widely accepted  agile software development technique, that allows to write test in the Given/When/Then form, a concept similar to the AAA(Arrange, Act, Assert) used in TDD. There are many different frameworks (http://en.wikipedia.org/wiki/Behavior_Driven_Development#Tools) that helps with BDD in .NET, many makes you write code to define tests, but the one I like the most is SpecFlow.
The reason why I like SpecFlow, is that it allows me to write the tests in plan English.
It uses gherkin as language(http://github.com/aslakhellesoy/cucumber/wiki/gherkin). It was first used by Cucumber for Ruby another BDD framework for Ruby.

This allows me to write the tests together with the business team, there’s nothing technical about it, and it really make the requirements clear for the business and development team, and help to manage the end user expectations.

Untitled

“SpecFlow aims at bridging the communication gap between domain experts and developers by binding business readable behaviour specifications to the underlying implementation.”

http://specflow.org/

“Selenium is a robust set of tools that supports rapid development of test automation for web-based applications. Selenium provides a rich set of testing functions specifically geared to the needs of testing of a web application. These operations are highly flexible, allowing many options for locating UI elements and comparing expected test results against actual application behaviour.”

http://seleniumhq.org/

Here you can download the example of how I’m using the 2 together.

Prerequisites:
Install    Web Deployment Tool
http://www.iis.net/download/webdeploy

Install Java JDK               
http://www.oracle.com/technetwork/java/javase/downloads/index.html

Install SpecFlow                References/SpecFlowSetup_v1.4.0.msi

Have a look at                    References/SpecFlow Guide.pdf
    *if you want to change the testing framework

DownloadDownload the example

OPEN the solution
RUN smnbss.Selenium.Web
RUN the tests in smnbss.Selenium

 

In part 2 I’ll explain my implementation.