<?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>Jay R. Wren - lazy dawg evarlast</title>
	<atom:link href="http://jrwren.wrenfam.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://jrwren.wrenfam.com/blog</link>
	<description>babblings of a computer loving fool</description>
	<lastBuildDate>Fri, 12 Mar 2010 15:41:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>FOSDEM Videos online</title>
		<link>http://jrwren.wrenfam.com/blog/2010/03/12/fosdem-videos-online/</link>
		<comments>http://jrwren.wrenfam.com/blog/2010/03/12/fosdem-videos-online/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 15:41:31 +0000</pubDate>
		<dc:creator>jrwren</dc:creator>
				<category><![CDATA[Mono]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://jrwren.wrenfam.com/blog/2010/03/12/fosdem-videos-online/</guid>
		<description><![CDATA[As a .NET programmer in my day job targeting Windows desktop applications (winforms and wpf), I don’t get to stay on top of much ASP.NET or Mono. The ASP.NET stuff I feel like I have a good enough handle on via channels I use to stay on top of .NET in general (user groups, blogs, [...]]]></description>
			<content:encoded><![CDATA[<p>As a .NET programmer in my day job targeting Windows desktop applications (winforms and wpf), I don’t get to stay on top of much ASP.NET or Mono. The ASP.NET stuff I feel like I have a good enough handle on via channels I use to stay on top of .NET in general (user groups, blogs, etc). Mono gets much less coverage there.</p>
<p>Luckily there are some awesome (720p quality) videos from FOSDEM 2010 of some Mono centric presentations.</p>
<p><a href="http://cs.six.lt/~bentkus/videos/mono-fosdem2010/mono-2010-02-07-0915-1000-(Lluis%20Sahnchez%20Gual)-(MonoDevelop).mp4">Lluis Sanchez Gual on MonoDevelop</a> – I knew MonoDevelop 2.2 had some awesome in it, but I didn’t know about some of the code generation things in it. Think R# mixed with CodeRush. It is very sweet.&#160; <a href="http://foodformonkeys.blogspot.com/">Lluis’s Blog</a> is always a good read too.</p>
<p><a href="http://cs.six.lt/~bentkus/videos/mono-fosdem2010/mono-2010-02-07-1000-1100-(Ivan%20Porto%20Carrero)-(The%20Ruby%20and%20the%20.NET%20lovechild).mp4">Ivan Porto Carrero on IronRuby</a> – Poor Ivan had some demo troubles, but overall the presentation was excellent. It is VERY cool to see a Banshee add-in written in Ruby. I don’t think I was reading <a href="http://flanders.co.nz/">Ivan’s Blog</a> before, but I am now.</p>
<p><a href="http://cs.six.lt/~bentkus/videos/mono-fosdem2010/mono-2010-02-07-1100-1200-(Miguel%20de%20Icaza)-(Mono%20Edge).mp4">Miguel on Mono</a> – I think this is kind of Miguel’s “State of the Monkey” of the day. Its a status overview with a few deep dives into things. I especially thought it was cool that he went deep (well, deeper than most) into Expression&lt;&gt;.</p>
<p>The videos seem to be coming out slowly. I’m posting these brief summaries of the videos as I watch them, so expect me to link to more as I watch them.</p>
]]></content:encoded>
			<wfw:commentRss>http://jrwren.wrenfam.com/blog/2010/03/12/fosdem-videos-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 7 mp3 tag editor</title>
		<link>http://jrwren.wrenfam.com/blog/2010/03/08/windows-7-mp3-tag-editor/</link>
		<comments>http://jrwren.wrenfam.com/blog/2010/03/08/windows-7-mp3-tag-editor/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 15:19:01 +0000</pubDate>
		<dc:creator>jrwren</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[windows 7]]></category>

		<guid isPermaLink="false">http://jrwren.wrenfam.com/blog/2010/03/08/windows-7-mp3-tag-editor/</guid>
		<description><![CDATA[I just accidentally found Windows 7’s built in mp3 (and presumably other metadata, exif perhaps) tag editor.
I looked for this thing for what felt like hours over the past year. Eventually I sucked it up and downloaded mp3tag, but its still nice to know that this is there for the next time.
Normally when browsing my [...]]]></description>
			<content:encoded><![CDATA[<p>I just accidentally found Windows 7’s built in mp3 (and presumably other metadata, exif perhaps) tag editor.</p>
<p>I looked for this thing for what felt like hours over the past year. Eventually I sucked it up and downloaded mp3tag, but its still nice to know that this is there for the next time.</p>
<p>Normally when browsing my mp3 files I see a window that looks like this:</p>
<p><a href="http://jrwren.wrenfam.com/blog/wp-content/uploads/2010/03/Stromkern1.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Stromkern1" border="0" alt="Stromkern1" src="http://jrwren.wrenfam.com/blog/wp-content/uploads/2010/03/Stromkern1_thumb.png" /></a> </p>
<p>See that summary pane at the bottom? Select a file with editable metadata, like an mp3 and resize that pane. Then click one of the metadata values.</p>
<p><a href="http://jrwren.wrenfam.com/blog/wp-content/uploads/2010/03/Stromkern2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Stromkern2" border="0" alt="Stromkern2" src="http://jrwren.wrenfam.com/blog/wp-content/uploads/2010/03/Stromkern2_thumb.png" /></a> </p>
<p>Wow, I wish that had been more discoverable. –1 point for Windows 7 for making that far from intuitive, but 1 point for Windows 7 for having the feature.</p>
]]></content:encoded>
			<wfw:commentRss>http://jrwren.wrenfam.com/blog/2010/03/08/windows-7-mp3-tag-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LINQ Abuse with the C# 4 dynamic type</title>
		<link>http://jrwren.wrenfam.com/blog/2010/03/04/linq-abuse-with-the-c-4-dynamic-type/</link>
		<comments>http://jrwren.wrenfam.com/blog/2010/03/04/linq-abuse-with-the-c-4-dynamic-type/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 03:13:48 +0000</pubDate>
		<dc:creator>jrwren</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[linq]]></category>

		<guid isPermaLink="false">http://jrwren.wrenfam.com/blog/2010/03/04/linq-abuse-with-the-c-4-dynamic-type/</guid>
		<description><![CDATA[With C# 4 adding some support for dynamic typing one of the first thing that I wanted to do is use it with LINQ.
I want to do this:
dynamic x;     var h = from y in x where y == 1 select y.something;

But I get error messages on both where and select [...]]]></description>
			<content:encoded><![CDATA[<p>With C# 4 adding some support for dynamic typing one of the first thing that I wanted to do is use it with LINQ.</p>
<p>I want to do this:</p>
<blockquote><p>dynamic x;     <br />var h = from y in x where y == 1 select y.something;</p>
</blockquote>
<p>But I get error messages on both where and select that says</p>
<blockquote><p><font color="#333333">Query expressions over source type ‘dynamic’ or with a join sequence of ‘dynamic’ are not allowed</font></p>
</blockquote>
<p>Major bummer.</p>
<p>But surely there is something I can do. <img src='http://jrwren.wrenfam.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>*the title of this post starts with LINQ abuse… please don’t comment about how stupid and evil this is. I know it. Instead, consider this an exercise in getting to know C# a little better.</p>
<p>The dynamic type is just sugar for the object type and some attributes to which the compiler pays attention.</p>
<p>Lets use object…</p>
<blockquote><p>object things = new[] { 0,1,2,3,4,5,6,7, };     <br />var whatIwant = from thing in things      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; where thing % 2 == 0      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; select thing;      <br />// or if you like longhand:      <br />var wiw = things.Where(thing =&gt; thing%2 == 0).Select(thing =&gt; thing);</p>
</blockquote>
<p>How does this compile? Well, by making Where and Select resolve to extension methods on object instead of extension methods on IEnumerable&lt;T&gt; (which is what people USUALLY think of when they think LINQ).</p>
<blockquote><p>public static IEnumerable&lt;dynamic&gt; Select(this object source, Func&lt;dynamic, dynamic&gt; map)     <br />{      <br />&#160;&#160;&#160; foreach (dynamic item in source as dynamic)      <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; yield return map(item);      <br />&#160;&#160;&#160; }      <br />}      <br />public static IEnumerable&lt;dynamic&gt; Where(this object source, Func&lt;dynamic, dynamic&gt; predicate)      <br />{      <br />&#160;&#160;&#160; foreach (dynamic item in source as dynamic)      <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (predicate(item))      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; yield return item;      <br />&#160;&#160;&#160; }      <br />}</p>
</blockquote>
<p>Extension methods on object, then cast to dynamic (extension methods aren’t allowed on dynamic).</p>
<p>It should be short work to fill out whatever LINQ methods are necessary to make whatever LINQ expressions you wish work against dynamic (object) and now you can use LINQ with a source that is typed dynamic.</p>
]]></content:encoded>
			<wfw:commentRss>http://jrwren.wrenfam.com/blog/2010/03/04/linq-abuse-with-the-c-4-dynamic-type/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Version Control Tools Is More Than Just The Tools</title>
		<link>http://jrwren.wrenfam.com/blog/2010/02/17/version-control-tools-is-more-than-just-the-tools/</link>
		<comments>http://jrwren.wrenfam.com/blog/2010/02/17/version-control-tools-is-more-than-just-the-tools/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 17:43:38 +0000</pubDate>
		<dc:creator>jrwren</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Bazaar]]></category>
		<category><![CDATA[dvcs]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[launchpad]]></category>

		<guid isPermaLink="false">http://jrwren.wrenfam.com/blog/2010/02/17/version-control-tools-is-more-than-just-the-tools/</guid>
		<description><![CDATA[Martin Fowler has an excellent post on Version Control, and he almost got all of the way there, but for more than just a tiny development shop I think he missed a few important pieces.
http://martinfowler.com/bliki/VersionControlTools.html
Martin does say that Mercurial and git get most of the attention and that the choice between the two come down [...]]]></description>
			<content:encoded><![CDATA[<p>Martin Fowler has an excellent post on Version Control, and he almost got all of the way there, but for more than just a tiny development shop I think he missed a few important pieces.</p>
<p><a title="http://martinfowler.com/bliki/VersionControlTools.html" href="http://martinfowler.com/bliki/VersionControlTools.html">http://martinfowler.com/bliki/VersionControlTools.html</a></p>
<p>Martin does say that Mercurial and git get most of the attention and that the choice between the two come down to “…the shadow of github.”</p>
<p>He is dead right, but I’d argue that this is where the recommendability starts. github is awesome. Ask anyone who has used it and I’ve rarely heard anything negative said. But for anything but the tiniest organization outsourcing your VCS to github is not a practical option. There could be IP requirements or legal requirements about keeping source private and just the over cautious nature of people is to want to run VCS in house. github is not open source. gitorious is. </p>
<p><a title="http://gitorious.org/about" href="http://gitorious.org/about">http://gitorious.org/about</a></p>
<p>You can go checkout the source code to gitorious and run your own in your own internal organization. AWESOME!</p>
<p>I’d never heard of the Mercurial hosting project <a title="http://bitbucket.org/" href="http://bitbucket.org/">http://bitbucket.org/</a> until i read Martin’s post. That is great to know that it exists. But…</p>
<p>The most mature solution is something which is also open source, has the best project management implementation, has the best bug tracking implementation and integration and is just all around awesome. Its called Launchpad.</p>
<p><a title="http://launchpad.net/" href="http://launchpad.net/">http://launchpad.net/</a></p>
<p>Yes, the same software that drives launchpad is open source and you can install and run it for your own team, company, organization or however you are structured.</p>
<p>Launchpad is written by open source volunteers as well as employees of Canonical. You can buy support for Launchpad from Canonical. Launchpad uses the lesser known bazaar DVCS. Martin kindly left out the DVCS which is used by the most prominent Linux distribution, ubuntu, and the most prominent open source database software, MySQL. </p>
<p>Just like GIT is not going away, because linux uses it, and Mercurial isn’t going away because python and google use it, bazaar is not going away, because ubuntu and mysql use it.</p>
<p>My point is that the web hub to your code and the tools surrounding how you get to your code is just as important as the base DVCS tool itself. SVN has always been good, but ViewVC makes it great. GIT is good. github makes it great. Launchpad makes bazaar great. It makes bazaar at least as good of a choice as either git or mercurial.</p>
]]></content:encoded>
			<wfw:commentRss>http://jrwren.wrenfam.com/blog/2010/02/17/version-control-tools-is-more-than-just-the-tools/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Its 2010 and there is still not a good audio manager</title>
		<link>http://jrwren.wrenfam.com/blog/2010/02/09/its-2010-and-there-is-still-not-a-good-audio-manager/</link>
		<comments>http://jrwren.wrenfam.com/blog/2010/02/09/its-2010-and-there-is-still-not-a-good-audio-manager/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 16:33:03 +0000</pubDate>
		<dc:creator>jrwren</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jrwren.wrenfam.com/blog/2010/02/09/its-2010-and-there-is-still-not-a-good-audio-manager/</guid>
		<description><![CDATA[Its 2010 and iTunes is still slow. Windows Media Player does this 5-20 times a day:
 
So there are no good comprehensive media library managers.
Its sad but true. I think tomorrow I’ll be going back to using foobar2000 for my audio listening. WMP12 was so so so close for me, but this issue is a [...]]]></description>
			<content:encoded><![CDATA[<p>Its 2010 and iTunes is still slow. Windows Media Player does this 5-20 times a day:</p>
<p><a href="http://jrwren.wrenfam.com/blog/wp-content/uploads/2010/02/WMPLibrary.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WMP Library" border="0" alt="WMP Library" src="http://jrwren.wrenfam.com/blog/wp-content/uploads/2010/02/WMPLibrary_thumb.png" width="589" height="450" /></a> </p>
<p>So there are no good comprehensive media library managers.</p>
<p>Its sad but true. I think tomorrow I’ll be going back to using foobar2000 for my audio listening. WMP12 was so so so close for me, but this issue is a show stopper.</p>
]]></content:encoded>
			<wfw:commentRss>http://jrwren.wrenfam.com/blog/2010/02/09/its-2010-and-there-is-still-not-a-good-audio-manager/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>double.IsNaN is 100 times slower</title>
		<link>http://jrwren.wrenfam.com/blog/2010/02/05/double-isnan-is-100-times-slower/</link>
		<comments>http://jrwren.wrenfam.com/blog/2010/02/05/double-isnan-is-100-times-slower/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 20:16:43 +0000</pubDate>
		<dc:creator>jrwren</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[MSPL]]></category>

		<guid isPermaLink="false">http://jrwren.wrenfam.com/blog/2010/02/05/double-isnan-is-100-times-slower/</guid>
		<description><![CDATA[Its not just your programming group that can’t get it right. I work in a semi-disfunctional group on contract for a client who, not matter how hard we try, doesn’t seem to listen to basic software engineering principles.
I feel a little better (and a great deal worse after thinking about it) when I see that [...]]]></description>
			<content:encoded><![CDATA[<p>Its not just your programming group that can’t get it right. I work in a semi-disfunctional group on contract for a client who, not matter how hard we try, doesn’t seem to listen to basic software engineering principles.</p>
<p>I feel a little better (and a great deal worse after thinking about it) when I see that the largest software company in the world deals with some of the same problems.</p>
<p>I found this gem in the WPFToolkit (it is MSPL) source.</p>
<blockquote><p>// The standard CLR double.IsNaN() function is approximately 100 times slower than our own wrapper,     <br />// so please make sure to use DoubleUtil.IsNaN() in performance sensitive code.      <br />// PS item that tracks the CLR improvement is DevDiv Schedule : 26916.      <br />// IEEE 754 : If the argument is any value in the range 0&#215;7ff0000000000001L through 0&#215;7fffffffffffffffL       <br />// or in the range 0xfff0000000000001L through 0xffffffffffffffffL, the result will be NaN.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />public static bool IsNaN(double value)      <br />{      <br />&#160;&#160;&#160; NanUnion t = new NanUnion();      <br />&#160;&#160;&#160; t.DoubleValue = value; </p>
<p>&#160;&#160;&#160; ulong exp = t.UintValue &amp; 0xfff0000000000000;     <br />&#160;&#160;&#160; ulong man = t.UintValue &amp; 0&#215;000fffffffffffff;      <br />&#160;&#160;&#160; return (exp == 0&#215;7ff0000000000000 || exp == 0xfff0000000000000) &amp;&amp; (man != 0);      <br />}</p>
<p>&#160;</p>
</blockquote>
<p>My jaw was open pretty far for quite a few seconds as I read this.</p>
]]></content:encoded>
			<wfw:commentRss>http://jrwren.wrenfam.com/blog/2010/02/05/double-isnan-is-100-times-slower/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>An Application of iPad</title>
		<link>http://jrwren.wrenfam.com/blog/2010/01/30/an-application-of-ipad/</link>
		<comments>http://jrwren.wrenfam.com/blog/2010/01/30/an-application-of-ipad/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 16:57:45 +0000</pubDate>
		<dc:creator>jrwren</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://jrwren.wrenfam.com/blog/2010/01/30/an-application-of-ipad/</guid>
		<description><![CDATA[I really hate the timing of this post, but the ideas are fresh in my head. You can consider this ‘just another iPad post’ if you want.
Ever taken a survey on the streets from someone with a PC style tablet? I’ve taken a few. I’m always surprised by the hardware choice. For some things, it [...]]]></description>
			<content:encoded><![CDATA[<p>I really hate the timing of this post, but the ideas are fresh in my head. You can consider this ‘just another iPad post’ if you want.</p>
<p>Ever taken a survey on the streets from someone with a PC style tablet? I’ve taken a few. I’m always surprised by the hardware choice. For some things, it seems like a clipboard and paper would be better. </p>
<p>At work, there is an upcoming project that involves something like the above. Here is why I think the iPad is a better choice. It mostly comes down to boring IT Operations reasons, aka management of the underlying platform.</p>
<ul>
<li>With iPad, you never have to defragment your disk. </li>
<li>With iPad, you never have to run antivirus or update antivirus definitions. </li>
<li>With iPad, you never have to run anitspyware or update antispyware definitions. </li>
<li>With iPad, there is no moving and spinning disk which is prone to higher failure. </li>
<li>With iPad, you don&#8217;t have to worry about some slick-kid or script kiddie downloading and installing some crazy software that turns your computer into a bot or even just overwrites important files preventing you from booting the next time. </li>
<li>With iPad, you don&#8217;t have to worry about not having a replacement part available if a piece of hardware fails. </li>
<li>With iPad, the user will have a more familiar experience. Given the prevalence of iPhone, it is likely that an end user will understand many of the touch and drag gestures. </li>
<li>With iPad, there is no stylus like the PC Tablets of old. </li>
<li>With iPad, there is a very clear future. When was the last time apple canceled a product line? Newton? Ok, how about under Jobs? I&#8217;ve no idea.</li>
</ul>
<p>I’m as anti-fud as any person that I know. Yes, the above is definitely anti-windows fud cited by Mac and Linux lovers everywhere and normally I’m the first person to refute it. However, I think under that fud there are tiny grains of truth. For certain applications those bits of truth are highly amplified. It is a different risk vector. These things become very important and translate directly to cost of ownership.</p>
<p>Notice that I’ve listed no pros or cons for iPad as a general purpose device. I don’t care to go there. I’ve also not mentioned if there is much of a market for the above use case (there isn’t enough to sustain the device alone). These are all things to be answered elsewhere. My point in short: here is a use case if you have been wondering for what kind of things iPad can be used.</p>
]]></content:encoded>
			<wfw:commentRss>http://jrwren.wrenfam.com/blog/2010/01/30/an-application-of-ipad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Whole App is a LINQ Expression</title>
		<link>http://jrwren.wrenfam.com/blog/2010/01/10/my-whole-app-is-a-linq-expression/</link>
		<comments>http://jrwren.wrenfam.com/blog/2010/01/10/my-whole-app-is-a-linq-expression/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 20:53:03 +0000</pubDate>
		<dc:creator>jrwren</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jrwren.wrenfam.com/blog/?p=917</guid>
		<description><![CDATA[I just published an application which I consider useful over on codeplex with source hosted on launchpad.
http://wlanchannelinfo.codeplex.com/
https://code.edge.launchpad.net/~evarlast/+junk/WlanChannelInfo
I wrote this because Wifi in my home is very slow. Its so slow I&#8217;m tempted to run a network cable to my couch so that even when I&#8217;m couch surfing I can have fast access to my server.
In [...]]]></description>
			<content:encoded><![CDATA[<p>I just published an application which I consider useful over on codeplex with source hosted on launchpad.</p>
<p><a href="http://wlanchannelinfo.codeplex.com/">http://wlanchannelinfo.codeplex.com/</a></p>
<p><a href="https://code.edge.launchpad.net/~evarlast/+junk/WlanChannelInfo">https://code.edge.launchpad.net/~evarlast/+junk/WlanChannelInfo</a></p>
<p>I wrote this because Wifi in my home is very slow. Its so slow I&#8217;m tempted to run a network cable to my couch so that even when I&#8217;m couch surfing I can have fast access to my server.</p>
<p>In an effort to diagnose my slow Wifi, I tried to see if my neighbors were causing interference by running Wifi on the same or overlapping channel as me. I downloaded netstumbler; it didn&#8217;t work. I downloaded some other tool; neither did it.</p>
<p>So I wondered how hard it would be to write my own. It turns out Windows 7 added to the Wlan* api to expose all of the necessary data. After some digging I found the managedwlan project on codeplex. Now I got to play.</p>
<p>Once I figured out the api, I was able to write the entire application with pretty much one LINQ expression:</p>
<p>var client = new WlanClient();<br />
var retval =<br />
from wlanIface in client.Interfaces<br />
from bssentry in wlanIface.GetNetworkBssList()<br />
from network in wlanIface.GetAvailableNetworkList(Wlan.WlanGetAvailableNetworkFlags.IncludeAllAdhocProfiles)<br />
where InterfaceService.GetStringForSSID(network.dot11Ssid) == InterfaceService.GetStringForSSID(bssentry.dot11Ssid)<br />
select new WifiInfo<br />
{<br />
bssentry = GetStringForSSID(bssentry.dot11Ssid),<br />
channel = Wifi.FrequencyChannelMap[bssentry.chCenterFrequency],<br />
frequency = bssentry.chCenterFrequency,<br />
linqQuality = bssentry.linkQuality,<br />
strength = bssentry.rssi,<br />
signalQuality = network.wlanSignalQuality,<br />
wifitype = network.dot11BssType<br />
};</p>
<p>The result of that expression is directly databound to a WPF DataGrid and I can now view the data that I want to.</p>
<p>I really love the platform (C#+.NET) on which I work.</p>
]]></content:encoded>
			<wfw:commentRss>http://jrwren.wrenfam.com/blog/2010/01/10/my-whole-app-is-a-linq-expression/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;m Lazy And I Need My Helpers</title>
		<link>http://jrwren.wrenfam.com/blog/2010/01/07/im-lazy-and-i-need-my-helpers/</link>
		<comments>http://jrwren.wrenfam.com/blog/2010/01/07/im-lazy-and-i-need-my-helpers/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 02:27:48 +0000</pubDate>
		<dc:creator>jrwren</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[CC0]]></category>
		<category><![CDATA[Unlicense]]></category>
		<category><![CDATA[WTFPL]]></category>

		<guid isPermaLink="false">http://jrwren.wrenfam.com/blog/?p=915</guid>
		<description><![CDATA[public static class NumericExtensions
{
public static bool IsZero(this byte number)
{
return 0==number;
}
public static bool IsZero(this short number)
{
return 0==number;
}
public static bool IsZero(this int number)
{
return 0==number;
}
public static bool IsZero(this long number)
{
return 0==number;
}
public static bool IsZero(this float number)
{
return 0==number;
}
public static bool IsZero(this double number)
{
return 0==number;
}
public static bool IsZero(this decimal number)
{
return 0==number;
}
}
I wanted something like this today as I was toggling [...]]]></description>
			<content:encoded><![CDATA[<p>public static class NumericExtensions<br />
{<br />
public static bool IsZero(this byte number)<br />
{<br />
return 0==number;<br />
}<br />
public static bool IsZero(this short number)<br />
{<br />
return 0==number;<br />
}<br />
public static bool IsZero(this int number)<br />
{<br />
return 0==number;<br />
}<br />
public static bool IsZero(this long number)<br />
{<br />
return 0==number;<br />
}<br />
public static bool IsZero(this float number)<br />
{<br />
return 0==number;<br />
}<br />
public static bool IsZero(this double number)<br />
{<br />
return 0==number;<br />
}<br />
public static bool IsZero(this decimal number)<br />
{<br />
return 0==number;<br />
}<br />
}</p>
<p>I wanted something like this today as I was toggling between NUnit and MSTest. Sure, Assert.That( something, Is(0) ) is readable, but its not portable. Its NUnit only, and for this project, I can&#8217;t do that. I also like the english reading of IsZero() vs. Is(0)</p>
<p>I think I&#8217;ve stated before that any code on this blog (c) by me and licensed under the MIT/X11 License, but for certain bits of code, I see no point in that. So I&#8217;m going to start tagging code with <a href="http://creativecommons.org/publicdomain/zero/1.0/">CC0</a>, <a href="http://unlicense.org/">Unlicense</a> and/or <a href="http://sam.zoy.org/wtfpl/">WTFPL</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jrwren.wrenfam.com/blog/2010/01/07/im-lazy-and-i-need-my-helpers/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Windows Home Server backup database</title>
		<link>http://jrwren.wrenfam.com/blog/2010/01/02/windows-home-server-backup-database/</link>
		<comments>http://jrwren.wrenfam.com/blog/2010/01/02/windows-home-server-backup-database/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 15:16:20 +0000</pubDate>
		<dc:creator>jrwren</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[backups]]></category>
		<category><![CDATA[windows 7]]></category>
		<category><![CDATA[windows home server]]></category>

		<guid isPermaLink="false">http://jrwren.wrenfam.com/blog/2010/01/02/windows-home-server-backup-database/</guid>
		<description><![CDATA[I’m seriously thinking I should change my backup strategy. I use Windows Home Server for one thing and one thing only, Backups. Sure the file share stuff is nice, but I already have a Linux server with samba with my file shares. WHS lovers will say I should migrate, but all I see that gaining [...]]]></description>
			<content:encoded><![CDATA[<p>I’m seriously thinking I should change my backup strategy. I use Windows Home Server for one thing and one thing only, Backups. Sure the file share stuff is nice, but I already have a Linux server with samba with my file shares. WHS lovers will say I should migrate, but all I see that gaining me a day or so of copying files and no real benefit.</p>
<p>I recently got a new laptop and when adding this into the mix I had to add more storage to my WHS. I did, and after doing so I got this:</p>
<p><a href="http://jrwren.wrenfam.com/blog/wp-content/uploads/2010/01/HomeServerAllBackupsLost.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="HomeServer-AllBackupsLost" border="0" alt="HomeServer-AllBackupsLost" src="http://jrwren.wrenfam.com/blog/wp-content/uploads/2010/01/HomeServerAllBackupsLost_thumb.png" width="504" height="388" /></a> </p>
</p>
<p>What good is a backup system if it loses your backups? Not much good IMO.</p>
<p>Windows 7’s backup is very good now and I think I may benefit from just using it rather than WHS. I’ll duke it out with WHS one last time, but I won’t be recommending it to Mom, Dad or Grandma anytime soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://jrwren.wrenfam.com/blog/2010/01/02/windows-home-server-backup-database/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
