Web Dev Matters and Me

Web Development Matters - HTML, XML, C#, .NET, AJAX/Javascript(jQuery), CSS, XML-XSLT

ME - LIFE,Philippines, Tokyo, ECE, PhilNITS/JITSE,情報処理, 日本語

things about Philippines, gaming, C# development and web development, how to make money in stock trading

Web Dev Matters and Me
Showing posts with label web. Show all posts
Showing posts with label web. Show all posts

Using Null values in SqlParameters Parameters.AddWithValue method.../ Stock Picks 2013


DEV/STOCKS

XSLT and SEO - an actual result

...few months ago, we deployed an XML-XSLT website that contains rich data content. There are rumors that it doesn't do much in SEO. Since we can't just accept something unless we tried it ourselves, we decided to deploy a version of a blog website....


Status for Week Ending October 5 2012

There is no more stressing than analyzing CDRs field by field... it was like a nightmare recurring over and over again, just like stressful days I had in Tokyo, that nobody can explain the business rules...














Problem with XSLT- blank referrer

It seems there is a problem with XSLT. Actually, it worked really nice and the loading speed of the site is greatly optimized but for one thing... this prevented the page from checking the origin of the request...


I think it works like this.... A page gets a request, XML is rendered to client with the XSLT, then XSLT is requested and after that process how the data should be displayed on the client side. Then, since the file is on the client side, all request made to it will have blank referrer, since it is on the client side... Of course, the browser will not forward your IP address as a referring page...

End of September

A lot have happened this month. I was too busy even to stay online because of recurring issues I had at work. This start of month has been unfortunate for us because my dad suffered stroke.


It just happened just after he woke up, and his left-arm and leg is paralyzed. Later, I learned it was a brain illness, caused by lack of oxygen supply (by the blood) to it. I had a situation like this before, first in Tokyo where I was staying alone. I just felt numbness in my arm, then next to it I can't move anymore. I thought it is just because of the weather because it happened on a winter. Then, when I returned in the Philippines, I had this just as I woke up. I can't move and just shouted for help, but I guess nobody was able to hear it. I tried to pull my numb arm up using my movable arm, and tried to move but didn't worked. Hopeless, I just resolved with a sleep. Fortunately, I recovered after a nap. Maybe a vein got clogged? Not sure what really happened, but it was scary.

We have to stay at the hospital for four days. I recalled the doctor saying my dad needs to be monitored for 48 hours. The experience is just horrible, and even made things stressful.



HIVES?

I'm taking a Ketosis-based diet that I avoid much carbohydrates in food. It is making me lose weight easily, but not much on the body mass. Things seems OK until I woke up and greeted by this...




It was terribly itchy. It would take a good patience not to scratch it. I took down a list of things I have consumed for the last 5 hours because allergic reaction can occur as early as an hour. I visited Medical City in Ortigas and have a dermatologist look at it. Again, I explained I was on Ketosis-diet, we don't have pets at home, I don't have allergies with Crabs or Shrimps nor I have taken those things for the past 24 hours at least, the doctor is clueless too, but she agree that those are allergic reactions. She gave me a prescription for Aerius (Desloratadine) 5mg. I used to take Alerta 10mg, but this is too strong and always makes me drowsy in an untimely situation, even a Venti Americano laced with White mocha can't make me alert. Aerius claims it doesn't make one sleepy, but actually it does. So, take anti-histamine tablets only when it is safe for you to sleep because ANTI-HISTAMINES WILL MAKE YOU FEEL SLEEPY. 


By searching, I'm able to find many disgruntled netizens who also is in Ketosis-mode and developed hives like this. I'm starting to think Ketosis has a factor in that hives for the folllowing reasons:

1. I remembered a time during my college days, it is my first time to take a high-alcoholic drink that hives appeared just after few minutes of taking it. 

2. Taking alcohol will make anyone lose water in them. When there is insufficient water in our body, gluconeogenesis (GNG) will not happen because water is required to make that happen. At this time, instead of taking energy from glucose, the body takes energy from our fats, producing ketones.
So, I think it is an educated guess. So, I decided to eat carbohydrates again as suggested by some netizens. Unfortunately,the hives is still sprouting like wild mushrooms. LOL


Then, I realized I was taking this drink the whole time. actually, I bought a dozen.









