<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DEABRnczeSp7ImA9WhRaFE8.&quot;"><id>tag:blogger.com,1999:blog-5908960717148153093</id><updated>2012-02-16T22:12:37.981+01:00</updated><category term="C#" /><category term="Resharper" /><category term="Bing" /><category term="blogger" /><category term="Search Engines" /><category term="Lambda" /><category term="wedding" /><category term="GAE" /><category term="Tar" /><category term="Virtualbox" /><category term="Virtualization" /><category term="Exam" /><category term="ReadyNAS" /><category term="IIS" /><category term="Azure" /><category term="Google" /><category term="ASP.NET" /><title>Codetecture</title><subtitle type="html">Nordine's Tech Blog</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.codetecture.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.codetecture.com/" /><author><name>Nordine</name><uri>http://www.blogger.com/profile/06566185114595018720</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Codetecture" /><feedburner:info uri="codetecture" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DkIARnoyfSp7ImA9WhZQFUg.&quot;"><id>tag:blogger.com,1999:blog-5908960717148153093.post-5955026164194685753</id><published>2011-04-23T12:17:00.007+02:00</published><updated>2011-04-23T12:29:07.495+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-23T12:29:07.495+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GAE" /><category scheme="http://www.blogger.com/atom/ns#" term="blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><title>Moved to Blogger</title><content type="html">I've started building my new web site few weeks ago, I wanted it to be more attractive and easier to customize than the old one (dasBlog engine). I’ve started with Orchard CMS on Windows Azure, but quickly realized that some features I wanted were not yet available. I decided then to go for a hosted blogging service that would allow me to focus on the content and forget about the platform. This blog post describes why I chose Blogger and what’ve done to make this beautiful web page you’re looking at.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;

Blogger as my new platform&lt;/h4&gt;
It took me about 10 minutes to get my blog up and running with a default template. All the features I needed were there:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Search engine friendliness&lt;/li&gt;
&lt;li&gt;Integration with Google AdSense&lt;/li&gt;
&lt;li&gt;Integration with  Google Analytics&lt;/li&gt;
&lt;li&gt;Custom domain&lt;/li&gt;
&lt;li&gt;OpenID support&lt;/li&gt;
&lt;li&gt;Picasa integration&lt;/li&gt;
&lt;li&gt;FeedBurner integration&lt;/li&gt;
&lt;li&gt;Support for standalone pages&lt;/li&gt;
&lt;li&gt;Generous quota (Blogger does not appear to impose bandwidth limits at all).&lt;/li&gt;
&lt;li&gt;Easy to customize, allows JavaScript&lt;/li&gt;
&lt;/ul&gt;
All I had to do was to create my own theme, add &lt;a href="http://disqus.com"&gt;DISQUS&lt;/a&gt;, my tweets and all those nice things bloggers need to have.  I’ve downloaded and tried some templates from &lt;a href="http://btemplates.com/"&gt;btemplates.com&lt;/a&gt; and learned Blogger’s template system that way.&amp;nbsp;In the end I wrote my own template from scratch and the JavaScript I needed (thanks jquery).&amp;nbsp;It came as a surprise to me to learn that Blogger didn't support the BlogML format, so I couldn't simply import my old blog. In a way, I didn't mind because I had less than a dozen blog posts to import and I wanted to adapt the html to fit with my new Css.&lt;br /&gt;
&lt;br /&gt;
The last step was to find somewhere to upload my static content. After some experimentation again, I decided to use Google App Engine (GAE)  for that.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;

