<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Ricardo Covo's Weblog</title>
	<atom:link href="http://ricardocovo.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ricardocovo.wordpress.com</link>
	<description>Sharing software development experiences</description>
	<lastBuildDate>Tue, 26 Aug 2008 18:30:38 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='ricardocovo.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/284b7cf1cb64059e19b59114741f88d0?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Ricardo Covo's Weblog</title>
		<link>http://ricardocovo.wordpress.com</link>
	</image>
			<item>
		<title>SpryPhoto &#8211; An excellent and affordable image server</title>
		<link>http://ricardocovo.wordpress.com/2008/08/26/spryphoto-an-excellent-image-server/</link>
		<comments>http://ricardocovo.wordpress.com/2008/08/26/spryphoto-an-excellent-image-server/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 18:18:03 +0000</pubDate>
		<dc:creator>ricardocovo</dc:creator>
				<category><![CDATA[.Net Development]]></category>
		<category><![CDATA[ASP.Net Development]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Dynamic Images]]></category>
		<category><![CDATA[Image Server]]></category>

		<guid isPermaLink="false">http://ricardocovo.wordpress.com/?p=11</guid>
		<description><![CDATA[As a web developer, it is very common to have the need for an image server. Usually the requirement is pretty straight forward: We need to dynamically re size an image. This is very common when you display thumbnails and regular size pictures in a site.
Personally, I also like to have a single source image; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=11&subd=ricardocovo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>As a web developer, it is very common to have the need for an image server. Usually the requirement is pretty straight forward: We need to dynamically re size an image. This is very common when you display thumbnails and regular size pictures in a site.</p>
<p>Personally, I also like to have a single source image; that way, I don&#8217;t have to create all the sizes I need before hand. But most importantly, if I need a new size in the future I don&#8217;t have to create that new size for all the images I already have.</p>
<p>When working on enterprise environment, people tend consider only solutions by big companies which tend to be pretty expensive. People that can&#8217;t afford these solutions try to create the component them selves, which can be very time consuming (if done correctly).</p>
<p>I&#8217;ve been u sing Spry Photo for a while (<a href="http://www.spryphoto.com/" target="_blank">http://www.spryphoto.com/</a>). You can see it in action in <a href="http://www.clickclassified.ca" target="_blank">http://www.clickclassified.ca </a>and <a href="http://www.storybank.com" target="_blank">http://www.storybank.com</a>.</p>
<p><span id="more-11"></span></p>
<p>With Spry Photo, I get all that I need for image resizing and more&#8230; All of it for a very reasonable price. In addition to resizing, it provides cropping,  image conversion, variant quality (affects image sizes) and text overlay (a great way to protect your content).</p>
<p>The integration with ASP.Net which is very simple and straight forward&#8230; I noticed they now have a PHP version which I haven&#8217;t tried.</p>
<p><strong>TIP</strong></p>
<p>In my integration of this product I added an extra step, I generated a CustomControl that inherits from the Image control. This control receives a source url but also an <em>Alias. </em>This alias is translated inside the control to the properties requried by the image server to generate my image.</p>
<p>In my case, I keet the Aliases in the database, but this is just one or many possible implementation. In any case, having the combination of the custom control and alias allows me to have something like this:</p>
<p>&lt;cc:PortalImage id=&#8221;image&#8221; runat=&#8221;server&#8221; src=&#8221;/UserPicture.JPG&#8221; Alias=&#8221;Thumb&#8221; /&gt;</p>
<p>and translate it into:</p>
<p>&lt;img src=&#8221;http://www.storybank.com/ImageServer/SpryIS.aspx?img=../UserPicture.JPG&amp;cell=40,40,0xffffff&amp;qlt=90&amp;cvt=jpg&#8221;&gt;</p>
<p>Doing this will save you time, and if done correctly you can re-use it in upcoming projects.</p>
<p>I hope you find this helpfull.</p>
<p>-Ricardo</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ricardocovo.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ricardocovo.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardocovo.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardocovo.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardocovo.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardocovo.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardocovo.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardocovo.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardocovo.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardocovo.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardocovo.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardocovo.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=11&subd=ricardocovo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ricardocovo.wordpress.com/2008/08/26/spryphoto-an-excellent-image-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d4a7c55a9ac208a6c6fac4b30f9f471?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ricardocovo</media:title>
		</media:content>
	</item>
		<item>
		<title>.Net (c#) Oodle API wrapper</title>
		<link>http://ricardocovo.wordpress.com/2008/03/26/net-oodle-api-wrapper/</link>
		<comments>http://ricardocovo.wordpress.com/2008/03/26/net-oodle-api-wrapper/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 20:18:34 +0000</pubDate>
		<dc:creator>ricardocovo</dc:creator>
				<category><![CDATA[.Net Development]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Oodle]]></category>
		<category><![CDATA[Oodle API]]></category>
		<category><![CDATA[oodle api wrapper]]></category>
		<category><![CDATA[web nodes]]></category>

		<guid isPermaLink="false">http://ricardocovo.wordpress.com/?p=10</guid>
		<description><![CDATA[I recently had the need to interact with Oodle as a way to feed a classified site.
I was suprise to see that while they had php and java libraries/samples already available, but they did not have a .Net one. I searched on their forums and on the web and did not find a library I could [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=10&subd=ricardocovo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I recently had the need to interact with Oodle as a way to feed a classified site.</p>
<p>I was suprise to see that while they had php and java libraries/samples already available, but they did not have a .Net one. I searched on their forums and on the web and did not find a library I could use.</p>
<p>Since I had to interact with the api, I decided to make a library, and publish it as an open source component so other developers can use it.</p>
<p> You can find the library at: <a href="http://www.codeplex.com/oodlenet">http://www.codeplex.com/oodlenet</a>; all the references, source code &amp; samples are included in the workspace.</p>
<p> I hope this helps!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ricardocovo.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ricardocovo.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardocovo.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardocovo.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardocovo.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardocovo.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardocovo.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardocovo.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardocovo.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardocovo.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardocovo.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardocovo.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=10&subd=ricardocovo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ricardocovo.wordpress.com/2008/03/26/net-oodle-api-wrapper/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d4a7c55a9ac208a6c6fac4b30f9f471?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ricardocovo</media:title>
		</media:content>
	</item>
		<item>
		<title>Tools from MS Real Development 07 &#8211; Toronto</title>
		<link>http://ricardocovo.wordpress.com/2007/11/05/tools-from-ms-real-development-07-toronto/</link>
		<comments>http://ricardocovo.wordpress.com/2007/11/05/tools-from-ms-real-development-07-toronto/#comments</comments>
		<pubDate>Tue, 06 Nov 2007 03:09:34 +0000</pubDate>
		<dc:creator>ricardocovo</dc:creator>
				<category><![CDATA[ASP.Net Development]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Efficiency]]></category>
		<category><![CDATA[Performace]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://ricardocovo.wordpress.com/2007/11/05/tools-from-ms-real-development-07-toronto/</guid>
		<description><![CDATA[On October 29-07, I attended the real development event in Toronto presented by Jean-Luc David. I found this event interesting because it was really targeted at developers; it was mainly all demos, and the best part is that they showcased some interesting tools to help us develop better sites.
Not all of the tools shown where new [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=9&subd=ricardocovo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>On October 29-07, I attended the real development event in Toronto presented by Jean-Luc David. I found this event interesting because it was really targeted at developers; it was mainly all demos, and the best part is that they showcased some interesting tools to help us develop better sites.</p>
<p>Not all of the tools shown where new to me, but they were used in a way made those tools that I was already using even more useful. Important to notice that the <em>majority of the tools are free.</em></p>
<p> I plan to present here a summary of all the tools they used, with a bit of description. I believe this will be helpful to the development community that couldn&#8217;t attend to the event.<br />
<span id="more-9"></span></p>
<p><strong>Security<br />
</strong><a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?familyid=59888078-9daf-4e96-b7d1-944703479451&amp;displaylang=en">Threat Analysis &amp; Modeling</a> &#8211;&gt; This tool allows you to run an attack library against your web site, locate possible threats and suggest solutions</p>
<p><a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A247F514-5643-494C-81B4-F56EA7412AD6&amp;displaylang=en">IE ActiveX Analyze </a>&#8211;&gt; Locates and identifies ActiveX controls on your web site, including objects, applets and embeds tags in your code</p>
<p><strong>Accessibility<br />
</strong><u>Built in Visual Studio 2005</u>. This one I hadn&#8217;t use before and for sure will start using it. To use it go to <em>Tools&#8211;&gt;Check Accessibility&#8230;</em> while on Design view of a page or user control. The tool will analyze the page and generate warnings. This checks for things like images without alternate code.</p>
<p><a target="_blank" href="http://webxact.watchfire.com/">WebXACT</a>. Checks accessibility on an already published web site. Is pretty easy to use, go to the site and enter the URL you would like to check; you&#8217;ll be presented with a report with the warnings/errors found.</p>
<p><a target="_blank" href="http://validator.w3.org/">http://validator.w3.org/</a> &#8211;&gt; Checks the markup validity of web documents (HTML, XHTML, Etc). Simply enter your URL and start fixing <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Development Blocks<br />
</strong>Personally I have used the 3 resources presented for development:</p>
<p><a target="_blank" href="http://msdn2.microsoft.com/en-ca/library/aa480453.aspx">Enterprise Library</a>(now in version 3.1), is a set of reusable, extensible development blocks, developed by the community with MS support that allow developers to focus on application specific development. Personally I have used: the Data Block, Caching Block and Logging Block.</p>
<p><a target="_blank" href="http://www.asp.net/ajax/">ASP.Net Ajax </a>is a open source framework developed by MS to make Ajax development easier.</p>
<p><a target="_blank" href="http://www.asp.net/ajax/ajaxcontroltoolkit/">Ajax Toolkit </a>is a community developed library of reusable AJAX controls for ASP.Net.</p>
<p><strong>Performance<br />
</strong>There are a few ways to improve performance: Only post back what is needed (use ajax), only use the view state when required, use caching when possible, use session state if possible, etc.</p>
<p><a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e2c0585a-062a-439e-a67d-75a89aa36495&amp;displaylang=en">Web App Stress Test Tool</a> &#8211;&gt; This tool I have been using for a quite some time; and while is not by any means an enterprise QA tool, it does help a lot. With this app you will be able to test your web site by simulating many concurrent users.</p>
<p>However, what was most interesting for me was that the presenter used it to measure the size of the pages. By doing that, he was able to compare the performance and the bandwidth usage of pages with/without view state.</p>
<p><a target="_blank" href="http://blog.outofhanwell.com/category/ie-memory-leaks/">Drip Leak Detector</a> -&gt; Using this tool you will be able to see exactly how much memory is used when you do an action on your site. Is very good to debug a site that you know is generating a memory leak but you don&#8217;t know where the leak is.</p>
<p><a target="_blank" href="http://www.microsoft.com/technet/sysinternals/Miscellaneous/DebugView.mspx">Debug View </a>&#8211;&gt; MS Tool that allows you to see the debug output on any computer you can reach by TCP/IP. It is very useful to debug production sites, but bear in mind that the site must have been written with this in mind to be able to get any results: That is, you need to include debug.write type of lines where ever you want to report something back.</p>
<p>Well, that is the extend of my notes. I hope this is helpful!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ricardocovo.wordpress.com/9/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ricardocovo.wordpress.com/9/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardocovo.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardocovo.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardocovo.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardocovo.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardocovo.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardocovo.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardocovo.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardocovo.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardocovo.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardocovo.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=9&subd=ricardocovo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ricardocovo.wordpress.com/2007/11/05/tools-from-ms-real-development-07-toronto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d4a7c55a9ac208a6c6fac4b30f9f471?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ricardocovo</media:title>
		</media:content>
	</item>
		<item>
		<title>Understanding Facebook&#8217;s Opportunities</title>
		<link>http://ricardocovo.wordpress.com/2007/10/17/undestanding-facebook-opportunities/</link>
		<comments>http://ricardocovo.wordpress.com/2007/10/17/undestanding-facebook-opportunities/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 04:57:36 +0000</pubDate>
		<dc:creator>ricardocovo</dc:creator>
				<category><![CDATA[Facebook Dev (.Net)]]></category>
		<category><![CDATA[Applications]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Opportunities]]></category>

		<guid isPermaLink="false">http://ricardocovo.wordpress.com/2007/10/17/undestanding-facebook-opportunities/</guid>
		<description><![CDATA[Overview 
By now, you are probably familiar with Facebook and what it is; in fact, chances are that you are already addicted to it. In their own words, Facebook is a social utility that connects you with people around you.
The success of this site is a great example of Web 2.0: we have passed from being [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=8&subd=ricardocovo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>Overview</strong> </p>
<p>By now, you are probably familiar with Facebook and what it is; in fact, chances are that you are already addicted to it. In their own words, <em>Facebook is a social utility that connects you with people around you.</em></p>
<p>The success of this site is a great example of Web 2.0: we have passed from being strictly consumers, to become great contributors of the Internet content. On Facebook, users can publish almost everything: posts (editorials), photos, videos, create groups and even create classified ads.</p>
<p>Facebook started as a school-only site; but since opening the site to everyone, they have experienced and continue to experience very impressive growth, with an even more impressive user engagement. Let&#8217;s look at the numbers: </p>
<ul>
<li>Has 43 million active users, with the number doubling every 6 months!</li>
<li>50% of users return to the site at least once a day.</li>
<li>A typical Facebook user is 25 years or older.</li>
<li>5th site in number of Page views</li>
<li>1st photo site</li>
</ul>
<p>Impressed yet? Well, lets see the numbers for in Canada in, one of the countries with greatest reception of Facebook:</p>
<ul>
<li>6 million active users (1 in ever 5 Canadians!)</li>
<li>9 out of the top 30 cities (in terms of memberships) are Canadian including
<ul>
<li>#2 for Toronto (with 800.000) users</li>
<li>#3 Vancouver</li>
</ul>
</li>
</ul>
<p> In fact, a Development Camp series (2 conferences) hold in Toronto in August and October respectively, drew crowd of 1000 people in total.</p>
<p><strong>New, Exciting Opportunities</strong></p>
<p><span id="more-8"></span> The opportunities to reach the Facebook users market goes beyond the regular advertising models or self promoting via community content.</p>
<p>Facebook has given 3rd party companies the ability to create applications that gives them immediate potential access to massive audiences; not only that, they allow developers and companies to monetize on their applications!</p>
<p>They have created a model where they have given the developer community the power generate applications used within Facebook; in my opinion this is a great idea: getting thousands of people thinking about and generating applications with fresh ideas and at an amazing rate.</p>
<p>Granted, not all the applications are great, but a more few are good or great; and those are enough to addict us further, increasing our engagement with Facebook.</p>
<p>So, with such a massive audience, is no surprise to find business of all sizes looking for ways to reach the Facebook&#8217;s users with their own applications. Big corporations such as <strong>Telus</strong> and <strong>Red Bull </strong>already run applications; and even banks are interested, in order to reach a younger market <strong>TD Canada Trust </strong>has announce it will develop an application .</p>
<p><em>What does this mean? </em>This basically means, that you can create a web site, that will reside within Facebook, will have immediate access to a subset of Facebook&#8217;s data and will have the potential to reach big audiences.</p>
<p><strong>How are people using this?</strong></p>
<p>Companies are using this opportunity to do several things:</p>
<ul>
<li>Have their Facebook application complement their Web Site offerings.
<ul>
<li>Sample: Jobster for example allows users to upload their resume, which is integrated into their regular site.</li>
</ul>
</li>
<li>Draw traffic to your site, by creating an interactive, fun and useful application on facebook, that have links to your site.</li>
<li>Increase Brand Awareness; I would say this is the case of Telus, they have created a fun application where they promote their brand, services and promotions.</li>
<li>Have stand alone applications: developers and companies have generated brand new applications tailored specifically for Facebook and it&#8217;s social aspect.</li>
</ul>
<p>One thing to mention is that your Facebook application should be aligned with your overall business strategy; unless you are doing a brand new application only for Facebook.</p>
<p>There is still more to discuss in the subject, but this post is getting rather long. I&#8217;ll do a second post on the following topics:</p>
<ul>
<li>Applications Integration Points</li>
<li>Characteristics of Succesful Applications</li>
<li>Promoting your Application.</li>
</ul>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ricardocovo.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ricardocovo.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardocovo.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardocovo.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardocovo.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardocovo.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardocovo.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardocovo.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardocovo.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardocovo.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardocovo.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardocovo.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=8&subd=ricardocovo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ricardocovo.wordpress.com/2007/10/17/undestanding-facebook-opportunities/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d4a7c55a9ac208a6c6fac4b30f9f471?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ricardocovo</media:title>
		</media:content>
	</item>
		<item>
		<title>C#: Asynchronical Function Calls</title>
		<link>http://ricardocovo.wordpress.com/2007/10/11/csharp-asynchronical-function-calls/</link>
		<comments>http://ricardocovo.wordpress.com/2007/10/11/csharp-asynchronical-function-calls/#comments</comments>
		<pubDate>Thu, 11 Oct 2007 17:47:08 +0000</pubDate>
		<dc:creator>ricardocovo</dc:creator>
				<category><![CDATA[ASP.Net Development]]></category>
		<category><![CDATA[Facebook Dev (.Net)]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[Async]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Facebook Profile]]></category>

		<guid isPermaLink="false">http://ricardocovo.wordpress.com/2007/10/11/c-asynchronical-function-calls/</guid>
		<description><![CDATA[As a Web Developer, I&#8217;ve frequently have had the need to make asynchronical function calls.
Usually, you need to do async calls when:

Function takes a long time to process
There is no need to present a response to the user

In this example, I will be showing some code I use on my Facebook Application (Network Trotters) to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=7&subd=ricardocovo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>As a Web Developer, I&#8217;ve frequently have had the need to make asynchronical function calls.</p>
<p>Usually, you need to do async calls when:</p>
<ul>
<li>Function takes a long time to process</li>
<li>There is no need to present a response to the user</li>
</ul>
<p>In this example, I will be showing some code I use on my Facebook Application (<a target="_blank" href="http://apps.facebook.com/networktrotters">Network Trotters</a>) to update the users profiles.</p>
<p>As a quick contextual background, user profiles are cached on Facebook&#8217;s side, and periodically I need to clear the cache so it is updated. This action can take a bit of time when you have a high number of users, but it doesn&#8217;t really require any response to the user.</p>
<p>There are 3 main things you need to do to create an async call:</p>
<ol>
<li>Create a delegate with the signature you would like</li>
<li>Implement a Function with the same function as the delegate</li>
<li>Call the delegate</li>
</ol>
<p><span id="more-7"></span><br />
<strong>Create a delegate</strong></p>
<pre class="brush: csharp;">
public delegate void AsyncDelegate(FacebookService fbService, string connectionString);
</pre>
<p>With the code above, I hve created an async delegate that takes 2 parameters, an FacebookService class (see references below), and a connection string.</p>
<p><strong>Implement a Function</strong></p>
<p>The next step if to implement the function we want to call, as shown in the code below:</p>
<pre class="brush: csharp;">
public void RefreshProfiles(FacebookService fbService, string connectionString)
{
try
{

//get users ids
foreach (string userId in userIds)
{
//refresh the profile url
fbService.RefreshRefUrl(string.Format("{0}?uid={1}", Resources.FbAppSettings.ProfileHandlerUrl, userId));
}
}
catch
{
//ex management.
}
}</pre>
<p>This particular call is refreshing a previously set URL from Facebook&#8217;s cache. This is how I manage to refresh profiles. I call this function periodically. I keep a cache with the last time I ran it, and that way I control how often I want it to run.</p>
<p>Check out my previous post for more info on <a target="_blank" href="http://ricardocovo.wordpress.com/2007/09/26/facebook-profile-management/">Facebook Profile Management.</a></p>
<p><strong>Call Function</strong></p>
<pre class="brush: csharp;">
// Create the delegate.
AsyncDelegate refreshProfileDelegate = new AsyncDelegate(profileRefresher.RefreshProfiles);

// Initiate the asychronous call.
IAsyncResult ar = refreshProfileDelegate.BeginInvoke(fbService, connectionString, null, null);</pre>
<p>First step is to create a delegate,and as an input you put the previously created function.</p>
<p>Second step is to invoke the delegate you just created. In this example I do not receive anything back from the function, so I send callback and object as null.</p>
<p><strong>References</strong></p>
<p>To get more information about check out:</p>
<ul>
<li><a target="_blank" href="http://http://www.codeplex.com/FacebookToolkit/Release/ProjectReleases.aspx?ReleaseId=5387">Facebook Developer Toolkit .Net </a>for documentation on the wrapper used in this post</li>
<li><a target="_blank" href="http://apps.facebook.com/networktrotters">Network Trotters</a>: Facebook Application</li>
</ul>
<p><strong>Complete Code</strong></p>
<pre class="brush: csharp;">
//Deleage definition
public delegate void AsyncDelegate(FacebookService fbService, string connectionString);

public class ProfileRefresher
{
public ProfileRefresher()
{
}

public static void Run(FacebookService fbService, string connectionString)
{
//if is null we need to update
if (HttpContext.Current.Cache["UpdateProfiles"] == null)
{
ProfileRefresher profileRefresher = new ProfileRefresher();

// Create the delegate.
AsyncDelegate refreshProfileDelegate = new AsyncDelegate(profileRefresher.RefreshProfiles);

// Initiate the asychronous call.
IAsyncResult ar = refreshProfileDelegate.BeginInvoke(fbService, connectionString, null, null);

//we set the cache
HttpContext.Current.Cache.Add("UpdateProfiles", true, null,
DateTime.Now.AddMinutes(60),
Cache.NoSlidingExpiration, CacheItemPriority.High, null);
}
}

public void RefreshProfiles(FacebookService fbService, string connectionString)
{
try
{
//Get user Ids -
foreach (string userId in userIds)
{
fbService.RefreshRefUrl(string.Format("{0}?uid={1}", URL_STATIC, userId));
}
}
catch
{
//ex management.
}
}
}
</pre>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ricardocovo.wordpress.com/7/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ricardocovo.wordpress.com/7/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardocovo.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardocovo.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardocovo.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardocovo.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardocovo.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardocovo.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardocovo.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardocovo.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardocovo.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardocovo.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=7&subd=ricardocovo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ricardocovo.wordpress.com/2007/10/11/csharp-asynchronical-function-calls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d4a7c55a9ac208a6c6fac4b30f9f471?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ricardocovo</media:title>
		</media:content>
	</item>
		<item>
		<title>Maintaining ViewState consistency in a web farm environment</title>
		<link>http://ricardocovo.wordpress.com/2007/09/28/maintaining-viewstate-consistency-in-a-web-farm-environment/</link>
		<comments>http://ricardocovo.wordpress.com/2007/09/28/maintaining-viewstate-consistency-in-a-web-farm-environment/#comments</comments>
		<pubDate>Fri, 28 Sep 2007 15:59:47 +0000</pubDate>
		<dc:creator>ricardocovo</dc:creator>
				<category><![CDATA[ASP.Net Development]]></category>

		<guid isPermaLink="false">http://ricardocovo.wordpress.com/2007/10/01/maintaining-viewstate-consistency-in-a-web-farm-environment/</guid>
		<description><![CDATA[Originally written on June 2006 
This message is relevant to all of us who build ASP.Net applications that are being deployed into a Web Farm/Garden. A small modification will have to be done in the web.config to avoid view state inconsistencies.
The problem is that the ViewState on ASP.Net pages are encoded based on a Key. By [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=6&subd=ricardocovo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><em>Originally written on June 2006</em> </p>
<p>This message is relevant to all of us who build ASP.Net applications that are being deployed into a Web Farm/Garden. A small modification will have to be done in the web.config to avoid view state inconsistencies.</p>
<p>The problem is that the ViewState on ASP.Net pages are encoded based on a Key. By default an application will use the key on the machine.config file, which is auto generated, thus, different in every machine (server). If an application runs in a web farm, then there is a potential of having inconsistencies in the way the ViewState is encoded/decoded.</p>
<p>The solution is to set a the key used for encoding in the web.config&#8230; and setting it to a static key. This way all the encoding/decoding of the ViewState will be done with the same Key, and there will be no problems. Plus the Key will have an application scope, instead of a Server scope (which has when uses the machine.config).</p>
<p>The setting in the web.config is something like this (the one below is an example only):</p>
<p>&lt;system.web&gt;<br />
  &lt;machineKey validationKey=&#8221;21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4&#8243;  decryptionKey=&#8221;261F793EB53B761503AC445E0CA28DA44AA9B3CF06263B77&#8243; validation=&#8221;SHA1&#8243; /&gt;<br />
  &lt;!&#8211; OTHER SETTINGS &#8211;&gt;<br />
&lt;/system.web&gt;</p>
<p>It is recommended to have different key setting for each application. Here are a key generator:</p>
<p><a target="_blank" href="http://www.aspnetresources.com/tools/keycreator.aspx">Machine Key Generator</a></p>
<p>So, basically, if our application is on a web farm, or we think it will be, it is recommended to add a machine key section in our web.config.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ricardocovo.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ricardocovo.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardocovo.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardocovo.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardocovo.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardocovo.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardocovo.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardocovo.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardocovo.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardocovo.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardocovo.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardocovo.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=6&subd=ricardocovo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ricardocovo.wordpress.com/2007/09/28/maintaining-viewstate-consistency-in-a-web-farm-environment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d4a7c55a9ac208a6c6fac4b30f9f471?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ricardocovo</media:title>
		</media:content>
	</item>
		<item>
		<title>ASP.Net 2.0 web application deployment</title>
		<link>http://ricardocovo.wordpress.com/2007/09/28/aspnet-2-web-application-deployment/</link>
		<comments>http://ricardocovo.wordpress.com/2007/09/28/aspnet-2-web-application-deployment/#comments</comments>
		<pubDate>Fri, 28 Sep 2007 15:46:35 +0000</pubDate>
		<dc:creator>ricardocovo</dc:creator>
				<category><![CDATA[ASP.Net Development]]></category>
		<category><![CDATA[ASP.Net 2.0]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[web deployment projects]]></category>

		<guid isPermaLink="false">http://ricardocovo.wordpress.com/2007/10/01/aspnet-20-web-application-deployment/</guid>
		<description><![CDATA[Originally written on April, 2006 
ASP.Net 2.0 has introduced a few new different concepts in regards of dll generation and deployment.
 In ASP.Net 1.x, all your class files would get compiled into 1 dll and that was it. In the new world there are actually 3 options:

 You release everything including class files and they get compiled on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=5&subd=ricardocovo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><em>Originally written on April, 2006</em> </p>
<p>ASP.Net 2.0 has introduced a few new different concepts in regards of dll generation and deployment.</p>
<p> In ASP.Net 1.x, all your class files would get compiled into 1 dll and that was it. In the new world there are actually 3 options:</p>
<ol>
<li> You release everything including class files and they get compiled on the fly. This means nothing of the web application gets copied to the bin folder.</li>
<li>You release only binaries. Everything, including ASPX pages are pre-compiled (If you open the ASPX file after the compilation you can’t see your client side code). This means everything is in the bin folder, pretty much one precompiled file per file in your application.</li>
<li>A mix of the 2 above (and the most similar to ASP.Net 1.x). Every class gets compiled, but ASPX pages remain normal. Even in this scenario, multiple dlls get generated per project. </li>
</ol>
<p>One of the main challenges here is the version management; you can not implicitly assign versions (no AssemblyInfo.cs in web apps), plus there are multiple assemblies generated.</p>
<p>However, there is a command that will merge all your dlls (per application) into one, applying versions, signatures, etc. The utility command is called <strong>aspnet_merge.exe</strong>. It is important to know what it does, but notice that we won’t have to use it directly as Microsoft has now released it as an Add-On for Visual studio.</p>
<p>The Add-On is really easy to use, and I would recommend we all get familiar with it. You can get it here: <a href="http://msdn2.microsoft.com/en-us/asp.net/Aa336619.aspx" target="_blank">http://msdn2.microsoft.com/en-us/asp.net/Aa336619.aspx</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ricardocovo.wordpress.com/5/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ricardocovo.wordpress.com/5/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardocovo.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardocovo.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardocovo.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardocovo.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardocovo.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardocovo.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardocovo.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardocovo.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardocovo.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardocovo.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=5&subd=ricardocovo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ricardocovo.wordpress.com/2007/09/28/aspnet-2-web-application-deployment/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d4a7c55a9ac208a6c6fac4b30f9f471?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ricardocovo</media:title>
		</media:content>
	</item>
		<item>
		<title>Facebook Profile Management</title>
		<link>http://ricardocovo.wordpress.com/2007/09/26/facebook-profile-management/</link>
		<comments>http://ricardocovo.wordpress.com/2007/09/26/facebook-profile-management/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 17:59:43 +0000</pubDate>
		<dc:creator>ricardocovo</dc:creator>
				<category><![CDATA[Facebook Dev (.Net)]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Profile]]></category>

		<guid isPermaLink="false">http://ricardocovo.wordpress.com/2007/09/26/facebook-profile-management/</guid>
		<description><![CDATA[In this post I will discuss how I implemented the Profile Management for Network Trotters .
Profile Management Generals
As an application developer, you get the opportunity to place some information in the user profile page. Specifically you can set a Profile Action (link below the Profile Pic) and a Profile Box.
In your application you basically tell [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=4&subd=ricardocovo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In this post I will discuss how I implemented the Profile Management for <a target="_blank" href="http://apps.facebok.com/networktrotters/">Network Trotters </a>.</p>
<p><strong>Profile Management Generals</strong></p>
<p>As an application developer, you get the opportunity to place some information in the user profile page. Specifically you can set a Profile Action (link below the Profile Pic) and a Profile Box.</p>
<p>In your application you basically tell the Facebook platform where it should get the FBML/HTML that defines both the Profile Action and Profile Box. It is important to notice, that <strong>Facebook will Cache this FBML/HTML, until you specifically tell them to refresh it</strong>.</p>
<p>So in summary, you set the user Profile from your application, but you have to build a mechanism to refresh the users profile periodically.</p>
<p><strong>Context</strong></p>
<p>I am using the <a href="http://www.codeplex.com/FacebookToolkit/">Facebook Development Toolkit </a>as the Facebook Platform API wrapper; and the profiles are set by using Urls.</p>
<p><strong>.Net Implementation (one of many)</strong></p>
<p>In my implementation, the profile management contains 3 main components:</p>
<ul>
<li>Profile Content Page</li>
<li>Setting a user profile</li>
<li>Refresh the profile</li>
</ul>
<p><span id="more-4"></span><br />
<u>Profile Content Page</u></p>
<p>In this component you generate the combination of FBML and HTML that will be passed to Facebook. Please note that only a subset of tags are allowed in the profile.</p>
<p>The following example shows part of the code I have live for Net Trotters. I set both the Action and the Profile box (the code has been re-factored for display purposes), notice that all the code below resides on the same page:</p>
<p>&lt;!&#8211;Sets the Action Link &#8211;&gt;<br />
&lt;fb:if-is-own-profile&gt;<br />
    &lt;fb:profile-action url=&#8217;&lt;%= GuestTrotterLink %&gt;&#8217;&gt;<br />
        Guest Trotters (&lt;%= GuestTrotters %&gt;)<br />
    &lt;/fb:profile-action&gt;<br />
&lt;/fb:if-is-own-profile&gt;<br />
&lt;!&#8211;Sets the Profile Box&#8211;&gt;<br />
&lt;!&#8211; trotter information (to long to attach) &#8211;&gt;<br />
Last Updated: &lt;%= CurrentDateTime %&gt;</p>
<p>I left the <em>Last Update  </em>section intentionally, it is important to the user to know how old is the information he is looking at. It will be also good for the developer for debugging purposes.</p>
<p><u>Setting the Profile</u></p>
<p>Most of the applications have an specific landing page for the people that just installed the app, this will be the best place for you to set up the profile for the first time. If you don&#8217;t have a landing page, simply put it on the default page of you app.</p>
<p>In my appI use URLs as identifiers for the Profile content, but I believe the idea works as well with Handlers. To set the users profile you include the following code:</p>
<pre class="brush: csharp;">

FBService.SetFBML(string.Format(&quot;&lt;fb:ref url='{0}?uid={1}' /&gt;&quot;, ProfileContentUrl, FBService.UserId));</pre>
<p>Where &#8220;ProfileContentUrl&#8221; is the url of the page you created with the code above, and the &#8221;FBService.UserId&#8221;  is the user if of the Logged In user.  Notice that <em>for Facebook the entire URL (including the querystring) becomes a key to the cache content it generates</em>.</p>
<p>At this point you have successfully set up a relationship between the Logged In user and a URL.  The profile Action Link and Box should now appear on the users profile page.</p>
<p><u>Refreshing the Profile</u></p>
<p>Now that you have set up the URL for the user, you need to update it. It is not a good idea to rely on the any single user coming back to the site, because you don&#8217;t know when that is going to happen.</p>
<p>My idea was to update profiles every 15 minutes, to do so, I keep the last updated time on my application&#8217;s cache, and set the expiry to 15 minutes. Every time someone goes in the application, the function gets called, if its is time to refresh the urls, it does it.When is time to refresh profiles, all you need to do is call the refresh function, which takes the Facebook Cache Key (remember, is the entire URL). The function contains the following code:</p>
<pre class="brush: csharp;">
if (HttpContext.Current.Cache[&quot;UpdateProfiles&quot;] == null)
{
List&lt;string&gt; userIds = dbTrotter.GetTrotterOwners();
foreach (string userId in userIds)
{
fbService.RefreshRefUrl(string.Format(&quot;{0}?uid={1}&quot;, ProfileContentUrl, userId));
}
//we set the cache
HttpContext.Current.Cache.Add(&quot;UpdateProfiles&quot;, true, null, DateTime.Now.AddMinutes(15, Cache.NoSlidingExpiration, CacheItemPriority.High, null);
}
</pre>
<p>In the code above I loop through all my users refreshing their URL, which basically indicates Facebook to clean the cache for that URL; next time the URL is requested,  it will get it from the profile handler.</p>
<p>That is it, you now build your Profile Content Page, you set the profile for the first time, and you updated it periodically!</p>
<p><strong>References</strong></p>
<p>To get more information about check out:</p>
<ul>
<li><a target="_blank" href="http://developers.facebook.com/">Facebook Developers </a>for reference on FBML and what is allowed in a profile.</li>
<li><a target="_blank" href="http://http://www.codeplex.com/FacebookToolkit/Release/ProjectReleases.aspx?ReleaseId=5387">Facebook Developer Toolkit .Net </a>for documentation on the wrapper used in this post</li>
</ul>
<p><strong>NOTE</strong>: Once your application gets decent numbers of users, you will need to call the function above asynchronously so the user doesn&#8217;t have to wait until the request is done. Because this post is getting a little long; I&#8217;ll do a different post about calling functions asynchronously.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ricardocovo.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ricardocovo.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardocovo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardocovo.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardocovo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardocovo.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardocovo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardocovo.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardocovo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardocovo.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardocovo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardocovo.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=4&subd=ricardocovo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ricardocovo.wordpress.com/2007/09/26/facebook-profile-management/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d4a7c55a9ac208a6c6fac4b30f9f471?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ricardocovo</media:title>
		</media:content>
	</item>
		<item>
		<title>About this Blog</title>
		<link>http://ricardocovo.wordpress.com/2007/09/25/hello-world/</link>
		<comments>http://ricardocovo.wordpress.com/2007/09/25/hello-world/#comments</comments>
		<pubDate>Tue, 25 Sep 2007 18:19:27 +0000</pubDate>
		<dc:creator>ricardocovo</dc:creator>
				<category><![CDATA[About the Blog]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Hey!
After much procrastinating, I have finally decided to start my blog to talk about my experiences, both professional and personal.
 The main subject will be software development in Microsoft&#8217;s Technologies; the intent is to share my experiences so I can collaborate to the community of .Net developers out there.
I run my own Software Development company  (Web Nodes), [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=1&subd=ricardocovo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hey!</p>
<p>After much procrastinating, I have finally decided to start my blog to talk about my experiences, both professional and personal.</p>
<p> The main subject will be software development in Microsoft&#8217;s Technologies; the intent is to share my experiences so I can collaborate to the community of .Net developers out there.</p>
<p>I run my own Software Development company  (<a target="_blank" href="http://www.webnodes.ca">Web Nodes</a>), so I encounter many different challenges daily; most likely other developers are running into the same kind of issues&#8230; For a while now I have been only consumer of information: it is time to start giving back <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Feel free to suggest any topic, I&#8217;ll do my best to provide you with insights or samples if possible.</p>
<p>Let&#8217;s blog!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ricardocovo.wordpress.com/1/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ricardocovo.wordpress.com/1/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardocovo.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardocovo.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardocovo.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardocovo.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardocovo.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardocovo.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardocovo.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardocovo.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardocovo.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardocovo.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardocovo.wordpress.com&blog=1790939&post=1&subd=ricardocovo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ricardocovo.wordpress.com/2007/09/25/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d4a7c55a9ac208a6c6fac4b30f9f471?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ricardocovo</media:title>
		</media:content>
	</item>
	</channel>
</rss>