<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;A0YMSHYzfyp7ImA9WhRUEEo.&quot;"><id>tag:blogger.com,1999:blog-5127857</id><updated>2012-01-20T18:06:29.887+01:00</updated><category term="test coverage" /><category term="xmleditor" /><category term="drittunge" /><category term="documentation" /><category term="funny" /><category term="web" /><category term="development" /><category term="skole" /><category term="maven" /><category term="methodology" /><category term="open source" /><category term="presentation" /><category term="exceptions" /><category term="iphone" /><category term="tls" /><category term="git" /><category term="tips" /><category term="xpath" /><category term="hjemme" /><category term="c++0x" /><category term="video" /><category term="c++" /><category term="rant" /><category term="broken" /><category term="humor" /><category term="xml" /><category term="delingskultur" /><category term="kitten" /><category term="java" /><category term="talk" /><category term="quantum physics" /><category term="security" /><category term="tracking" /><category term="programvare" /><category term="flytte" /><category term="trademarks" /><category term="philosophy" /><category term="bash" /><category term="beta" /><category term="build" /><category term="opinion" /><category term="software" /><category term="drm" /><category term="ie6" /><category term="mac" /><category term="marketing" /><category term="design" /><category term="pirate" /><category term="testing" /><category term="release" /><category term="google" /><category term="svn" /><category term="smidig" /><category term="javascript" /><category term="krevsvar" /><category term="apple" /><category term="plantuml" /><category term="hacking" /><category term="creative commons" /><category term="concurrent" /><category term="ytelse" /><category term="best practice" /><category term="enterprise" /><category term="morsom" /><category term="skilt" /><category term="aspects" /><category term="uml" /><category term="tdd" /><category term="hype" /><category term="hardware" /><category term="database" /><category term="linux" /><category term="meme" /><category term="radio" /><category term="ebooks" /><category term="musikk" /><category term="english" /><category term="tool" /><category term="hagearbeid" /><category term="programming" /><category term="jdk6" /><category term="how-to" /><category term="prosjekter" /><category term="smidig2008" /><category term="null" /><category term="versioning" /><category term="copyright" /><category term="feature" /><category term="twitter" /><category term="pirat" /><category term="history" /><category term="checklist" /><category term="architect" /><category term="server" /><category term="drammen" /><category term="password" /><category term="jdk7" /><title>Asgeir S. Nilsen tenker litt</title><subtitle type="html">Ymse tanker om dette og hint.  Mye om Open Source, noe politikk og annet jeg er opptatt av.

Follow the english label for blog posts in English.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Asgeir S. Nilsen</name><uri>http://www.blogger.com/profile/09990435798930983334</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_6m61GL21m8M/SKkyG5kUYWI/AAAAAAAAAj4/Lv8GAe3Kxjo/S220/540269450_da2f62fbea_b.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>388</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/asgeirn" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="asgeirn" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">asgeirn</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fasgeirn" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/asgeirn" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fasgeirn" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.addtoany.com/?linkname=Asgeir%20S.%20Nilsen%20tenker%20litt&amp;linkurl=http%3A%2F%2Ffeeds.feedburner.com%2Fasgeirn&amp;type=feed" src="http://www.addtoany.com/addfr-b.gif">Add to Any Feed Reader</feedburner:feedFlare><entry gd:etag="W/&quot;Dk4ASXwzeCp7ImA9WhRRFEw.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-4359397089725763512</id><published>2011-10-29T15:56:00.004+02:00</published><updated>2011-11-27T18:29:08.280+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-27T18:29:08.280+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="english" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><category scheme="http://www.blogger.com/atom/ns#" term="apple" /><title>Android Orphans: Visualizing a Sad History of Support</title><content type="html">Michael Degusta tells a sad story in &lt;a href="http://theunderstatement.com/post/11982112928/android-orphans-visualizing-a-sad-history-of-support" style="font-style: italic;"&gt;Android Orphans: Visualizing a Sad History of Support&lt;/a&gt;: &lt;br /&gt;
&lt;blockquote&gt;
I went back and found every Android phone shipped in the United States up through the middle of last year. I then tracked down every update that was released for each device - be it a major OS upgrade or a minor support patch - as well as prices and release &amp;amp; discontinuation dates. I compared these dates &amp;amp; versions to the currently shipping version of Android at the time. The resulting picture isn’t pretty - well, not for Android users.&lt;/blockquote&gt;
My iPhone 3G stopped being updated only a few months ago, and is now 1 major version behind. &amp;nbsp;In fact, iPhones are the only devices I've ever owned that has had regular long term updates, even across major versions, &lt;i&gt;for free&lt;/i&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-4359397089725763512?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=PPVEmz8KvsM:0x4xz_59_AU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=PPVEmz8KvsM:0x4xz_59_AU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=PPVEmz8KvsM:0x4xz_59_AU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=PPVEmz8KvsM:0x4xz_59_AU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=PPVEmz8KvsM:0x4xz_59_AU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=PPVEmz8KvsM:0x4xz_59_AU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=PPVEmz8KvsM:0x4xz_59_AU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=PPVEmz8KvsM:0x4xz_59_AU:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=PPVEmz8KvsM:0x4xz_59_AU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/4359397089725763512?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/4359397089725763512?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2011/10/android-orphans-visualizing-sad-history.html" title="Android Orphans: Visualizing a Sad History of Support" /><author><name>Asgeir Storesund Nilsen</name><uri>https://profiles.google.com/112513257596716781380</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-P80a5xtL60k/AAAAAAAAAAI/AAAAAAAAA8Q/QFHrDHSKjZY/s512-c/photo.jpg" /></author><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;DEIGQ3Y9eCp7ImA9WhRWGU8.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-4840789578336832938</id><published>2011-09-22T11:26:00.002+02:00</published><updated>2012-01-07T09:55:22.860+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-07T09:55:22.860+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><category scheme="http://www.blogger.com/atom/ns#" term="concurrent" /><title>A Lock Free Concurrent Circular Buffer With Multiple Independent Readers</title><content type="html">I wrote about a &lt;a href="http://blog.asgeirnilsen.com/2010/03/lock-free-concurrent-circular-buffer.html"&gt;Lock Free Concurrent Circular Buffer about a year ago&lt;/a&gt;. &amp;nbsp;This has now been updated to support multiple independent readers, so many consumers can get updates to this circular buffer.&lt;br /&gt;
&lt;br /&gt;
It is still lock free, so the readers won't block. &amp;nbsp;If you try to take() on a buffer with no updates a null is returned, and if you drain() a buffer with no updates you get an empty list.&lt;br /&gt;
&lt;br /&gt;
The &lt;a href="https://github.com/asgeirn/circular-buffer"&gt;code is now on GitHub&lt;/a&gt;, so I recommend you give it a spin if you want a (simple) circular buffer. &amp;nbsp;It does detect buffer wraparounds, but will in this case reset the reader to the end of the buffer, losing any intermediate updates. Tune your buffer size accordingly.&lt;br /&gt;
&lt;br /&gt;
Take a look at &lt;a href="https://github.com/asgeirn/circular-buffer/blob/master/src/test/java/com/asgeirnilsen/blog/CircularBufferTest.java"&gt;the unit tests&lt;/a&gt; to get an idea on how to use this buffer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-4840789578336832938?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=NFIWmM0TAVM:MiyE4s6EB08:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=NFIWmM0TAVM:MiyE4s6EB08:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=NFIWmM0TAVM:MiyE4s6EB08:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=NFIWmM0TAVM:MiyE4s6EB08:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=NFIWmM0TAVM:MiyE4s6EB08:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=NFIWmM0TAVM:MiyE4s6EB08:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=NFIWmM0TAVM:MiyE4s6EB08:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=NFIWmM0TAVM:MiyE4s6EB08:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=NFIWmM0TAVM:MiyE4s6EB08:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/4840789578336832938/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2011/09/lock-free-concurrent-circular-buffer.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/4840789578336832938?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/4840789578336832938?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2011/09/lock-free-concurrent-circular-buffer.html" title="A Lock Free Concurrent Circular Buffer With Multiple Independent Readers" /><author><name>Asgeir Storesund Nilsen</name><uri>https://profiles.google.com/112513257596716781380</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-P80a5xtL60k/AAAAAAAAAAI/AAAAAAAAA8Q/QFHrDHSKjZY/s512-c/photo.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;CUMGR3g9fyp7ImA9WhdWFUw.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-1369566778042143203</id><published>2011-09-08T22:23:00.001+02:00</published><updated>2011-09-08T22:23:46.667+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-08T22:23:46.667+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="english" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><title>Blogger has an official app for iPhone</title><content type="html">This blog post serves as proof that it works. &lt;br /&gt;
&lt;br /&gt;
Seems to do okay, but does not have rich text. &lt;br /&gt;
&lt;br /&gt;
Also the labels do not auto complete. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-1369566778042143203?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=-rfW4SJxCRk:OzjiKA5EqwM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=-rfW4SJxCRk:OzjiKA5EqwM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=-rfW4SJxCRk:OzjiKA5EqwM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=-rfW4SJxCRk:OzjiKA5EqwM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=-rfW4SJxCRk:OzjiKA5EqwM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=-rfW4SJxCRk:OzjiKA5EqwM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=-rfW4SJxCRk:OzjiKA5EqwM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=-rfW4SJxCRk:OzjiKA5EqwM:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=-rfW4SJxCRk:OzjiKA5EqwM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/1369566778042143203/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2011/09/blogger-has-official-app-for-iphone.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/1369566778042143203?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/1369566778042143203?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2011/09/blogger-has-official-app-for-iphone.html" title="Blogger has an official app for iPhone" /><author><name>Asgeir Storesund Nilsen</name><uri>https://profiles.google.com/112513257596716781380</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-P80a5xtL60k/AAAAAAAAAAI/AAAAAAAAA8Q/QFHrDHSKjZY/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Drammen Drammen</georss:featurename><georss:point>59.718528 10.258765</georss:point><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;A0UAR305fip7ImA9WhdWFUs.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-8937931549611410550</id><published>2011-09-06T21:08:00.000+02:00</published><updated>2011-09-09T13:54:06.326+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-09T13:54:06.326+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><title>So it finally happened...</title><content type="html">From "&lt;a href="http://blog.agilebits.com/2011/09/who-do-you-trust-to-tell-you-who-to-trust/"&gt;Who do you trust to tell you who to trust?&lt;/a&gt;":&lt;br /&gt;
&lt;blockquote&gt;The big security news of the past few days is the story of the &lt;a href="http://www.metafilter.com/106990/DigiNotar-SSL-certificate-compromise"&gt;compromise of the DigiNotar Certificate Authority&lt;/a&gt; and the subsequent issuing of fraudulent SSL certificates, leading to actual Man in the Middle attacks against Gmail users in Iran.&lt;/blockquote&gt;and:&lt;br /&gt;
&lt;blockquote&gt;When the whole trust structure for SSL was devised, there were many people who worried that it gave too much power to certification authorities. In this instance we had one that suffered a security breach, but imagine if there were a corrupt one. With hundreds of trusted certification authorities, each with the power to issue certificates for any domain, the scope for abuse is substantial. I was one of those worriers.&lt;/blockquote&gt;&lt;blockquote&gt;It is easy to say that I don’t like the system, it is much much harder to present an alternative that works better and doesn’t burden users with the task of performing their own audits of certificates or authorities. There are a number of proposals out there, and discussion of them has certainly kicked off again over the past few days. My post here has already been long enough, so I will redirect readers to &lt;a href="https://grepular.com/Solving_the_SSL_CA_Debacle_Using_Multi-Signed_Certs"&gt;a post by Mike Caldwell&lt;/a&gt; who proposes an idea I haven’t seen before (as well as linking to other proposals).&lt;/blockquote&gt;Well, &lt;a href="/2009/06/tls-broken-trust-model.html"&gt;I told you so&lt;/a&gt;. Basically the use of TLS to ensure trusted domain names is not trustworthy. In my opinion this problem should be solved by the Domain Naming System, not by Transport Layer Security.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-8937931549611410550?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=Pm-ud94MPVI:zPcItAcFyfQ:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=Pm-ud94MPVI:zPcItAcFyfQ:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=Pm-ud94MPVI:zPcItAcFyfQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=Pm-ud94MPVI:zPcItAcFyfQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=Pm-ud94MPVI:zPcItAcFyfQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=Pm-ud94MPVI:zPcItAcFyfQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=Pm-ud94MPVI:zPcItAcFyfQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=Pm-ud94MPVI:zPcItAcFyfQ:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=Pm-ud94MPVI:zPcItAcFyfQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/8937931549611410550/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2011/09/so-it-finally-happened.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/8937931549611410550?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/8937931549611410550?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2011/09/so-it-finally-happened.html" title="So it finally happened..." /><author><name>Asgeir Storesund Nilsen</name><uri>https://profiles.google.com/112513257596716781380</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-P80a5xtL60k/AAAAAAAAAAI/AAAAAAAAA8Q/QFHrDHSKjZY/s512-c/photo.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;D0EEQn85eSp7ImA9WhRRFEw.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-8277222292852523646</id><published>2010-09-17T10:23:00.002+02:00</published><updated>2011-11-27T18:40:03.121+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-27T18:40:03.121+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tips" /><category scheme="http://www.blogger.com/atom/ns#" term="hardware" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><category scheme="http://www.blogger.com/atom/ns#" term="hacking" /><title>How to fix a NETGEAR WN802Tv2 after firmware upgrade</title><content type="html">For me, updating to the latest 3.1.3 firmware for the NETGEAR WN802Tv2 access point had an unfortunate side effect: the access point refused to accept &lt;em&gt;any&lt;/em&gt; password for logging in…&lt;br /&gt;
Resetting to factory defaults did not work.&amp;nbsp; There are a &lt;a href="http://forum1.netgear.com/showthread.php?t=52170" target="_blank"&gt;few&lt;/a&gt; &lt;a href="http://forum1.netgear.com/showthread.php?t=54691" target="_blank"&gt;threads&lt;/a&gt; on the NETGEAR forums about this as well, but the only resolution seemed to be to send the unit to NETGEAR.&lt;br /&gt;
However – after two days of hacking I have found a do-it-yourself solution:&lt;br /&gt;
&lt;strong&gt;1. Make sure you can connect to the web interface safely&lt;/strong&gt;&lt;br /&gt;
This means resetting to factory defaults, use a cable directly between your computer and the access point, and set a static IP address for your computer in the 192.168.0.x range.&amp;nbsp; NETGEAR supports recommends using the address 192.168.0.210 for reasons that I don’t know..&lt;br /&gt;
&lt;strong&gt;2. Go to the address &lt;a href="http://192.168.0.233/recreate.php"&gt;http://192.168.0.233/recreate.php&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
The real purpose of this file is not known, but it has an interesting side effect:&amp;nbsp; When you go to the access point home page afterwards, you get access to a partly functional interface.&amp;nbsp; A lot of things don’t work, but one important piece did work for me: the firmware upgrade&lt;br /&gt;
&lt;strong&gt;3. Upload the 3.1.1 firmware image&lt;/strong&gt;&lt;br /&gt;
If you don’t have the firmware image here you can get it from NETGEAR support at &lt;a href="http://kb.netgear.com/app/answers/detail/a_id/12197"&gt;http://kb.netgear.com/app/answers/detail/a_id/12197&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;4. Restore config&lt;/strong&gt;&lt;br /&gt;
If you have a backed up config file, you can upload it.&amp;nbsp; Otherwise, just configure settings as normal. &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-8277222292852523646?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=WjpZB7ohFoI:W-H6-Hmgkxw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=WjpZB7ohFoI:W-H6-Hmgkxw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=WjpZB7ohFoI:W-H6-Hmgkxw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=WjpZB7ohFoI:W-H6-Hmgkxw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=WjpZB7ohFoI:W-H6-Hmgkxw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=WjpZB7ohFoI:W-H6-Hmgkxw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=WjpZB7ohFoI:W-H6-Hmgkxw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=WjpZB7ohFoI:W-H6-Hmgkxw:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=WjpZB7ohFoI:W-H6-Hmgkxw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/8277222292852523646/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2010/09/how-to-fix-netgear-wn802tv2-after.html#comment-form" title="1 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/8277222292852523646?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/8277222292852523646?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2010/09/how-to-fix-netgear-wn802tv2-after.html" title="How to fix a NETGEAR WN802Tv2 after firmware upgrade" /><author><name>Asgeir Storesund Nilsen</name><uri>https://profiles.google.com/112513257596716781380</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-P80a5xtL60k/AAAAAAAAAAI/AAAAAAAAA8Q/QFHrDHSKjZY/s512-c/photo.jpg" /></author><thr:total>1</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry><title type="text">Links for 2010-09-20 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://del.icio.us/asgeirn#2010-09-20" /><updated>2010-09-21T00:00:00-07:00</updated><id>http://del.icio.us/asgeirn#2010-09-20</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://zsync.moria.org.uk/"&gt;zsync&lt;/a&gt;&lt;br/&gt;
zsync is a file transfer program. It allows you to download a file from a remote server, where you have a copy of an older version of the file on your computer already. zsync downloads only the new parts of the file. It uses the same algorithm as rsync. However, where rsync is designed for synchronising data from one computer to another within an organisation, zsync is designed for file distribution, with one file on a server to be distributed to thousands of downloaders. zsync requires no special server software — just a web server to host the files — and imposes no extra load on the server, making it ideal for large scale file distribution.&lt;/li&gt;
&lt;/ul&gt;</content></entry><entry gd:etag="W/&quot;C0IAQHw5eyp7ImA9Wx5XFEk.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-4035366673607450325</id><published>2010-09-13T13:46:00.003+02:00</published><updated>2010-09-14T07:19:01.223+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-14T07:19:01.223+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="musikk" /><title>Musikerne vinner, plateselskapene taper</title><content type="html">Dommedagsprofetien ser ut til å ha et relativt begrenset nedslagsfelt.  Som Espen refererer i &lt;a style="font-style: italic;" href="http://www.espen.com/norskblogg/archives/2010/09/musikerne_vinner_plateselskapene_taper.html"&gt;Tversover: Musikerne vinner, plateselskapene taper&lt;/a&gt; ser det ut til at artistene har kommet godt ut av digitaliseringen økonomisk sett: &lt;blockquote&gt;Etter 10 år med digitalisering av musikk har den gjennomsnittlige musiker hatt en inntektsvekst på 66%. De eneste som taper på digital musikk, er de tradisjonelle plateselskapene. Det viser en masterstudie utført av Siviløkonomstudentene Richard Bjerkøe og Anders Sørbo ved Handelshøyskolen BI.&lt;/blockquote&gt;

