Windows Mobile Support

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Tuesday, 18 September 2012

Service Bus Topics - Define custom rules for messages that don’t respect any rule defined in a topic

Posted on 08:49 by Unknown
In one of my older post I tacked about how we can define filters for each subscriber of a Service Bus Topics. We saw how we can filter messages for a subscriber based on some rules that are defined using FilterExpression:
RuleDescription ruleDescription = new RuleDescription()

{

Action = new SqlRuleAction("set isValid= false"),

Filter = new SqlFilter("value = 10");

}

namespaceManager.CreateSubscription(

"myFooTopic",

"seccondSubscription",

ruleDescription);

var subscription = namespaceManager.CreateSubscription(

"myFooTopic",

" thirdSubscription");

subscription.Add(ruleDescription);

Using these rules is quite simple to define custom rules for the messages from a topic. But what about messages that don’t respect any rules defined in our topic? How we can detect these messages and define a custom rule for them. In a perfect word we can control the messages that arrive in our topic, but in a distributed system these thing doesn’t happen all the time.
For this cased we can use “MatchNoneFilterExpression” that will route to our topic all the messages that were not consumed by our subscribers. For example in our example we only consume messages that have the value equal with 10. What about the rest of the messages? Of course we can define a rule for values that are not equal with 10, but if we have more subscribes with different rules it will complicated to define the non-true rules for all the subscribers.
 RuleDescription notConsumedMessagesRule = new RuleDescription()

{

FilterAction = new SqlFilterAction(“set isNotConsumed = true;”),

FilterExpression = new MatchNoneFilterExpression()

};

subscription.Add(notConsumedMessagesRule);
In the above example our rule adds a property named “isNotConsumed” and set the value to true. Based on this rule we will able to route this messages to a specific subscriber.
In the same way we have another filter expression that is used when we want to define a rule for the messages that match all the filter expression from all our rules – MatchAllFilterExpression.
RuleDescription matchAllRule = new RuleDescription()
{
FilterAction = new SqlFilterAction(“set matchAll = true;”),
FilterExpression = new MatchAllFilterExpression()
};
subscription.Add(matchAllRule);

Using this filter expression we can define custom rules for messages that didn’t respect any defined rule or messages that respect all the rules from our topic. In the end I want to enumerate the filter expression that can be used in this moment:
  • CorrelationFilterExpression
  • MatchNoneFilterExpression
  • MatchAllFilterExpression
  • SqlFilterExpression
Read More
Posted in Azure, service bus, Windows Azure | No comments

updateLayout method of WinJS.Page – what we should be aware of

Posted on 06:43 by Unknown
If you already created a Windows 8 Application in HTML 5 and JavaScript maybe you already used a page control. Every page control has a Java Script file behind this, like in ASPX and WinForms. In this blog post I want to talk about some methods that we can define in this page control – especially one.
If we create a page control from Visual Studio (Add New) you will observe that 3 defaults method are automatically added:
  • ready
  • unload
  • load
  • init
  • processed
  • render
  • error
  • updateLayout
