﻿<?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/"
	>

<channel>
	<title>Just A Programmer &#187; .Net</title>
	<atom:link href="http://www.justaprogrammer.net/tag/net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.justaprogrammer.net</link>
	<description>We're Just Programmers...</description>
	<lastBuildDate>Tue, 10 Jan 2012 03:59:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Yak Shaving Digest 2011-08-13</title>
		<link>http://www.justaprogrammer.net/2011/08/14/yak-shaving-digest-2011-08-13/</link>
		<comments>http://www.justaprogrammer.net/2011/08/14/yak-shaving-digest-2011-08-13/#comments</comments>
		<pubDate>Sun, 14 Aug 2011 13:23:03 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Just A Programmer]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[yak shaving]]></category>

		<guid isPermaLink="false">http://www.justaprogrammer.net/?p=641</guid>
		<description><![CDATA[This blog post is inspired by Brendan W McAdams (blog &#124; twitter) for introducing me to the term yak shaving, Aaron Bertrand (blog &#124; twitter) for his Connect Digests and Jennifer Lopez (not that one) (website &#124; twitter) for expressing  her desire to see the intersect of who she follows on twitter and who follows [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.justaprogrammer.net%252F2011%252F08%252F14%252Fyak-shaving-digest-2011-08-13%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fr1stIQ%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Yak%20Shaving%20Digest%202011-08-13%22%20%7D);"></div>
<p>This blog post is inspired by Brendan W McAdams (<a href="http://ramblings.evilmonkeylabs.com/">blog</a> | <a href="http://twitter.com/rit">twitter</a>) for introducing me to the term <a href="http://en.wiktionary.org/wiki/yak_shaving">yak shaving</a>, Aaron Bertrand (<a href="http://sqlblog.com/blogs/aaron_bertrand/">blog</a> | <a href="https://twitter.com/aaronbertrand">twitter</a>) for his <a href="http://sqlblog.com/blogs/aaron_bertrand/archive/tags/Connect/default.aspx">Connect Digests</a> and Jennifer Lopez (not that one) (<a href="http://www.lopezgeeks.net/">website</a> | <a href="https://twitter.com/jlopez255">twitter</a>) for expressing  her desire to see <a href="https://twitter.com/#!/jlopez255/statuses/100224376200376320">the intersect of who she follows on twitter and who follows her</a>, which thereby made me want to do the same thing.</p>
<p>I was working on a C# console app the past week or so that would find the intersect of my following and followed by list on twitter. This Saturday was dedicated to getting it suitable for github, <a href="https://github.com/zippy1981/twitter.GetFriends/">which it now is</a>. However, I encountered several issues along the way. Because I had some blocking issues, I allowed myself to be distracted  by every minor issue  I encountered with the libraries and tools I was using for the task, for a brief period of time. The purpose of this was to report the issues, and if possible resolve them. This lead to bug reports, feature requests, and two patches. I listed them all here to add some context to all of them.</p>
<ul>
<li><strong>OAuth issues</strong>: This actually occurred earlier in the week. Twitter uses <a href="http://hueniverse.com/oauth/">OAuth v1</a>, which I discovered <a href="http://programmers.stackexchange.com/questions/99295/how-do-i-store-the-oauth-v1-consumer-key-and-secret-for-an-open-source-desktop-tw">isn&#8217;t really suited for desktop apps</a> because you have to share the secret that associates a request with your app with the world. That&#8217;s the equivalent of being required to share a pgp private key with the world. My workaround is to simple make users of my app generate their own app key (annoying, but something you&#8217;d probably be willing to do to get CLI access to twitter). If the app becomes popular I will request <a href="https://dev.twitter.com/docs/oauth/xauth">xAuth</a> access for my application.</li>
<li><strong>Sensitive info in config files and version control.</strong> This is related to the first issue. This app was not even stored in a local git repo despite me being a SCM nazi because I needed to figure out a strategy that would allow me to push an empty app.config to github. I store my consumer key/secret in the app.config, which I point out above I don&#8217;t want to share with anyone. I solved this problem by not checking the config file into version control and having a sanitized one with a different name in version control. Also, I used <a href="http://weblogs.asp.net/fmarguerie/archive/2007/04/26/using-configsource-to-split-configuration-files.aspx">configSource</a> so all my OAuth things would be in a <a href="https://github.com/zippy1981/twitter.GetFriends/blob/master/twitter.GetFriends/twitterizer.config.default">separate config file</a> from the main one.</li>
<li><strong>Being anal retentive about <a href="http://kbcsv.codeplex.com/">KBCsv</a> overloads.</strong> I am a huge fan of <a href="http://kentb.blogspot.com/">Kent Boogaart</a>&#8216;s CSV library. In my console app, I wanted to output the results as a CSV, so I could sort the data with excel.  However, along the way I got the crazy idea  to change some constructor parameters from <a href="http://kbcsv.codeplex.com/workitem/11185">string[] toIEnumerable&lt;string&gt;</a>. I discovered this could lead to ambiguous overloads . However, I did submit a fully working patch for IList&lt;string&gt; and WIP for the IEnumerable&lt;string&gt; with some commentary and asking if it made sense to complete the work. See patch 101185 and 101186 in the <a href="http://kbcsv.codeplex.com/SourceControl/list/patches">KBCsv patchlist</a> for the actual code. I&#8217;ll call this a partial victory.</li>
<li><strong>Filing a feature request with <a href="http://thehelpertrinity.codeplex.com/">HelperTrinity</a>.</strong> HelperTrinity is Ken Boogaart&#8217;s general helper library, used by KBCsv. While hacking on the KBCsv source I thought, &#8220;Hey! This could use some more helper and extension methods.&#8221; So I submitted a <a href="http://thehelpertrinity.codeplex.com/workitem/8607">feature request</a>.</li>
<li><strong>Finding  a bug in <a href="http://www.jetbrains.com/resharper/">ReSharper</a>.</strong> Digging through the KBCsv source code lead me to find an edge case that could lead to resharper reporting a false error. So I opened <a href="http://youtrack.jetbrains.net/issue/RSRP-274868">RSRP-274868</a>.</li>
<li><strong>Filed two codeplex feature requests.</strong> I went total meta and made two suggestions for codeplex itself. Both are the sort of simple things that I expect will be received by the codeples staff with either a &#8220;great idea&#8221; or &#8220;no thats so terrible for this reason&#8221;</li>
<ul>
<li><a title="Created work item: Add the codeplex favicon to the svnbridge servers" href="http://codeplex.codeplex.com/workitem/25935"><strong>Codeplex Workitem 25935</strong> Add the codeplex favicon to the svnbridge servers</a></li>
<li><a href="http://codeplex.codeplex.com/workitem/25936"><strong>Codeplex Workitem 25936</strong> Make the tfs and svn links in connection instructions clickable</a></li>
</ul>
<li><strong>MongoDB feature requests.</strong> I constantly find the <a href="http://bsonspec.org/">BSON</a> implementation in the <a href="http://www.mongodb.org/display/DOCS/CSharp+Language+Center">MongDB C# driver</a> useful outside of mongodb. It was useful here, but the time it saved me was eaten up filing two feature requests. I hope to implement patches for both of them.</li>
<ul>
<li><a href="https://jira.mongodb.org/browse/CSHARP-304"><strong>CSHARP-304</strong>: Add ToHashTable() extension method to MongoDB.Bson.dll</a></li>
<li><a href="https://jira.mongodb.org/browse/CSHARP-305"><strong>CSHARP-305</strong>: Separate MongoDB.Bson.dll into its own nuget package</a></li>
</ul>
<li><strong>Finally, one of my twitter calls broke.</strong> <a href="http://www.twitterizer.net/">Twitterizer</a> is the library I am using for twitter, and in the middle of debugging <a href="http://forums.twitterizer.net/viewtopic.php?f=9&amp;t=579">a call that always worked stopped working</a>. Looking elsewhere on the forums shows this is not a problem unique to me. This is the event that convinced me that my time would be better spent shaving the yak. In the end, this is still an open issue, but reverting to an older version of the library in a <a href="https://github.com/zippy1981/twitter.GetFriends/commits/twitterizer-reversion">different branch</a>, and excessive use of <a href="http://www.kernel.org/pub/software/scm/git/docs/git-cherry-pick.html">git cherry-pick</a> made it work.</li>
<li><strong>Epilogue:</strong> <del>The app works, but <a href="http://www.libreoffice.org/download/">LibreOffice</a> does not correctly import all rows in the spreadsheet. Since its all the import columns occur before the problems occur, and this can be cleaned in a text editor, I will investigate and file the bugs appropiatly with KBCsv and LibreOffice appropriately. Also, I need to get access to a machine with Excel installed. I expect Excel to be better at parsing CSV.</del>  It seems that I was specifying space as a delimiter in the CVS import dialog. Once I unchecked that the CSV imported properly.</li>
</ul>
<p>So in conclusion, my app works mostly, and between my bug reports and patches, I hope that the libraries and ReSharper will be improved. Also, by writing this blog post, I hope that having the big picture will be useful to myself as I polish of this twitter utility, and implement fixes for some of the bugs.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.justaprogrammer.net/2011/08/14/yak-shaving-digest-2011-08-13/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>RedGate Reflector 7 news roundup</title>
		<link>http://www.justaprogrammer.net/2011/02/02/redgate-reflector-7-news-roundup/</link>
		<comments>http://www.justaprogrammer.net/2011/02/02/redgate-reflector-7-news-roundup/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 02:02:50 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Just A Programmer]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[RedGate]]></category>

		<guid isPermaLink="false">http://www.justaprogrammer.net/?p=479</guid>
		<description><![CDATA[Below is a series of links related to todays news that RedGate will cease to offer a free version of its .NET Reflector product. The ZDNet article that broke the story The official RedGate announcement Youtube interview by the CEO of RedGate Redgate forum dedicated to this announcement JetBrains blog post alluding to a replacement [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.justaprogrammer.net%252F2011%252F02%252F02%252Fredgate-reflector-7-news-roundup%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FfZiZxU%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22RedGate%20Reflector%207%20news%20roundup%22%20%7D);"></div>
<p>Below is a series of links related to todays news that RedGate will cease to offer a free version of its .NET Reflector product.</p>
<ul>
<li><a href="http://www.zdnet.com/blog/burnette/red-gate-we-could-not-make-the-free-model-work-for-us-as-a-commercial-company/2176">The ZDNet article that broke the story</a></li>
<li><a href="http://www.red-gate.com/products/dotnet-development/reflector/announcement">The official RedGate announcement</a></li>
<li><a href="http://www.youtube.com/watch?v=TKnEjiSGZLA">Youtube interview by the CEO of RedGate</a></li>
<li><a href="http://www.red-gate.com/MessageBoard/viewforum.php?f=141">Redgate forum dedicated to this announcement</a></li>
<li><a href="http://blogs.jetbrains.com/dotnet/2011/02/reflections-on-recent-news/">JetBrains blog post alluding to a replacement they have been working on</a></li>
<li><a href="http://twitter.com/#!/jbevain/status/32807256839950337">Jb Evain has announced he is working on a Mono.Cecil based decompiler on twitter</a></li>
<li>For completeness, <a href="http://www.justaprogrammer.net/2011/02/02/redgate-is-no-longer-free-i-say-open-source-it/">my earlier post on the matter</a></li>
<li><strong>Update (2011-02-05): </strong><a href="http://tirania.org/blog/archive/2011/Feb-04.html">Miguel de Icaza weighs in</a>.</li>
</ul>
<h3>Stackoverflow Links</h3>
<p>There are some stackoverflow questions that might be in need of updating as a result of the fallout of this.</p>
<ul>
<li><a href="http://blogs.jetbrains.com/dotnet/2011/02/reflections-on-recent-news/">Open Source Alternatives to Reflector?</a></li>
<li><a href="http://stackoverflow.com/questions/1563649/net-reflector-for-mono">.NET Reflector for Mono</a></li>
</ul>
<p>In addition, hopefully there will be some activity on the <a href="http://alternativeto.net/software/net-reflector/">Reflector section of alternativeto.net</a>.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.justaprogrammer.net/2011/02/02/redgate-reflector-7-news-roundup/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>RedGate is no longer free? I say open source it!</title>
		<link>http://www.justaprogrammer.net/2011/02/02/redgate-is-no-longer-free-i-say-open-source-it/</link>
		<comments>http://www.justaprogrammer.net/2011/02/02/redgate-is-no-longer-free-i-say-open-source-it/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 16:55:56 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Just A Programmer]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[RedGate]]></category>

		<guid isPermaLink="false">http://www.justaprogrammer.net/?p=469</guid>
		<description><![CDATA[As of today, RedGate&#8217;s .NET Reflector is no longer free. It is now $35. In an interview their CEO claimed they can not justify dedicating any developer resources to the product under the current free model. I am a big fan of Redgate&#8217;s SQL Compare tool, it makes DB deploys as easy as code deploys. [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.justaprogrammer.net%252F2011%252F02%252F02%252Fredgate-is-no-longer-free-i-say-open-source-it%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FfbIVkQ%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22RedGate%20is%20no%20longer%20free%3F%20I%20say%20open%20source%20it%21%22%20%7D);"></div>
<p>As of today, RedGate&#8217;s .NET Reflector is <a href="http://www.zdnet.com/blog/burnette/red-gate-we-could-not-make-the-free-model-work-for-us-as-a-commercial-company/2176">no longer free</a>. It is now $35. In an interview their CEO claimed they can not justify dedicating any developer resources to the product under the current free model.</p>
<p>I am a big fan of Redgate&#8217;s SQL Compare tool, it makes DB deploys as easy as code deploys. I&#8217;ve used .NET Reflector, although naturally its not the sort of thing I use on a regular basis. I had mixed reactions at first. I do think that $35 is a fair price for the tool. I am glad that they will continue to develop it, and I have no doubt that will happen if a revenue stream is realized from the product. That being said, perhaps it would be better to open source it.<span id="more-469"></span></p>
<p>So your probably asking how they could make any more money from an open source product compared to a free as in beer one? Well, I&#8217;m suggesting that a bounty system be setup for the public to buy the source code from RedGate. RedGate could set a price on the source code, lets say $500,000. People can pledge money to some escrow fund. When the half million is raised, RedGate releases the source code and gets the money.</p>
<p>Now the first argument against such a move is that it would turn a potential revenue stream to a single  lump sum payment. However, that is not necessarily the case. RedGate has several options for further revenue from an open source Reflector. The most obvious is to make this a one time fork. The community has their version and RedGate goes and develops their product. With half a million in their coffers they can lock 2 developers in a room for a year and have them churn out whatever ideas they have had for reflector. Another option is to steward the open source product. They can administrate the public .NET Reflector repo, and accept patches. They can make the contributors assign copyright to RedGate. Redgate can then work on premium add-ons to .NET Reflector. In his youtube interview, Simon Galbraith, RedGate&#8217;s CEO, claimed a fremium model did not work in the past. However, this will give them some funds to kickstart the development of better premium tools.</p>
<p>If you support such a model, please say so in the comments below.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.justaprogrammer.net/2011/02/02/redgate-is-no-longer-free-i-say-open-source-it/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cassini is now on github.</title>
		<link>http://www.justaprogrammer.net/2010/04/05/cassini-is-now-on-github/</link>
		<comments>http://www.justaprogrammer.net/2010/04/05/cassini-is-now-on-github/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 12:48:53 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Just A Programmer]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[release annoouncements]]></category>

		<guid isPermaLink="false">http://www.justaprogrammer.net/?p=128</guid>
		<description><![CDATA[This weekend I created a github repository for Cassini, the small, single executable, Ms-PL web server which Microsoft released for developers. This was motivated by my SVG experiments, because Cassini does not serve svg files with the proper content type. I coded a simple workaround to set the mime type and wanted to give it [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.justaprogrammer.net%252F2010%252F04%252F05%252Fcassini-is-now-on-github%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Cassini%20is%20now%20on%20github.%22%20%7D);"></div>
<p>This weekend I created a <a href="github.com/zippy1981/Cassini">github repository</a> for Cassini, the small, single executable, Ms-PL web server which Microsoft released for developers. This was motivated by my <a href="http://www.justaprogrammer.net/2010/04/04/adventures-with-svg/">SVG experiments</a>, because Cassini does not <a href="stackoverflow.com/questions/2574356/how-does-simpleworkerrequest-associate-mime-types-with-extensions">serve svg files with the proper content type</a>.</p>
<p>I coded a simple workaround to set the mime type and wanted to give it back to the community. While there are two <a href="http://www.codeplex.com">codeplex</a> projects with Cassini enhancements, <a href="http://cassinipp.codeplex.com/">Cassini++</a> and <a href="http://cassinidev.codeplex.com/">CassiniDev</a>, I felt <a href="http://github.com">github </a>was the place to host Cassini changes. There are a multitude of small enhancements that have been made to Cassini, and Cassini is not the sort of project that works well with strong central leadership.</p>
<p>Currently the version of Cassini available in my github repo sports the following features:</p>
<ul>
<li>Everything in standard <a href="http://blogs.msdn.com/dmitryr/archive/2009/04/23/cassini-support-for-friendly-urls-routing.aspx">Cassini v3.5.0.2</a>, The lastest version from <a href="http://blogs.msdn.com/dmitryr/default.aspx">Dmitry Robsman&#8217;s blog</a></li>
<li>SVGs are sent with the proper mime type. This is the itch that inspired this fork. I have a feeling that there is a better way to it, but no one on <a href="http://stackoverflow.com">stackoverflow</a> provided an answer to <a href="http://stackoverflow.com/questions/2574356/how-does-simpleworkerrequest-associate-mime-types-with-extensions">my question</a>.</li>
<li><a href="http://certivision.com/wordpress/?p=32">The ability to optionally serve remote urls</a>. Thanks to <a id="ctl00___ctl00___ctl01___Comments___Comments_ctl11_NameLink" title="vzelenko" href="http://www.certivision.com/wordpress" target="_blank">vzelenko</a> for making his changes available.</li>
</ul>
<p>I&#8217;m hoping that hosting my changes on github will foster the sharing of Cassini enhancements. I will reach out to both Cassini projects on codeplex and let them know of my changes so that can incorporate them into their projects.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.justaprogrammer.net/2010/04/05/cassini-is-now-on-github/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