Det gjenstår å se hvordan inntektsmodellen til digitalt salg og streaming påvirker (påvirkes av) dette.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-4035366673607450325?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=bdQesXJdnUg:FGRKAGhh4pg:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=bdQesXJdnUg:FGRKAGhh4pg:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=bdQesXJdnUg:FGRKAGhh4pg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=bdQesXJdnUg:FGRKAGhh4pg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=bdQesXJdnUg:FGRKAGhh4pg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=bdQesXJdnUg:FGRKAGhh4pg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=bdQesXJdnUg:FGRKAGhh4pg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=bdQesXJdnUg:FGRKAGhh4pg:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=bdQesXJdnUg:FGRKAGhh4pg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/4035366673607450325/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2010/09/musikerne-vinner-plateselskapene-taper.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/4035366673607450325?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/4035366673607450325?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2010/09/musikerne-vinner-plateselskapene-taper.html" title="Musikerne vinner, plateselskapene taper" /><author><name>Asgeir Storesund Nilsen</name><uri>https://profiles.google.com/112513257596716781380</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-P80a5xtL60k/AAAAAAAAAAI/AAAAAAAAA8Q/QFHrDHSKjZY/s512-c/photo.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;DUABRHY4fip7ImA9Wx5XE0o.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-3433244242103311294</id><published>2010-09-13T13:34:00.002+02:00</published><updated>2010-09-13T13:35:55.836+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-13T13:35:55.836+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="password" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><title>Password Reuse</title><content type="html">This is absolutely true.  In most occasions it doesn't really matter how strong your password is, only that it's unique.  My recommendation is that you use &lt;a href="http://supergenpass.com/"&gt;SuperGenPass&lt;/a&gt; to generate site specific passwords for you.