Offloading static content to Google App Engine (GAE)&lt;/h4&gt;
Another advantage of storing static content on a separate domain is to parallelize and speed up the download process (web browsers usually limit the number of sockets to download resources  from a single host). GAE is not meant to be a fully-fledged CDN, but it’s more than enough for my humble web site (2 megabytes of static content) and it is free. These are the limits when billing is disabled:
&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;request size&lt;/td&gt;&lt;td&gt;10 megabytes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;response size&lt;/td&gt;&lt;td&gt;10 megabytes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;request duration&lt;/td&gt;&lt;td&gt;30 seconds&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;maximum total number of files&lt;/td&gt;&lt;td&gt;3,000&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;maximum size of an application file&lt;/td&gt;&lt;td&gt;10 megabytes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;maximum size of a static file&lt;/td&gt;&lt;td&gt;10 megabytes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;maximum total size of all application and static files&lt;/td&gt;&lt;td&gt;150 megabytes&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;a href="http://code.google.com/appengine/docs/java/runtime.html#Quotas_and_Limits"&gt;(*)More information here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The procedure to upload content to GAE is described &lt;a href="http://www.bitdoze.com/blogging/use-google-app-engine-free-cdn-to-speed-up-website/"&gt;here&lt;/a&gt;, it works really well. Note that it's more complicated to set the cache-control header  (Cache-Control: max-age=3600) with GAE java sdk that's why people are still using Python.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
My notes about GAE&lt;/h4&gt;
I've learned few interesting things on GAE Google Group:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;GAE makes a best effort to do caching, but there is no guarantee that responses will be cached.&lt;/li&gt;
&lt;li&gt;Edge caching for requests that use the cache-control header is only active when billing is enabled&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h4&gt;

