<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Rasyadi's blog</title><link>http://weblogs.asp.net/rasyadi/default.aspx</link><description>Programming, Software, and Tools</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Meet WPF Twitter Client</title><link>http://weblogs.asp.net/rasyadi/archive/2008/09/08/meet-wpf-twitter-client.aspx</link><pubDate>Sun, 07 Sep 2008 22:25:57 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6607815</guid><dc:creator>rasyadi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/rasyadi/rsscomments.aspx?PostID=6607815</wfw:commentRss><comments>http://weblogs.asp.net/rasyadi/archive/2008/09/08/meet-wpf-twitter-client.aspx#comments</comments><description>&lt;p&gt;I'm not sure how many of my readers being on twitter. If you have no idea what it is, go to &lt;a href="http://www.twitter.com/"&gt;twitter.com&lt;/a&gt;, create your account there and start post what are you doing. I am a big fan of twitter. Normally I post and read it on the web, until I found this cool WPF client called wittytwitter. I'm a windows guy, so this probably a good thing for me since it only supported Windows XP and Vista. The best things is, it was released under open source's &lt;a href="http://www.opensource.org/licenses/bsd-license.php"&gt;New BSD License&lt;/a&gt;. Try to be platform agnostic, dear reader, whether you are a Mac guy, Linux guy, or just a Web advocate, check their &lt;a href="http://code.google.com/p/wittytwitter/"&gt;project website&lt;/a&gt; hosted on &lt;a href="http://code.google.com"&gt;code.google.com&lt;/a&gt;. If you're a developer and trying very hard day and night, sacrificed your valuable time for years but still thinking that you're a &lt;a href="http://en.wiktionary.org/wiki/noob"&gt;noob&lt;/a&gt;, let's try to follow &lt;a href="http://www.hanselman.com"&gt;Scott's&lt;/a&gt; advice on &lt;a href="http://www.hanselman.com/blog/ReadingToBeABetterDeveloperTheCoding4FunDevKit.aspx"&gt;reading code to be a better developer&lt;/a&gt;. Get your subversion client running on your machine and &lt;a href="http://wittytwitter.googlecode.com/svn/trunk/"&gt;check out&lt;/a&gt; the code.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rasyadi/WindowsLiveWriter/MeetWPFTwitterClient_587C/wittyUI_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="382" alt="wittyUI" src="http://weblogs.asp.net/blogs/rasyadi/WindowsLiveWriter/MeetWPFTwitterClient_587C/wittyUI_thumb.png" width="247" align="right" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There are also a &lt;a href="http://groups.google.com/group/wittytwitter/topics"&gt;user group&lt;/a&gt; you can follow if you're having trouble using it or have a questions and suggestions about the tools and techniques they're using in development. The code is pretty neat and clean, seriously. They've wrote a test project with NUnit library within the same solution. This may motivate developer to write unit test instead of creating the test project in different solution. Currently, there's only a basic unit test being implemented, no mock object yet, but it is a good start for the project and if you want to know how people write a unit test. &lt;strike&gt; I guess soon they will put &lt;/strike&gt;&lt;a href="http://code.google.com/p/specunit-net/"&gt;&lt;strike&gt;SpecUnit&lt;/strike&gt;&lt;/a&gt;&lt;strike&gt; implementation as well.&lt;/strike&gt; (I don't know what the heck is this either. From the project description it mention that 'Library supporting BDD-style use of xUnit testing frameworks in .NET' and the project owner is &lt;a href="http://blog.scottbellware.com"&gt;Scott Bellware&lt;/a&gt;). My bad, actually they have already used &lt;a href="http://code.google.com/p/specunit-net/"&gt;SpecUnit&lt;/a&gt;. It seems like the development progress of SpecUnit is pretty slow. I'm not sure if this a correct choice. But at least there's an effort of &lt;a href="http://en.wikipedia.org/wiki/Behavior_driven_development"&gt;BDD&lt;/a&gt; here. &lt;/p&gt;  &lt;p&gt;Why do I care of my twitter? It's one of the best things on the web right now where you can find undocumented information instantly. If you know some good people twittering frequently and want to know their thoughts on their special interest, try to follow them. Here's my favorite list:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://twitter.com/RickStrahl"&gt;Rick Strahl&lt;/a&gt; - Good thoughts on asp.net web development.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://twitter.com/codinghorror"&gt;Jeff Atwood&lt;/a&gt; - He is one of the co-founder of &lt;a href="http://www.stackoverflow.com"&gt;stackoverflow.com&lt;/a&gt; and blog about programming and human factors at &lt;a href="http://www.coddinghorror.com"&gt;coddinghorror.com&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://twitter.com/shanselman"&gt;Scott Hanselman&lt;/a&gt; - He maintained &lt;a href="http://www.computerzen.com"&gt;computerzen.com&lt;/a&gt; blog and also has his own podcast show at &lt;a href="http://www.hanselminutes.com/"&gt;hanselminutes.com&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://twitter.com/jeremydmiller"&gt;Jeremy Miller&lt;/a&gt; - TDD and Agile development advocate.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://twitter.com/jeresig"&gt;John Resig&lt;/a&gt; - Creator of jQuery and a JavaScript Evangelist and Mozilla.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://twitter.com/Scobleizer"&gt;Robert Scoble&lt;/a&gt; - Lots of startup news.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://twitter.com/rasyadi"&gt;Rasyadi&lt;/a&gt; - It's me. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;What's your favorite people on twitter to follow? Any good twitter client out there for any platform? What's your favorite?&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6607815" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/rasyadi/archive/tags/Open+Source/default.aspx">Open Source</category><category domain="http://weblogs.asp.net/rasyadi/archive/tags/Tools/default.aspx">Tools</category><category domain="http://weblogs.asp.net/rasyadi/archive/tags/WPF/default.aspx">WPF</category></item><item><title>Shame and Down to Earth HttpContext.Items Property</title><link>http://weblogs.asp.net/rasyadi/archive/2008/08/10/shame-and-down-to-earth-httpcontext-items-property.aspx</link><pubDate>Sun, 10 Aug 2008 07:03:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6500633</guid><dc:creator>rasyadi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/rasyadi/rsscomments.aspx?PostID=6500633</wfw:commentRss><comments>http://weblogs.asp.net/rasyadi/archive/2008/08/10/shame-and-down-to-earth-httpcontext-items-property.aspx#comments</comments><description>&lt;P&gt;There is a few options to used if you want to stored object on the server-side. Some of the common techniques people used are including Session, Cache, Application. There's a different between each of the techniques.Obviously Items does not gain a lot of attention from developer. Mike Duncan has posted &lt;A href="http://www.mikeduncan.com/3-hot-uses-for-httpcontextcurrentitems-they-wont-tell-you-about/" mce_href="http://www.mikeduncan.com/3-hot-uses-for-httpcontextcurrentitems-they-wont-tell-you-about/"&gt;3 hot uses for HttpContext.Current.Items&lt;/A&gt; that might change the way developers look at it. So what it is? What so special about it? Where can I used it? Taken from MSDN site:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Gets a key/value collection that can be used to organize and share data between an &lt;/EM&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/system.web.ihttpmodule%28VS.80%29.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.web.ihttpmodule%28VS.80%29.aspx"&gt;&lt;EM&gt;IHttpModule&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt; interface and an &lt;/EM&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/system.web.ihttphandler%28VS.80%29.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.web.ihttphandler%28VS.80%29.aspx"&gt;&lt;EM&gt;IHttpHandler&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt; interface during an &lt;STRONG&gt;HTTP request&lt;/STRONG&gt;. &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Notice the word HTTP request. It can be used to stored object in a single HTTP request to achieve a singleton in ASP.NET (only in single request). Ah ha. Simple idea how we can take advantage of this is by creating a class that can be used to stored key and object in a single HTTP request. This idea can be expand to create a more reusable framework for managing context. Another advantage of this property is that you can add object in all http request pipeline. Meaning you can share data between &lt;A href="http://msdn.microsoft.com/en-us/library/zec9k340.aspx" mce_href="http://msdn.microsoft.com/en-us/library/zec9k340.aspx"&gt;httpmodules&lt;/A&gt; and &lt;A href="http://msdn.microsoft.com/en-us/library/ms227675.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms227675.aspx"&gt;httphandlers&lt;/A&gt; implementation. One example use of HttpContext.Items is to store page setting when visitor request for the page.&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   1:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt; PageSettings GetPageSetting()&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   2:&lt;/SPAN&gt; {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   3:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (HttpContext.Current == &lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;) &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   4:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   5:&lt;/SPAN&gt;     PageSettings currentPage = HttpContext.Current.Items[&lt;SPAN style="COLOR: #006080"&gt;"CurrentPage"&lt;/SPAN&gt;] &lt;SPAN style="COLOR: #0000ff"&gt;as&lt;/SPAN&gt; PageSettings;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   6:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (currentPage == &lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;)&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   7:&lt;/SPAN&gt;     {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   8:&lt;/SPAN&gt;         currentPage = LoadCurrentPage();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   9:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (currentPage != &lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;)&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  10:&lt;/SPAN&gt;             HttpContext.Current.Items[&lt;SPAN style="COLOR: #006080"&gt;"CurrentPage"&lt;/SPAN&gt;] = currentPage;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  11:&lt;/SPAN&gt;     }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  12:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; currentPage;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  13:&lt;/SPAN&gt; }&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;There's lack of documentation about HttpContext.Items from Microsoft. Here's are some of the resources I found:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://aspnet.4guysfromrolla.com/articles/060904-1.aspx" mce_href="http://aspnet.4guysfromrolla.com/articles/060904-1.aspx"&gt;HttpContext.Items - a Per-Request Cache Store&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/cc163854.aspx" mce_href="http://msdn.microsoft.com/en-us/magazine/cc163854.aspx"&gt;10 Tips for Writing High-Performance Web Applications&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://openmymind.net/index.aspx?documentId=6#context" mce_href="http://openmymind.net/index.aspx?documentId=6#context"&gt;ASP.Net's Data Storage Objects&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.odetocode.com/Articles/111.aspx" mce_href="http://www.odetocode.com/Articles/111.aspx"&gt;The HttpContext Items Collection&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Until next time.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6500633" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/rasyadi/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>Bridging TFS and SVN</title><link>http://weblogs.asp.net/rasyadi/archive/2008/08/04/bridging-tfs-and-svn.aspx</link><pubDate>Mon, 04 Aug 2008 00:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6478310</guid><dc:creator>rasyadi</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/rasyadi/rsscomments.aspx?PostID=6478310</wfw:commentRss><comments>http://weblogs.asp.net/rasyadi/archive/2008/08/04/bridging-tfs-and-svn.aspx#comments</comments><description>&lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;

&lt;div class="csharpcode"&gt;&lt;font face="Verdana"&gt;This is my second attempt to write on a public on what I've found interesting to be shared and I hope it can established a series of posting. From The Pragmatic Programmer's book tip #23: &lt;b&gt;Always Use Source Code Control&lt;/b&gt;. For me, using source control is not just for tracking purpose. There's a lot of free source code project hosting available&lt;/font&gt;
&lt;font face="Verdana"&gt;publicly on the Internet. One of the reason I've installed &lt;/font&gt;&lt;a href="http://tortoisesvn.tigris.org/" mce_href="http://tortoisesvn.tigris.org/"&gt;&lt;font face="Verdana"&gt;TortoiseSVN&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; on my machine is to let me sync down those open source codes from public hosting such as &lt;/font&gt;&lt;a href="http://tortoisesvn.tigris.org/" mce_href="http://tortoisesvn.tigris.org/"&gt;&lt;font face="Verdana"&gt;code.google.com&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt;,&lt;/font&gt;
&lt;a href="http://www.codeplex.com/" mce_href="http://www.codeplex.com/"&gt;&lt;font face="Verdana"&gt;codeplex.com&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; or &lt;/font&gt;&lt;a href="http://sourceforge.net/" mce_href="http://sourceforge.net/"&gt;&lt;font face="Verdana"&gt;sourceforge.net&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; (this require CVS). For code.google.com you can use TortoiseSVN directly because it was hosted using Subversion server. For codeplex.com, &lt;/font&gt;
&lt;font face="Verdana"&gt;Microsoft's open source project hosting web site, the source code was hosted using Microsoft's proprietary &lt;/font&gt;&lt;a href="http://en.wikipedia.org/wiki/Team_Foundation_Server" mce_href="http://en.wikipedia.org/wiki/Team_Foundation_Server"&gt;&lt;font face="Verdana"&gt;Team Foundation Server (TFS)&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt;. You can you either use TortoiseSVN or &lt;/font&gt;
&lt;a href="http://www.codeplex.com/CodePlexClient" mce_href="http://www.codeplex.com/CodePlexClient"&gt;&lt;font face="Verdana"&gt;CodePlex Client&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; to access the code repository. I prefer to use TortoiseSVN since I already used it to access the code from other SVN server. This is possible with &lt;/font&gt;&lt;a href="http://www.codeplex.com/SvnBridge" mce_href="http://www.codeplex.com/SvnBridge"&gt;&lt;font face="Verdana"&gt;SvnBridge&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt;, a tool &lt;/font&gt;
&lt;font face="Verdana"&gt;that converts the call made by subversion client to the API supported by TFS. The developer's planet is lucky enough to have TFS SDK available, this will allow other tool to talk to &lt;/font&gt;
&lt;font face="Verdana"&gt;TFS. To get it &lt;/font&gt;&lt;a href="http://www.codeplex.com/CodePlex/Wiki/View.aspx?title=Using%20TortoiseSVN%20with%20CodePlex&amp;amp;referringTitle=Source%20control%20clients" mce_href="http://www.codeplex.com/CodePlex/Wiki/View.aspx?title=Using%20TortoiseSVN%20with%20CodePlex&amp;amp;referringTitle=Source%20control%20clients"&gt;&lt;font face="Verdana"&gt;running on your local machine&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; is pretty easy and no harm. &lt;/font&gt;
&amp;nbsp;&lt;/div&gt;&lt;div class="csharpcode"&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="csharpcode"&gt;
&lt;a href="http://weblogs.asp.net/blogs/rasyadi/WindowsLiveWriter/BridgingTFSandSVN_5A78/image_2.png" mce_href="http://weblogs.asp.net/blogs/rasyadi/WindowsLiveWriter/BridgingTFSandSVN_5A78/image_2.png"&gt;&lt;img src="http://weblogs.asp.net/blogs/rasyadi/WindowsLiveWriter/BridgingTFSandSVN_5A78/image_thumb.png" style="border-width: 0px;" alt="image" mce_src="http://weblogs.asp.net/blogs/rasyadi/WindowsLiveWriter/BridgingTFSandSVN_5A78/image_thumb.png" width="401" border="0" height="118"&gt;&lt;/a&gt;
&amp;nbsp;
&lt;/div&gt;&lt;div class="csharpcode"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;
&lt;font face="Verdana"&gt;It's a mandatory tools to be installed on your machine since a few cool projects hosted there:&lt;/font&gt;&lt;/div&gt;&lt;div class="csharpcode"&gt;&amp;nbsp;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/aspnet" mce_href="http://www.codeplex.com/aspnet"&gt;&lt;font face="Verdana"&gt;ASP.NET MVC&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; - This is the first on my list. The page is shared with ASP.NET preview and Dynamic Data as well.&lt;/font&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/MVCContrib" mce_href="http://www.codeplex.com/MVCContrib"&gt;&lt;font face="Verdana"&gt;MvcContrib&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; - Contrib project for ASP.NET MVC Framework.&lt;/font&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/MVCContrib" mce_href="http://www.codeplex.com/MVCContrib"&gt;&lt;font face="Verdana"&gt;S#arp Architecture&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; - ASP.NET MVC with NHibernate.&lt;/font&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/entlib" mce_href="http://www.codeplex.com/entlib"&gt;&lt;font face="Verdana"&gt;Patterns &amp;amp; Practices&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; - Enterprise Library is one of them. You also can find other P&amp;amp;P code here such as &lt;/font&gt;&lt;a href="http://www.codeplex.com/entlib" mce_href="http://www.codeplex.com/entlib"&gt;&lt;font face="Verdana"&gt;Smart Client Guidance&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; or &lt;/font&gt;&lt;a href="http://www.codeplex.com/entlib" mce_href="http://www.codeplex.com/entlib"&gt;&lt;font face="Verdana"&gt;Unity Application Block&lt;/font&gt;&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;

&lt;a href="http://www.codeplex.com/entlib" mce_href="http://www.codeplex.com/entlib"&gt;&lt;font face="Verdana"&gt;Ajax Control Toolkit&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; - grab this if you want to see how they develop the controls.&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="csharpcode"&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="csharpcode"&gt;
&lt;font face="Verdana"&gt;Now lots of source codes to be sync down.&lt;/font&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6478310" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/rasyadi/archive/tags/Open+Source/default.aspx">Open Source</category><category domain="http://weblogs.asp.net/rasyadi/archive/tags/Tools/default.aspx">Tools</category></item></channel></rss>