&lt;blockquote&gt;&lt;a href="http://xkcd.com/792/"&gt;&lt;img src="http://imgs.xkcd.com/comics/password_reuse.png" title="It&amp;#39;ll be hilarious the first few times this happens." alt="It&amp;#39;ll be hilarious the first few times this happens."&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-3433244242103311294?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=nYWQcoXPHng:qKomavA0jCk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=nYWQcoXPHng:qKomavA0jCk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=nYWQcoXPHng:qKomavA0jCk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=nYWQcoXPHng:qKomavA0jCk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=nYWQcoXPHng:qKomavA0jCk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=nYWQcoXPHng:qKomavA0jCk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=nYWQcoXPHng:qKomavA0jCk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=nYWQcoXPHng:qKomavA0jCk:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=nYWQcoXPHng:qKomavA0jCk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/3433244242103311294/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2010/09/password-reuse.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/3433244242103311294?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/3433244242103311294?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2010/09/password-reuse.html" title="Password Reuse" /><author><name>Asgeir Storesund Nilsen</name><uri>https://profiles.google.com/112513257596716781380</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-P80a5xtL60k/AAAAAAAAAAI/AAAAAAAAA8Q/QFHrDHSKjZY/s512-c/photo.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;CUEGRnczeyp7ImA9WhdWFUw.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-3773703819556872963</id><published>2010-08-27T15:58:00.002+02:00</published><updated>2011-09-08T22:27:07.983+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-08T22:27:07.983+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><title>Why Java needs Oracle</title><content type="html">&lt;a href="http://chriswongdevblog.blogspot.com/2010/08/why-java-needs-oracle.html"&gt;Chris Wong's Development Blog: Why Java needs Oracle&lt;/a&gt;: &lt;blockquote&gt;For better or for worse, Oracle is now Java's champion and protector. The legal landscape is too dangerous out there for a major platform to be without one.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-3773703819556872963?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=dRS9fm8jIm8:M8rq84PcqE0:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=dRS9fm8jIm8:M8rq84PcqE0:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=dRS9fm8jIm8:M8rq84PcqE0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=dRS9fm8jIm8:M8rq84PcqE0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=dRS9fm8jIm8:M8rq84PcqE0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=dRS9fm8jIm8:M8rq84PcqE0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=dRS9fm8jIm8:M8rq84PcqE0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=dRS9fm8jIm8:M8rq84PcqE0:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=dRS9fm8jIm8:M8rq84PcqE0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/3773703819556872963/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2010/08/chris-wongs-development-blog-why-java.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/3773703819556872963?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/3773703819556872963?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2010/08/chris-wongs-development-blog-why-java.html" title="Why Java needs Oracle" /><author><name>Asgeir Storesund Nilsen</name><uri>https://profiles.google.com/112513257596716781380</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-P80a5xtL60k/AAAAAAAAAAI/AAAAAAAAA8Q/QFHrDHSKjZY/s512-c/photo.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry><title type="text">Links for 2010-09-11 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://del.icio.us/asgeirn#2010-09-11" /><updated>2010-09-12T00:00:00-07:00</updated><id>http://del.icio.us/asgeirn#2010-09-11</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://gearman.org/"&gt;Gearman&lt;/a&gt;&lt;br/&gt;
generic application framework to farm out work to other machines or processes that are better suited to do the work. It allows you to do work in parallel, to load balance processing, and to call functions between languages. It can be used in a variety of applications, from high-availability web sites to the transport of database replication events. In other words, it is the nervous system for how distributed processing communicates&lt;/li&gt;
&lt;/ul&gt;</content></entry><entry><title type="text">Links for 2010-09-05 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://del.icio.us/asgeirn#2010-09-05" /><updated>2010-09-06T00:00:00-07:00</updated><id>http://del.icio.us/asgeirn#2010-09-05</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://ooo4kids.org/index.php/Main_Page"&gt;OOo4Kids&lt;/a&gt;&lt;br/&gt;
OpenOffice optimized for kids aged 7 to 12&lt;/li&gt;
&lt;/ul&gt;</content></entry><entry><title type="text">Links for 2010-09-04 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://del.icio.us/asgeirn#2010-09-04" /><updated>2010-09-05T00:00:00-07:00</updated><id>http://del.icio.us/asgeirn#2010-09-04</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.clipperz.com/open_source/javascript_crypto_library"&gt;Javascript Crypto Library&lt;/a&gt;&lt;br/&gt;
Contains an SRP implementation.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://programmaticallyspeaking.blogspot.com/2010/09/mim-build-system-you-always-wanted.html"&gt;Mim: the build system you always wanted&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content></entry><entry><title type="text">Links for 2010-08-28 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://del.icio.us/asgeirn#2010-08-28" /><updated>2010-08-29T00:00:00-07:00</updated><id>http://del.icio.us/asgeirn#2010-08-28</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://vanillajava.blogspot.com/2010/08/two-uses-for-enum-most-people-forget.html"&gt;Two uses for enum most people forget.&lt;/a&gt;&lt;br/&gt;
Utilize the static instances of enums in cases where not allowing any instances or having only one (singleton) instance is useful.&lt;/li&gt;
&lt;/ul&gt;</content></entry><entry><title type="text">Links for 2010-08-20 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://del.icio.us/asgeirn#2010-08-20" /><updated>2010-08-21T00:00:00-07:00</updated><id>http://del.icio.us/asgeirn#2010-08-20</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.greenfoot.org/about/whatis.html"&gt;greenfoot.org&lt;/a&gt;&lt;br/&gt;
Consider greenfoot as a combination between a framework for creating two-dimensional grid assignments in Java and an integrated development environment (class browser, editor, compiler, execution, etc.) suitable for novice programmers. While greenfoot supports the full Java language, it is especially useful for programming exercises that have a visual element. In greenfoot object visualisation and object interaction are the key elements&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bluej.org/about/what.html"&gt;BlueJ - Teaching Java&lt;/a&gt;&lt;br/&gt;
The aim of BlueJ is to provide an easy-to-use teaching environment for the Java language that facilitates the teaching of Java to first year students. Special emphasis has been placed on visualisation and interaction techniques to create a highly interactive environment that encourages experimentation and exploration.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.publicobject.com/2010/08/handling-byte-order-mark-in-java.html"&gt;Handling a byte order mark in Java&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content></entry><entry gd:etag="W/&quot;CkIGQ3Y8cCp7ImA9Wx5RE0k.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-3622421018410026428</id><published>2010-08-20T23:42:00.001+02:00</published><updated>2010-08-20T23:42:02.878+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-20T23:42:02.878+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="release" /><category scheme="http://www.blogger.com/atom/ns#" term="beta" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><category scheme="http://www.blogger.com/atom/ns#" term="apple" /><title>Bugs in Apple’s App Release Process</title><content type="html">&lt;p&gt;As an active iPhone apps user, I’ve quite often experienced an app having two, or even three, releases in rapid succession. More often than not to fix quite simple bugs or usability issues.&lt;/p&gt; &lt;p&gt;I’ve recently come to think that this is because of the App Store’s lack of &lt;a href="http://en.wikipedia.org/wiki/Software_release_life_cycle#Beta" target="_blank"&gt;beta releases&lt;/a&gt; – a feature-complete version released to a limited number of people, often an opt-in choice by users more eager to test new features.&lt;/p&gt; &lt;p&gt;These early releases have been paramount to web 2.0 services and Open Source software. Quoting Linus Torvalds, “&lt;em&gt;&lt;a href="http://en.wikipedia.org/wiki/Linus'_Law" target="_blank"&gt;given enough eyeballs, all bugs are shallow&lt;/a&gt;.&lt;/em&gt;”&amp;nbsp; &lt;/p&gt; &lt;p&gt;The rigorous release process of Apple’s App Store prohibits this due to the all-in characteristic of a software release: When a new version is released it’s immediately available to everybody, and all previous versions disappear.&lt;/p&gt; &lt;p&gt;The consequence of this is that app vendors have two options: &lt;/p&gt; &lt;ol&gt; &lt;li&gt;Extensive testing of new releases, inhibiting a quick release cycle and being quite expensive, or  &lt;li&gt;Releasing untested software to the general public and using your entire customer base as testers, regardless of their willingness to use incomplete software.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;People opting in to beta releases have a higher threshold for bugs or usability issues, and provide competent feedback on shortcomings. &lt;/p&gt; &lt;p&gt;This is a quality benefit for everybody, including Apple’s app reviewers. The software they assess would in general have higher quality, and the assessment could be tiered based on whether it’s a general release or beta release.&lt;/p&gt; &lt;p&gt;What is your experience? How does the applications you develop or use deal with pre-release testing?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-3622421018410026428?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=sm92567lXKA:WkP89e35txE:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=sm92567lXKA:WkP89e35txE:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=sm92567lXKA:WkP89e35txE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=sm92567lXKA:WkP89e35txE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=sm92567lXKA:WkP89e35txE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=sm92567lXKA:WkP89e35txE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=sm92567lXKA:WkP89e35txE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=sm92567lXKA:WkP89e35txE:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=sm92567lXKA:WkP89e35txE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/3622421018410026428/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2010/08/bugs-in-apples-app-release-process.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/3622421018410026428?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/3622421018410026428?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2010/08/bugs-in-apples-app-release-process.html" title="Bugs in Apple’s App Release Process" /><author><name>Asgeir Storesund Nilsen</name><uri>https://profiles.google.com/112513257596716781380</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-P80a5xtL60k/AAAAAAAAAAI/AAAAAAAAA8Q/QFHrDHSKjZY/s512-c/photo.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry><title type="text">Links for 2010-08-07 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://del.icio.us/asgeirn#2010-08-07" /><updated>2010-08-08T00:00:00-07:00</updated><id>http://del.icio.us/asgeirn#2010-08-07</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://kohsuke.org/2010/08/07/potd-bridge-method-injector/"&gt;POTD: bridge method injector&lt;/a&gt;&lt;br/&gt;
Evolve your classes without breaking compatibility&lt;/li&gt;
&lt;/ul&gt;</content></entry><entry gd:etag="W/&quot;A0QGRHw5eip7ImA9Wx5TFkQ.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-833972851958478527</id><published>2010-08-01T23:44:00.001+02:00</published><updated>2010-08-01T23:48:45.222+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-01T23:48:45.222+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="radio" /><title>Digitalradio i Norge: DAB må feile</title><content type="html">&lt;p&gt;Som du kanskje har fått med deg, pågår det en liten radiorevolusjon i Norge for tiden. På samme måte som TV-distribusjon ønskes det å digitalisere radiodistribusjon. Dette må få lov til å feile, av flere grunner:&lt;/p&gt; &lt;h3&gt;For mange radiomottakere det er umulig å oppgradere&lt;/h3&gt; &lt;p&gt;FM-mottakere er bygget inn i alt mulig: biler, telefoner, dusjkabinetter (??), hørselvern, lommeradioer, hjemmestereo, ghettoblastere og annet. For mange av disse er oppgradering umulig, og å erstatte produktet med et som er DAB-kapabelt meningsløst. &lt;/p&gt; &lt;p&gt;Det er totalt mellom 12 og 15 &lt;em&gt;millioner&lt;/em&gt; FM-mottakere i Norge, kun 1,7% av disse kan motta DAB-signaler. Det selges fortsatt 700.000 FM-radioer hvert år. &lt;/p&gt; &lt;h3&gt;Teknologisk sett er DAB feil svar&lt;/h3&gt; &lt;p&gt;DAB bruker en digitaliseringsteknikk som er utdatert, og krever stor plass i eteren. Mottakere er også strømhungrige og lite utbredt på verdensbasis.&lt;/p&gt; &lt;p&gt;DAB påstås også å fjerne støy, men for mange oppleves det ikke sånn. Jeg har en DAB-mottaker hjemme som er langt mer følsom for antenneproblemer enn noen FM-radio jeg kjenner til.&lt;/p&gt; &lt;h3&gt;Vi har allerede digitalradio&lt;/h3&gt; &lt;p&gt;Sammen med det digitale bakkenettet har vi allerede fått digital distribusjon av radiokanaler. Er det virkelig verdifullt å sette opp parallell distribusjon?&lt;/p&gt; &lt;h3&gt;Internett er et fullgodt alternativ&lt;/h3&gt; &lt;p&gt;For samme pris som en DAB-radio kan man kjøpe en internett-radio. De fleste har internett hjemme allerede.&amp;nbsp; Denne radioen gir tilgang til langt flere kanaler, og drar nytte av et distribusjonsnett som allerede eksisterer.&lt;/p&gt; &lt;p&gt;For mobil bruk er mobilt bredbånd løsningen.&amp;nbsp; Flere og flere har mobilabonnementer med inkludert datatrafikk, og et stort antall radiokanaler er eksempelvis tilgjengelig som applikasjoner på iPhone, Android og Nokia. &lt;/p&gt; &lt;p&gt;Med MP3 eller MPEG-4 har vi fått svært effektive kodingssystemer for lyd som gjør at man får fullgod radiolyd over en relativt sett lav båndbredde – mye lavere enn DAB ville ha brukt.&lt;/p&gt; &lt;h3&gt;Behold FM-nettet, la DAB dø&lt;/h3&gt; &lt;p&gt;Skal du kjøpe deg radio? Stem med lommeboken, kjøp Internettradio eller FM!&lt;/p&gt; &lt;p&gt;Dersom regjeringen mot formidning skulle tillate slukking av FM-nettet kobler du bare en FM-sender til iPod-spilleren din.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-833972851958478527?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=CH9JABAOhko:c1a8yL_7GJ8:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=CH9JABAOhko:c1a8yL_7GJ8:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=CH9JABAOhko:c1a8yL_7GJ8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=CH9JABAOhko:c1a8yL_7GJ8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=CH9JABAOhko:c1a8yL_7GJ8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=CH9JABAOhko:c1a8yL_7GJ8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=CH9JABAOhko:c1a8yL_7GJ8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=CH9JABAOhko:c1a8yL_7GJ8:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=CH9JABAOhko:c1a8yL_7GJ8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/833972851958478527/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2010/08/digitalradio-i-norge-dab-ma-feile.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/833972851958478527?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/833972851958478527?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2010/08/digitalradio-i-norge-dab-ma-feile.html" title="Digitalradio i Norge: DAB må feile" /><author><name>Asgeir Storesund Nilsen</name><uri>https://profiles.google.com/112513257596716781380</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-P80a5xtL60k/AAAAAAAAAAI/AAAAAAAAA8Q/QFHrDHSKjZY/s512-c/photo.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;DUINQn47eyp7ImA9Wx5TFE8.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-3926190265359327385</id><published>2010-07-29T20:19:00.001+02:00</published><updated>2010-07-29T20:19:53.003+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-29T20:19:53.003+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="copyright" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><category scheme="http://www.blogger.com/atom/ns#" term="ebooks" /><title>Can’t Get Things Done</title><content type="html">&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Getting_things_done" target="_blank"&gt;Getting Things Done&lt;/a&gt; (GTD) has become quite a popular organizational method recently, and has triggered my curiosity. I decided to read the book.&lt;/p&gt; &lt;p&gt;However, as an impatient soul I didn’t want to wait for a stack of flat dead trees to be sent to me, and wanted an ebook. Kindle version would be nice.&lt;/p&gt; &lt;p&gt;Sorry, no can do. It took a while before I understood why I couldn’t find it at Amazon.&amp;nbsp; The title was there, but not there still. Reason was that the Kindle edition is only available in the US.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.google.com/search?q=getting+things+done+ebook" target="_blank"&gt;Googling for the ebook&lt;/a&gt; yielded the following results – two torrent sites, one link farm, one irrelevant link and two legitimate ebook sources, neither of which were available outside the US.&lt;a href="http://lh3.ggpht.com/_Ni2zJ_xFyKM/TFHGG7eCLOI/AAAAAAAAAUw/unQETQ6JT-8/s1600-h/ebookfail%5B9%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="ebookfail" border="0" alt="ebookfail" src="http://lh3.ggpht.com/_Ni2zJ_xFyKM/TFHGHRlYBYI/AAAAAAAAAU0/sejULLvjmTg/ebookfail_thumb%5B7%5D.png?imgmax=800" width="602" height="484"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Clearly, in the author’s (or publisher’s) opinion, Europeans are either:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;A bunch of pirates, or&lt;/li&gt; &lt;li&gt;Unable to get things done anyway&lt;/li&gt;&lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-3926190265359327385?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=VNLlmRFcgV0:zocgKBMXnPM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=VNLlmRFcgV0:zocgKBMXnPM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=VNLlmRFcgV0:zocgKBMXnPM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=VNLlmRFcgV0:zocgKBMXnPM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=VNLlmRFcgV0:zocgKBMXnPM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=VNLlmRFcgV0:zocgKBMXnPM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=VNLlmRFcgV0:zocgKBMXnPM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=VNLlmRFcgV0:zocgKBMXnPM:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=VNLlmRFcgV0:zocgKBMXnPM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/3926190265359327385/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2010/07/cant-get-things-done.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/3926190265359327385?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/3926190265359327385?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2010/07/cant-get-things-done.html" title="Can’t Get Things Done" /><author><name>Asgeir Storesund Nilsen</name><uri>https://profiles.google.com/112513257596716781380</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-P80a5xtL60k/AAAAAAAAAAI/AAAAAAAAA8Q/QFHrDHSKjZY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_Ni2zJ_xFyKM/TFHGHRlYBYI/AAAAAAAAAU0/sejULLvjmTg/s72-c/ebookfail_thumb%5B7%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;DUMCRX44eyp7ImA9WxFSEko.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-4913440170221364875</id><published>2010-04-13T15:47:00.001+02:00</published><updated>2010-04-14T22:37:44.033+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-14T22:37:44.033+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><title>Reality: Man-in-the-Middle Attacks Against SSL</title><content type="html">&lt;p&gt;If you read my post &lt;a href="/2009/06/tls-broken-trust-model.html"&gt;TLS: A Broken Trust Model&lt;/a&gt;, you really should read Bruce Schneier’s post &lt;a href="http://www.schneier.com/blog/archives/2010/04/man-in-the-midd_2.html"&gt;Man-in-the-Middle Attacks Against SSL&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Certificates issued to the wrong party is not only a possibility, but a reality and even a commercial service.&amp;#160; The target is government organizations, but is probably easily accessible to others as well.&lt;/p&gt;  &lt;p&gt;Matt Blaze’s &lt;a href="http://www.crypto.com/blog/spycerts/" target="_blank"&gt;final comment in his blog post&lt;/a&gt; sums it up quite nicely:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Whether this kind of surveillance is currently widespread or not, Soghoian and Stamm's paper underscores the deeply flawed mess that the web certificate model has become. It's time to design something better. &lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-4913440170221364875?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=fMxA-rVvOIU:LTsAmtrbT-E:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=fMxA-rVvOIU:LTsAmtrbT-E:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=fMxA-rVvOIU:LTsAmtrbT-E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=fMxA-rVvOIU:LTsAmtrbT-E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=fMxA-rVvOIU:LTsAmtrbT-E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=fMxA-rVvOIU:LTsAmtrbT-E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=fMxA-rVvOIU:LTsAmtrbT-E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=fMxA-rVvOIU:LTsAmtrbT-E:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=fMxA-rVvOIU:LTsAmtrbT-E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/4913440170221364875/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2010/04/man-in-middle-attacks-against-ssl.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/4913440170221364875?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/4913440170221364875?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2010/04/man-in-middle-attacks-against-ssl.html" title="Reality: Man-in-the-Middle Attacks Against SSL" /><author><name>Asgeir S. Nilsen</name><uri>http://www.blogger.com/profile/09990435798930983334</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_6m61GL21m8M/SKkyG5kUYWI/AAAAAAAAAj4/Lv8GAe3Kxjo/S220/540269450_da2f62fbea_b.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;A0EARHYzeSp7ImA9WxBaEE0.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-5275107736600301280</id><published>2010-03-19T15:40:00.001+01:00</published><updated>2010-03-19T15:40:45.881+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-19T15:40:45.881+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><category scheme="http://www.blogger.com/atom/ns#" term="concurrent" /><title>A Lock Free Concurrent Circular Buffer</title><content type="html">&lt;p&gt;The high level classes in java.util.concurrent.atomic makes it quite easy to create data structures that are thread safe and low on contention.&amp;#160; This is a lock free concurrent circular buffer that I once found the need for:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:9ce2ac11-8d05-4399-a065-4b8b7ec43d64" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: java;"&gt;import java.util.List;
import java.util.Vector;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReferenceArray;