When I stopped taking it, the hives stops. It must be the culprit.(AHA!). I suppose those people who started to take carbohydrates back recovered from their hives because they are not using their low-carb artificial sweetener, which is also the reason why their body is reacting to it.


BULLIED SENATOR?

After a blogged accused Sen. Tito Sotto of plagiarism, instead of an apology, Sen. Sotto even provoked the owner of the blog to sue him. Instead of an apology, this is what netizens get.









The turn of events led to Senate President to approve an anti-blogger law (Anti-CyberCrime). This is approved by the President too. It can make anyone in the internet charged by criminal case and be sent to prison in an instant. How was that! :( Are we still living in a democratic country? Maybe we just need an internet censorship and we are a copy of China in terms of freedom-of-expression. I hope we get better government in the coming years.


ANTI ISLAM MOVIE?

Because of a stupid movie, the whole world went in a small chaos. US Ambassador in Libya was killed. 


Their prophet is portrayed as a bad person, to make it short. Read it here. [Anti-Islam Movie]





GLOBE IS DOING SOMETHING WITHOUT TELLING SUBSCRIBERS?

So could it be the reason why I only have almost 10% of my data rate and my connection dropping everytime a rain is about to pour? 


SCARY GAME?




 Had my hopes on this game, and disappointed me in the end. The game claims it is not a surprise game because of a good story, but it is the opposite. It is a surprise game without any story... BOOO!






STOCKS = > MONEY
Of course, if I will have free time from developments, I take time to analyze stocks. 


E-games has been on a downtrend for a long time. I'm just eyeing it, but would not dare to buy this. 




I was able to grab 20k shares of MPI at 4.14, which I disposed on 4.23 . I dont have any news after that.


PX is still red, and people at the forum are fighting other members. Scary talks again? I guess MVP is right about the government being unruly. "ANG GULO GULO NYO!" LOL














With the news, I feel like drooling to add more positions on OIL stocks. OV, OPM, PXP, APO. China doesn't seem to have dispute with Philippines anymore, but the Panatag Shoal remains roped.... 



Trillanes: A hero or a traitor?


The tension between Philippines and China cooled off a bit. Although, some Filipinos distrust Chinese anymore and continuously call to everyone for a mass-boycott of all Chinese related businesses, the standoff between Philippines and China is really one of the worst thing that happened. As a Filipino, I believe that the West-Philippines Sea deserves a recognition to neighboring countries and the exclusive economic zone as well. 

Then, Senator Trillanes began criticizing DFA Sec Del Rosario for his alleged failed negotiation with China that almost had the country on war with the China. Sen. Trillanes claimed to be a "back-channel" envoy to China.  


But on one of the Senate meeting, Senate President Enrile was accused by Sen. Trillanes of rail-roading a way to divide Cam-Sur, that would favor GMA. Instead, SP Enrile asked to Sen. Trillanes about the reports in Amb. Brady's notes where Sen.Trillanes asked the Ambassador not to take notes of their conversation and also have written there that Sen. Trillanes seems to be working in favor of the Chinese government. He simply walked out without answering the senate president's question....



Sen. Trillanes also said MVP is involved there, that fumes Mr. MVP and said... Trillanes is a liar.


I would agree with Mr. MVP.. "Ang gulo gulo nyo (govt)".


Here's an interview with Senate President Enrile..



http://www.juanponceenrile.com/view/245



WEB-DEV


Few things I like to discuss is about facebook comment plugin. If you are a developer having problems with the scrollbar, then simply check if you are floating it. It should go easily as a block element, but if there is a need for you to float it, wrapping it instead should do. Comments will appear below and should not need to scroll, provided that no height attribute is provided for the containing element.



Was asked to modify the site layout again... I might require more holidays for it... :(



...Wonder how long would it take for me to start-up my own company? :(


..good luck to our investments.


The XML page cannot be displayed - Cannot view XML input using XSL style sheet. Please correct the error and then click the Refresh button, or try again later. Access is denied. Error processing resource

The XML page cannot be displayed - 
Cannot view XML input using XSL style sheet.
 Please correct the error and then click the Refresh button, or try again later.


 Access is denied. Error processing resource




On my continued experiment on dynamic XSLT website. It seems that the browsers WILL NOT PROCESS XSL stylesheets if the URL in the href attribute is different to the current document's URL because of cross-domain issue. Although I understand that if they don't do this, every pages might end up X-Domain attacked, but having it denied even on same DOMAIN is just absurd...




So, if you got an XML laced with 


< ?xml-stylesheet type="text/xsl" href="http://sitename.com/index.xsl"?>






on any xml documents in http://sitename.com/myxmlfile.xml




the referenced stylesheet will be processed, but if your site does something like SEO optimization and handles specific file by subdomain...




< ?xml-stylesheet type="text/xsl" href="http://internal.sitename.com/index.xsl"?>






this will display for any xml documents under internal.sitename.com/myxmldoc.xml ... 






So, the browsers got a narrow understanding of cross-domains, treating it as cross-URL. It should be called Cross URL instead of cross domain protection.












 

FTP Upload using C# The remote server returned an error: (550) File unavailable (e.g., file not found, no access).

This error just bumped into me while working with 2 web hosting company. I had almost identical deployment setup for two website. Then, I have a main FTP account that I use to transfer all the files in the server. But I really don't want to use this FTP account as it has a right to the root folder, so I created another FTP account that only has access to a certain folder. This way, I am setting up a little security on the website.

But when I am test deploying my website, I get errors whenever the GetRequestStream method of the FtpWebRequest object.


The remote server returned an error: (550) File unavailable (e.g., file not found, no access).

Which was weird, because I have done this before on the website with my main FTP account. Whenever I will access the ftp site with explorer, I also can't connect. 

After googling a lot of failed solutions, I decided to try few things on my own. I tried to add folder similar to the folder structure in the root (so it looks like MainFolder/SubFolder/MainFolder/SubFolder) .


Then I tried to run my application again and I'm able to add the file smoothly.
I don't like the workaround because I simply tells me to update the already built code and perform another round of testing..

I hope the web hosting company can still find a way... Workaround is OK, but it is a lame excuse.

SQL XML query escapes HTML tags

     just after the big show stopper, I'm now dealing with another one..

Lets say for now, I have something like this

SELECT 'and i'd give up forever to touch ' 'line'
UNION
SELECT 'you cause i know that you feel me so love, your the closest to heaven that i've ever been ' 'line'
UNION
SELECT 'and i don't want to go home right  ' 'line'

UNION
SELECT 'now  and all i can taste is your sweetness ' 'line'
UNION
SELECT 'and all i can breath is your life ' 'line'

FOR XML PATH('test'),TYPE


and, I run it... I'll get those angle brackets escaped (< and >)




fortunately, there is a way to still make those angle brackets, but will lose the XML thing by using value


SELECT 'and i'd give up forever to touch ' 'line'

UNION
SELECT 'you cause i know that you feel me so love, your the closest to heaven that i've ever been ' 'line'
UNION
SELECT 'and i don't want to go home right  ' 'line'

UNION
SELECT 'now  and all i can taste is your sweetness ' 'line'
UNION
SELECT 'and all i can breath is your life ' 'line'

FOR XML PATH('test'),TYPE).value('(/test)[1]','NVARCHAR(MAX)')

will keep the angle brackets, but it is once again, an NVARVCHAR field...

much of an interest, but doesn't help me because I have a large nested XML PATH query.. :(


XSLT8690: XSLT processing failed and all HTML are displayed as mere text

You checked for the encoding, you checked for the xsl output set to html, and even removed all the comments before the xsl template but still you are getting. All the contents displayed as plain text and when you checked your developer tool,

XSLT8690: XSLT processing failed

And frustrated to take hit on google to find the solution? well, relax because I encountered this once and even wasted almost a week worth of things to do because it works in Chrome, it works in Firefox, it works in Safari, but NOT IE...(8 or 9 too).


If I've done it right, then how come it is displaying properly in other browsers and NOT IT... I understand how you feel..


But the real reason is, you "might" have screwed it a little and those non-IE friends just wouldn't mind about it. Too bad that it will not tell you where did you get wrong (even if you sing out loud.. LOL).


We don't know where it got penalized by IE,so we're asking .NET side where. Using XslCompiledTransform.


It is simple, just instantiate XslCompiledTransform object and pass true in the constructor like this.

XslCompiledTransform sparemyxsl = new XslCompiledTransform(true);
sparemyxsl.Load(pathToYourStyleSheet);


Even if this stylesheet is using include or import, once you invoked the Load method, it will process all related XSL stylesheets, merge it and check what's going on. It will throw an exception when it finds something bad.


On my experience, I accidentally added an extra line of include that also refers to the same xsl file. It is a good start. (^_^). I hope you can find the fault part. 

Happy Coding.



and don't forget the namespace for XslCompiledTransform

System.Xml;
System.Xml.Xsl;

Adding stylesheet to XML document.

I am currently working on a web enhancement where XML datas are passed on the response object. It seems that the website will serve as a service point for some request. Since it is in XML format, it can be consumed by some applications with minimal parsing. Even with javascripts and XSLT too, which makes it really flexible.

Right after it is fetched from the database, the result is in Scalar form XML, thanks to SQL's XML PATH, which removes XML parsing from data resultset.

Doing this with XML LINQ is pretty easy.

XDocument xml = XDocument.Parse(stringFromDataBaseScalarResult);
var pi = new XProcessingInstruction("xml-stylesheet","type=\"text/xsl\" href=\"yourxslfile.xsl\"");
xml.Root.AddBeforeSelf(pi);
doc.Save(Response.Output);




or without LINQ




XmlDocument xml = new XmlDocument();
xml.LoadXml(stringFromDataBaseScalarResult);
XmlProcessingInstruction pi = xml.CreateProcessingInstruction("xml-stylesheet","type=\"text/xsl\" href=\"yourxslfile.xsl\"");
xml.InsertBefore(pi,xml.DocumentElement);
xml.Save(Response.Output);


I have to find some better clean way on the second one, because my initial attempt using Append method placed the processing instruction at the bottom of the xml document, although the stylesheet is still applied. It is an eyesore to some. (including me... hehe).

 



 

Global.asax events are not triggered for static files

One of the great thing to handle dynamic website is to manipulate the output of the page by request. From writing handlers, modules or simply handling the Global.asax events. But just when you had that idea, something will discourage you to prevent using that idea and consider doing an even more tiring (and probably messy) way of doing.

To be able to handle static files in global.asax, we have to change something in the IIS. For 6 and below, it can be done on the server by checking the property of your website. On the application configuration (under home directory tab, click configuration button and the handler tab should be displayed), select a specific static file and click insert. Confirm that the "Verify that file exists" checkbox is NOT checked.


For IIS 7, this is a bit easier. Just be sure to have your application pool to be configured under "Integrated" pipeline and have these in the config file.

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true" />
system.webServer>
 
After this, IIS  should really handle all the request.

IIS doesn't serve unknown MIME types

Ever experienced working on a web project that works perfectly on dev and stage servers then shows up 404 in production? I experienced this as was troubled for some time. Usually, production servers have limited access and configuring it might is probably out of option. 

good thing, it can be configured on your config file.

(lets assume a non-standard extension and treat it like an XML)


for IIS 7 and above versions.

   
                        
   



As for IIS 6, I think it is not possible to configure in config. You will really 
have to kneel down server admins, so deal with them even if they are stubborn.

Few basic things to speed up transition learning in XSLT

Holiday sure is short (although it was a 3 day holiday), especially if we can just realize that we got lots of things to do...

I was able to work on my XSLT templates, and saw how I wrote them few months ago.  I even laughed when I saw that I did a horrible for-each block, that can be solved by  using the concat function, or even simpler than enlosing things between a curly brace (in case of attributes).


It improved a lot, way cleaner than it was before and more "straight-to-the-point", if you know what I mean. we can just directly write the templates as if we're writing HTMLs, without having to nest xsl:elements and attributes..



It always doesn't have to happen on the server side (^_^)

The task I had days ago got a bit more complicated. We're able to track cross-request for any files in the server, but what they want is to track "ALL" the links. And yes, including the bookmarks. (ouch).

Since it doesn't trigger a page request, I had to think of an idea to make it happen. Simply, by injecting javascrip
t on cross request, and have that javascript listen to the click event, I should be able to track which link. How? Thru AJAX. 

Then, I'm able to get thru with it. But then again, the hardest part is to get a portion of text, and have it recorded on the db as well. To make it worst, there is no specific formatting in it. I have a link that points to an anchor[name], but the code I need to isn't in there, it was on the next table row, on the first table field, wrapped in a font tag (yes, very old and doesn't even enclose attribute values in " ), wrapped in a b (bold) tag.

Ok, the fix was a hack... I don't have a choice, right? So with javascript, it happens like this.

1. Find all the a in the page with an attribute name
2. Need to iterate finding the parent until it hits a tr parent
3. Then, find the sibling of this tr parent.
4. On this element, check the first child
5. Find the child elements, and check if it contains the pattern I'm looking for
6. If it does, find all the a with href equal to # and the attribute name of the bookmark
7. Assign an attribute to the link, some attribute I can later get the value and post thru AJAX.

really complex, actually if I can just tell them "Go change the format, some other format like XML", I should have done it earlier...  

 
Oh well, on my trading life... I'm able to gain from OV for a profit. The loss I had handling JAP stocks are fully recovered by my trades in OV for only 2 days. Maybe I'm just lucky this time.


On Feb 20,2012 I'm able to buy OV for at 0.044 (1/5 of my total position acquired) and 0.043 (4/5 of my total position acquired.).

After 3 days, It was on the new HI of 0.057 and I set my cut-loss at 10% of this price (supposedly 0.049), but the situation at that time made me decide to sell it. I'm able to sell all at 0.053.

So on average, I gained:

(0.053-0.044) x 1/5 =0.18% x # of shares
(0.053-0.043) x 4/5 = 0.8% x # of shares

Quite a sum, so I took this time to share the blessing. (^_^)

The price had a slight correction at 0.045.


Then, I bought back 1/5 of the shares (OV) so I won't be left. I also bought PNB. As of the time of writing, I had PNB, OV, PNX, PGOLD and RLC. Now I don't have to be worried having a sudden drop in prices, just what like it happened to the JAP stocks (Ni, ORE) I hold few days ago.

At the time I realized my loss in NI and ORE, I thought of placing my money in a stock that can be less risky. Simply by checking the dividends, I'm able to pick RLC, OV and PNX. RLC and OV will share their blessings this march, while PNX gives me a promising dividend offer to  be announced soon.


With the exception of PGOLD and PNB, which doesn't have a consistent dividend pays, PNB's merger with Allied bank will take effect soon. The trade price is near 70 so, I don't have to wait any longer now. I think the 70/sh price will be higher in the coming days. A merger makes the surviving company bigger, so I think it should be a low risk, hi reward investment.

PGOLD too has a juicy merger with S&R cooking in progress (^_^).




What doesn't kill, makes one stronger

Due to market volatility, and the bad news about greeks debt last week, the market was in a selling spree. JAP stocks got hurt badly, and I even lost quite some money around 80K php estimates on my positions for NI, ORE and GEO. But last friday, it proved that it cannot stand the selling spree anymore and marked a good reversal indicator (^_^)

Also, I'm eyeing for stocks like this one.

but since, it is not yet official, I think the price will rally after March 8,2012 which is the expected annual meeting for this stock. 

PGOLD too seems to just made a critical SPL. I'm pretty sure swing traders knew what will happen next week.


Everyone is into OV too, since OIL and GOLD seems to create another new high.


Setting the market things aside, I'm given a task to track  click request for all FAQ files. This web application must able to log info about the user who clicked the link, the link that was clicked, the time it was clicked, etc. Somebody suggested to use some parsing, but I believe this is like eating soup with a fork, so I simply suggested tracking cross request in Application's Authenticate Request.

Well, it can be on Begin Request, but since we need to identify the user who clicked the link, it has to be on the Authenticate Request, just after the begin request occurred. It lies on the System.Security.Principal namespace.

While things seems to be sweet-sailing on my dev (and as I thought it would be on the server), things didn't worked right. I have to identify the IIS version running on the server and the version of .NET framework... then gotcha, it was on IIS 6.0 all along and defaulted to .NET 2.0 (ouch), so no LINQ for now.

We asked the onshore engineer to allow us to access the test server and see if we can configure something. Earlier test showed that, by default, IIS 6 screens the file in request, then decide on it's own, not passing the info to ASP. I believed it was related to ASPNET_isapi.dll, but didn't catch that early as I'm doing an SSRS task on other hand as well. Seems like I can juggle, huh. LOL!

A little bit on how it was handled, IIS 6 (or maybe 5 too) by default screens static files. HTML,SHTML, css, etc. as long as it is not defined on the list of file types it can handle on the configuration, it will not pass the request information to any handler, so to speak. So it is important to configure the handler mappings, and have it point to

Windows\Microsoft.NET\Framework\[.NET VERSION HERE]\aspnet_isapi.dll



After configuring that, everything worked like a charm! I really love web dev.

Now to get back on my personal web dev. I'm supposed to enjoy a weekend now, but without the market to keep me awake, it would only be Web Dev for me. 







Enabling MS Office Application in Silverlight

I had this task of making a proof of concept sample that will allow users to use the User-Rich text editor Microsoft Word. 

It is really challenging, since working with those object are not something we can do in a jiffy , well at least for someone like me who rarely do MSWord macro things.

Reading thru API and using the new features of C#4.0 thru dynamic types, I'm able to design and implement a class library that can simply use MS Word and perform saving to database. It involves checking MRU and also subscribe to events of the MS Word Interop object. 

Since it is in Silvelight, data access and operations should be thru WCF. I completed the solution, and only later figured out that my ADO.NET class won't work in silvelright.


(x_x) <= sick due to stress

C# Code Optimizations

Today, I asked few developers from a forum(S.O) about some conversion. On my post, I said my need to get the data by performing bit shifts instead of divisions. Though, most of the people there suggested that it is not something that can improve optimization, I strongly disagree.


So, to make an experiment.. how about trying to make two Stopwatch objects ..
on the method that will be executed, initialize an instance, then invoke the Start method. just below that have a loop that performs 10000 times and inside this loop, perform a multiply operation.

After it exits the loop, invoke the Stop method.

then, on the next line, initialize the second Stopwatch object, invoke the start method and have a loop that performs 10000 times and inside this loop, perform a division operation.

after it exits the loop, invoke the Stop method of this object as well...


You can see the difference by checking on the ElapsedTicks of the Stopwatch objects.. I'm sure you now know what I'm talking about (^_^)



Getting reference to Controls in Lightswitch

While trying something in Lightswitch, we encountered a problem that involves using different controls (non-default), like Textbox,Stackpanels, etc. Now, the problem is, the data that will be displayed using those custom controls are not really part of the actual data model.

To Cache or Not To Cache - ASP.NET

I've recently implemented caching on some pages of my website. But it seems that caching won't help much because it is hosted on a shared server. While the page will be optimized using the cache, it can also be a reason to hit a 503 very soon, especially if caching is implemented with varying parameters.


But when should we use caching? I think caching can only solve scenarios to lessen the delay of serving resources to client browsers, instead of having a direct query to resources per request.

For example, I need to display data from database that takes about 1-2 minute query. This data can just be cached to have it served right away. But also, we should keep in mind that, if we put this on cache, we are putting these on memory..... and these memory takes a portion of the application pool's resource.

So, it is important to consider what to cache, and if the server (app pool) can cache.

HttpRequests, Browser, UI Invokes, asynchronous ways in Silverlight 4.0

I had difficulties making HttpRequests/Response handling in Silverlight since it most of the events are asynchronous by nature. It all rooted on a task that involves data to be exported on CSV format. This is really easy (first approach) as I only have to format it accordingly using commas, but unfortunately this was not the case. SaveFileDialog must be invoked on a UI thread, meaning constructing it on non-UI event handlers will throw an exception (must be User invoked), which makes sense since we're dealing with client side here and placing files on a client side without the user's conscent is like planting something wicked on their machine.

With this, I have decided to just have Silverlight post to a server then store those data on the context of Application's Cache. With this, I don't need to worry about getting the stream and deal with the security. So, I did a quick handler hack. At first, I made a synchronous one. After I got it working, I considered a concurrent user request performance and converted it to asynchronous. I noticed slight difference here. The file received from a synchronous handler indicates the complete size of the file, while asynchronous handler don't. It doesn't affect how the request is handled, meaning if your usual query for a resource took 5 seconds, asynchronous handler can't change that. The performance benefit takes place when multiple users performs the same query. Since it doesn't have to wait for the handle to process the request and instead start on a new thread, it offers better performance.

But, I have to write HttpRequest, then another HttpRequest after the asynchronous callback fires, where I can write POST datas, then submit it again and take the response back. It was really different on what I used to do in web, but somehow I starting to find a bit of liking to it.


Things that I found useful:

Dispatcher.BeginInvoke();// Use anonymous method to invoke or set properties

FB Connect