<?xml version="1.0" encoding="iso-8859-1"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
  <title>Curiosity is bliss</title>
  <link rel="alternate" type="text/html" href="http://blog.monstuff.com/" />
  <modified>2012-01-06T23:22:53Z</modified>
  <tagline>Julien Couvreur&apos;s programming blog and more</tagline>
  <id>tag:blog.monstuff.com,2012://2</id>
  <generator url="http://www.movabletype.org/" version="2.65">Movable Type</generator>
  <copyright>Copyright (c) 2012, Julien</copyright>
  <entry>
    <title>I &amp;#9829; Patent Trolls</title>
    <link rel="alternate" type="text/html" href="http://blog.monstuff.com/archives/000372.html" />
    <modified>2012-01-06T23:22:53Z</modified>
    <issued>2012-01-06T15:22:53-08:00</issued>
    <id>tag:blog.monstuff.com,2012://2.372</id>
    <created>2012-01-06T23:22:53Z</created>
    <summary type="text/plain">This may surprise you given all the recent animosity towards patent trolls, in particular in the tech and software fields. What I love about patent trolls is that they reveal the brittleness of the concept of &quot;intellectual property&quot;. The trolls&apos; abuses should make it obvious that any patenting is trolling. I hope this will bring people to realize that IP laws are illegitimate and should be repealed (both copyrights and patents, but I&apos;ll focus on patents for now), and that there can be no right to own an idea or invention....</summary>
    <author>
      <name>Julien</name>
      
      <email>julien.couvreur@gmail.com</email>
    </author>
    <dc:subject>Economics</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.monstuff.com/">
      <![CDATA[<p><p>This may surprise you given all the recent animosity towards patent trolls, in particular in the tech and software fields. What I love about patent trolls is that they reveal the brittleness of the concept of "intellectual property". The trolls' abuses should make it obvious that any patenting is trolling. I hope this will bring people to realize that IP laws are illegitimate and should be repealed (both copyrights and patents, but I'll focus on patents for now), and that there can be no right to own an idea or invention.</p></p>]]>
      <![CDATA[<p><p>What is a <a href="http://en.wikipedia.org/wiki/Patent_troll">patent troll</a>?&nbsp;The most common usage relates to compamies that hold and enforce patent portfolios for inventions they are not actively manufacturing. But it is also starting to be used more generally, when the patent is being used against competition, even when the invention is being developped (the patent war in the mobile technology, for instance), or when the patent covers a trivial or common idea.</p><br />
<p>The broader interpretation should strike you as extremely subjective. After all, the purpose of a patent is to grant its holder monopoly control over the invention. The holder may choose to license it to others, or not. If it is the holder's property, why can't they enforce their ownership unconditionally and universally? When is it "unduly aggressive or opportunistic"?</p><br />
<p>But even considering the narrower definition, it is difficult to see what exactly the troll is doing wrong. If ideas and inventions were truly property, it shouldn't matter how the owner is using it. Is stealing a bicycle from the store less of a crime simply because the bicycle is apparently idle? Is the store owner a troll for holding the bicycle and demanding payment from those that want to use his bicycle (even if he's not actively riding it)?</p><br />
<p>It shouldn't even matter whether the holder actively pursues infringers. If stealing is wrong, the public at large would treat the infringers as criminals even if the patent owner didn't notice the theft or isn't pursing the criminal. Think of how you would react when witnessing a thief stealing a car (even if there are no cops chasing him). If patents were legitimate property, maybe the patent office or third parties should be allowed to pursue any infringer, regardless of the choice of the patent holder?</p><br />
<p>One thing is clear: IP laws are full of subjectivity (what is a distinct or novel invention? when does inspiration become copying?), arbitrariness (if you really own that idea, how come you only get to own it for 15 or 25 years? why are patents allowed in some fields but not others?) and manifest contradictions (simultaneously aiming for stricter enforcement and less enforcement/trolling).</p><br />
<p>As explained by Stephen Kinsella in <a href="http://mises.org/books/against.pdf">Against Intellectual Property</a>, the key to unraveling the mess is realizing that intellectual property cannot really be property as it is incompatible with actual property. The summarized reasoning is that ideas, unlike bicycles, are not rivalrous (my using your idea isn't taking it away from you, as you still have it) and that enforcing patent laws necessarily involves violating property rights (why can't I use my body, my brain and my property, materials and tools, to build a any mouse trap, including one similar to yours?).</p><br />
<p>Blind to those moral and philosophical considerations, some still pursue the illusion of a "better patent system" supposing that patents bring some greater social good, namely that they encourage innovation and increases.</p><br />
<p>But such empirical claims beg empirical validation.&nbsp;As detailed by Boldrin and Levine in <a href="http://www.dklevine.com/general/intellectual/against.htm">Against Intellectual Monopoly</a>, it turns out that IP laws do not promote innovation on net. The incentives brought about by the IP protection are outweighed by the disincentives of the patent minefield (often controlled by large incumbents and so-called patent trolls), the wasteful workarounds to step around the mines (invent substitutes instead of taking advantage of prior inventions), the reduced pressure to keep inventing to stay ahead, and the costly litigation (diverting massive resources away from valuable R&amp;D).</p></p>]]>
    </content>
  </entry>
  <entry>
    <title>Head Mounted Displays</title>
    <link rel="alternate" type="text/html" href="http://blog.monstuff.com/archives/000371.html" />
    <modified>2011-11-21T19:52:30Z</modified>
    <issued>2011-11-21T11:52:30-08:00</issued>
    <id>tag:blog.monstuff.com,2011://2.371</id>
    <created>2011-11-21T19:52:30Z</created>
    <summary type="text/plain"> I&apos;ve been watching the HMD scene for many years now, yearning for decent devices. We may have now reached a tipping point, with multiple hi-def products announced or released in the last couple months. The first of the bunch was the Sony HMZ-T1. It was followed by the SiliconMicroDisplay ST1080 (no sales price announced yet), and Epson&apos;s Moverio BT-100. I&apos;m also excited by Apple&apos;s rumored interest in that field. Some features that differentiate those products: Resolution and image quality,Mobility and battery life,Price,Opacity/transparency,3D. One feature that is not yet offered is head tracking. Based on my experience with the HMZ-T1,...</summary>
    <author>
      <name>Julien</name>
      
      <email>julien.couvreur@gmail.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.monstuff.com/">
      <![CDATA[<p><img src="http://blog.monstuff.com/archives/archives/images/6105092099_1353255637_m.jpg" style="float: right; padding: 10px 0px 0px 20px; width:240; height:180; border: none"  alt="breeze in dandelion" /> I've been watching the HMD scene for many years now, yearning for decent devices. We may have now reached a tipping point, with multiple hi-def products announced or released in the last couple months.</p>

<p>The first of the bunch was the <a href="http://www.sony.net/SonyInfo/News/Press/201108/11-097E/index.html">Sony HMZ-T1</a>. It was followed by the <a href="http://www.siliconmicrodisplay.com/">SiliconMicroDisplay ST1080</a> (no sales price announced yet), and Epson's <a href="www.epson.com/cgi-bin/Store/Landing/Moverio.jsp">Moverio BT-100</a>. <br />
I'm also excited by Apple's <a href="http://www.examiner.com/gadgets-in-los-angeles/apple-to-challenge-sony-the-personal-3d-and-hd-viewer-headset-game">rumored interest</a> in that field. </p>

<p>Some features that differentiate those products:<br />
<ul><li>Resolution and image quality,</li><li>Mobility and battery life,</li><li>Price,</li><li>Opacity/transparency,</li><li>3D.</li></ul></p>

<p>One feature that is not yet offered is head tracking. Based on my experience with the HMZ-T1, this will improve the experience in gaming (I tried the latest Modern Warfare and Gears of War). Some <a href="http://dvice.com/archives/2011/11/sonys-3d-goggle.php">hackers are experimenting</a> with that already.</p>

<p>That said, I'm quite impressed with the image quality of Sony's HMZ-T1, both in 2D and 3D.  <br />
I only tried 3D content in the store because I couldn't get the 3D to work on my Xbox with Gears of War. The game seems to deliver 3D by splitting the display into left vs. right side, but the display expects two HDMI channels. <br />
The 5.1 surround sound could be improved. The directional effect is nowhere as good as my Tritton AX360.<br />
Finally, the weight and comfort remain an issue for prolonged usage.</p>

<p>Update: 3D actually works with Gears of War 3 on the Xbox. The HMZ-T1 offers different settings, such as side-by-side, and top-and-bottom. The resolution is effectively halved which is unfortunate, but the 3D is pretty effective nonetheless.</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>Better async programming in .Net</title>
    <link rel="alternate" type="text/html" href="http://blog.monstuff.com/archives/000370.html" />
    <modified>2010-10-29T06:18:12Z</modified>
    <issued>2010-10-28T23:18:12-08:00</issued>
    <id>tag:blog.monstuff.com,2010://2.370</id>
    <created>2010-10-29T06:18:12Z</created>
    <summary type="text/plain"><![CDATA[Better support for asynchronous programming was announced for C# 5.0 and a preview version has been released. It adds two new keywords, async and await, which enable the following programming model: async Task&lt;SomeResult> MyMethodAsync() { &nbsp; SomeResult result = ... &nbsp; try { &nbsp; &nbsp; foreach (...) { &nbsp; &nbsp; &nbsp; var data = await SomeAsyncMethod(); &nbsp; &nbsp; &nbsp; result.Add(data); &nbsp; &nbsp; } &nbsp; } catch (...) &nbsp; return result; } Task&lt;Data> SomeAsyncMethod() {...} This seems a very elegant solution, as the code reflects the desired execution sequence without unnatural callback methods. In particular, it greatly simplifies exception handling and...]]></summary>
    <author>
      <name>Julien</name>
      
      <email>julien.couvreur@gmail.com</email>
    </author>
    <dc:subject>Programming tricks</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blog.monstuff.com/">
      <![CDATA[<p>Better support for asynchronous programming was <a href="http://blogs.msdn.com/b/pfxteam/archive/2010/10/27/10081944.aspx">announced for C# 5.0</a> and a preview version has been released.<br />
It adds two new keywords, async and await, which enable the following programming model:</p>

<div class="code">
async Task&lt;SomeResult> MyMethodAsync() {

<p>&nbsp; SomeResult result = ...</p>

<p>&nbsp; try {</p>

<p>&nbsp; &nbsp; foreach (...) {</p>

<p>&nbsp; &nbsp; &nbsp;   var data = await SomeAsyncMethod();</p>

<p>&nbsp; &nbsp; &nbsp;   result.Add(data);</p>

<p>&nbsp; &nbsp; }</p>

<p></p>

<p>&nbsp; } catch (...)</p>

<p>&nbsp; return result;</p>

<p>}</p>

<p>Task&lt;Data> SomeAsyncMethod() {...}<br />
</div></p>

<p>This seems a very elegant solution, as the code reflects the desired execution sequence without unnatural callback methods. In particular, it greatly simplifies exception handling and other call structures (loops and such). Also, it builds upon the Task class introduced in NetFx and later officially included into C# 4.0.</p>

<p>Under the covers, the method above get compiled with tricks similar to iterators: capturing the local variables of the method into an object to maintain state when the method yields control away, and using a state machine to model the structure of the method and it's various interruption/continuation points. </p>

<p>When the first "await" keyword is reached, the method returns a Task object, holding the promise of a future result. <br />
In the case of iterators, the method would resume after the "yield" statement the next time the GetNext() method would be called again. <br />
But in the case of async methods, the code after "await" executes as a callback of the inner asynchronous operation (SomeAsyncMethod in the example above). Subsequent await statements are also translated into callbacks.<br />
When a "return" statement is reached, as the end of this chain of callbacks, the Task which was handed to the caller completes and finally delivers its result.</p>

<p></p>

<p>As it stands, you can only use "await" in methods marked with "async". But I don't understand why the "async" keyword is needed, as it seems that the compiler could recognize such methods by the presence of the "await" keyword in the body of the method. (Update: here's <a href="http://blogs.msdn.com/b/ericlippert/archive/2010/11/11/whither-async.aspx">why</a>)</p>

<p><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="512" height="288"><br />
<param name="source" value="http://channel9.msdn.com/scripts/VideoPlayer.xap?v=3.1" /><br />
<param name="initParams" value="deferredLoad=true,duration=0,m=http://ecn.channel9.msdn.com/o9/ch9/f903/b4d164fc-0901-4f2f-8deb-9e150113f903/MadsTorgersenInsideAsync_ch9.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://ecn.channel9.msdn.com/o9/ch9/f903/b4d164fc-0901-4f2f-8deb-9e150113f903/MadsTorgersenInsideAsync_512_ch9.jpg, postid=0" /><br />
<param name="background" value="#00FFFFFF" /><br />
<a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"><br />
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/><br />
</a><br />
</object></p>

<p>See the <a href="http://msdn.com/vstudio/async">Async page on MSDN</a> for more videos and a whitepaper on this feature.</p>]]>
      
    </content>
  </entry>

</feed>