The “ready” method is called after all the controllers were loaded to the page and the DOM element was created. In this moment the element was already rendered to the screen. The “unload” method is used when we have some resources that we want to free (for example some binding).
“updateLayout” method is called when the page layout is change. A case when this method is called by the system is when the layout is changed from landscape to portrait. What we should know about this method is what happens before and after this call.
Let imagine a scenario when the landscape is active. All the content was rendered on the screen. In the moment when the user rotates the device to portrait the next steps will happen:
all the content is re-rendered once again (all the content that is displayed dynamic is scaled
“updateLayout” function is called and our custom UI is apply.
Because of this step is aware w if you really need to do some actions in this method. If you change some UI, the user will see how the UI is rendered twice (the described steps above create this behavior). There are cased when we don’t need this method. For example if we want to apply different or to hide/show different controllers we don’t need to write Java Script. We can use CSS Media Query and specify when this CSS is applying.
body {

background-color: white;

}

@media screen and (-ms-view-state:snapped) {

body {

background-color: black;

}

}

@media screen and (-ms-view-state:fill) {

body {

background-color: red;

}

}

In this way the user will not see strange behaviors when the view state is changed. The CSS is applied before “updateLayout” method is called. In the same time, calling this method can have affected our performance because the content is rendered twice. We should try to use this method only in the cases where we absolute need it.
In conclusion, we should try to use the HTML 5 and CSS3 as much as possible. If there are thing that can be done form HTML or CSS don’t do it from Java Script because any UI change from Java Script will trigger also a render event on the UI.
Read More
Posted in Metro App, windows 8 | No comments

Monday, 17 September 2012

Service Bus Topics blog post series – a comprehensive look at Service Bus Queues from Windows Azure

Posted on 22:12 by Unknown
In the last month I wrote a series of post about Service Bus Topics from Windows Azure. In this post I will summarize all the blog posts about Service Bus Topics that I wrote until now:
  • Service Bus Topics - Overview - a short introduction about base concepts in Service Bus Topics
  • Service Bus Topics - How to use it (part 1) - describe how we can add messages to topics.
  • Service Bus Topics - How to use it (part 2)- describe how we can consume messages to topics.
  • Service Bus Topics - Define custom rules for messages that don’t respect any rule defined in a topic
  • Service Bus Topics - Limitations - describe what are the limitations of topics from Windows Azure
  • Service Bus Topics - Using with WCF services - how we can use topics with WCF services
  • Service Bus Topic - Different ways to create and manage it- different locations from where we can manage and control topics
  • Service Bus Topic – How we can migrate from Service Bus Queue - how we should design our application to be able to migrate from queues to topics without changing the code
  • Service Bus Topic - Messages processing problems - problems that we can have with messages from topics.
  • Service Bus Topics - When we can use it (scenarios) - simple scenarios when we can use topics from Azure
In the future I expect to write more about this subject. You can search on my blog for this topic using the following link: http://vunvulearadu.blogspot.com/search/label/service%20bus
In you want to find more information about Service Bus Queues; I have another blog series about this subject: http://vunvulearadu.blogspot.com/2012/08/service-bus-queues-blog-post-series.html
 
Read More
Posted in | No comments

Windows 8 Dev Camp, Cluj-Napoca - September 29

Posted on 03:19 by Unknown

A great Windows 8 Dev Camp will be organized in September 29 by Codecamp and ITSpark. This event is 100% free. We will have 6 great sessions. See you there!
http://codecamp-cluj-sept2012.eventbrite.com/
----------------------------------------------------------------------------------------------
Nu a mai rămas mult până la lansarea oficială a Windows 8. Cu această ocazie Codecamp împreună cu ITSpark vă invită la “Windows 8 Dev Camp”. ÃŽn cadrul acestui eveniment o să disecăm o parte din secretele pe care un dezvoltator trebuie să le cunoască despre Windows 8.

Participarea la eveniment este gratuită. Mulțumim în special sponsorilor pentru susținere.
Agendă
9:15-9:30
Sosirea participanților
9:30-10:20
What's new in Windows 8?
Tudor Damian
A brief overview of the new features and performance improvements in Windows 8.
10:30-11:20
Integrating the Windows 8 Experience with Contracts
Tiberiu Covaci
Windows 8 introduces a new system of integration within the operating system for third-party apps, which have the ability to interact more with each other and with the system itself. In this session we will see how to use it in our new Metro applications for Windows 8.
11:30-12:20
Designing Windows 8 Apps with Blend and PowerPoint Storyboards
Lorant Domokos
Windows 8 is a new Windows experience. Through the bold use of color, typography, and motion, Microsoft design style brings a fresh new approach to the user experience. In this talk, you'll learn about the Microsoft design principles and how to apply these principles to build your own apps using PowerPoint Storyboards and Blend.
12:20-13:00
Pauza de masa
13:00-14:00
Developing modern web applications: HTML 5, MVVM, Web Sockets
Mihai Tătăran
In this session you will see a modern approach to web applications, from designing the client-side JavaScript code, to communication strategies with the server backend. We will touch technologies and frameworks like: HTML 5, knockoutjs, Web Sockets, jQuery.
14:00-15:00
Introducing Windows Azure Mobile Services
Mihai Nadăș
Windows Azure Mobile Services makes it easy to connect a scalable cloud backend to your client and mobile applications. It allows you to store structured data in the cloud that can span both devices and users, integrate it with user authentication, as well as send out updates to clients via push notifications. In this session I will introduce Windows Azure Mobile Services, reveal the value they bring to developers and how it helps Windows 8 development.
15:00-16:00
Building and testing Windows 8 Metro Style Applications using C++,C# and JavaScript
Radu Vunvulea
In this session you will discover how you can develop applications that use components written in different programming language (C++, C# and JavaScript). A brief introduction in WinRT Components and testing tools will also be presented.
Sponsori:
Yonder
Smallfootprint


Pentru mai multe informații
  • Radu Vunvulea
    • vunvulear@yahoo.com
  • Mihai Nadăș
    • mihai@nadas.ro
Read More
Posted in cluj-napoca, codecamp, eveniment, itspark, windows 8 | No comments

Saturday, 8 September 2012

Service Bus Topics - When we can use it (scenarios)

Posted on 05:10 by Unknown
In the last period of time I wrote a lot about Service Bus Topics from Windows Azure. For this series of post about this subject, these will the last one (or I hope so). In this post I will try to find some scenarios when Service Bus Topics can help us to write better applications.

We can imagine that we are writing an application for a bank that processes all the transactions that are made through the internet. Each transaction can have a series of states. For each state we need to execute some actions that can change in time. All the time we have a predefined flow, that will not change in time, but beside this we will need to make some audit, maybe some tracing when we suspect that something is not okay. In the same time, depending on the country we will need also to communicate some information to government or to other 3th parts that are involved in the transactions.
To be able to do something like this we will need a system where we can process messages and add in any time new subscribers. Also it is very important to not lose any transaction. We could create a system for this, but we don’t need to create again a solution that already exists. Another solution could be BizTalk, but if the flow is not very complicated Service Bus Topics can be the best solution for our problem.
We could add any listener to a transaction in a given state very easily. We could connect 3 or for topics to create a flow where subscribers could process the requests without any kind of problem.

What do you think about an online shop? When a product from catalog is purchased by a client we need to make a lot of action that can go in parallel. We need to: notify the buyer, notify the storehouse, send a request to the courier and so on. All this actions can go in parallel. Because of this Service Bus Topics could be used without any problem. The cost of implementation a solution that is Service Bus Topics would be low.

Not only complicate scenario are suitable for Service Bus Topics. If we need to broadcast messages in a system in a way that can be filtered based on some criteria are suitable for Service Bus Topics. Let’s imagine that we are developing a system that connects hundreds of small devices of our home. From the TV to our lights or the doors. Over Service Bus Topics we can create a system that send messages to these devices and is able to broadcast and route all the messages. In the next post I will try to describe a solution for this.

Service Bus Topics can be used when we have a message that need to be processed by more than one listener. In these cases it can be one of the best solutions on the market. When we have a message that needs to be processed by only one listener we can use Service Bus Queues. We can write the code to use Service Bus Queue in a way that will permit us to migrate to Service Bus Topics without changing a line of code (only the configuration file).
Read More
Posted in service bus, Windows Azure | No comments

Thursday, 6 September 2012

Eveniment lansare Visual Studio 2012 in Cluj-Napoca, 12/09/2012

Posted on 03:24 by Unknown
Cu ocazia lansării oficiale Visual Studio 2012 Code Camp și RABS vor organiza pe data de 12 Septembrie 2012 un eveniment gratuit pentru a urmări in direct transmisia evenimentului de la Redmond.
Evenimentul va fi organizat la sediul iSDC din Florești, iar Microsoft Romania va asigura mâncarea și băutura in acea seara.
Înscrierile se fac la http://lansareaVS2012.eventbrite.com/ iar numărul de locuri este limitat.

Agenda:
   18:30 ÃŽnregistrarea participantilor
   19:00 ÃŽncepe transmisia
   21:00 Scurta pauza
   23:00 DiscuÈ›ie deschisă pentru cei ce au mai rămas sau nu au adormit
Read More
Posted in cluj-napoca, codecamp, eveniment | No comments

Wednesday, 5 September 2012

Service Bus Topic - Messages processing problems

Posted on 06:30 by Unknown
In the last post about Service Bus Topics we discover how we can write code in such a way that migration from Service Bus Queues from Service Bus Topics can be done only changing the configuration file. Today I want to talk a little about what we should be aware where we process messages from topics using Peek and Lock pattern.
As we have already seen, Service Bus Topics allows us to process messages in two ways:
Receive and Delete – when messages are automatically removed after there are received
Peek and Lock – when messages are removed from the topic only after subscription call the Complete() method
We will talk about the last one. When we are using the Peel and Lock pattern, each message after is received from Service Bus is automatically locked and cannot be consumed by other client from the same subscription. If the client is able to process the message with success, he can call the Complete() method. In that moment the message is automatically removed from Service Bus. Is something happen with the message processing, for example an error occurred, the client can call the Abandon() message. In that moment the message is available once again for the given subscription. In the same time, after a message is send to a client of the given subscription, each client have a specific time when he can call Complete() or Abandon method(). If this method is not called, the message will be available one again for the given subscription. The default value is 60 seconds, but can be configured to any value.
In the next example we will try to process a message from the subscription. If an error occurred, in the catch block we will call the Abandon() method:
BrokeredMessage message = topicClient.Receive();
try
{
// process message
message.Complete();
} catch(Exception ex)
{
// log error
message.Abandon();
}
We would saw that the solution is okay and we covered this specials case. We have only on half of the solution. In a case of an error we abandon the message, this is great but what happens next? The message will be unlocked and we will be able to process it again.
We should take care about two other things. The first one is what we are doing when we process a message. For example if we insert some information to database or call another service. In these cases we should have a transactional call. We should be able when calling the Abandon() message to rollback all things that we done.
To be able to make the rollback you can image very complicate scenarios ad there will be cases when an external service will not permit a rollback (for ex. if you call an external service). One simple solution involves the MessageId of each message. This id never changes, even if we call the abandon message for 100 times. Because of this we can store the MessageId in a list and check the id before processing it. In this way we will be able to know if we process the message already. We can image a situation when we have some steps for each message. We can store the step in this list. In this way we will not make some calls to different resources more than one. This type of processing is called “At least once processing”.
The other thing that we need to care about is about the messages that cannot be processed and will throw an error each time. For these cases, BrokeredMessage has a property that tells us how many times the client tried to processes the message. The name of the property is DeliveryCount. I gave a solution in another post for Service Bus Queues. The solution is the same for Service Bus Topics also. http://vunvulearadu.blogspot.hu/2012/08/service-bus-queues-from-windows-azure_1953.html
    BrokeredMessage message = topicClient.Receive();
if(message == null)
{
Thread.Sleep(1000);
continue;
}

try
{
// process our message.
message.Complete()
}
catch(Exception ex)
{
if( message.DeliveryCount > 3 )
{
message.DeadLetter();
}
message.Abandon();
}
In this post we saw what we should handle some specials case situations when working we are receiving and processing message from Service Bus Topics. We should not ignore these cases because we can create duplicate data in our storage system or to process the same messages over and over again.
Read More
Posted in service bus, Windows Azure | No comments
Newer Posts Older Posts Home
Subscribe to: Posts (Atom)

Popular Posts

  • Service Bus Topic - Automatic forward messages from a subscription to a topic
    Windows Azure Service Bus Topic is a service that enables us to distribute the same messages to different consumers without having to know e...
  • CDN is not the only solution to improve the page speed - Reverse Caching Proxy
    I heard more and more often think like this: “If your website is to slow, you should use a CDN.” Great, CDN is THE solution for any kind of ...
  • Content Types - Level 6: Rich Media
    Level 6: Rich Media NOTE: This is part 7 of 7 and the conclusion of this continuing series; please see earlier posts for more background inf...
  • E-Learning Vendors Attempt to Morph Mobile
    The sign should read: " Don't touch! Wet Paint !" I had a good chuckle today after receiving my latest emailed copy of the eLe...
  • Patterns in Windows Azure Service Bus - Message Splitter Pattern
    In one of my post about Service Bus Topics from Windows Azure I told you that I will write about a post that describe how we can design an a...
  • Content Types - Level 2: SMS Campaigns
    Level 2: Interactive Messaging NOTE: This is part 3 of 7 in a continuing series; please see earlier posts for more background information. L...
  • NetCamp 2012 - Windows 8 development experience
    During this week I participate to NetCamp 2012.  This was the 6th NetCamp event and is organizing by Evensys. NetCamp is a dedicated event f...
  • Publishing our CellCast Widget for iPad
    The rush has been on this week as our development team worked to design a new version of our CellCast Widget specifically for Apple's up...
  • Cum sa salvezi un stream direct intr-un fisier
    Cred ca este a 2-a oara când întâlnesc aceasta cerința in decurs de câteva săptămâni. Se da un stream și o locație unde trebuie salvat, se c...
  • Content Types - Level 3: Voice
    Level 3: Voice-based Content and Assessments NOTE: This is part 4 of 7 in a continuing series; please see earlier posts for more background ...

Categories

  • .NET
  • .NET nice to have
  • #if DEBUG
  • 15 iunie 2011
  • 15 octombrie 2011
  • 2011
  • abstracta
  • action
  • adaugare
  • ajax
  • Amsterdam
  • Android
  • aplicatii
  • App Fabric
  • Apple iSlate
  • array
  • as
  • ASP.NET
  • AsReadOnly
  • Assembly comun
  • async
  • Asynchronous programming
  • asyncron
  • Autofac
  • AutoMapper
  • az
  • Azure
  • Azure AppFabric Cache
  • Azure backup solution
  • Azure Storage Explorer
  • azure. cloud
  • backup
  • BCP utility
  • bing maps v7
  • BitArray
  • BlackBerry
  • blob
  • BlobContainerPublicAccessType
  • breakpoint
  • bucuresti
  • C#
  • cache
  • CallerMemberName
  • CellCast
  • Certificate
  • CES
  • change
  • ChannelFactory
  • clasa
  • classinitialize
  • clean code
  • click event
  • close
  • Cloud
  • Cluj
  • cluj-napoca
  • Code contracts
  • code retrat
  • codecamp
  • CollectionAssert
  • Compact Edition
  • compara
  • Comparer T .Default
  • CompareTo
  • comparison
  • comunitate
  • concurs
  • Conditional attribute
  • configurare
  • connection string
  • container
  • content type
  • control
  • Convert
  • convertAll
  • convertor
  • cross platform
  • CRUD
  • css
  • custom properties
  • custom request
  • DACPAC
  • Daniel Andres
  • data sync service
  • database
  • date time
  • datetime
  • debug
  • default
  • delegate
  • dependency injection
  • deploy
  • DeploymentItem
  • design patterns
  • Dev de Amsterdam
  • development stoage
  • dictionary
  • diferente
  • digging
  • director
  • Directory.Exist
  • disable
  • dispatcher
  • dispose
  • dropdown
  • dynamic
  • EF
  • email
  • encoding
  • entity framework
  • enum
  • enumerable
  • Environment.NewLine
  • error
  • error 404
  • error handling
  • eveniment
  • event
  • ews
  • excel
  • exception
  • exchange
  • exita
  • explicit
  • export
  • extension
  • field
  • File.Exist
  • finalize
  • fire and forget
  • Fluent interface pattern
  • format
  • func
  • GC.SuppressFinalize
  • generic
  • getdirectoryname
  • globalization
  • gmail
  • hackathon
  • Hadoop
  • handle
  • HTML
  • html 5
  • Html.ActionLink
  • http://www.blogger.com/img/blank.gif
  • HttpModule
  • IComparable
  • IE
  • ienumerable
  • IIS
  • image
  • implicit
  • import
  • int
  • internationalization
  • Internet Explorer
  • interop
  • Ioc
  • IP Filter
  • iPhone
  • iQuest
  • IStructuralEquatable
  • ITCamp
  • itspark
  • java script
  • javascript
  • July 2012
  • KeyedByTypeCollection
  • KeyNotFoundException
  • Kinect SDK
  • lambda expression
  • LightSwitch Microsoft Silverlight
  • linq
  • list
  • lista
  • lista servicii
  • liste
  • Live Connect
  • Live ID
  • load
  • localization
  • lock
  • m-learning
  • MAC
  • Mango
  • map
  • mapare
  • mapare propietati
  • messagequeue
  • meta properties
  • method
  • MethodImpl
  • Metro App
  • Microsoft
  • Microsoft Sync Framework
  • mlearning
  • mlearning devices
  • Mobile Apps
  • mobile in the cloud
  • mobile learning
  • mobile services
  • Mobile Web
  • mongoDb
  • monitorizare
  • msmq
  • multitasking
  • MVC
  • MVC 3
  • MVVM
  • namespace
  • nextpartitionkey
  • nextrowkey
  • Ninject
  • nivel acces
  • no result
  • normalize
  • nosql
  • null expcetion
  • null object pattern
  • NullReferenceException
  • OAuth API
  • office
  • offline
  • Open ID
  • openhackeu2011
  • operations
  • operator
  • optimization
  • option
  • outputcache
  • OutputCacheProvider
  • override
  • paginare
  • pagination
  • path
  • persistare
  • Portable Library tool
  • Post event – CodeCamp Cluj-Napoca
  • predicate
  • predictions
  • prezentare
  • process
  • proiect
  • property
  • propietati
  • query
  • ReadOnlyCollection
  • ReadOnlyDictionary
  • referinta
  • reflection
  • remote
  • reply command
  • request
  • request response
  • resouce
  • REST
  • REST Client
  • RESTSharp
  • ronua
  • rss
  • rulare
  • salvare in fisier
  • sc
  • schimbare timp
  • select
  • select nodes
  • send
  • serializare
  • serialization
  • Server.Transfer. Resposen.Redirect
  • service bus
  • ServiceBase
  • servicecontroller
  • sesiune
  • session
  • Session_End
  • Session_Start
  • setup
  • Sibiu
  • signalR
  • Silverlight
  • sincronizare
  • Single Responsibility Principle
  • SkyDrive
  • skype
  • smartphones
  • smtp
  • Snapguide
  • sniffer
  • socket
  • solid
  • spec#
  • sql
  • Sql Azure
  • SQL CE
  • sql server 2008 RC
  • SRP
  • startuptype
  • stateful
  • stateless
  • static
  • stergere
  • store
  • store procedure
  • stream
  • string
  • string.join
  • struct
  • StructuralEqualityComparer
  • submit
  • switch
  • Symbian
  • Synchronized
  • system
  • tabele
  • table
  • techEd 2012
  • tempdata
  • test
  • testcleanup
  • testinitialize
  • testmethod
  • thread
  • timer
  • ToLower
  • tool
  • tostring
  • Total Cost Calculator
  • trace ASP.NET
  • transcoding
  • tuplu
  • tutorial
  • TWmLearning
  • type
  • unit test
  • unittest
  • UrlParameter.Optional
  • Validate
  • validation
  • verificare
  • video
  • view
  • ViewBag
  • virtual
  • visual studio
  • VM role
  • Vunvulea Radu
  • wallpaper
  • WCF
  • WebBrower
  • WebRequest
  • where clause
  • Windows
  • windows 8
  • Windows Azure
  • Windows Azure Service Management CmdLets
  • windows live messenger
  • Windows Mobile
  • Windows Phone
  • windows service
  • windows store application
  • Windows Task
  • WinRT
  • word
  • workaround
  • XBox
  • xml
  • xmlns
  • XNA
  • xpath
  • YMesseger
  • Yonder
  • Zip

Blog Archive

  • ▼  2013 (139)
    • ▼  November (17)
      • Service Bus - Optimize consumers using prefetch an...
      • Extract relative Uri using MakeRelativeUri method
      • Sync Group - Let's talk about Performance
      • [PostEvent] Slides from MSSummit 2013, Bucharest
      • How to get the instance index of a web role or wor...
      • Sync Group - A good solution to synchronize SQL Da...
      • Throttling and Availability over Windows Azure Ser...
      • How to monitor clients that access your blob storage?
      • Digging through SignalR - Dependency Resolver
      • [Event] Global Day of Coderetreat in Cluj-Napoca! ...
      • Windows Azure Service Bus - What ports are used
      • Debugging in production
      • Simple load balancer for SQL Server Database
      • [PostEvent] MSSummit 2013, Bucharest
      • How to read response time when you run a performan...
      • VM and load balancer, direct server return, availa...
      • Bugs that cover each other
    • ►  October (12)
    • ►  September (10)
    • ►  August (7)
    • ►  July (8)
    • ►  June (15)
    • ►  May (12)
    • ►  April (17)
    • ►  March (16)
    • ►  February (9)
    • ►  January (16)
  • ►  2012 (251)
    • ►  December (9)
    • ►  November (19)
    • ►  October (26)
    • ►  September (13)
    • ►  August (35)
    • ►  July (28)
    • ►  June (27)
    • ►  May (24)
    • ►  April (18)
    • ►  March (17)
    • ►  February (20)
    • ►  January (15)
  • ►  2011 (127)
    • ►  December (11)
    • ►  November (20)
    • ►  October (8)
    • ►  September (8)
    • ►  August (8)
    • ►  July (10)
    • ►  June (5)
    • ►  May (8)
    • ►  April (9)
    • ►  March (14)
    • ►  February (20)
    • ►  January (6)
  • ►  2010 (26)
    • ►  December (1)
    • ►  November (1)
    • ►  October (1)
    • ►  June (2)
    • ►  May (1)
    • ►  April (4)
    • ►  March (1)
    • ►  February (1)
    • ►  January (14)
Powered by Blogger.

About Me

Unknown
View my complete profile