Conclusion&lt;/h4&gt;
I've spent many hours working on this blog, I've learned many things about Blogger and GAE, I think it was worth it. Hopefully I will be able to concentrate on blogging in the future and the current design will satisfy me for the next couple of years.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5908960717148153093-5955026164194685753?l=www.codetecture.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Codetecture/~4/0Ef1QXuxsXM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.codetecture.com/feeds/5955026164194685753/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.codetecture.com/2011/04/moved-to-blogger.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5908960717148153093/posts/default/5955026164194685753?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5908960717148153093/posts/default/5955026164194685753?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Codetecture/~3/0Ef1QXuxsXM/moved-to-blogger.html" title="Moved to Blogger" /><author><name>Nordine</name><uri>http://www.blogger.com/profile/06566185114595018720</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.codetecture.com/2011/04/moved-to-blogger.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcGSX07eyp7ImA9WhZQEE4.&quot;"><id>tag:blogger.com,1999:blog-5908960717148153093.post-3735920087125511772</id><published>2010-12-01T11:48:00.013+01:00</published><updated>2011-04-17T11:37:08.303+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-17T11:37:08.303+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ReadyNAS" /><category scheme="http://www.blogger.com/atom/ns#" term="Tar" /><title>Multi-file archive with Tar</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Recently, I needed to copy 40GB of home videos out of my &lt;a href="http://en.wikipedia.org/wiki/Netgear" target="_blank"&gt;ReadyNAS&lt;/a&gt; duo and immediately thought about using a USB hard disk. The problem was that the maximum possible size for a file on a FAT32 volume is 4 GB and reformatting my hard disk to NTFS was not an option. So I thought about creating a multi-file archive with Tar, primarily because &lt;a href="http://en.wikipedia.org/wiki/Tar_%28file_format%29" target="_blank"&gt;Tar&lt;/a&gt; is the only compression program available on the &lt;a href="http://en.wikipedia.org/wiki/Netgear" target="_blank"&gt;ReadyNAS&lt;/a&gt; out of the box. Here is the recipe for creating multi-file archive with Tar.&lt;br /&gt;
&lt;h4&gt;
Creating the archive&lt;/h4&gt;
The command line I used is:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;$tar -c -M --tape-length=4096000 --file=HomeVideos.tar /media/Videos/HomeVideos
&lt;/pre&gt;
After some time, Tar prompted for volume 2 like this: &lt;br /&gt;
&lt;pre class="brush: bash"&gt;Prepare volume #2 for disk1.tar and hit return&lt;/pre&gt;
I entered the following command line to specify the new filename and pressed RETURN: &lt;br /&gt;
&lt;pre class="brush: bash"&gt;n disk2.tar&lt;/pre&gt;
Tar prompted again, but this time it showed the new filename "disk2.tar" and I pressed RETURN to continue. I repeated the operation about 10 times and was able to copy all these files on my USB drive and then onto my latop.&lt;br /&gt;
&lt;h4&gt;
Putting the videos back together&lt;/h4&gt;
The process is quite similar to extract the videos (I'm using Cygwin):&lt;br /&gt;
&lt;pre class="brush: bash"&gt;$tar -x -M --file=/cygdrive/e/disk1.tar&lt;/pre&gt;
After some time you'll need to specify the name of the next volume, like this: &lt;br /&gt;
&lt;pre class="brush: bash"&gt;Prepare volume #2 for disk1.tar and hit return:
n /cygdrive/e/disk2.tar
&lt;/pre&gt;
I repeated the process until everything was extracted.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5908960717148153093-3735920087125511772?l=www.codetecture.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Codetecture/~4/VFy-t_jKnGw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.codetecture.com/feeds/3735920087125511772/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.codetecture.com/2011/03/readynas.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5908960717148153093/posts/default/3735920087125511772?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5908960717148153093/posts/default/3735920087125511772?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Codetecture/~3/VFy-t_jKnGw/readynas.html" title="Multi-file archive with Tar" /><author><name>Nordine</name><uri>http://www.blogger.com/profile/06566185114595018720</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.codetecture.com/2011/03/readynas.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4FRn0-eip7ImA9Wx9aE0s.&quot;"><id>tag:blogger.com,1999:blog-5908960717148153093.post-8347723260573624620</id><published>2010-11-11T11:49:00.004+01:00</published><updated>2011-03-05T23:08:37.352+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-05T23:08:37.352+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="Exam" /><title>Preparation guide: (70-583) designing and developing windows azure applications</title><content type="html">&lt;h4&gt;About&lt;/h4&gt;This is &lt;i&gt;my&lt;/i&gt; preparation guide to the Windows Azure exam 70-583. It was right for me, but it might be too little (or too much) for you, dear reader. With &lt;a href="http://no.linkedin.com/in/nordine"&gt;my current experience&lt;/a&gt; I felt that this was enough for me (I’ve been experimenting with the Windows Azure platform since the CTP, back in 2008); For more information about the exam, take a loot at &lt;a href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-583" target="_blank"&gt;Microsoft’s overview&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;ELearning&lt;/h4&gt;I recommend pluralsight’s on-demand course called "Windows Azure Fundamentals". &lt;br /&gt;
As a MSDN subscriber you can &lt;a href="http://msdn.microsoft.com/en-us/subscriptions/dd347471.aspx"&gt;get free access to this course&lt;/a&gt; and many others for 1 month.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Books&lt;/h4&gt;I have read 2 books about Windows Azure so far:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Azure-Action-Chris-Hay/dp/193518248X" title="Amazon.com- Azure in Action (9781935182481)- Chris Hay, Brian"&gt;Azure in Action - Chris Hay, Brian Prince&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Programming-Windows-Azure-Microsoft-Cloud/dp/0596801971"&gt;Programming Windows Azure – Sriram Krishnan&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;Both are worth reading, but if you have to choose, &lt;a href="http://www.amazon.com/Azure-Action-Chris-Hay/dp/193518248X"&gt;Azure in Action&lt;/a&gt; is the one: It’s a concise introduction to the platform from a developer perspective. &lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Articles&lt;/h4&gt;In addition to the books, the following articles are a must:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0CBQQFjAA&amp;amp;url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2F5%2F2%2FD%2F52D36345-BB08-4518-A024-0AA24D47BD12%2FWindows%2520Azure%2520Queue%2520-%2520Dec%25202008.docx&amp;amp;ei=RaDhTJvMLI3rOaXYqJIP&amp;amp;usg=AFQjCNFhG_F23T7L2hMjFC_fmWIZQd0ivg" title="Windows Azure Queue - Microsoft Corporation"&gt;Windows Azure Queue - Microsoft Corporation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=2&amp;amp;ved=0CBgQFjAB&amp;amp;url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2F3%2FB%2F1%2F3B170FF4-2354-4B2D-B4DC-8FED5F838F6A%2FWindows%2520Azure%2520Table%2520-%2520Dec%25202008.docx&amp;amp;ei=RaDhTJvMLI3rOaXYqJIP&amp;amp;usg=AFQjCNF9KUQPyH_vDHJsHSNyhnfgljov_A" title="Windows Azure Table - Microsoft Corporation"&gt;Windows Azure Table - Microsoft Corporation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=2&amp;amp;ved=0CB0QFjAB&amp;amp;url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2FE%2FB%2F5%2FEB512F2E-7771-40A3-8025-0DC6D9429951%2FAn%2520Introduction%2520to%2520Windows%2520Azure%2520platform%2520AppFabric%2520for%2520Developers.docx&amp;amp;ei=e6DhTLudEIOfOufkhMwO&amp;amp;usg=AFQjCNHr62Tf-d0O4aplA0e87PsmLFxBgQ" title="An Introduction to Microsoft .NET Services for Developers"&gt;An Introduction to Microsoft .NET Services for Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://download.microsoft.com/download/6/9/6/696C233B-1AC8-4F26-A55C-A65F8D3BDFA0/An%20Introduction%20to%20Windows%20Azure%20AppFabric%20for%20Developers.docx"&gt;An Introduction to Windows Azure AppFabric for Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=2&amp;amp;ved=0CBgQFjAB&amp;amp;url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2FE%2F5%2F8%2FE5870ED0-2A57-4970-B140-14815AD45CF6%2FA%2520Developer%27s%2520Guide%2520to%2520Access%2520Control%2520in%2520Windows%2520Azure%2520platform%2520AppFabric.docx&amp;amp;rct=j&amp;amp;q=A%20Developer%E2%80%99s%20Guide%20Access%20Control%20in%20the%20Windows%20Azure%20platform%20AppFabric&amp;amp;ei=oKDhTKayAYaEOqPG2IYP&amp;amp;usg=AFQjCNEIZ87soVODPbxDMZ6F_021PO-VTA"&gt;A Developer’s Guide Access Control in the Windows Azure platform AppFabric&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;For even more reading, take a look at &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-48-03/0211.Windows-Azure-Developer-Guidance-Map-_2D00_-v1.pdf" target="_blank"&gt;J.D Meier's Guidance Map&lt;/a&gt;, it’s a giant index of  Windows Azure content collections for developers. (Code Samples, How to, Videos, Training etc.…). &lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Learning by doing&lt;/h4&gt;I cannot emphasis enough the importance of experiencing the platform by yourself. You’re a MSDN subscriber so create a &lt;a href="http://msdn.microsoft.com/en-us/subscriptions/ee461076.aspx"&gt;Windows Azure Platform MSDN Premium Account&lt;/a&gt; (and yes you'll need to assign a valid credit card, but you won't be charged unless you overrun your quota). Now go ahead, download &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=413e88f8-5966-4a83-b309-53b7b77edf78&amp;amp;displaylang=en"&gt;Windows Azure Platform Training Kit&lt;/a&gt; and start programming.&lt;br /&gt;
&lt;br /&gt;
Good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5908960717148153093-8347723260573624620?l=www.codetecture.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Codetecture/~4/DfexLW-K0F0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.codetecture.com/feeds/8347723260573624620/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.codetecture.com/2010/11/preparation-guide-70-583-designing-and.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5908960717148153093/posts/default/8347723260573624620?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5908960717148153093/posts/default/8347723260573624620?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Codetecture/~3/DfexLW-K0F0/preparation-guide-70-583-designing-and.html" title="Preparation guide: (70-583) designing and developing windows azure applications" /><author><name>Nordine</name><uri>http://www.blogger.com/profile/06566185114595018720</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.codetecture.com/2010/11/preparation-guide-70-583-designing-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYNRHk-fSp7ImA9Wx9aF00.&quot;"><id>tag:blogger.com,1999:blog-5908960717148153093.post-691332697395826606</id><published>2009-10-01T22:55:00.004+02:00</published><updated>2011-03-09T23:03:15.755+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-09T23:03:15.755+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Resharper" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Lambda" /><title>Access to modified closure</title><content type="html">Resharper is a fantastic tool and gives plenty of warnings that shouldn’t be neglected. One warning I want to describe here is “Access to modified closure”:
&lt;pre class='brush: csharp'&gt;
private void WriteString(string str)
{
 var newMsg=string.Format("New message: {0}", str);
 _syncContext.Post((param) =&amp;gt; listBox1.Items.Add(newMsg), null);
 newMsg=String.Empty;
}
&lt;/pre&gt;
WriteString is called by a non UI Thread, hence the SynchronizationContext. The question I’ve been asking myself is: “Why can’t I access the variable newMsg from within my lambda?”

The answer to that question is that if the lambda refers to a variable defined outside of its scope, the variable may be changed while the lambda is running. If you execute the example above, you’ll see that an empty text is added to the listbox, which means that the variable newMsg is changed before the lambda runs (because the post method is asynchronous).


I need to pass newMsg as a parameter to solve the problem (actually, I should pass a copy of the object, but since a String is immutable it doesn’t matter for this example)
&lt;pre class='brush: csharp'&gt;private void WriteString(string str)
{
 var newMsg=string.Format("New message: {0}",str); 
 _syncContext.Post((param) =&amp;gt; listBox1.Items.Add(newMsg),newMsg); 
 newMsg = String.Empty; 
} 
&lt;/pre&gt;
No more warning!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5908960717148153093-691332697395826606?l=www.codetecture.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Codetecture/~4/iy-cyDlp_Fo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.codetecture.com/feeds/691332697395826606/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.codetecture.com/2009/10/access-to-modified-closure.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5908960717148153093/posts/default/691332697395826606?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5908960717148153093/posts/default/691332697395826606?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Codetecture/~3/iy-cyDlp_Fo/access-to-modified-closure.html" title="Access to modified closure" /><author><name>Nordine</name><uri>http://www.blogger.com/profile/06566185114595018720</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.codetecture.com/2009/10/access-to-modified-closure.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUECRHYycSp7ImA9Wx9aF00.&quot;"><id>tag:blogger.com,1999:blog-5908960717148153093.post-7855775822731414752</id><published>2009-09-16T22:49:00.000+02:00</published><updated>2011-03-09T22:54:25.899+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-09T22:54:25.899+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IIS" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title>Web application's startup delay resolved with ASP.NET 4.0 and IIS 7.5</title><content type="html">&lt;!--[if !mso]&gt;
&lt;style&gt;
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
&lt;/style&gt;
&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:DocumentProperties&gt;
  &lt;o:Version&gt;14.00&lt;/o:Version&gt;
 &lt;/o:DocumentProperties&gt;
 &lt;o:OfficeDocumentSettings&gt;
  &lt;o:AllowPNG/&gt;
 &lt;/o:OfficeDocumentSettings&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves&gt;false&lt;/w:TrackMoves&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:EnableOpenTypeKerning/&gt;
   &lt;w:DontFlipMirrorIndents/&gt;
   &lt;w:OverrideTableStyleHps/&gt;
  &lt;/w:Compatibility&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val="Cambria Math"/&gt;
   &lt;m:brkBin m:val="before"/&gt;
   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;
   &lt;m:smallFrac m:val="off"/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val="0"/&gt;
   &lt;m:rMargin m:val="0"/&gt;
   &lt;m:defJc m:val="centerGroup"/&gt;
   &lt;m:wrapIndent m:val="1440"/&gt;
   &lt;m:intLim m:val="subSup"/&gt;
   &lt;m:naryLim m:val="undOvr"/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
 {mso-style-name:"Table Normal";
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-noshow:yes;
 mso-style-priority:99;
 mso-style-parent:"";
 mso-padding-alt:0in 5.4pt 0in 5.4pt;
 mso-para-margin:0in;
 mso-para-margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:10.0pt;
 font-family:"Times New Roman","serif";}
&lt;/style&gt;
&lt;![endif]--&gt;

&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; text-align: justify;"&gt;
&lt;span lang="EN" style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;One of the problems I experienced while developing ASP.NET/SharePoint
applications is the warm-up latency. Every time the application pool is
recycled, the first user to hit the website get a very slow response time or
even a timeout. This is due to all the initialization code inside
application_start() and it's worsen if there is set of back-end WCF services. The solution has always been to make a script that maintains the web applications up and
running, or to only recycle the application pool once during the night (I
really don't like this one).&lt;/span&gt;&lt;/div&gt;
&lt;div style="background: none repeat scroll 0% 0% white; text-align: justify;"&gt;
&lt;span lang="EN" style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;span lang="EN" style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;Looks like IIS7.5/ASP.NET4.0 have solved the initialization delay quite
nicely, by auto-starting the application pool as quickly as possible. I guess
this is a good excuse to move from Windows Server 2003 to Windows Server 2008 &lt;/span&gt;&lt;span style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;&lt;/span&gt;&lt;span lang="EN" style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;! Check out the whitepaper: &lt;/span&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;&lt;a href="http://www.codetecture.com/blog/ct.ashx?id=f69ef343-b0ef-41a2-bcdb-7049c77a49d9&amp;amp;url=http%3a%2f%2fwww.asp.net%2flearn%2fwhitepapers%2faspnet40Beta1%2f%23_Toc223325464"&gt;&lt;span lang="EN" style="font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;http://www.asp.net/learn/whitepapers/aspnet40Beta1/#_Toc223325464&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5908960717148153093-7855775822731414752?l=www.codetecture.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Codetecture/~4/GdcoASKkh5k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.codetecture.com/feeds/7855775822731414752/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.codetecture.com/2009/09/web-applications-startup-delay-resolved.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5908960717148153093/posts/default/7855775822731414752?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5908960717148153093/posts/default/7855775822731414752?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Codetecture/~3/GdcoASKkh5k/web-applications-startup-delay-resolved.html" title="Web application's startup delay resolved with ASP.NET 4.0 and IIS 7.5" /><author><name>Nordine</name><uri>http://www.blogger.com/profile/06566185114595018720</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.codetecture.com/2009/09/web-applications-startup-delay-resolved.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYAQHY4cSp7ImA9Wx9aF00.&quot;"><id>tag:blogger.com,1999:blog-5908960717148153093.post-4137492590142480017</id><published>2009-09-07T22:41:00.000+02:00</published><updated>2011-03-09T22:45:41.839+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-09T22:45:41.839+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Bing" /><category scheme="http://www.blogger.com/atom/ns#" term="Search Engines" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><title>Google Vs Bing</title><content type="html">&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; text-align: justify;"&gt;
&lt;span lang="EN" style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;I’ve tried hard to use Microsoft’s new search engine everyday at work.
Unfortunately I had to switch back to Google because I was wasting too much
time searching… Let me explain.&lt;/span&gt;&lt;/div&gt;
&lt;div style="background: none repeat scroll 0% 0% white; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="background: none repeat scroll 0% 0% white; text-align: justify;"&gt;
&lt;span lang="EN" style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;I’m pretty good at searching with Google, I always find what I need and even
more. Google just works and it’s ranking algorithm amazes me. Few years ago I
worked on building a search engine from scratch and I learned how the retrieval
process works (thanks to Managing Gigabytes and Modern Information Retrieval).
My point is that if you throw a crisp query to Google you will always get the
right result.&lt;/span&gt;&lt;/div&gt;
&lt;div style="background: none repeat scroll 0% 0% white; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="background: none repeat scroll 0% 0% white; text-align: justify;"&gt;
&lt;span lang="EN" style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;Bing is a big improvement from Microsoft Live search, it’s really fast and
returns much more relevant links. But unfortunately it’s not gone be enough to
dethrone Google. I hope Microsoft will manage to fix it's ranking algorithm in
the next upgrade, until then Google is king.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5908960717148153093-4137492590142480017?l=www.codetecture.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Codetecture/~4/7HQp2UkQEiQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.codetecture.com/feeds/4137492590142480017/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.codetecture.com/2011/03/google-vs-bing.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5908960717148153093/posts/default/4137492590142480017?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5908960717148153093/posts/default/4137492590142480017?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Codetecture/~3/7HQp2UkQEiQ/google-vs-bing.html" title="Google Vs Bing" /><author><name>Nordine</name><uri>http://www.blogger.com/profile/06566185114595018720</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.codetecture.com/2011/03/google-vs-bing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIAQXwzeCp7ImA9Wx9aF00.&quot;"><id>tag:blogger.com,1999:blog-5908960717148153093.post-7227466499511646621</id><published>2009-09-01T21:33:00.006+02:00</published><updated>2011-03-09T22:35:40.280+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-09T22:35:40.280+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wedding" /><title>Just married</title><content type="html">&lt;span lang="EN" style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;I've been off work for a month during which I got married and traveled to Canada and the USA. We managed to visit Banff, Calgary and Chicago in 15 days (we’ve been pleasantly surprised by Chicago, it’s big and beautiful).&lt;/span&gt;&lt;div style="background: white; text-align: justify;"&gt;&lt;br /&gt;
&lt;span lang="EN" style="color: #333333; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;Now it's hard to get back to work after a long break, but I'm currently working on a really cool project and that helps a lot. Hopefully I'll be able to post more technical stuff on my blog in the coming weeks, I’m planning to install windows server 2008 R2 on a virtual hard disk and try the VHD boot. I’m looking forward to experiment with Visual Studio 2010 and the .Net 4.0.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5908960717148153093-7227466499511646621?l=www.codetecture.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Codetecture/~4/EYIh2jgnTI0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.codetecture.com/feeds/7227466499511646621/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.codetecture.com/2009/09/just-married.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5908960717148153093/posts/default/7227466499511646621?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5908960717148153093/posts/default/7227466499511646621?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Codetecture/~3/EYIh2jgnTI0/just-married.html" title="Just married" /><author><name>Nordine</name><uri>http://www.blogger.com/profile/06566185114595018720</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.codetecture.com/2009/09/just-married.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIERHk9fip7ImA9Wx9aF00.&quot;"><id>tag:blogger.com,1999:blog-5908960717148153093.post-8917660884709590070</id><published>2009-03-13T23:06:00.001+01:00</published><updated>2011-03-09T23:08:25.766+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-09T23:08:25.766+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Virtualbox" /><category scheme="http://www.blogger.com/atom/ns#" term="Virtualization" /><title>Virtualbox: Highly recommended</title><content type="html">I've been using VirtualBox for months now and it works pretty well. I’ve previously tried VirtualPC (too slow), Virtual Server (not user friendly), VMware (expensive) and HyperV (requires Windows 2008 x64). Then I discovered VirtualBox, it’s actively developed and has everything I need:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;It's fast (fast enough for me). &lt;/li&gt;
&lt;li&gt;It supports x64 hosts and guests. &lt;/li&gt;
&lt;li&gt;It has plenty of options such as raw partitions. &lt;/li&gt;
&lt;li&gt;It supports .vhd and .vmdk &lt;/li&gt;
&lt;li&gt;It has NCQ support for SATA raw disks and partitions &lt;/li&gt;
 &lt;/ul&gt;
The only thing that isn’t great is the seamless mode. When I first heard about VirtualBox’s seamless mode, I expected something like VMware fusion. Instead I got something not so useful and even buggy. I wonder why seamless desktop integration only works on Macs…
 
Anyway, try VirtualBox today! You won't be disappointed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5908960717148153093-8917660884709590070?l=www.codetecture.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Codetecture/~4/QpPKwJK_C-8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.codetecture.com/feeds/8917660884709590070/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.codetecture.com/2011/03/virtualbox-highly-recommended.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5908960717148153093/posts/default/8917660884709590070?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5908960717148153093/posts/default/8917660884709590070?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Codetecture/~3/QpPKwJK_C-8/virtualbox-highly-recommended.html" title="Virtualbox: Highly recommended" /><author><name>Nordine</name><uri>http://www.blogger.com/profile/06566185114595018720</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.codetecture.com/2011/03/virtualbox-highly-recommended.html</feedburner:origLink></entry></feed>