/**
 * A lock-free thread safe circular fixed length buffer.
 * 
 * Uses an AtomicInteger as index counter and an AtomicReferenceArray
 * to hold the references to the values.
 * 
 * When the buffer is full, the oldest item is overwritten.
 *
 */
public class CircularBuffer&amp;lt;T&amp;gt; {
    
    private final AtomicInteger index = new AtomicInteger(-1);
    private final AtomicReferenceArray&amp;lt;T&amp;gt; buffer;
    private final int size;

    public CircularBuffer(int size) {
        this.size = size;
        buffer = new AtomicReferenceArray&amp;lt;T&amp;gt;(this.size);
    }
    
    public void add(T item) {
        if (index.compareAndSet(size-1, 0)) {
            buffer.set(0, item);
        } else {
            buffer.set(index.incrementAndGet(), item);
        }
    }

    /**
     * Get contents of buffer, as a list.
     * 
     * Note that the list always has the size of the buffer,
     * no matter how many elements there actually are.
     * 
     * The ordering is also unpredictable.
     * 
     * @return contents
     */
    public List&amp;lt;T&amp;gt; getAll() {
        List&amp;lt;T&amp;gt; list = new Vector&amp;lt;T&amp;gt;(size);
        for (int i = 0; i &amp;lt; size; i++) 
            list.add(buffer.get(i));
        return list;
    }
   
