<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-14589096</id><updated>2012-05-21T08:11:14.875+02:00</updated><category term='olympics'/><category term='scala'/><category term='Versager'/><category term='funny'/><category term='clojure'/><category term='python'/><category term='twitter'/><category term='programming'/><category term='time wasting'/><category term='zensur'/><category term='social'/><category term='testing'/><category term='nonsense'/><category term='Verbrecher'/><category term='quiz'/><title type='text'>Gerhard Häring</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.ghaering.de/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default'/><link rel='alternate' type='text/html' href='http://blog.ghaering.de/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gerhard Häring</name><uri>https://profiles.google.com/102960595911713297609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-Ep3RCjTS4dY/AAAAAAAAAAI/AAAAAAAAAe0/A96zAomOIpU/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-14589096.post-6587727714926729637</id><published>2012-01-03T01:16:00.001+01:00</published><updated>2012-01-03T01:19:19.589+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clojure'/><title type='text'>Vocabulary trainer in Clojure</title><content type='html'>&lt;title&gt;~/src/gh/voc/train.clj.html&lt;/title&gt;    &lt;style type="text/css"&gt;&lt;!-- pre { font-family: monospace; color: #cccccc; background-color: #000000; } body { font-family: monospace; color: #cccccc; background-color: #000000; } .clojureParen8 { color: #ff00ff; } .clojureParen7 { color: #836fff; } .clojureParen6 { color: #00ffff; } .clojureParen5 { color: #00ff7f; } .clojureParen4 { color: #00ff00; } .clojureParen3 { color: #adff2f; } .clojureParen2 { color: #ffff00; } .clojureParen1 { color: #ffa500; } .Constant { color: #ffa0a0; } .Comment { color: #80a0ff; } .Statement { color: #ffff00; } .Identifier { color: #40ffff; } .Special { color: #ffa500; } --&gt;&lt;/style&gt;  &lt;br /&gt;&lt;pre&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;use&lt;/span&gt; &lt;span class="Special"&gt;'&lt;/span&gt;&lt;span class="Special"&gt;[&lt;/span&gt;clojure.string &lt;span class="Statement"&gt;:only&lt;/span&gt;&lt;span class="clojureVector"&gt; &lt;/span&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="clojureSexpLevel0"&gt;split split-lines&lt;/span&gt;&lt;span class="Special"&gt;)])&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Comment"&gt;; file is tab-seperated pairs of foreign and native words&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Special"&gt;let&lt;/span&gt; &lt;span class="Special"&gt;[&lt;/span&gt;contents &lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;slurp&lt;/span&gt;&lt;span class="clojureSexpLevel0"&gt; &lt;/span&gt;&lt;span class="Constant"&gt;"100a.txt"&lt;/span&gt;&lt;span class="clojureSexpLevel0"&gt; &lt;/span&gt;&lt;span class="Statement"&gt;:encoding&lt;/span&gt;&lt;span class="clojureSexpLevel0"&gt; &lt;/span&gt;&lt;span class="Constant"&gt;"utf-8"&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;&lt;br /&gt;      lines &lt;span class="Special"&gt;(&lt;/span&gt;split-lines contents&lt;span class="Special"&gt;)&lt;/span&gt;&lt;br /&gt;      pairs &lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;map&lt;/span&gt; &lt;span class="Special"&gt;#(&lt;/span&gt;split &lt;span class="Special"&gt;%&lt;/span&gt;&lt;span class="clojureAnonFn"&gt; &lt;/span&gt;&lt;span class="Constant"&gt;#"\t"&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;&lt;span class="clojureSexpLevel0"&gt; lines&lt;/span&gt;&lt;span class="Special"&gt;)]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="clojureParen1"&gt;(&lt;/span&gt;&lt;span class="Special"&gt;loop&lt;/span&gt; &lt;span class="Special"&gt;[&lt;/span&gt;my-pairs &lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;shuffle&lt;/span&gt;&lt;span class="clojureSexpLevel0"&gt; pairs&lt;/span&gt;&lt;span class="Special"&gt;)]&lt;/span&gt;&lt;br /&gt;    &lt;span class="clojureParen2"&gt;(&lt;/span&gt;&lt;span class="Special"&gt;let&lt;/span&gt; &lt;span class="Special"&gt;[&lt;/span&gt;pair &lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;first&lt;/span&gt; my-pairs&lt;span class="Special"&gt;)]&lt;/span&gt;&lt;br /&gt;      &lt;span class="clojureParen3"&gt;(&lt;/span&gt;&lt;span class="Special"&gt;do&lt;/span&gt;&lt;br /&gt;        &lt;span class="clojureParen4"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;println&lt;/span&gt;&lt;span class="clojureParen4"&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span class="clojureParen4"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;println&lt;/span&gt; &lt;span class="clojureParen5"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;first&lt;/span&gt; &lt;span class="clojureParen6"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;first&lt;/span&gt; my-pairs&lt;span class="clojureParen6"&gt;)&lt;/span&gt;&lt;span class="clojureParen5"&gt;)&lt;/span&gt;&lt;span class="clojureParen4"&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span class="clojureParen4"&gt;(&lt;/span&gt;&lt;span class="Special"&gt;if&lt;/span&gt; &lt;span class="clojureParen5"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;not=&lt;/span&gt; &lt;span class="clojureParen6"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;read-line&lt;/span&gt;&lt;span class="clojureParen6"&gt;)&lt;/span&gt;&lt;span class="clojureSexpLevel5"&gt; &lt;/span&gt;&lt;span class="clojureParen6"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;second&lt;/span&gt; pair&lt;span class="clojureParen6"&gt;)&lt;/span&gt;&lt;span class="clojureParen5"&gt;)&lt;/span&gt;&lt;br /&gt;          &lt;span class="clojureParen5"&gt;(&lt;/span&gt;&lt;span class="Special"&gt;do&lt;/span&gt;&lt;br /&gt;            &lt;span class="clojureParen6"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;println&lt;/span&gt; &lt;span class="Constant"&gt;"wrong, correct is:"&lt;/span&gt;&lt;span class="clojureSexpLevel6"&gt; &lt;/span&gt;&lt;span class="clojureParen7"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;second&lt;/span&gt; pair&lt;span class="clojureParen7"&gt;)&lt;/span&gt;&lt;span class="clojureParen6"&gt;)&lt;/span&gt;&lt;br /&gt;            &lt;span class="clojureParen6"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;recur&lt;/span&gt; &lt;span class="clojureParen7"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;shuffle&lt;/span&gt; my-pairs&lt;span class="clojureParen7"&gt;)&lt;/span&gt;&lt;span class="clojureParen6"&gt;)&lt;/span&gt;&lt;span class="clojureParen5"&gt;)&lt;/span&gt;&lt;br /&gt;          &lt;span class="clojureParen5"&gt;(&lt;/span&gt;&lt;span class="Special"&gt;do&lt;/span&gt;&lt;br /&gt;            &lt;span class="clojureParen6"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;println&lt;/span&gt; &lt;span class="Constant"&gt;"correct"&lt;/span&gt;&lt;span class="clojureParen6"&gt;)&lt;/span&gt;&lt;br /&gt;            &lt;span class="clojureParen6"&gt;(&lt;/span&gt;&lt;span class="Special"&gt;if&lt;/span&gt; &lt;span class="clojureParen7"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;seq&lt;/span&gt; &lt;span class="clojureParen8"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;rest&lt;/span&gt; my-pairs&lt;span class="clojureParen8"&gt;)&lt;/span&gt;&lt;span class="clojureParen7"&gt;)&lt;/span&gt;&lt;span class="clojureSexpLevel6"&gt; &lt;/span&gt;&lt;span class="Comment"&gt;; (seq idiomatic for (not (empty?&lt;/span&gt;&lt;br /&gt;              &lt;span class="clojureParen7"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;recur&lt;/span&gt; &lt;span class="clojureParen8"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;rest&lt;/span&gt; my-pairs&lt;span class="clojureParen8"&gt;)&lt;/span&gt;&lt;span class="clojureParen7"&gt;)&lt;/span&gt;&lt;span class="clojureParen6"&gt;)&lt;/span&gt;&lt;span class="clojureParen5"&gt;)&lt;/span&gt;&lt;span class="clojureParen4"&gt;)&lt;/span&gt;&lt;span class="clojureParen3"&gt;)&lt;/span&gt;&lt;span class="clojureParen2"&gt;)&lt;/span&gt;&lt;span class="clojureParen1"&gt;)&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14589096-6587727714926729637?l=blog.ghaering.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ghaering.de/feeds/6587727714926729637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14589096&amp;postID=6587727714926729637' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/6587727714926729637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/6587727714926729637'/><link rel='alternate' type='text/html' href='http://blog.ghaering.de/2012/01/vocabulary-trainer-in-clojure.html' title='Vocabulary trainer in Clojure'/><author><name>Gerhard Häring</name><uri>https://profiles.google.com/102960595911713297609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-Ep3RCjTS4dY/AAAAAAAAAAI/AAAAAAAAAe0/A96zAomOIpU/s512-c/photo.jpg'/></author><thr:total>0</thr:total><georss:featurename>Harburg, Germany</georss:featurename><georss:point>53.556866 9.994622</georss:point><georss:box>53.2550405 9.362908 53.8586915 10.626336</georss:box></entry><entry><id>tag:blogger.com,1999:blog-14589096.post-1086452207543787288</id><published>2012-01-02T11:44:00.003+01:00</published><updated>2012-01-03T01:20:59.510+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clojure'/><title type='text'>Monty Hall problem in Clojure</title><content type='html'>&lt;title&gt;~/src/gh/goat.clj.html&lt;/title&gt;    &lt;style type="text/css"&gt;&lt;!-- pre { font-family: monospace; color: #cccccc; background-color: #000000; } body { font-family: monospace; color: #cccccc; background-color: #000000; } .Constant { color: #ffa0a0; } .clojureParen3 { color: #adff2f; } .Statement { color: #ffff00; } .clojureParen2 { color: #ffff00; } .Identifier { color: #40ffff; } .clojureParen1 { color: #ffa500; } .PreProc { color: #ff80ff; } .Special { color: #ffa500; } .Comment { color: #80a0ff; } --&gt;&lt;/style&gt;  &lt;br /&gt;&lt;pre&gt;&lt;span class="Comment"&gt;; Monty Hall problem in Clojure&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="PreProc"&gt;defn&lt;/span&gt; pick-first-guess &lt;span class="Special"&gt;[&lt;/span&gt;doors&lt;span class="Special"&gt;]&lt;/span&gt;&lt;br /&gt;  &lt;span class="clojureParen1"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;first&lt;/span&gt; doors&lt;span class="clojureParen1"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="Special"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="PreProc"&gt;defn&lt;/span&gt; change-guess &lt;span class="Special"&gt;[&lt;/span&gt;doors&lt;span class="Special"&gt;]&lt;/span&gt;&lt;br /&gt;  &lt;span class="clojureParen1"&gt;(&lt;/span&gt;&lt;span class="Special"&gt;if&lt;/span&gt; &lt;span class="clojureParen2"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;=&lt;/span&gt; &lt;span class="Statement"&gt;:goat&lt;/span&gt;&lt;span class="clojureSexpLevel2"&gt; &lt;/span&gt;&lt;span class="clojureParen3"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;second&lt;/span&gt; doors&lt;span class="clojureParen3"&gt;)&lt;/span&gt;&lt;span class="clojureParen2"&gt;)&lt;/span&gt;&lt;span class="clojureSexpLevel1"&gt; &lt;/span&gt;&lt;span class="clojureParen2"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;last&lt;/span&gt;&lt;span class="clojureSexpLevel2"&gt; doors&lt;/span&gt;&lt;span class="clojureParen2"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class="clojureParen2"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;second&lt;/span&gt; doors&lt;span class="clojureParen2"&gt;)&lt;/span&gt;&lt;span class="clojureParen1"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="Special"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Special"&gt;def&lt;/span&gt; samples &lt;span class="clojureParen1"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;map&lt;/span&gt; &lt;span class="Identifier"&gt;shuffle&lt;/span&gt;&lt;span class="clojureSexpLevel1"&gt; &lt;/span&gt;&lt;span class="clojureParen2"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;repeat&lt;/span&gt; &lt;span class="Constant"&gt;1000&lt;/span&gt;&lt;span class="clojureSexpLevel2"&gt; &lt;/span&gt;&lt;span class="Special"&gt;[&lt;/span&gt;&lt;span class="Statement"&gt;:goat&lt;/span&gt; &lt;span class="Statement"&gt;:goat&lt;/span&gt;&lt;span class="clojureVector"&gt; &lt;/span&gt;&lt;span class="Statement"&gt;:car&lt;/span&gt;&lt;span class="Special"&gt;]&lt;/span&gt;&lt;span class="clojureParen2"&gt;)&lt;/span&gt;&lt;span class="clojureParen1"&gt;)&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;count&lt;/span&gt; &lt;span class="clojureParen1"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;filter&lt;/span&gt; &lt;span class="Special"&gt;#(&lt;/span&gt;&lt;span class="Identifier"&gt;=&lt;/span&gt; &lt;span class="Special"&gt;%&lt;/span&gt;&lt;span class="clojureAnonFn"&gt; &lt;/span&gt;&lt;span class="Statement"&gt;:car&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;&lt;span class="clojureSexpLevel1"&gt; &lt;/span&gt;&lt;span class="clojureParen2"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;map&lt;/span&gt; pick-first-guess samples&lt;span class="clojureParen2"&gt;)&lt;/span&gt;&lt;span class="clojureParen1"&gt;)&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="Special"&gt;(&lt;/span&gt;&lt;span class="Identifier"&gt;count&lt;/span&gt; &lt;span class="clojureParen1"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;filter&lt;/span&gt; &lt;span class="Special"&gt;#(&lt;/span&gt;&lt;span class="Identifier"&gt;=&lt;/span&gt; &lt;span class="Special"&gt;%&lt;/span&gt;&lt;span class="clojureAnonFn"&gt; &lt;/span&gt;&lt;span class="Statement"&gt;:car&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;&lt;span class="clojureSexpLevel1"&gt; &lt;/span&gt;&lt;span class="clojureParen2"&gt;(&lt;/span&gt;&lt;span class="Statement"&gt;map&lt;/span&gt; change-guess samples&lt;span class="clojureParen2"&gt;)&lt;/span&gt;&lt;span class="clojureParen1"&gt;)&lt;/span&gt;&lt;span class="Special"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14589096-1086452207543787288?l=blog.ghaering.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ghaering.de/feeds/1086452207543787288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14589096&amp;postID=1086452207543787288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/1086452207543787288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/1086452207543787288'/><link rel='alternate' type='text/html' href='http://blog.ghaering.de/2012/01/monty-hall-problem-in-clojure.html' title='Monty Hall problem in Clojure'/><author><name>Gerhard Häring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14589096.post-6633017348807187041</id><published>2010-08-31T13:24:00.000+02:00</published><updated>2010-08-31T13:24:14.183+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social'/><category scheme='http://www.blogger.com/atom/ns#' term='quiz'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='time wasting'/><title type='text'>Twitter Spelling Test</title><content type='html'>&lt;a href="http://theoatmeal.com/quiz/twitter_spell"&gt;&lt;img src="http://theoatmeal.com/img/quizzes/generated/8_95_a.jpg" alt="The Twitter Spelling Test" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Created by &lt;a href="http://theoatmeal.com"&gt;Oatmeal&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14589096-6633017348807187041?l=blog.ghaering.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ghaering.de/feeds/6633017348807187041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14589096&amp;postID=6633017348807187041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/6633017348807187041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/6633017348807187041'/><link rel='alternate' type='text/html' href='http://blog.ghaering.de/2010/08/twitter-spelling-test.html' title='Twitter Spelling Test'/><author><name>Gerhard Häring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14589096.post-8918143793525444732</id><published>2010-03-25T12:34:00.000+01:00</published><updated>2010-03-25T12:34:08.418+01:00</updated><title type='text'>Youtube down</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;I've seen that for the first time in years.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_h1AHp80pJ6g/S6tKEx1fg-I/AAAAAAAAAM4/cesqvs2xe08/s1600/youtube_down.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_h1AHp80pJ6g/S6tKEx1fg-I/AAAAAAAAAM4/cesqvs2xe08/s320/youtube_down.png" /&gt;&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/14589096-8918143793525444732?l=blog.ghaering.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ghaering.de/feeds/8918143793525444732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14589096&amp;postID=8918143793525444732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/8918143793525444732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/8918143793525444732'/><link rel='alternate' type='text/html' href='http://blog.ghaering.de/2010/03/youtube-down.html' title='Youtube down'/><author><name>Gerhard Häring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_h1AHp80pJ6g/S6tKEx1fg-I/AAAAAAAAAM4/cesqvs2xe08/s72-c/youtube_down.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14589096.post-3332665708185431406</id><published>2010-03-18T10:31:00.000+01:00</published><updated>2010-03-18T10:31:25.971+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Experimenting with Scala</title><content type='html'>This is my first useful &lt;b&gt;Scala&lt;/b&gt; program. It was ported from a Python program (see below). In 1993 I wrote an equivalent in Modula-2 ;-)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;import scala.io.Source;&lt;br /&gt;import java.io.File;&lt;br /&gt;import scala.util.Random;&lt;br /&gt;&lt;br /&gt;object voc {&lt;br /&gt;  def train(lst : List[Tuple2[String, String]]) : Unit = {&lt;br /&gt;    println();&lt;br /&gt;    if (lst.length == 0) {&lt;br /&gt;      println(":-D");&lt;br /&gt;      return;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    val shuffled = Random.shuffle(lst);&lt;br /&gt;    val current = shuffled.head;&lt;br /&gt;    println("&gt;&gt;&gt; " + current._1);&lt;br /&gt;    var line = Console.readLine();&lt;br /&gt;    if (line == current._2) {&lt;br /&gt;      println("correct");&lt;br /&gt;      train(shuffled.tail);&lt;br /&gt;    } else {&lt;br /&gt;      print("\007");&lt;br /&gt;      println("wrong - correct is: " + current._2);&lt;br /&gt;      train(shuffled);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  def main(args: Array[String]) {&lt;br /&gt;    val lst = Source.fromFile(new File(args(0))).getLines()&lt;br /&gt;          .map { s =&gt; s.split("\t") }&lt;br /&gt;          .filter( l =&gt; l.length == 2 )&lt;br /&gt;          .map (l =&gt; Tuple2(l.head, l.last))&lt;br /&gt;          .toList;&lt;br /&gt;&lt;br /&gt;    train(lst);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Python version:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;from __future__ import with_statement&lt;br /&gt;import random&lt;br /&gt;import sys&lt;br /&gt;&lt;br /&gt;def train(lst):&lt;br /&gt;    while len(lst) &gt; 0:&lt;br /&gt;        random.shuffle(lst)&lt;br /&gt;&lt;br /&gt;        lang1, lang2 = lst[0]&lt;br /&gt;&lt;br /&gt;        print "&gt;&gt;&gt;", lang1&lt;br /&gt;        try:&lt;br /&gt;            answer = raw_input("answer: ").strip()&lt;br /&gt;        except EOFError:&lt;br /&gt;            # ^Z pressed, ignore&lt;br /&gt;            continue&lt;br /&gt;&lt;br /&gt;        if answer == lang2:&lt;br /&gt;            print "correct"&lt;br /&gt;            lst = lst[1:]&lt;br /&gt;        else:&lt;br /&gt;            print chr(7)&lt;br /&gt;            print "wrong - correct is =&gt;", lang2&lt;br /&gt;&lt;br /&gt;        print&lt;br /&gt;        print&lt;br /&gt;&lt;br /&gt;    print ":-D"&lt;br /&gt;&lt;br /&gt;def main():&lt;br /&gt;    filename = sys.argv[1]&lt;br /&gt;&lt;br /&gt;    lst = []&lt;br /&gt;    for line in open(filename):&lt;br /&gt;        line = line.strip()&lt;br /&gt;        if not line:&lt;br /&gt;            continue&lt;br /&gt;        parts = line.split("\t")&lt;br /&gt;        assert len(parts) == 2&lt;br /&gt;        lst.append(parts)&lt;br /&gt;&lt;br /&gt;    train(lst)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if __name__ == "__main__":&lt;br /&gt;    main()&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14589096-3332665708185431406?l=blog.ghaering.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ghaering.de/feeds/3332665708185431406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14589096&amp;postID=3332665708185431406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/3332665708185431406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/3332665708185431406'/><link rel='alternate' type='text/html' href='http://blog.ghaering.de/2010/03/experimenting-with-scala.html' title='Experimenting with Scala'/><author><name>Gerhard Häring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14589096.post-7462986854284283177</id><published>2010-03-14T17:24:00.000+01:00</published><updated>2010-03-14T17:24:45.134+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>PHP, the forgotten programming language</title><content type='html'>I just took a quiz and had a complete blackout of PHP. Can &lt;b&gt;you&lt;/b&gt; name the 25 most popular programming languages? Quiz &lt;a href="http://www.sporcle.com/games/moogles/programlanguages"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_h1AHp80pJ6g/S50NoxQVieI/AAAAAAAAAMw/TyyPB_DoO3I/s1600-h/PHP_Blackout.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_h1AHp80pJ6g/S50NoxQVieI/AAAAAAAAAMw/TyyPB_DoO3I/s320/PHP_Blackout.png" /&gt;&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/14589096-7462986854284283177?l=blog.ghaering.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ghaering.de/feeds/7462986854284283177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14589096&amp;postID=7462986854284283177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/7462986854284283177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/7462986854284283177'/><link rel='alternate' type='text/html' href='http://blog.ghaering.de/2010/03/php-forgotten-programming-language.html' title='PHP, the forgotten programming language'/><author><name>Gerhard Häring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_h1AHp80pJ6g/S50NoxQVieI/AAAAAAAAAMw/TyyPB_DoO3I/s72-c/PHP_Blackout.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14589096.post-8619657230640138106</id><published>2010-02-17T17:16:00.000+01:00</published><updated>2010-02-17T17:17:39.570+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nonsense'/><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><category scheme='http://www.blogger.com/atom/ns#' term='olympics'/><title type='text'>Olympic Winter Games</title><content type='html'>How little do &lt;b&gt;you &lt;/b&gt;care?&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_h1AHp80pJ6g/S3wWED-M2yI/AAAAAAAAAMM/E91zHAnrjik/s1600-h/spam_wintergames.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_h1AHp80pJ6g/S3wWED-M2yI/AAAAAAAAAMM/E91zHAnrjik/s400/spam_wintergames.png" width="380" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Vote at &lt;a href="http://www.spiegel.de/spam/0,1518,678370,00.html"&gt;SPON&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14589096-8619657230640138106?l=blog.ghaering.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ghaering.de/feeds/8619657230640138106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14589096&amp;postID=8619657230640138106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/8619657230640138106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/8619657230640138106'/><link rel='alternate' type='text/html' href='http://blog.ghaering.de/2010/02/olympic-winter-games.html' title='Olympic Winter Games'/><author><name>Gerhard Häring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_h1AHp80pJ6g/S3wWED-M2yI/AAAAAAAAAMM/E91zHAnrjik/s72-c/spam_wintergames.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14589096.post-6460930303809178164</id><published>2010-01-18T17:39:00.000+01:00</published><updated>2010-01-18T17:39:24.533+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Versager'/><category scheme='http://www.blogger.com/atom/ns#' term='Verbrecher'/><title type='text'>Schreiber vs. Brüderle</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_h1AHp80pJ6g/S1SNjTIN5gI/AAAAAAAAAME/X6TSO9a3MvU/s1600-h/schreiber.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_h1AHp80pJ6g/S1SNjTIN5gI/AAAAAAAAAME/X6TSO9a3MvU/s320/schreiber.jpg" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_h1AHp80pJ6g/S1SNgMfXLbI/AAAAAAAAAL8/xmFEBBCWGzY/s1600-h/bruederle.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_h1AHp80pJ6g/S1SNgMfXLbI/AAAAAAAAAL8/xmFEBBCWGzY/s320/bruederle.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14589096-6460930303809178164?l=blog.ghaering.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ghaering.de/feeds/6460930303809178164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14589096&amp;postID=6460930303809178164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/6460930303809178164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/6460930303809178164'/><link rel='alternate' type='text/html' href='http://blog.ghaering.de/2010/01/schreiber-vs-bruderle.html' title='Schreiber vs. Brüderle'/><author><name>Gerhard Häring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_h1AHp80pJ6g/S1SNjTIN5gI/AAAAAAAAAME/X6TSO9a3MvU/s72-c/schreiber.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14589096.post-8458065503244559197</id><published>2009-11-05T01:15:00.000+01:00</published><updated>2009-11-05T01:16:29.671+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Interesting read about unit tests</title><content type='html'>&lt;a href="http://blogs.msdn.com/cashto/archive/2009/03/31/it-s-ok-not-to-write-unit-tests.aspx"&gt;It's OK Not to Write Unit Tests &lt;/a&gt; is an interesting blog post. Recommended to make you think again why you write them, if what you're writing are really unit tests, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14589096-8458065503244559197?l=blog.ghaering.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ghaering.de/feeds/8458065503244559197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14589096&amp;postID=8458065503244559197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/8458065503244559197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/8458065503244559197'/><link rel='alternate' type='text/html' href='http://blog.ghaering.de/2009/11/interesting-read-about-unit-tests.html' title='Interesting read about unit tests'/><author><name>Gerhard Häring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14589096.post-1808979620672815391</id><published>2009-10-05T13:06:00.000+02:00</published><updated>2009-10-05T13:11:01.136+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zensur'/><title type='text'>Unverständnis bei Bosbach von CDU</title><content type='html'>"Ich verstehe die Kritik der Liberalen an den auf Kinderpornografie beschränkten Netzsperren nicht." Es gebe kein Recht auf ungehinderten Zugriff auf Kinderpornografie im Internet, betonte Bosbach.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.spiegel.de/netzwelt/web/0,1518,652802,00.html"&gt;Netzwelt-Ticker: Google Wave strandet an der Hypeküste - SPIEGEL ONLINE - Nachrichten - Netzwelt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Liberale wollen im Internet weiter freien Zugriff auf KiPo haben, während die CDU das Netz für uns sicher machen will. So einfach ist das-&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14589096-1808979620672815391?l=blog.ghaering.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ghaering.de/feeds/1808979620672815391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14589096&amp;postID=1808979620672815391' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/1808979620672815391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/1808979620672815391'/><link rel='alternate' type='text/html' href='http://blog.ghaering.de/2009/10/unverstandnis-bei-bosbach-von-cdu.html' title='Unverständnis bei Bosbach von CDU'/><author><name>Gerhard Häring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14589096.post-8426734711584091745</id><published>2009-06-16T10:09:00.000+02:00</published><updated>2009-06-16T10:10:07.677+02:00</updated><title type='text'>2009-01-07: Creating self-signed certificates</title><content type='html'>Note to self: When my self-signed certificate for my mail server expires next year at about the same time, this should fix it:&lt;br /&gt;&lt;blockquote&gt;openssl req -config /etc/ssl/openssl.cnf \&lt;br /&gt;-new -x509 -nodes -out /etc/ssl/certs/dovecot.pem \&lt;br /&gt;-keyout /etc/ssl/private/dovecot.pem&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14589096-8426734711584091745?l=blog.ghaering.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ghaering.de/feeds/8426734711584091745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14589096&amp;postID=8426734711584091745' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/8426734711584091745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/8426734711584091745'/><link rel='alternate' type='text/html' href='http://blog.ghaering.de/2009/06/2009-01-07-creating-self-signed.html' title='2009-01-07: Creating self-signed certificates'/><author><name>Gerhard Häring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14589096.post-112168772661379635</id><published>2005-07-18T13:52:00.000+02:00</published><updated>2009-11-05T01:16:56.200+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>The really hard bugs ...</title><content type='html'>D. Richard Hipp today on the SQLite mailing list:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-style: italic;"&gt;I am constantly amazed at the prevailing idea (exemplified&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-style: italic;"&gt;by Java) that software should be strongly typed and should&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-style: italic;"&gt;not use goto statement or pointers - all in the name of&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-style: italic;"&gt;reducing bugs - but that it is OK to use multiple threads&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-style: italic;"&gt;within the same address space.  Strong typing helps prevent&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-style: italic;"&gt;only bugs that are trivially easy to locate and fix.  The&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-style: italic;"&gt;use of goto statements and pointers likewise results in&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-style: italic;"&gt;deterministic problems that are easy to test for and&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-style: italic;"&gt;relatively easy to track down and correct.  But threading&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-style: italic;"&gt;bugs tend to manifest themselves as timing-dependent&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-style: italic;"&gt;glitches and lock-ups that are hardware and platform&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-style: italic;"&gt;dependent, that never happen the same way twice, and that&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-style: italic;"&gt;only appear for customers after deployment and never in a&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-style: italic;"&gt;testing environment.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14589096-112168772661379635?l=blog.ghaering.de' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ghaering.de/feeds/112168772661379635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14589096&amp;postID=112168772661379635' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/112168772661379635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/posts/default/112168772661379635'/><link rel='alternate' type='text/html' href='http://blog.ghaering.de/2005/07/really-hard-bugs.html' title='The really hard bugs ...'/><author><name>Gerhard Häring</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