    public T get(int i) {
        return buffer.get(i);
    }
}&lt;/pre&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-5275107736600301280?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=iHWSDOeCupg:npM6YU-Fba8:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=iHWSDOeCupg:npM6YU-Fba8:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=iHWSDOeCupg:npM6YU-Fba8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=iHWSDOeCupg:npM6YU-Fba8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=iHWSDOeCupg:npM6YU-Fba8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=iHWSDOeCupg:npM6YU-Fba8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=iHWSDOeCupg:npM6YU-Fba8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=iHWSDOeCupg:npM6YU-Fba8:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=iHWSDOeCupg:npM6YU-Fba8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/5275107736600301280/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2010/03/lock-free-concurrent-circular-buffer.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/5275107736600301280?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/5275107736600301280?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2010/03/lock-free-concurrent-circular-buffer.html" title="A Lock Free Concurrent Circular Buffer" /><author><name>Asgeir S. Nilsen</name><uri>http://www.blogger.com/profile/09990435798930983334</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_6m61GL21m8M/SKkyG5kUYWI/AAAAAAAAAj4/Lv8GAe3Kxjo/S220/540269450_da2f62fbea_b.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;DE4GSXo-cCp7ImA9WxBaEE0.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-3678410494041832861</id><published>2010-03-15T22:36:00.001+01:00</published><updated>2010-03-19T14:55:28.458+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-19T14:55:28.458+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="server" /><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><title>Eleven Reasons Your Home Server Should Be a Netbook</title><content type="html">&lt;h3&gt;1. It's Cheap &lt;/h3&gt;  &lt;p&gt;It doesn't have to cost more than $250.&lt;/p&gt;  &lt;h3&gt;2. It Has a Solid-State Disk Drive &lt;/h3&gt;  &lt;p&gt;Hard Drives are mechanical devices that come in two forms: the ones that have failed, and those that haven't failed yet. Many netbooks come with solid state drives that potentially last as long as the rest of the computer electronics. If it doesn't come with an SSD originally one can be added later on, often in the form of a Compact Flash adapter.&lt;/p&gt;  &lt;p&gt;The newly released &lt;a href="http://www.intel.com/design/flash/nand/value/overview.htm" target="_blank"&gt;Intel X25-V&lt;/a&gt; is an SSD especially targeted for netbooks, and sells for around $120.&lt;/p&gt;  &lt;h3&gt;3. It Has Built In UPS and Power Management &lt;/h3&gt;  &lt;p&gt;Since it's a netbook, it obviously has a battery. This saves you the need for a UPS system to keep the system running in case of power failure.&lt;/p&gt;  &lt;h3&gt;4. It Has a Built In Console &lt;/h3&gt;  &lt;p&gt;Servers are typically &amp;quot;headless&amp;quot;, i.e. used without a monitor and keyboard. These can however come in handy for installation or troubleshooting. Having a server with a built-in console can be very useful and saves the cost of expensive remote Keyboard, Video, Mouse (KVM) solutions.&lt;/p&gt;  &lt;h3&gt;5. It Has Built In Thermal Management &lt;/h3&gt;  &lt;p&gt;Because of their small and compact form factor, portable computers come with built in thermal management features that often are more elaborate than a typical server. They are also built to be used in a &amp;quot;normal&amp;quot; living room environment, and not a server room with ample cooling.&lt;/p&gt;  &lt;h3&gt;6. It Has Backup Connectivity &lt;/h3&gt;  &lt;p&gt;Many netbooks come with a bundled mobile internet device in addition to wireless and wired ethernet. This provides a useful backup connectivity solution in case the primary connection fails or is congested. Combined with the built in battery this will keep the server running and accessible even if the building has lost all electricity, a feature that would be very costly for a full fledged server.&lt;/p&gt;  &lt;h3&gt;7. It's Small And Quiet &lt;/h3&gt;  &lt;p&gt;Servers are not build to be quiet. A 1U rack-mounted server typically has around ten 1-inch fans, and boy are they noisy! They typically will be kept running at full speed or a minimum speed that is still very noisy. Noise level ratings around 50-60 dB are common, or as noisy as a TV set or an air conditioning unit. Laptops are much quieter.&lt;/p&gt;  &lt;h3&gt;8. You Don't Need More Performance (At Home) &lt;/h3&gt;  &lt;p&gt;A home server is typically either a simple web server or a server to make files available. It thus does not need to be very powerful. The $250 price point above gives you a 1 GHz Atom processor.&lt;/p&gt;  &lt;h3&gt;9. You Don't Need More Space&lt;/h3&gt;  &lt;p&gt;It's for sharing documents or services that depend on being at your home. With a 16 GB or 32 GB SSD you easily outperform all but the most expensive hosting or sharing sites. Add in an SD card reader and you can easily expand this storage space at almost no cost.&lt;/p&gt;  &lt;h3&gt;10. Spare Parts Are Cheap(er) And Easier To Obtain &lt;/h3&gt;  &lt;p&gt;Server-grade replacement parts are typically pricey and not on stock in your everyday computer store. Laptop spares on the other hand are stocked everywhere. For most popular models replacement batteries are manufactured by other vendors long after the original battery has gone out of distribution. I just bought one for my nine-year-old model.&lt;/p&gt;  &lt;h3&gt;11. It Doesn't Have to Be New &lt;/h3&gt;  &lt;p&gt;You can get good deals for used laptops on eBay. My home server was actually purchased there for $120 in 2006, then five years old. It's still running fine.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-3678410494041832861?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=T3o0LyhmIGw:Yy06yXy0eC4:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=T3o0LyhmIGw:Yy06yXy0eC4:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=T3o0LyhmIGw:Yy06yXy0eC4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=T3o0LyhmIGw:Yy06yXy0eC4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=T3o0LyhmIGw:Yy06yXy0eC4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=T3o0LyhmIGw:Yy06yXy0eC4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=T3o0LyhmIGw:Yy06yXy0eC4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=T3o0LyhmIGw:Yy06yXy0eC4:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=T3o0LyhmIGw:Yy06yXy0eC4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/3678410494041832861/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2010/03/eleven-reasons-your-home-server-should.html#comment-form" title="1 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/3678410494041832861?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/3678410494041832861?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2010/03/eleven-reasons-your-home-server-should.html" title="Eleven Reasons Your Home Server Should Be a Netbook" /><author><name>Asgeir S. Nilsen</name><uri>http://www.blogger.com/profile/09990435798930983334</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_6m61GL21m8M/SKkyG5kUYWI/AAAAAAAAAj4/Lv8GAe3Kxjo/S220/540269450_da2f62fbea_b.jpg" /></author><thr:total>1</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;CEUNQnczcSp7ImA9WxBbFUU.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-859080294442940440</id><published>2010-03-13T23:22:00.000+01:00</published><updated>2010-03-14T16:58:13.989+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-14T16:58:13.989+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="c++0x" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><title>C++0x Might Be C++11, Maybe</title><content type="html">&lt;a href="http://herbsutter.wordpress.com/2010/03/13/trip-report-march-2010-iso-c-standards-meeting/"&gt;Trip Report: March 2010 ISO C++ Standards Meeting « Sutter’s Mill&lt;/a&gt;  &lt;div&gt;   &lt;blockquote&gt;&lt;/blockquote&gt;    &lt;blockquote&gt;The biggest news is that this afternoon we voted in the final remaining feature changes to C++0x, and to much applause then unanimously approved the text for international ballot as a Final Committee Draft (FCD). FCD means that, assuming no surprises, we intend to do only bug fixes and editorial corrections for the next year or so, and then ballot a final standard. If we can do that, assuming all goes well, C++0x could officially be published as soon as next year as ISO C++ 2011, and we can stop with the “x-is-hex” jokes and just start calling it C++11.&lt;/blockquote&gt; &lt;/div&gt;  &lt;p&gt;Best wishes to the ISO Technical Committee for pulling this one off – now let’s hope the wheels of the ISO organization are able to grind it through on schedule..&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-859080294442940440?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=gymRNQX0JfM:9gRMDkw5AyM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=gymRNQX0JfM:9gRMDkw5AyM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=gymRNQX0JfM:9gRMDkw5AyM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=gymRNQX0JfM:9gRMDkw5AyM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=gymRNQX0JfM:9gRMDkw5AyM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=gymRNQX0JfM:9gRMDkw5AyM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=gymRNQX0JfM:9gRMDkw5AyM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=gymRNQX0JfM:9gRMDkw5AyM:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=gymRNQX0JfM:9gRMDkw5AyM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="related" href="http://herbsutter.wordpress.com/2010/03/13/trip-report-march-2010-iso-c-standards-meeting/" title="C++0x Might Be C++11, Maybe" /><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/859080294442940440/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2010/03/c0x-might-be-c11-maybe.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/859080294442940440?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/859080294442940440?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2010/03/c0x-might-be-c11-maybe.html" title="C++0x Might Be C++11, Maybe" /><author><name>Asgeir S. Nilsen</name><uri>http://www.blogger.com/profile/09990435798930983334</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_6m61GL21m8M/SKkyG5kUYWI/AAAAAAAAAj4/Lv8GAe3Kxjo/S220/540269450_da2f62fbea_b.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;CkABRH85eyp7ImA9WxBbEkg.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-5785978507743716958</id><published>2010-03-10T20:52:00.001+01:00</published><updated>2010-03-10T20:52:35.123+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-10T20:52:35.123+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="c++0x" /><category scheme="http://www.blogger.com/atom/ns#" term="c++" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><category scheme="http://www.blogger.com/atom/ns#" term="presentation" /><title>C++0x: A const * const Odyssey</title><content type="html">&lt;p&gt;This is a presentation I and my colleague &lt;a href="http://knatten.org/"&gt;Anders Schau Knatten&lt;/a&gt; held at an internal software seminar this February.&lt;/p&gt;  &lt;p&gt;It was meant to cover both some introductory material, best practices we have acquired, new features to look forward to and things that might (or should) scare you.&lt;/p&gt;  &lt;p&gt;However not one member of our audience had less experience with C++ than Anders and myself have together, so we quickly jumped down into details.&lt;/p&gt;  &lt;p&gt;You should probably view the presentation full screen and open the speaker notes to get the most out of it.&lt;/p&gt;  &lt;p&gt;&lt;iframe height="451" src="http://docs.google.com/present/embed?id=dgw3tfxz_76fxn8jwg8&amp;amp;size=m" frameborder="0" width="555"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;You might find this additional note on slide 43 interesting:&amp;#160; A non-virtual destructor once made it to the board of directors..&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-5785978507743716958?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=knZ4Sk4qEUg:sWAsgrv9xiE:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=knZ4Sk4qEUg:sWAsgrv9xiE:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=knZ4Sk4qEUg:sWAsgrv9xiE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=knZ4Sk4qEUg:sWAsgrv9xiE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=knZ4Sk4qEUg:sWAsgrv9xiE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=knZ4Sk4qEUg:sWAsgrv9xiE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=knZ4Sk4qEUg:sWAsgrv9xiE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=knZ4Sk4qEUg:sWAsgrv9xiE:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=knZ4Sk4qEUg:sWAsgrv9xiE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/5785978507743716958/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2010/03/c0x-const-const-odyssey.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/5785978507743716958?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/5785978507743716958?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2010/03/c0x-const-const-odyssey.html" title="C++0x: A const * const Odyssey" /><author><name>Asgeir S. Nilsen</name><uri>http://www.blogger.com/profile/09990435798930983334</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_6m61GL21m8M/SKkyG5kUYWI/AAAAAAAAAj4/Lv8GAe3Kxjo/S220/540269450_da2f62fbea_b.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;DE8GQHY5eip7ImA9WxBbEEU.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-5567534236040929608</id><published>2010-03-08T21:39:00.011+01:00</published><updated>2010-03-08T23:20:21.822+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-08T23:20:21.822+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="rant" /><category scheme="http://www.blogger.com/atom/ns#" term="c++" /><category scheme="http://www.blogger.com/atom/ns#" term="humor" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><title>Why C++ is Male</title><content type="html">&lt;p&gt;Through recent frustrations, and needless to say, core dumps, I have realized that C++ as a language have some distinct features often associated with men: It can only do one thing at a time, and it cannot communicate. In this post I'll elaborate on these. &lt;/p&gt;  &lt;h3&gt;It Can Only Do One Thing at a Time&lt;/h3&gt;  &lt;p&gt;In C++ threads or the notion of multiprocessing simply does not exist. The language has neither a thread concept nor any thread synchronization primitives like mutexes, semaphores and locks. &lt;/p&gt;  &lt;p&gt;Even relatively simple constructs like static members simply do not work in a multi-threaded context. As described by Scott Meyers and Andrei Alexandrescu in &lt;a href="http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf"&gt;C++ and the Perils of Double-Checked Locking&lt;/a&gt;, no matter how many volatile keywords or extra locking you add in the mix, it still won't work consistently. Some compilers try to help you by fixing this for you, but since that is compiler implementation dependent it does more harm than help. &lt;/p&gt;  &lt;p&gt;C++ has no thread-safe memory model, and does not provide any means for a memory barrier. Which means that any &amp;quot;clever&amp;quot; compiler or instruction dispatcher is free to reorder your statements in whichever way provides the same result in a single thread of execution. &lt;/p&gt;  &lt;h3&gt;C++ Cannot Communicate&lt;/h3&gt;  &lt;p&gt;What is the de facto standard for communicating with the outside world, and has been for the last two decades? The Internet Protocol, or more specifically, the TCP and UDP protocols on top of it. But the C++ language &lt;i&gt;does not support&lt;/i&gt; this protocol. The only means of communication provided by the language are streams for input and output, and they can only be used for talking to files or to the console. &lt;/p&gt;  &lt;h3&gt;You Can Teach C++ New Tricks&lt;/h3&gt;  &lt;p&gt;In the recent years I've learned the art of walking and chewing gum at the same time. I can even pay attention to a conversation while doing other stuff, or at least I think I can. &lt;/p&gt;  &lt;p&gt;Being a married man I have also learned to cope with my lack of communication skills, to some extent. Neither of these feats came easy. They were achieved after failing a lot and suffering many crashes. &lt;/p&gt;  &lt;p&gt;I have never tried teaching a man to do these things, but having been taught these capabilities has provided some insight into the requisite effort and amount of frustration involved. &lt;/p&gt;  &lt;p&gt;Trying to teach C++ to do several things at the same time while communicating with others can also be accomplished. It is however probably equally frustrating as teaching your significant other something he obviously wasn't designed to do. Both capabilities require that you deal with the more primitive foundation the individual has evolved from (Neanderthals and C), and relying on cultural constructs (operating system interfaces) that have been added on top of evolution and behave differently from individual to individual. &lt;/p&gt;  &lt;p&gt;In many circumstances the resulting behavior is undefined, and will certainly cause some surprises. You also have to meticulously and in great detail instruct your friend on every step required to perform the task, in a language he understands. &lt;/p&gt;  &lt;h3&gt;The Modern Man: C++0x&lt;/h3&gt;  &lt;p&gt;Men have evolved, and so has C++ as well. In C++0x the language has grown the capability of doing several things at once, but it still prefers to do so alone in a dark corner.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-5567534236040929608?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=hOPzm4O2wI8:1QjPi4QNnME:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=hOPzm4O2wI8:1QjPi4QNnME:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=hOPzm4O2wI8:1QjPi4QNnME:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=hOPzm4O2wI8:1QjPi4QNnME:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=hOPzm4O2wI8:1QjPi4QNnME:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=hOPzm4O2wI8:1QjPi4QNnME:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=hOPzm4O2wI8:1QjPi4QNnME:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=hOPzm4O2wI8:1QjPi4QNnME:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=hOPzm4O2wI8:1QjPi4QNnME:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/5567534236040929608/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2010/03/why-c-is-male.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/5567534236040929608?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/5567534236040929608?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2010/03/why-c-is-male.html" title="Why C++ is Male" /><author><name>Asgeir S. Nilsen</name><uri>http://www.blogger.com/profile/09990435798930983334</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_6m61GL21m8M/SKkyG5kUYWI/AAAAAAAAAj4/Lv8GAe3Kxjo/S220/540269450_da2f62fbea_b.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;A0UCRHc8cCp7ImA9WxFUFEs.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-5389296598898440199</id><published>2010-02-24T22:42:00.008+01:00</published><updated>2010-06-25T14:34:25.978+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-25T14:34:25.978+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="uml" /><category scheme="http://www.blogger.com/atom/ns#" term="tool" /><category scheme="http://www.blogger.com/atom/ns#" term="plantuml" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><title>UML in a new way</title><content type="html">Once again I found myself in the need of writing some UML. My last attempt nearly got me carpal tunnel syndrome and a broken mouse.&lt;br /&gt;
Yet I once more went on the quest of finding a UML editor, bracing myself for a crunch down on the little pointer with a tool that would eat all my RAM and spit it back out.&lt;br /&gt;
This time around however, I discovered &lt;a href="http://plantuml.sourceforge.net/"&gt;PlantUML&lt;/a&gt;. The process of writing for instance an action diagram became this easy:&lt;br /&gt;
&lt;div&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:4a647644-ceab-4ea9-8699-196a0489156e" style="display: inline; float: none; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
&lt;pre class="brush: text;"&gt;@startuml
(*) --&amp;gt; "Download PlantUML"
--&amp;gt; "Run it"
--&amp;gt; "Open Notepad"
--&amp;gt; "Write Some Text"
--&amp;gt; "Hit Save"
--&amp;gt; "Look at the generated diagram"
--&amp;gt; (*)
@enduml&lt;/pre&gt;
&lt;/div&gt;
&lt;a href="http://1.bp.blogspot.com/_6m61GL21m8M/S4Wf-evEywI/AAAAAAAADuU/li0Cioq9RmA/s1600-h/activity.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" height="400" id="BLOGGER_PHOTO_ID_5441931620498328322" src="http://1.bp.blogspot.com/_6m61GL21m8M/S4Wf-evEywI/AAAAAAAADuU/li0Cioq9RmA/s400/activity.png" style="float: right; height: 320px; margin-bottom: 10px; margin-left: 10px; margin-right: 0px; margin-top: 0px; width: 188px;" width="235" /&gt;&lt;/a&gt;&lt;/div&gt;
The tool supports Sequence, Use Case, Class, Activity, Component, and State diagrams, and only requires &lt;a href="http://www.graphviz.org/"&gt;GraphViz&lt;/a&gt;. &lt;br /&gt;
And if Notepad isn't your tool of choice, you can choose between Word macros, Eclipse plugins, Ant tasks, or 10 other ways of running the tool.&lt;br /&gt;
Since it's text you can easily store it in version control, source code comments, pass it along in emails, &lt;a href="http://twitter.com/asgeirn/status/9590335845"&gt;tweet it&lt;/a&gt;, generate it, and parse it.&lt;br /&gt;
Batteries included, mouse not required. Highly recommended.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-5389296598898440199?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=5ldBdTOrUoQ:Iba-sNRV_wM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=5ldBdTOrUoQ:Iba-sNRV_wM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=5ldBdTOrUoQ:Iba-sNRV_wM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=5ldBdTOrUoQ:Iba-sNRV_wM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=5ldBdTOrUoQ:Iba-sNRV_wM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=5ldBdTOrUoQ:Iba-sNRV_wM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=5ldBdTOrUoQ:Iba-sNRV_wM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=5ldBdTOrUoQ:Iba-sNRV_wM:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=5ldBdTOrUoQ:Iba-sNRV_wM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/5389296598898440199/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2010/02/uml-in-new-way.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/5389296598898440199?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/5389296598898440199?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2010/02/uml-in-new-way.html" title="UML in a new way" /><author><name>Asgeir S. Nilsen</name><uri>http://www.blogger.com/profile/09990435798930983334</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_6m61GL21m8M/SKkyG5kUYWI/AAAAAAAAAj4/Lv8GAe3Kxjo/S220/540269450_da2f62fbea_b.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_6m61GL21m8M/S4Wf-evEywI/AAAAAAAADuU/li0Cioq9RmA/s72-c/activity.png" height="72" width="72" /><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;DEcESHw5eip7ImA9WxBQFU0.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-1987995605739087807</id><published>2010-01-14T22:51:00.005+01:00</published><updated>2010-01-14T22:53:29.222+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-14T22:53:29.222+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="xmleditor" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><title>New version of XPath XML editor</title><content type="html">&lt;div&gt;Recently I needed to use my &lt;a href="http://blog.asgeirnilsen.com/search?q=xmleditor"&gt;XPath XML editor&lt;/a&gt; to tweak a number of POMs.  Only catch was that I was required to do this on a Windows machine.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;What's the catch you ask?  XML and Java work just as fine on Windows.  However, my editor requires a list of POM file names on the command line, something I quite easily fixed with &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;`find . -name pom.xml`&lt;/span&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;This isn't easy in CMD, but even Windows has evolved recently.  Enter &lt;a href="http://www.microsoft.com/powershell"&gt;Windows PowerShell&lt;/a&gt;. The PowerShell replacement is pretty simple once you get to know the PowerShell basics:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;$(ls -include pom.xml -recurse -name)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;If you'd like to tinker with it, I've also pushed the xmleditor to &lt;a href="http://github.com/asgeirn/xmleditor"&gt;GitHub&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-1987995605739087807?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=5mPc1nYkszE:3XRBxZNUWQs:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=5mPc1nYkszE:3XRBxZNUWQs:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=5mPc1nYkszE:3XRBxZNUWQs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=5mPc1nYkszE:3XRBxZNUWQs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=5mPc1nYkszE:3XRBxZNUWQs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=5mPc1nYkszE:3XRBxZNUWQs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=5mPc1nYkszE:3XRBxZNUWQs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=5mPc1nYkszE:3XRBxZNUWQs:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=5mPc1nYkszE:3XRBxZNUWQs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/1987995605739087807/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2010/01/new-version-of-xpath-xml-editor.html#comment-form" title="2 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/1987995605739087807?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/1987995605739087807?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2010/01/new-version-of-xpath-xml-editor.html" title="New version of XPath XML editor" /><author><name>Asgeir S. Nilsen</name><uri>http://www.blogger.com/profile/09990435798930983334</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_6m61GL21m8M/SKkyG5kUYWI/AAAAAAAAAj4/Lv8GAe3Kxjo/S220/540269450_da2f62fbea_b.jpg" /></author><thr:total>2</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;DUQBQ3s9eyp7ImA9WxNWFUw.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-1130198631933824754</id><published>2009-10-13T21:55:00.004+02:00</published><updated>2009-10-14T12:49:12.563+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-14T12:49:12.563+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tdd" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><title>Six questions on TDD</title><content type="html">Read Uncle Bob's &lt;a href="http://blog.objectmentor.com/articles/2009/10/08/tdd-triage"&gt;&lt;i&gt;TDD Triage&lt;/i&gt;&lt;/a&gt;:  &lt;blockquote&gt;"Is TDD a replacement for architecture?&lt;div&gt;Is TDD a replacement for design?&lt;/div&gt;&lt;div&gt;Should TDD be used for every line of code?&lt;/div&gt;&lt;div&gt;Well, if you are going to write some tests afterwards, why not write all tests afterwards?&lt;/div&gt;&lt;div&gt;Given that we accept the need for tests, why the resistance to test-first?&lt;/div&gt;&lt;div&gt;Wouldn’t it be faster without such high test coverage?"&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;and &lt;a href="http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age"&gt;Echoes from the Stone Age&lt;/a&gt;: &lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;"TDD&lt;/div&gt;&lt;div&gt;The Design Pattern Religion&lt;/div&gt;&lt;div&gt;Minimizing Concurrency"&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Very good reads indeed.  It is of course triggered by all the controversy of Joel Spolsky's blog on Jamie Zawinski being a &lt;a href="http://www.joelonsoftware.com/items/2009/09/23.html"&gt;Duct Tape Programmer&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Here are some of my comments:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Learn concurrency principles.  You'll need it.  Moore's Law no longer gives you more clock cycles per second, it gives you more processor cores.  To effectively utilize a modern CPU you have to keep all cores busy.
And if you struggle keeping two quad-cores busy, imagine keeping 1,000 cores busy.  It probably requires a fundamental programming paradigm change like the proposed &lt;a href="http://docs.google.com/viewer?url=http%3A%2F%2Fgee.cs.oswego.edu%2Fdl%2Fpapers%2Ffj.pdf"&gt;fork-join framework for Java&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Use high level building blocks like &lt;a href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/package-summary.html"&gt;java.util.concurrent&lt;/a&gt; and &lt;a href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/atomic/package-summary.html"&gt;java.util.concurrent.atomic&lt;/a&gt;.  It gives you well tested code that is maintained by Other Smart People, relieving your brain to work on more important things. Two classes to study: &lt;a href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/ExecutorService.html"&gt;ExecutorService&lt;/a&gt; and &lt;a href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/BlockingQueue.html"&gt;BlockingQueue&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;TDD is a good way of writing safe concurrency code.  Design each element as a single threaded execution flow, and assert state before and after.  Pay attention to locks and shared data.&lt;/li&gt;&lt;li&gt;Architecture is Important.  You don't build a skyscraper or a space station in the same way as a dog house or a residential house.&lt;/li&gt;&lt;li&gt;Testing is a good way of exploring unknown APIs or legacy code.  You basically assert the expected output or behavior of the code you are exploring.&lt;/li&gt;&lt;li&gt;Duct Tape is good for many things.  You can even build a &lt;a href="http://twitter.com/grantimahara/statuses/4838528129"&gt;sailboat&lt;/a&gt; out of it. But you probably wouldn't enlist for the &lt;a href="http://www.volvooceanrace.org/"&gt;Volvo Ocean Race&lt;/a&gt; with it?&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-1130198631933824754?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=GZv6hMuDNiQ:Vp9bVLnSUcM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=GZv6hMuDNiQ:Vp9bVLnSUcM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=GZv6hMuDNiQ:Vp9bVLnSUcM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=GZv6hMuDNiQ:Vp9bVLnSUcM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=GZv6hMuDNiQ:Vp9bVLnSUcM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=GZv6hMuDNiQ:Vp9bVLnSUcM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=GZv6hMuDNiQ:Vp9bVLnSUcM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=GZv6hMuDNiQ:Vp9bVLnSUcM:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=GZv6hMuDNiQ:Vp9bVLnSUcM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/1130198631933824754/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2009/10/six-questions-on-tdd.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/1130198631933824754?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/1130198631933824754?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2009/10/six-questions-on-tdd.html" title="Six questions on TDD" /><author><name>Asgeir S. Nilsen</name><uri>http://www.blogger.com/profile/09990435798930983334</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_6m61GL21m8M/SKkyG5kUYWI/AAAAAAAAAj4/Lv8GAe3Kxjo/S220/540269450_da2f62fbea_b.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;D04MSHkyfCp7ImA9WxNSEU0.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-7515512081289737651</id><published>2009-08-24T11:19:00.003+02:00</published><updated>2009-08-24T11:26:29.794+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-24T11:26:29.794+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="versioning" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><category scheme="http://www.blogger.com/atom/ns#" term="maven" /><title>Versions Maven Plugin</title><content type="html">Ever struggled with keeping versions of dependencies or inter-module links up to date?  Now the &lt;a href="http://mojo.codehaus.org/versions-maven-plugin/index.html"&gt;Versions Maven Plugin&lt;/a&gt; comes to the rescue!  It has readily available goals for tasks like:
&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mojo.codehaus.org/versions-maven-plugin/examples/advancing-dependency-versions.html"&gt;Advancing dependency versions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mojo.codehaus.org/versions-maven-plugin/examples/update-parent.html"&gt;Updating the Parent version&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mojo.codehaus.org/versions-maven-plugin/examples/update-child-modules.html"&gt;Fixing a multi-module build&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mojo.codehaus.org/versions-maven-plugin/examples/set.html"&gt;Changing the project version&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mojo.codehaus.org/versions-maven-plugin/examples/lock-snapshots.html"&gt;Locking snapshot dependencies&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mojo.codehaus.org/versions-maven-plugin/examples/use-releases.html"&gt;Replacing -SNAPSHOT versions with their corresponding releases&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;The worst thing about this plugin is that it haven't appeared sooner.  It also means I can now retire my &lt;a href="http://www.blogger.com/2007/08/oppdatert-xmleditor.html"&gt;XML Editor&lt;/a&gt; tool's primary usage.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-7515512081289737651?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=fRCr_JrYVZI:8MVKngtRLvY:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=fRCr_JrYVZI:8MVKngtRLvY:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=fRCr_JrYVZI:8MVKngtRLvY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=fRCr_JrYVZI:8MVKngtRLvY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=fRCr_JrYVZI:8MVKngtRLvY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=fRCr_JrYVZI:8MVKngtRLvY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=fRCr_JrYVZI:8MVKngtRLvY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=fRCr_JrYVZI:8MVKngtRLvY:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=fRCr_JrYVZI:8MVKngtRLvY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/7515512081289737651/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2009/08/versions-maven-plugin.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/7515512081289737651?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/7515512081289737651?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2009/08/versions-maven-plugin.html" title="Versions Maven Plugin" /><author><name>Asgeir S. Nilsen</name><uri>http://www.blogger.com/profile/09990435798930983334</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_6m61GL21m8M/SKkyG5kUYWI/AAAAAAAAAj4/Lv8GAe3Kxjo/S220/540269450_da2f62fbea_b.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;CkUAQXg4cSp7ImA9WxJbF0o.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-8030313324152146731</id><published>2009-07-28T10:36:00.001+02:00</published><updated>2009-07-28T10:37:20.639+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-28T10:37:20.639+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tls" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><title>HTTPS connection explained</title><content type="html">&lt;div&gt;If you wonder how HTTPS works, you could read this one:&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;a href="http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html"&gt;The First Few Milliseconds of an HTTPS Connection&lt;/a&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;After that, please come back and read my post &lt;a href="/2009/06/tls-broken-trust-model.html"&gt;TLS: A Broken Trust Model&lt;/a&gt; about the flaws of how HTTPS establishes a trust relationship between client and server.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-8030313324152146731?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=wUclOGkMyEU:TwBbSvqTwsM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=wUclOGkMyEU:TwBbSvqTwsM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=wUclOGkMyEU:TwBbSvqTwsM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=wUclOGkMyEU:TwBbSvqTwsM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=wUclOGkMyEU:TwBbSvqTwsM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=wUclOGkMyEU:TwBbSvqTwsM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=wUclOGkMyEU:TwBbSvqTwsM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=wUclOGkMyEU:TwBbSvqTwsM:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=wUclOGkMyEU:TwBbSvqTwsM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/8030313324152146731/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2009/07/https-connection-explained.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/8030313324152146731?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/8030313324152146731?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2009/07/https-connection-explained.html" title="HTTPS connection explained" /><author><name>Asgeir S. Nilsen</name><uri>http://www.blogger.com/profile/09990435798930983334</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_6m61GL21m8M/SKkyG5kUYWI/AAAAAAAAAj4/Lv8GAe3Kxjo/S220/540269450_da2f62fbea_b.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;D0ADRXw8eCp7ImA9WxFSEUs.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-1888737785411553154</id><published>2009-06-11T20:45:00.002+02:00</published><updated>2010-04-13T15:36:14.270+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-13T15:36:14.270+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="tls" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><title>TLS: A Broken Trust Model</title><content type="html">&lt;h2&gt;What is TLS&lt;/h2&gt;  &lt;p&gt;TLS stands for Transport Layer Security. It was formerly known as SSL, or Secure Sockets Layer. In short, it's the protocol behind the s in https, making internet banking, passwords and other data safe from eavesdropping while browsing.&lt;/p&gt;  &lt;p&gt;In https, TLS also has another purpose -- trust. Through a chain of digital certificates and certificate authorities, the system tries to ensure you that the web site you are visiting is controlled by the company they claim to be.&lt;/p&gt;  &lt;h2&gt;How Does TLS Work&lt;/h2&gt;  &lt;p&gt;To protect communication, an encryption key has to be agreed upon by both ends in the conversation - namely the web browser and the web server. Because of efficiency this key must be identical on both sides. But how do you exchange this key in a secure fashion, ensuring no-one else can access it?&lt;/p&gt;  &lt;p&gt;TLS solves this by encoding this key in &lt;i&gt;another&lt;/i&gt; key. This other key is &lt;i&gt;asymmetric&lt;/i&gt;, meaning different keys are used for encrypting and decrypting data. The key used for encrypting data can thus be openly exchanged. This encryption key, also called the &lt;i&gt;public key&lt;/i&gt;, is encapsulated in a &lt;i&gt;digital certificate&lt;/i&gt; with other information about the rightful owner of this key.&lt;/p&gt;  &lt;p&gt;Among other things, this certificate contains the DNS name of the web server who owns it, and the name of the organization or individual it is registered to.&lt;/p&gt;  &lt;p&gt;This certificate is presented to the browser by the web server when they initiate the TLS session.&lt;/p&gt;  &lt;h2&gt;The Purpose of those Certificates&lt;/h2&gt;  &lt;p&gt;But how do you know that this certificate is valid? This is where &lt;i&gt;certificate authorities&lt;/i&gt; come in. They &lt;i&gt;sign&lt;/i&gt; digital certificates, telling us that they vouch for the validity of this digital certificate and have verified that it is issued to the correct organization or person.&lt;/p&gt;  &lt;p&gt;And how does the certificate authority identify itself. By another digital certificate. And how do you know &lt;i&gt;this&lt;/i&gt; digital certificate is trustworthy? By &lt;i&gt;yet another&lt;/i&gt; certificate authority, vouching for this intermediate certificate authority.&lt;/p&gt;  &lt;p&gt;This obviously cannot continue forever. This is why TLS relies on &lt;i&gt;root certificates&lt;/i&gt;. These certificates are &lt;i&gt;ultimately &lt;/i&gt;trusted, meaning you simply accept that they are valid.&lt;/p&gt;  &lt;p&gt;In order for this certificate chain to work in practice, these root certificates are installed in every web browser as they are distributed by the web browser vendor.&lt;/p&gt;  &lt;h2&gt;Who do you trust?&lt;/h2&gt;  &lt;p&gt;The web browser's &lt;i&gt;ultimate&lt;/i&gt; trust in root certificates is distributed among a large number of corporations like &lt;i&gt;Verisign, Thawte, COMODO, Microsoft, Deutsche Telekom, Entrust, Geotrust, Equifax, GlobalSign, Go Daddy, GTE CyberTrust, Starfield Technologies, and USERTrust&lt;/i&gt;. These comprise the list that my Internet Explorer 8 contains. &lt;/p&gt;  &lt;p&gt;Firefox 3 contains the following staggering list: &lt;i&gt;TÜRKTRUST, ABA.ECOM, AC Camerfirma SA, AddTrust AB, America Online, AOL Time Warner, Autodidad de Certificacion Firmaprofesional, Baltimore, beTRUSTed, Certplus, COMODO, DigiCert, DigiNotar, Digital Signature Trust, Entrust, Equifax, GeoTrust, GlobalSign, Taiwan Goverment Root Certification Authority, GTE Corporation, IPS Internet Publishing Services, IPS Seguridad, NetLock Halozatbiztonsagi, Network Solutions, QuoVadis, RSA Data Security, SECOM Trust, SecureTrust, Sonera, Staat der Nederlanden, Starfield Technologies, StartCom, Swisscom, SwissSign, TC TrustCenter for Security in Data Networks, TDC, Thawte, Go Daddy, USERTRUST, Unizeto, ValiCert, VeriSign, VISA, Wells Fargo, and XRamp Security Services&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;So: Who decides which companies are admitted into this inner circle of ultimately trusted organizations? What means do they take to ensure that they are as trustworthy as they claim. And why is there such a large difference between Microsoft's and Mozilla's list?&lt;/p&gt;  &lt;h2&gt;A Snake Oil Market: Issuing Digital Certificates&lt;/h2&gt;  &lt;p&gt;These certificate authorities have created an artificial market, selling their trust at a high price. Furthermore, since digital certificates always have an &lt;i&gt;expiration date,&lt;/i&gt; after which the certificate is no longer valid, they have ensured return customers as well.&lt;/p&gt;  &lt;p&gt;The organizations provide little added value, apart from the aforementioned trust. But are these certificate authorities really more trustworthy than the organizations forced to purchase digital certificates from them?&lt;/p&gt;  &lt;h2&gt;What Is Wrong With TLS&lt;/h2&gt;  &lt;p&gt;It boils down to trust. If you were to make a top ten list of the organizations you trust most -- what would these organizations be? And are any of the organizations mentioned above on that list?&lt;/p&gt;  &lt;p&gt;Why can't you choose for yourself who to trust?&lt;/p&gt;  &lt;h2&gt;What is TLS supposed to protect?&lt;/h2&gt;  &lt;p&gt;TLS protects the data transmitted between the browser and the web server. Often this is your personal or confidential data, like user identification, financial information or other data which you would like to be kept secret, and that the organization you exchange data with often is mandated to protect.&lt;/p&gt;  &lt;h2&gt;What are the risks involved?&lt;/h2&gt;  &lt;p&gt;The most severe risk is that a certificate authority issues a certificate to the wrong people. These people could then pose as the organization the certificate is issued to, and steal your personal data without you being aware of it. The browser would claim the communication is secure with a trustworthy party, and it's impossible to detect that something wrong is going on.&lt;/p&gt;  &lt;h2&gt;A Better TLS Key Exchange&lt;/h2&gt;  &lt;p&gt;Remember, the primary purpose of the digital certificate is to exchange and protect the key used to encrypt the data in transit between the browser and the web site.&lt;/p&gt;  &lt;p&gt;This key could be protected in other ways, two of which are suggested here:&lt;/p&gt;  &lt;h3&gt;1. The browser issues a digital certificate&lt;/h3&gt;  &lt;p&gt;The web browser can generate a self-signed certificate and present it to the web server when initiating a TLS session. The web server doesn't know whether this certificate is trustworthy, but that doesn't matter. It's only a matter of exchanging an encryption key in a secure manner, not trust. Most web sites require you to log on to identify yourself and establish this trusted relationship.&lt;/p&gt;  &lt;p&gt;This certificate can be generated when the browser starts, and be destroyed when the browser exits.&lt;/p&gt;  &lt;h3&gt;2. The encryption key is based on shared secrets&lt;/h3&gt;  &lt;p&gt;The encryption key, or a scheme to generate an encryption key, can be shared between the browser and the web site. This can be based on the user's authentication data like user name and password. The browser can then start sending encrypted data, expecting the web site to know how to decrypt them.&lt;/p&gt;  &lt;h2&gt;A Better Trust Model&lt;/h2&gt;  &lt;p&gt;Since the data exchanged is yours -- shouldn't you decide whether you trust the organization you exchange data with? &lt;/p&gt;  &lt;p&gt;This could be solved by removing the intermediate steps in the trust chain. Either you trust the party you are exchanging data with, or you do not. The decision is yours and yours only.&lt;/p&gt;  &lt;p&gt;For example, when you establish a customer relationship with an organization, this organization could send you a self-signed digital certificate identifying itself. You would then choose whether you accept or reject this certificate.&lt;/p&gt;  &lt;h2&gt;Conclusion&lt;/h2&gt;  &lt;p&gt;TLS in itself is not broken, but the trust model employed is. Furthermore, the TLS protocol does not need to change, at least not significantly, to implement the improvements suggested. The key exchange part needs to be revised, and the way browsers handle digital certificates must change.&lt;/p&gt;  &lt;p&gt;But it would create an overall more trustworthy solution, removing an unnecessary middle man.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-1888737785411553154?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=2TyLdMSVrT4:bknzhOZDcBc:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=2TyLdMSVrT4:bknzhOZDcBc:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=2TyLdMSVrT4:bknzhOZDcBc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=2TyLdMSVrT4:bknzhOZDcBc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=2TyLdMSVrT4:bknzhOZDcBc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=2TyLdMSVrT4:bknzhOZDcBc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=2TyLdMSVrT4:bknzhOZDcBc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=2TyLdMSVrT4:bknzhOZDcBc:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=2TyLdMSVrT4:bknzhOZDcBc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/1888737785411553154/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2009/06/tls-broken-trust-model.html#comment-form" title="5 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/1888737785411553154?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/1888737785411553154?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2009/06/tls-broken-trust-model.html" title="TLS: A Broken Trust Model" /><author><name>Asgeir S. Nilsen</name><uri>http://www.blogger.com/profile/09990435798930983334</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_6m61GL21m8M/SKkyG5kUYWI/AAAAAAAAAj4/Lv8GAe3Kxjo/S220/540269450_da2f62fbea_b.jpg" /></author><thr:total>5</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;CUUCRXkzfip7ImA9WxJSF00.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-7556195743328634398</id><published>2009-05-07T15:29:00.002+02:00</published><updated>2009-05-07T15:34:24.786+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-07T15:34:24.786+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="password" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="english" /><title>Why submitting clear text passwords is bad</title><content type="html">&lt;div&gt;Jeff Atwood reminds me why even &lt;i&gt;submitting&lt;/i&gt; passwords in the clear to a web site can be dangerous:  You basically have to &lt;i&gt;trust&lt;/i&gt; that they are storing the password in a secure fashion. &lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Which they more often than not don't.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;a href="http://www.codinghorror.com/blog/archives/001263.html?r=15200#endcomments"&gt;Coding Horror: I Just Logged In As You: How It Happened&lt;/a&gt;: &lt;blockquote&gt;"I guess I can tell you, so you don't fall into this trap again. There's a site I help out with that doesn't salt their passwords. They're MD5 encrypted, but if you've got a dictionary password, it's very easy to use a reverse-MD5 site to get the original. I was able to figure out you were a user on the site some time back, and realized I could do this, if only I knew your openid provider..."&lt;/blockquote&gt;There are basically two ways of solving this:&lt;div&gt;&lt;ol&gt;&lt;li&gt;Use different passwords for different web sites.  &lt;a href="http://supergenpass.com/"&gt;SuperGenPass&lt;/a&gt; takes the hassle out of this by generating a password based on a master password and the site's domain name.&lt;/li&gt;&lt;li&gt;Hash the password in the browser before submitting.  My blog entry &lt;a href="/2005/11/password-authentication-without.html"&gt;Password Authentication Without Revealing Your Password&lt;/a&gt; demonstrates a solution to this one.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;I really wish client side hashing was more prominent than it is.  I have seen it in action only two or three times, one of those implemented by myself.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-7556195743328634398?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=oOmr4YQBaOA:b7BRJCHxRow:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=oOmr4YQBaOA:b7BRJCHxRow:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=oOmr4YQBaOA:b7BRJCHxRow:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=oOmr4YQBaOA:b7BRJCHxRow:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=oOmr4YQBaOA:b7BRJCHxRow:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=oOmr4YQBaOA:b7BRJCHxRow:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=oOmr4YQBaOA:b7BRJCHxRow:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=oOmr4YQBaOA:b7BRJCHxRow:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=oOmr4YQBaOA:b7BRJCHxRow:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/7556195743328634398/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2009/05/why-submitting-clear-text-passwords-is.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/7556195743328634398?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/7556195743328634398?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2009/05/why-submitting-clear-text-passwords-is.html" title="Why submitting clear text passwords is bad" /><author><name>Asgeir S. Nilsen</name><uri>http://www.blogger.com/profile/09990435798930983334</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_6m61GL21m8M/SKkyG5kUYWI/AAAAAAAAAj4/Lv8GAe3Kxjo/S220/540269450_da2f62fbea_b.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry><entry gd:etag="W/&quot;C0QNSH8zcCp7ImA9WxJSFk8.&quot;"><id>tag:blogger.com,1999:blog-5127857.post-3219204294341448392</id><published>2009-05-06T16:42:00.005+02:00</published><updated>2009-05-06T16:49:59.188+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-06T16:49:59.188+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="pirat" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter" /><category scheme="http://www.blogger.com/atom/ns#" term="krevsvar" /><title>Hemmelig kjennelse i Stavanger Tingrett om piratkopiering</title><content type="html">&lt;div&gt;&lt;a href="http://www.tu.no/it/article209110.ece"&gt;tu.no - Slik forklares hemmelig pirat-dom - Teknisk Ukeblad&lt;/a&gt;:&lt;/div&gt;&lt;blockquote&gt;"Dagbladet skrev tirsdag at Stavanger tingrett har avsagt hemmelig kjennelse i spørsmålet om Lyse Tele må utlevere identiteten til en av sine bredbåndskunder som er mistenkt for piratkopiering av «Max Manus»-filmen.&lt;/blockquote&gt;&lt;blockquote&gt;Spørsmålet er svært betent, fordi piratjegerne som vil ha identiteten er advokater som jobber på vegne av en privat kunde.&lt;/blockquote&gt;&lt;blockquote&gt;Idag er det bare politiet som kan kreve dette, men i et byråkratvedtak av Post- og teletilsynet er det åpnet for at advokatfirmaet kan kreve utlevering på egenhånd, uten å måtte gå via politiet.&lt;/blockquote&gt;&lt;blockquote&gt;Reaksjonene på dette har kommet på nettet, men politikerne har så langt holdt seg unna på tross av mange oppfordringer om å komme på banen."&lt;/blockquote&gt;Hvor er politikerne?  Er det slik vi vil ha det?&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Dommeren som har avsagt kjennelsen har tatt ferie.  Tilfeldig?&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Se kommentarene på Twitter: &lt;a href="http://search.twitter.com/search?q=%23krevsvar"&gt;#krevsvar&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5127857-3219204294341448392?l=blog.asgeirnilsen.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=zpd8KwUcN7U:bWVJBKiw0ZE:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=zpd8KwUcN7U:bWVJBKiw0ZE:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=zpd8KwUcN7U:bWVJBKiw0ZE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=zpd8KwUcN7U:bWVJBKiw0ZE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=zpd8KwUcN7U:bWVJBKiw0ZE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?i=zpd8KwUcN7U:bWVJBKiw0ZE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=zpd8KwUcN7U:bWVJBKiw0ZE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=zpd8KwUcN7U:bWVJBKiw0ZE:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/asgeirn?a=zpd8KwUcN7U:bWVJBKiw0ZE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/asgeirn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.asgeirnilsen.com/feeds/3219204294341448392/comments/default" title="Legg inn kommentarer" /><link rel="replies" type="text/html" href="http://blog.asgeirnilsen.com/2009/05/hemmelig-kjennelse-i-stavanger-tingrett.html#comment-form" title="0 Kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/3219204294341448392?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5127857/posts/default/3219204294341448392?v=2" /><link rel="alternate" type="text/html" href="http://blog.asgeirnilsen.com/2009/05/hemmelig-kjennelse-i-stavanger-tingrett.html" title="Hemmelig kjennelse i Stavanger Tingrett om piratkopiering" /><author><name>Asgeir S. Nilsen</name><uri>http://www.blogger.com/profile/09990435798930983334</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_6m61GL21m8M/SKkyG5kUYWI/AAAAAAAAAj4/Lv8GAe3Kxjo/S220/540269450_da2f62fbea_b.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></entry></feed>

