<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>A view from the hill - Computer</title>
    <link>http://hillview.1on.de/</link>
    <description>Blogging Holgers little world</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.3.1 - http://www.s9y.org/</generator>
    <pubDate>Fri, 20 Apr 2012 07:33:47 GMT</pubDate>

    <image>
        <url>http://hillview.1on.de/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: A view from the hill - Computer - Blogging Holgers little world</title>
        <link>http://hillview.1on.de/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>I'll never be anybody's hero now</title>
    <link>http://hillview.1on.de/archives/188-Ill-never-be-anybodys-hero-now.html</link>
            <category>Programming</category>
    
    <comments>http://hillview.1on.de/archives/188-Ill-never-be-anybodys-hero-now.html#comments</comments>
    <wfw:comment>http://hillview.1on.de/wfwcomment.php?cid=188</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://hillview.1on.de/rss.php?version=2.0&amp;type=comments&amp;cid=188</wfw:commentRss>
    

    <author>nospam@example.com (Holger Schauer)</author>
    <content:encoded>
    One aspect I think is important for a Scrum Master or Project Manager is to make sure that your team doesn&#039;t go on a trip to Vienna (if that term doesn&#039;t ring a bell, search for &quot;Tom DeMarco peopleware&quot;). Quite contrary to popular management belief, I think in general it&#039;s not okay if &quot;occasionally&quot; somebody on the team &quot;puts in some extra work&quot;. There is a reason why many agile methodologies insist on keeping a &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=793&amp;amp;entry_id=188&quot;  onmouseover=&quot;window.status=&#039;http://www.infoq.com/news/2008/05/sustainable-pace&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.infoq.com/news/2008/05/sustainable-pace&quot;&gt;sustainable pace&lt;/a&gt;. Besides all of the very good reasons for making sure your team members stay healthy (see this &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=791&amp;amp;entry_id=188&quot;  onmouseover=&quot;window.status=&#039;http://geon.github.com/Personal/2012/04/07/burnout/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://geon.github.com/Personal/2012/04/07/burnout/&quot;&gt;Burnout story&lt;/a&gt; as a negative example), there is also a management point to it: your understanding of what the team is capable of (in terms of results/effort, aka velocity) decreases substantially if you have to take &quot;heroic behaviour&quot; into account.  It&#039;s particular bad when you don&#039;t see the connection between reached goals and involved effort, i.e. when team members just move their card from &quot;working&quot; to &quot;done&quot; late in the evening without making clear that it involved five hours more than initially estimated. &lt;br /&gt;
&lt;br /&gt;
Heroic behaviour just can&#039;t be counted on, because nobody will be able to keep it up over a substantial amount of time (that&#039;s the very definition of not being substainable). It&#039;s highly understandable that project members after having committed to some goal can be tempted to go out of their way to reach it. What team members might miss is that &quot;heroic behaviour&quot; can only have an influence on the &quot;time&quot; aspect of the magic triangle of &quot;time, budget and quality&quot;. Extra effort is just that: effort. Hence, it comes with a cost, with the cost it just takes to reach the goal. I&#039;ve also seen that there is a misunderstanding of the term &quot;commitment&quot;. It&#039;s not an unconditional promise of &quot;I can do that task with the effort I think it takes&quot;, there is also the implicit condition of &quot;I understand correctly what the task involves and  there is no other external negative influence&quot; (e.g. the urgent bug that needs to be looked at, or the lack of sleep during three days of the week due to the kids being sick at home). &lt;br /&gt;
&lt;br /&gt;
Commitment to a particular goal might at times conflict with taking responsibility for the project as a whole. As a general rule of thumb it&#039;s nearly always much more important to think about the entire project / the big picture than about a small aspect of it. There is the exceptional situation that needs exceptional reaction and maybe exceptional effort. But it&#039;s important to treat it like an exceptional situation. And for these exceptional situations it&#039;s vital that they get treated like a mini project: they should have a clear purpose and have fixed start and end dates. Plus, they should come with a compensation. Scrum Masters and project managers alike should communicate clearly that exceptions are exceptions, not the rule. And team members should clearly communicate that it takes what it takes. When it comes to professional work, follow the &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=792&amp;amp;entry_id=188&quot;  onmouseover=&quot;window.status=&#039;http://501manifesto.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://501manifesto.org/&quot;&gt;501 manifesto&lt;/a&gt; (in case you don&#039;t directly understand the &quot;501&quot; part like I did: it&#039;s not about jeans, but about leaving at 5:01pm).&lt;br /&gt;
&lt;br /&gt;
ObTitle: &lt;i&gt;Morrissey&lt;/i&gt;, from &quot;Ringleader of the tormentors&quot; 
    </content:encoded>

    <pubDate>Fri, 20 Apr 2012 09:00:26 +0200</pubDate>
    <guid isPermaLink="false">http://hillview.1on.de/archives/188-guid.html</guid>
    <category>agile</category>
<category>project management</category>

</item>
<item>
    <title>New year meme</title>
    <link>http://hillview.1on.de/archives/186-New-year-meme.html</link>
            <category>Programming</category>
    
    <comments>http://hillview.1on.de/archives/186-New-year-meme.html#comments</comments>
    <wfw:comment>http://hillview.1on.de/wfwcomment.php?cid=186</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://hillview.1on.de/rss.php?version=2.0&amp;type=comments&amp;cid=186</wfw:commentRss>
    

    <author>nospam@example.com (Holger Schauer)</author>
    <content:encoded>
    Tarek Ziades repeated his &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=779&amp;amp;entry_id=186&quot;  onmouseover=&quot;window.status=&#039;https://tarekziade.wordpress.com/2011/12/20/new-years-python-meme-2/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;https://tarekziade.wordpress.com/2011/12/20/new-years-python-meme-2/&quot;&gt;Python new year meme&lt;/a&gt; in which he summarizes his accomplishments in the Python world this year and his considerations for the new year. As I stopped working as a Python developer some time ago, I will hence drop the Python restriction although I will keep the restriction on only looking at developer questions. &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;1. What’s the coolest developer application, framework or library you have discovered in 2011?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Mostly stuff I already new about but hadn&#039;t specifically the chance to use previously, so actually there was probably nothing which I would call &#039;cool&#039;. For one, I started using git this year. For other projects, I took the next step and started hosting my Mercurial repositories at &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=780&amp;amp;entry_id=186&quot;  onmouseover=&quot;window.status=&#039;http://bitbucket.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://bitbucket.org/&quot;&gt;bitbucket&lt;/a&gt;. For another, I used nose for unit testing my Python stuff.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;2. What new programming technique did you learn in 2011?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Probably the most interesting stuff I learned this year was from me finally reading &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=781&amp;amp;entry_id=186&quot;  onmouseover=&quot;window.status=&#039;http://www.cliki.net/AMOP&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.cliki.net/AMOP&quot;&gt;AMOP (the Art of the Meta-Object Protocol)&lt;/a&gt;, thereby learning a lot about the meta object protocol in Common Lisp and how it&#039;s related to CLOS. However, I didn&#039;t really put it to use much, although in hindsight I recognized that I&#039;ve used stuff from it previously without understanding the complete picture. There was also a lot of &#039;enterprise technology&#039; I looked into this year but nothing could be directly be labeled a &#039;programming technique&#039;. Otherwise I think I mainly stuck to the techniques I&#039;m used to. &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;3. What’s the name of the open source project you contributed the most in 2011? What did you do?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
My contributions to the free software world continue to be at a very low level (typically, I don&#039;t contribute anything of value besides small hints on the net, complaints and the occasional bug report), which I keep seeing as a personal weak spot. This year at least I managed to implement something for &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=782&amp;amp;entry_id=186&quot;  onmouseover=&quot;window.status=&#039;http://hillview.1on.de/archives/178-Lisp,-sql,-git-and-mercurial.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://hillview.1on.de/archives/178-Lisp,-sql,-git-and-mercurial.html&quot;&gt;CL-SQL&lt;/a&gt;. I also wrote two small utilities, mainly to scratch my own itch, which I still need to clean up a more before I could publicly present them.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;4. What was the development blog or website you read the most in 2011?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
That&#039;s certainly &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=783&amp;amp;entry_id=186&quot; title=&quot;http://www.reddit.com/r/programming&quot;  onmouseover=&quot;window.status=&#039;http://www.reddit.com/r/programming&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;proggit&lt;/a&gt;, followed by &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=784&amp;amp;entry_id=186&quot;  onmouseover=&quot;window.status=&#039;http://www.infoq.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.infoq.com/&quot;&gt;InfoQ&lt;/a&gt;. I also follow &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=785&amp;amp;entry_id=186&quot;  onmouseover=&quot;window.status=&#039;http://planet.lisp.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://planet.lisp.org/&quot;&gt;Planet Lisp&lt;/a&gt; and Planet Python quite closely. I started again to listen to the podcasts by &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=786&amp;amp;entry_id=186&quot; title=&quot;http://www.heise.de/developer&quot;  onmouseover=&quot;window.status=&#039;http://www.heise.de/developer&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Heise developer&lt;/a&gt; and the software engineering radio, but I have to admit I&#039;m too easily distracted to really keep going.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;5. What are the three top things you want to learn in 2012?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
I would like to continue to learn Clojure, finally writing some useful code in it. In particular, I would like to mess around with parallel computations, although there is a huge chance I&#039;ll apply it for small silly tools or web programming first. I would also like to work on some semantic web stuff, probably with RDFa. And maybe I&#039;ll take a look at programming with some of the more or less free tablet stuff, either WebOS or Maemo/Qt. I&#039;ll probably also continue to look into Java programming and common architectures on that platform, which is an enormous universe.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;6. What are the top software, app or lib you wish someone would write in 2012?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
I would like to see the semantic web getting a little bit more traction, mainly by easy integration of stuff like RDFa into content management systems. And, like probably every year since 1999, I wish somebody would finally write an (open source) application/set of clients to finally solve the synchronisation problems between different computers/phones/tablets. Note: I&#039;ve given up on the wish that somebody writes an enterprise acceptable open source replacement for Lotus Notes or Outlook (and I&#039;m talking only about calender and mail, sigh). 
    </content:encoded>

    <pubDate>Wed, 28 Dec 2011 22:38:00 +0100</pubDate>
    <guid isPermaLink="false">http://hillview.1on.de/archives/186-guid.html</guid>
    <category>cl-sql</category>
<category>programming</category>

</item>
<item>
    <title>Agile development -- what is the benefit for the business?</title>
    <link>http://hillview.1on.de/archives/184-Agile-development-what-is-the-benefit-for-the-business.html</link>
            <category>Programming</category>
    
    <comments>http://hillview.1on.de/archives/184-Agile-development-what-is-the-benefit-for-the-business.html#comments</comments>
    <wfw:comment>http://hillview.1on.de/wfwcomment.php?cid=184</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://hillview.1on.de/rss.php?version=2.0&amp;type=comments&amp;cid=184</wfw:commentRss>
    

    <author>nospam@example.com (Holger Schauer)</author>
    <content:encoded>
    In a recent meeting, a colleague of mine mentioned that we wanted to use agile development this time with that new project and that I would provide some insight as an &#039;agile development expert&#039; (not that this would be a term I would use). This in turn brought me some curious looks and a pretty general question during the discussion: what is the benefit of an agile development model from a business perspective anyway?&lt;br /&gt;
&lt;br /&gt;
If I remember correctly, my answer went in the direction that with an agile approach you can change your mind about what you really need/want to implement throughout the project, if you learn something &#039;new&#039; about what is really required. The second important aspect is that you get quicker feedback which allows for more influence in case things don&#039;t turn out right. After the meeting I started pondering the question a little, as I had the impression that my answer wasn&#039;t that convincing, so what you find below is a more detailed written elaboration of it.&lt;br /&gt;
&lt;br /&gt;
Basically, what &quot;you can change your mind throughout the project&quot; boils down to is that agile development gives you more options to make use of opportunities coming up along the way/throughout the time you need to implement the project. The most important idea here is that you don&#039;t make decisions &lt;u&gt;too&lt;/u&gt; early, because that limits your options. For an example, let&#039;s assume that one feature we specify is that we want to have a &#039;Facebook like&#039;-button on the order page. Now, if we&#039;re following the waterfall style &#039;implementation follows after specification has been completed&#039; development model, you would specify that and design the page with the button and at some time in the future, you hopefully get your Facebook button. But maybe during the hypothetical nine months from now in which development happens, what if Germany&#039;s privacy laws enforce new severe restrictions on the use of such buttons and, btw., Google+ is now the new hip site you have to support? You have to go through a (with larger features typically quite costly) change process, redo the specification, etc. This essentially makes the cost you had in writing the specification as well as for the design etc. a double problem: you didn&#039;t get out any ROI, obviously, but additionally time has passed while writing specs, doing design etc. in which you didn&#039;t really work on any results for the customer (lost opportunity: gather new clients with at least some new features). &lt;br /&gt;
&lt;br /&gt;
So, you would have been better off with having the idea that at some point throughout the project you want &#039;social media integration for marketing reasons&#039; and delaying what to do exactly until you&#039;re really there (from a priority point of view) where this is a feature that you want implemented -- i.e. you do the specification when your planning that feature to get implemented in the next development phase (which is typically two to four weeks with an agile development team). The idea is to take small, well defined steps that can be taken fast and starting out with the most important/valuable ones first, rather than to spend a lot of time on some &#039;complete specification&#039; which withers fast throughout the projects implementation time.&lt;br /&gt;
&lt;br /&gt;
The problematic point here is obviously, that it&#039;s pretty difficult to say when exactly is the right point in time to make a decision. In general, there is no &#039;right point&#039; -- also often called the &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=772&amp;amp;entry_id=184&quot;  onmouseover=&quot;window.status=&#039;http://www.codinghorror.com/blog/2006/10/the-last-responsible-moment.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.codinghorror.com/blog/2006/10/the-last-responsible-moment.html&quot;&gt;last responsible moment&lt;/a&gt; after which some opportunity is lost (I think the phrase was coined by &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=773&amp;amp;entry_id=184&quot;  onmouseover=&quot;window.status=&#039;http://www.poppendieck.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.poppendieck.com/&quot;&gt;Mary and Tom Poppendieck&lt;/a&gt;, see the &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=777&amp;amp;entry_id=184&quot;  onmouseover=&quot;window.status=&#039;http://www.leanessays.com/2003/08/concurrent-development.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;Concurrent development&quot;&gt;excerpt from &#039;Lean software development&#039;&lt;/a&gt;) -- but multiple points in time, depending on many aspects. Influencing aspects are things like business opportunities (e.g. a new feature nobody else has at that time) or reducing risks (projects risks) (cf. &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=775&amp;amp;entry_id=184&quot;  onmouseover=&quot;window.status=&#039;http://alistair.cockburn.us/Last+Responsible+Moment+reconsidered&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://alistair.cockburn.us/Last+Responsible+Moment+reconsidered&quot;&gt;Alistair Coburn reconsidering the least responsible moment&lt;/a&gt;).  The best answer I currently have seen when to make a decision is that it should be taken when you have &#039;enough knowledge&#039;, i.e. when you have carefully considered your options and evaluated them (cf. &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=776&amp;amp;entry_id=184&quot;  onmouseover=&quot;window.status=&#039;http://decision-coach.com/lean-and-real-options/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://decision-coach.com/lean-and-real-options/&quot;&gt;real options&lt;/a&gt;). Even thinking about options alone is typically a highly valuable undertaking in itself, because all to often people just assume that the &#039;obvious way&#039; is the best one. &lt;br /&gt;
&lt;br /&gt;
So, the general answer is probably along the way of: for the business side, agile development has the benefit that it provides more flexibility and more influence throughout the project phase while at the same time (possibly) generating real value/revenue more early. There is, of course, more to it that also has appeal from a business perspective, but that&#039;s probably the main point. Feel free to add different opionions. 
    </content:encoded>

    <pubDate>Mon, 24 Oct 2011 14:38:00 +0200</pubDate>
    <guid isPermaLink="false">http://hillview.1on.de/archives/184-guid.html</guid>
    <category>agile</category>
<category>project management</category>

</item>
<item>
    <title>It took quite a while but ...</title>
    <link>http://hillview.1on.de/archives/180-It-took-quite-a-while-but-....html</link>
            <category>Emacs</category>
    
    <comments>http://hillview.1on.de/archives/180-It-took-quite-a-while-but-....html#comments</comments>
    <wfw:comment>http://hillview.1on.de/wfwcomment.php?cid=180</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://hillview.1on.de/rss.php?version=2.0&amp;type=comments&amp;cid=180</wfw:commentRss>
    

    <author>nospam@example.com (Holger Schauer)</author>
    <content:encoded>
    After a period of nearly two years in which XEmacs beta stayed at version 21.5.29, XEmacs 21.5.30 and even &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=758&amp;amp;entry_id=180&quot;  onmouseover=&quot;window.status=&#039;http://www.xemacs.org/Releases/21.5.31.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.xemacs.org/Releases/21.5.31.html&quot;&gt;XEmacs 21.5.31 (beta)&lt;/a&gt; have been released. The most noteworthy change (and the reason I&#039;m blogging this at all) is that XEmacs is now licensed under the GPL v3 and is hence back in a position in which it can incorporate (port) over code from Gnu Emacs. This in turn means that the increasing gap between XEmacs and Gnu Emacs, which has been widening in last years, may get a little narrower if people put some effort into porting stuff over. Hopefully, we&#039;ll also see a release of a stable XEmacs 21.6 some time this decade (21.4.12, the first version of 21.4 which was promoted to &#039;stable&#039; was released in 2003, so it&#039;s arguably due in two years ...) 
    </content:encoded>

    <pubDate>Mon, 02 May 2011 18:41:00 +0200</pubDate>
    <guid isPermaLink="false">http://hillview.1on.de/archives/180-guid.html</guid>
    <category>emacs</category>

</item>
<item>
    <title>Report about the European Lisp Symposium 2011</title>
    <link>http://hillview.1on.de/archives/179-Report-about-the-European-Lisp-Symposium-2011.html</link>
            <category>Lisp</category>
    
    <comments>http://hillview.1on.de/archives/179-Report-about-the-European-Lisp-Symposium-2011.html#comments</comments>
    <wfw:comment>http://hillview.1on.de/wfwcomment.php?cid=179</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://hillview.1on.de/rss.php?version=2.0&amp;type=comments&amp;cid=179</wfw:commentRss>
    

    <author>nospam@example.com (Holger Schauer)</author>
    <content:encoded>
    So, &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=749&amp;amp;entry_id=179&quot;  onmouseover=&quot;window.status=&#039;http://www.european-lisp-symposium.org/editions/2011/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.european-lisp-symposium.org/editions/2011/&quot;&gt;ELS 2011&lt;/a&gt; is over which was the first conference I attended that was solely aimed at Lisp programmers. Overall I am quite happy with it although not all talks have been of the same quality. In particular I wasn&#039;t too excited about all three key notes, although all had interesting topics. The first one by Craig Zilles about best effort code optimization was about things intelligent compilers could do. Very interesting stuff for sure and I learned a lot about low-level soft- and hardware architectures but there was no apparent direct relation to Lisp. A similar problem troubled the talk about Scala: perhaps it was due to my late arrival (I got on the right subway but in the wrong direction, not for the first time) but the part I attended left me wondering why Scala is relevant on a Lisp conference. Marc Battayani&#039;s invited talk about his use of Common Lisp for programming FPGAs was nice, but first of all it was difficult to follow (not due to the content) and not many details were given about how the specialized Lisp embedded DSLs get converted to the FPGA specific code and what problems he had to overcome.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:7 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;110&quot; height=&quot;83&quot; style=&quot;float: right; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://hillview.1on.de/uploads/hamburg-harbour.serendipityThumb.jpg&quot; alt=&quot;picture of Hamburg harbour&quot; /&gt;Now for some of the interesting regular talks: on Thursday, the report about porting &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=750&amp;amp;entry_id=179&quot;  onmouseover=&quot;window.status=&#039;http://www.sbcl.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.sbcl.org/&quot;&gt;SBCL&lt;/a&gt; to the supercomputing Blue Gene/P was nice and raised an interesting question: what can/needs to be re-discovered from old Lisp dialects for parallel programming for Lisps when more and more parallel cpus are becoming available to programmers. An issue that came up in both the talk about the futures implementation for ACL2 and in Nicolas Neuss&#039; initial digression about his experiences in parallelizing &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=751&amp;amp;entry_id=179&quot;  onmouseover=&quot;window.status=&#039;http://www.femlisp.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.femlisp.org/&quot;&gt;Femlisp&lt;/a&gt; was that garbage collection can get in the way of effective parallelization, up to the point where much of the expected speedup is lost. The motivation of  the talk about &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=752&amp;amp;entry_id=179&quot;  onmouseover=&quot;window.status=&#039;https://secure.wikimedia.org/wikipedia/en/wiki/Actor_model&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/Actor_model&quot;&gt;actors&lt;/a&gt; framework named &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=753&amp;amp;entry_id=179&quot;  onmouseover=&quot;window.status=&#039;https://antoniogarrote.wordpress.com/2010/09/03/jobim-an-actors-library-for-clojure/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;https://antoniogarrote.wordpress.com/2010/09/03/jobim-an-actors-library-for-clojure/&quot;&gt;Jobim&lt;/a&gt; for &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=754&amp;amp;entry_id=179&quot;  onmouseover=&quot;window.status=&#039;http://www.clojure.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.clojure.org/&quot;&gt;Clojure&lt;/a&gt; nicely fitted in with an immediate question that came to my mind when I saw how Clojure connects to Java: What do you do so that Java&#039;s semantics don&#039;t leak into your application code? They seem to have found a nice way to abstract away the underlying Java libraries in their framework. In the last session of the first day, the lightning talk session, two things were interesting: Ralf Möller talked about using user-defined method combinations as a more powerful approach than design patterns, showing how one might implement html specific print-object methods, and Didier Verna talked about user-extensible format directives which he wants to turn in as a &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=755&amp;amp;entry_id=179&quot;  onmouseover=&quot;window.status=&#039;http://lambda-the-ultimate.org/node/300&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://lambda-the-ultimate.org/node/300&quot;&gt;CLRFI&lt;/a&gt;. Having done a lot of work in computational linguistics, the talk about &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=756&amp;amp;entry_id=179&quot;  onmouseover=&quot;window.status=&#039;http://www.snltk.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.snltk.org/&quot;&gt;S-NLTK&lt;/a&gt;, the Scheme toolkit for natural language processing, was nice to see. Damir Cavar did a good job promoting the toolkit which has a similar aim like the Python &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=757&amp;amp;entry_id=179&quot;  onmouseover=&quot;window.status=&#039;http://www.nltk.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.nltk.org/&quot;&gt;NLTK&lt;/a&gt;, although I would have liked to learn more about the API and implementation issues. Finally, Alec Berryman by ITA gave a last minute presentation about things ITA learned about optimizing stuff for SBCL and about issues arising when adopting the old code to multi-threaded programming. Interestingly they didn&#039;t report about gc issues but that may be related to their extensive use of object caches of pre-allocated objects.&lt;br /&gt;
&lt;br /&gt;
The final panel discussion with James Knight, Christophe Rodes, James Anderson and Martin Simmons went back and forth about concurrency, distribution and efficiency vs. performance. The discussion took up several points from the talks, including gc and hardware issues. I took away from the discussion that unsurprisingly a lot of open questions need to be solved of which people are aware while at the same time there doesn&#039;t seem to be much momentum, which, given that the community isn&#039;t that big, isn&#039;t surprising either after all.&lt;br /&gt;
&lt;br /&gt;
Summing up I liked it a lot. For one, it was very nice to see people you only know via the net (while I haven&#039;t been active in the community in the last years, I was surprised to see people recognize my name). For another, I also think that the organizers made a good decision to select a main theme for the conference and an important one, too. It really set the main theme for the conference and the discussions, and hence nicely reached its goal. Generally speaking, the conference was nicely organized so thanks for a pleasant time in Hamburg. 
    </content:encoded>

    <pubDate>Mon, 04 Apr 2011 21:25:00 +0200</pubDate>
    <guid isPermaLink="false">http://hillview.1on.de/archives/179-guid.html</guid>
    <category>lisp</category>

</item>
<item>
    <title>Lisp, sql, git and mercurial</title>
    <link>http://hillview.1on.de/archives/178-Lisp,-sql,-git-and-mercurial.html</link>
            <category>Programming</category>
    
    <comments>http://hillview.1on.de/archives/178-Lisp,-sql,-git-and-mercurial.html#comments</comments>
    <wfw:comment>http://hillview.1on.de/wfwcomment.php?cid=178</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://hillview.1on.de/rss.php?version=2.0&amp;type=comments&amp;cid=178</wfw:commentRss>
    

    <author>nospam@example.com (Holger Schauer)</author>
    <content:encoded>
    This has been a rather unpleasant month (don&#039;t ask, I won&#039;t tell) but right now I&#039;ll look forward toward its end because of two reasons: for one, I&#039;ll be in Hamburg for the European Lisp Symposium for the next two days; the &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=746&amp;amp;entry_id=178&quot;  onmouseover=&quot;window.status=&#039;http://www.european-lisp-symposium.org/content-programme-full.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.european-lisp-symposium.org/content-programme-full.html&quot;&gt;program for the ELS&lt;/a&gt; has also been published in between. I&#039;m really looking forward to an interesting set of talks. For another, some patches to &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=736&amp;amp;entry_id=178&quot;  onmouseover=&quot;window.status=&#039;http://clsql.b9.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://clsql.b9.com/&quot;&gt;CL-SQL&lt;/a&gt; which add support for autoincrement behaviour for Postgresql, are probably going to be released soon. To clarify, &quot;autoincrement&quot; is a column constraint in MySQL (among others) that automatically increments the value of the column when a new row is inserted when no value for the autoincrement column is given (cf. &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=737&amp;amp;entry_id=178&quot;  onmouseover=&quot;window.status=&#039;http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html&quot;&gt;MySQL docs on AUTOINCREMENT&lt;/a&gt;), a behaviour that Postgresql supports with the &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=738&amp;amp;entry_id=178&quot;  onmouseover=&quot;window.status=&#039;http://wiki.postgresql.org/wiki/FAQ#How_do_I_create_a_serial.2Fauto-incrementing_field.3F&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://wiki.postgresql.org/wiki/FAQ#How_do_I_create_a_serial.2Fauto-incrementing_field.3F&quot;&gt;serial&lt;/a&gt; constraint (cf. this &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=747&amp;amp;entry_id=178&quot;  onmouseover=&quot;window.status=&#039;https://secure.wikimedia.org/wikibooks/en/wiki/Converting_MySQL_to_PostgreSQL&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;https://secure.wikimedia.org/wikibooks/en/wiki/Converting_MySQL_to_PostgreSQL&quot;&gt;wikibook on converting between MySQL and Postgres&lt;/a&gt;). Actually, that has been my first substantial amount of Common Lisp programming in the last two years, which has been triggered by an upgrade of my Debian system. This upgrade implied that an old application of mine would now use CL-SQL version 5.0 which in turn broke the app: I had simply specified a db-type of &quot;serial&quot; previously, but the new CL-SQL code wouldn&#039;t recognize that it had to fetch the automatically generated value from the DB when inserting a new record. More details on the patches can be found on the CL-SQL mailing list.&lt;br /&gt;
&lt;br /&gt;
The developement of this addition was also the first time I had a real-world setup developing with git. In my own projects I use mercurial, so I was eager to learn a little bit more about the differences. It&#039;s funny that a recent opinonated article &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=744&amp;amp;entry_id=178&quot;  onmouseover=&quot;window.status=&#039;http://jhw.dreamwidth.org/1868.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://jhw.dreamwidth.org/1868.html&quot;&gt;&quot;Why I like mercurial better than git&quot;&lt;/a&gt; more or less talks only about the one point that I found confusing: branch handling. For more background information, I suggest reading this article &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=745&amp;amp;entry_id=178&quot;  onmouseover=&quot;window.status=&#039;http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/&quot;&gt;&quot;A guide to branching in mercurial&quot;&lt;/a&gt;. Basically, in my current projects where I use mercurial, I&#039;m using the &quot;branching with clones&quot; approach Steve is describing there. When working on the patches for CL-SQL, I was working on the existing autoincrement branch but when I was through I wanted to port my patches to the master branch. When using mercurial with the described approach, selecting (pulling or pushing) my patches and only my patches to the master branch is dead easy: you just issue a pull/push command restricted to the &quot;right&quot; changesets. Doing this is even supported by Subversion these days via &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=748&amp;amp;entry_id=178&quot;  onmouseover=&quot;window.status=&#039;http://svn.apache.org/repos/asf/subversion/trunk/notes/merge-tracking/requirements.html#cherry-picking&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://svn.apache.org/repos/asf/subversion/trunk/notes/merge-tracking/requirements.html#cherry-picking&quot;&gt;svn cherry picking&lt;/a&gt;. Looking at the docs for &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=743&amp;amp;entry_id=178&quot;  onmouseover=&quot;window.status=&#039;http://www.kernel.org/pub/software/scm/git/docs/git-pull.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-pull.html&quot;&gt;git pull&lt;/a&gt;, fetch and merge, I wasn&#039;t able to figure out what the corresponding &quot;right&quot; incantation for git might look like, if there is one at all. As I didn&#039;t want to hose my &quot;working copy&quot; (sorry for the SVN term again), I resorted to git format-patch, git am resp., which worked fine. Please note that I&#039;m not suggesting that it&#039;s not possible with another approach, quite to the contrary I would be happy to learn about it. One thing that I found rather useful is git&#039;s stash command which let&#039;s you safely abandon your current work to fall back to the last commited version, in order to be able to work on something that popped up in between (typically a minor unrelated problem you encounter while working on a larger piece of changes). I understand that mercurials patch queues enable a similar functionality, but I haven&#039;t used them sofar. Another thing that I found very useful is git&#039;s very easy way to correct (or in git terminology &quot;amend&quot;) a commit by just issuing &quot;git commit -a&quot;. I also like the idea of the &quot;index&quot; or more exactly that you have to explictly &quot;add&quot; which changes you want to commit. A similar behaviour is possible with SVN &quot;changelist&quot; command, but the mere existance of a changelist is not automatically honoured by SVN&#039;s commit. 
    </content:encoded>

    <pubDate>Tue, 29 Mar 2011 21:25:00 +0200</pubDate>
    <guid isPermaLink="false">http://hillview.1on.de/archives/178-guid.html</guid>
    <category>cl-sql</category>
<category>lisp</category>
<category>version control</category>

</item>
<item>
    <title>European Lisp Symposium 2011 in Hamburg</title>
    <link>http://hillview.1on.de/archives/177-European-Lisp-Symposium-2011-in-Hamburg.html</link>
            <category>Lisp</category>
    
    <comments>http://hillview.1on.de/archives/177-European-Lisp-Symposium-2011-in-Hamburg.html#comments</comments>
    <wfw:comment>http://hillview.1on.de/wfwcomment.php?cid=177</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://hillview.1on.de/rss.php?version=2.0&amp;type=comments&amp;cid=177</wfw:commentRss>
    

    <author>nospam@example.com (Holger Schauer)</author>
    <content:encoded>
    &lt;a title=&quot;http://www.european-lisp-symposium.org/content-programme-full.html&quot; id=&quot;s9yisp6&quot;&gt;&lt;/a&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&quot;http://hillview.1on.de/exit.php?url_id=730&amp;amp;entry_id=177&quot;  onmouseover=&quot;window.status=&#039;http://hillview.1on.de/serendipity_admin_image_selector.php?serendipity[step]=showItem&amp;amp;amp;serendipity[image]=6&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; id=&quot;s9yisphref6&quot; onclick=&quot;javascript:this.href = this.href + &#039;&amp;amp;serendipity[from]=&#039; + self.location.href;&quot;&gt;&lt;!-- s9ymdb:6 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;110&quot; height=&quot;98&quot; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://hillview.1on.de/uploads/lisplogo_flag2_128.serendipityThumb.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=731&amp;amp;entry_id=177&quot;  onmouseover=&quot;window.status=&#039;http://en.wikipedia.org/wiki/Hamburg&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://en.wikipedia.org/wiki/Hamburg&quot;&gt;Hamburg&lt;/a&gt;, I&#039;ll see you soon -- for the 2011 edition of the &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=732&amp;amp;entry_id=177&quot;  onmouseover=&quot;window.status=&#039;http://www.european-lisp-symposium.org/content-programme-full.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.european-lisp-symposium.org/content-programme-full.html&quot;&gt;European Lisp Symposium&lt;/a&gt;. I haven&#039;t done much Lisp programming in the last two years, but as I can combine visiting a good friend with a nice conference, I just couldn&#039;t resist. I&#039;m really looking forward to meet several people I&#039;ve had contact with over the net in reality. (And don&#039;t forget about that &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=733&amp;amp;entry_id=177&quot;  onmouseover=&quot;window.status=&#039;http://www.xkcd.org/859/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.xkcd.org/859/&quot;&gt;unresolved tension&lt;/a&gt;. 
    </content:encoded>

    <pubDate>Sun, 27 Feb 2011 17:13:00 +0100</pubDate>
    <guid isPermaLink="false">http://hillview.1on.de/archives/177-guid.html</guid>
    <category>lisp</category>

</item>
<item>
    <title>Wenn Du denkst, du denkst, dann denkst du nur, du denkst</title>
    <link>http://hillview.1on.de/archives/176-Wenn-Du-denkst,-du-denkst,-dann-denkst-du-nur,-du-denkst.html</link>
            <category>Computer</category>
    
    <comments>http://hillview.1on.de/archives/176-Wenn-Du-denkst,-du-denkst,-dann-denkst-du-nur,-du-denkst.html#comments</comments>
    <wfw:comment>http://hillview.1on.de/wfwcomment.php?cid=176</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://hillview.1on.de/rss.php?version=2.0&amp;type=comments&amp;cid=176</wfw:commentRss>
    

    <author>nospam@example.com (Holger Schauer)</author>
    <content:encoded>
    Heute nur ein kurzer Verweis: Wenn ihr denkt, es gilt das freie Netz zu beschützen, solltet ihr noch mal genauer hinschauen. &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=728&amp;amp;entry_id=176&quot;  onmouseover=&quot;window.status=&#039;http://yuxiyou.net/open/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://yuxiyou.net/open/&quot;&gt;So zensiert ist das Internet schon heute&lt;/a&gt;. Interessant ist vor allem auch die grobe Kategorisierung, was und warum zensiert wird (via Fefe). 
    </content:encoded>

    <pubDate>Mon, 07 Feb 2011 10:16:55 +0100</pubDate>
    <guid isPermaLink="false">http://hillview.1on.de/archives/176-guid.html</guid>
    <category>censorship</category>
<category>internet</category>
<category>politics</category>

</item>
<item>
    <title>GNUPG and locale weirdness</title>
    <link>http://hillview.1on.de/archives/175-GNUPG-and-locale-weirdness.html</link>
            <category>Linux</category>
    
    <comments>http://hillview.1on.de/archives/175-GNUPG-and-locale-weirdness.html#comments</comments>
    <wfw:comment>http://hillview.1on.de/wfwcomment.php?cid=175</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://hillview.1on.de/rss.php?version=2.0&amp;type=comments&amp;cid=175</wfw:commentRss>
    

    <author>nospam@example.com (Holger Schauer)</author>
    <content:encoded>
    Today, I solved a really troubesome problem for me: I couldn&#039;t access my GPG secret key. Which means that whenever I needed my secret key, for example when I wanted to sign some text and I typed in my key, I just received a &quot;bad passphrase&quot; error message. Not using GPG on a regular basis, I wasn&#039;t at all sure that I had used the right passphrase. However, today I recognized that I had another secret key for special usage, for which I had specifically written down the passphrase -- and which didn&#039;t work as well.&lt;br /&gt;
&lt;br /&gt;
This finally convinced me that there was something else wrong beside a faulty memory of the passphrase. And indeed, when I tried signing a mail in Gnus/PGG, typing in the exact same passphrase as I had on the command line, everything was fine and the message got signed. But then what was the difference to using gpg from the command line? I was suspecting that some non-ASCII characters I have in my passphrase might not reach GPG as intended, so I started looking at the &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=727&amp;amp;entry_id=175&quot;  onmouseover=&quot;window.status=&#039;https://secure.wikimedia.org/wikipedia/en/wiki/Locale&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/Locale&quot;&gt;locale&lt;/a&gt; settings. Some more experiments confirmed it: nowadays, my xterm (which is an lxterm really) is highly probably using a different key setting as it used to, after a re-installation of my desktop some time ago. I&#039;m not too sure what it used to be, probably ISO-8859-1 (aka Latin-1) or ISO-8859-15 (aka Latin-9) or &quot;C&quot;, but it&#039;s now using de_DE.UTF-8. Simply setting LANG to C inside a running xterm didn&#039;t work out as I hoped, probably because of the way the locale settings (probably LC_CTYPE) are used by xterm to set up keyboard handling. But when I start up a different xterm with LANG set to C in advance, i.e. do a &quot;&lt;code&gt;LANG=C xterm &amp;&quot;&lt;/code&gt;, gpg happily accepts my passphrase. Problem solved.&lt;br /&gt;
&lt;br /&gt;
Moral of the story: charsets and input formats are a constant source of joy unless everything is unicode. 
    </content:encoded>

    <pubDate>Sun, 16 Jan 2011 17:19:43 +0100</pubDate>
    <guid isPermaLink="false">http://hillview.1on.de/archives/175-guid.html</guid>
    <category>linux</category>
<category>privacy</category>
<category>x11</category>

</item>
<item>
    <title>Laziness for the win</title>
    <link>http://hillview.1on.de/archives/174-Laziness-for-the-win.html</link>
            <category>Programming</category>
    
    <comments>http://hillview.1on.de/archives/174-Laziness-for-the-win.html#comments</comments>
    <wfw:comment>http://hillview.1on.de/wfwcomment.php?cid=174</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://hillview.1on.de/rss.php?version=2.0&amp;type=comments&amp;cid=174</wfw:commentRss>
    

    <author>nospam@example.com (Holger Schauer)</author>
    <content:encoded>
    Loren Segal writes a blog discussing the question whether users of dynamically typed languages are just &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=719&amp;amp;entry_id=174&quot;  onmouseover=&quot;window.status=&#039;http://gnuu.org/2010/12/13/too-lazy-to-type/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://gnuu.org/2010/12/13/too-lazy-to-type/&quot;&gt;too lazy to type&lt;/a&gt;? The argument goes roughly like this: The dynamic is not in &quot;passing wildly arbitrary ever-changing types to methods&quot; and we&#039;re just (okay, not only just, but mainly) doing dynamic code generation and are too lazy to add type information. Regarding a particular, but not too relevant code example, Loren says:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;It’s easy to see that this code is executed immediately at load time. Although it’s possible for someone to generate a method at run-time (by run-time I mean much later after the initial .rb file was require‘d), it’s a fairly rare occurrence. What we’re really doing here is just avoiding to extra LoC involved in typing out those def’s each time. What we’re doing here really is just runtime code generation.&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
Yes, Loren, it&#039;s just runtime code generation, but calling it &#039;just&#039; is somewhat misssing the point. I mean, if runtime code generation is not dynamic, what is? Loren goes on to say that &lt;quote&gt;programs in dynamic languages with these runtime modification behaviours often stop modifying their behaviour after a certain amount of &quot;load time&quot;.&lt;/quote&gt; I agree, this is also what I would expect. But the entire point is that once again, &quot;dynamic&quot;  means that it is not necessary that you have to (statically) pre-determine at some fixed time (compile time or initial process launch time) which stable behaviour it should be. &lt;em&gt;Of course&lt;/em&gt;, after a certain amount of load time, it&#039;s likely that the behaviour of your program (or better said of the running process) becomes stable and all functionality needed is loaded. But a different process of the same program may use a different set of possible behaviour. Plus: you might be able to add new functionality to a running programm. Additionally, you don&#039;t necessarily have to provide all possible behaviours at start-up time, runtime code generation (or runtime code loading) allows you to add new behaviour later on. In some cases (Ruby and Lisp come to mind) it is even possible to alter existing behaviour. Now, if &quot;typical&quot; dynamic programs really don&#039;t do that routinely (as suggested by the studies Loren is citing) this says more about how often we (really don&#039;t) need such dynamic behaviour but it sure is dynamic. &lt;br /&gt;
&lt;br /&gt;
However, I must admit that I&#039;m a little surprised by the cited results of the studies. I&#039;ve seen systems that have the ability to change their behaviour at runtime one time too often. First, there are programs that embed some extension mechanism (be it embedded scripting languages, plugin mechanisms or other)  that are specifically crafted for users to tinker with the running system, which clearly is all runtime code generation. Second, a particular interesting aspect of web programming is that many templating engines have some kind of import/include statement that are typically used to build complex templates out of smaller ones. In combination with other features of template languages, specifically conditions, loops and even macros (cf. &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=720&amp;amp;entry_id=174&quot;  onmouseover=&quot;window.status=&#039;http://pydanny.blogspot.com/2010/12/stupid-template-languages.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://pydanny.blogspot.com/2010/12/stupid-template-languages.html&quot;&gt;stupid template languages&lt;/a&gt;, &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=721&amp;amp;entry_id=174&quot;  onmouseover=&quot;window.status=&#039;http://lucumr.pocoo.org/2010/12/5/not-so-stupid-template-languages/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://lucumr.pocoo.org/2010/12/5/not-so-stupid-template-languages/&quot;&gt;not so stupid template languages&lt;/a&gt;) this feature can be and is used to alter behaviour at runtime. So, obviously there is a need for dynamic behaviour, and people find ways to scratch their itch. Note that neither of my two examples require dynamic languages, so it&#039;s not a rebuttal of the studies or Lorens claims. However, thinking about it, I would expect that a lot of programs written in your todays typical dynamic language are &#039;scripts&#039;, which might be the reason why most people treat the idea of &#039;dynamic language&#039; as synonym to &#039;scripting language&#039; (it isn&#039;t -- Common Lisp, for instance, is surely a dynamic language, but hardly a scripting language). That such scripts don&#039;t require much dynamic change in runtime behaviour isn&#039;t too surprising, after all.&lt;br /&gt;
&lt;br /&gt;
Now ultimately I wouldn&#039;t really disagree with the impression that quite often one &quot;value&quot; of dynamic languages lies in reduced typing and that on the contrary some type related problems would be found more quickly in static typed languages. I would even go so far and say that wrt.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;I’d really love to see some research on case studies of how often arbitrary structural typing (that cannot be refactored into polymorphic relationships) is really used in dynamically typed languages. If anyone knows of any research/papers in this field, I’d love to hear about it.&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
it&#039;s highly likely that it&#039;s extremely rare to find &quot;arbitrary structural typing&quot;, if such a thing exists at all (ironically I would guess that using &#039;void *&#039; as a type specifier in C functions is where one comes closest to &quot;arbitrary&quot;). To me the very idea looks suspiciously like a strawmen for an argument that if there were &quot;no arbitrary structural typing&quot;, we could/should go for static typing anyway, as we could &quot;reduce&quot; the solutions we implement with dynamic typed languages to solutions in statically typed languages (an argument coming close to the &#039;turing complete&#039; hammer). This looks like a distinction between &#039;we can&#039;t use type information at all&#039; and &#039;we need to use type information at each and every place&#039; and I don&#039;t believe that the world is only black or white. &lt;br /&gt;
&lt;br /&gt;
The point I want to make is this: Let&#039;s assume it may be very much the case that in all places where dynamic typing is used you can find a static typed solution, too. Then the benefit is of course not that &quot;you&#039;re doing something that&#039;s not possible in statically typed languages&quot; (which might still be true under the interpretation that the statically typed solution probably looks rather different). But there might be plenty of room for benefit in that coming up with a solution in the dynamic language might reduce cost (e.g. less development time, greater flexibility for extension later on). The arguments by proponents of static languages that the cost reduction lies in other aspects (e.g. earlier detection of errors) are surely worth a comparison. If studies for this question of associated costs beyond anecdotical tales exist, I would be interesting in seeing them.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Update&lt;/i&gt;: &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=726&amp;amp;entry_id=174&quot;  onmouseover=&quot;window.status=&#039;http://thecleancoder.blogspot.com/2010/12/too-lazy-to.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://thecleancoder.blogspot.com/2010/12/too-lazy-to.html&quot;&gt;Uncle Bob raises another important point&lt;/a&gt; that with introducing static type information we&#039;ll get closer coupling: &lt;blockquote&gt;But in the end, we like dynamic language not because we are too lazy to &quot;Type&quot;. We like dynamic languages because we are tired of untangling couplings.&lt;/blockquote&gt; 
    </content:encoded>

    <pubDate>Tue, 14 Dec 2010 19:10:00 +0100</pubDate>
    <guid isPermaLink="false">http://hillview.1on.de/archives/174-guid.html</guid>
    <category>lisp</category>
<category>programming</category>
<category>python</category>
<category>ruby</category>

</item>
<item>
    <title>Coders at work</title>
    <link>http://hillview.1on.de/archives/169-Coders-at-work.html</link>
            <category>Literature</category>
            <category>Programming</category>
    
    <comments>http://hillview.1on.de/archives/169-Coders-at-work.html#comments</comments>
    <wfw:comment>http://hillview.1on.de/wfwcomment.php?cid=169</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://hillview.1on.de/rss.php?version=2.0&amp;type=comments&amp;cid=169</wfw:commentRss>
    

    <author>nospam@example.com (Holger Schauer)</author>
    <content:encoded>
    For the holidays I finally bought Peter Seibels &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=696&amp;amp;entry_id=169&quot;  onmouseover=&quot;window.status=&#039;http://www.codersatwork.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.codersatwork.com/&quot;&gt;Coders at work&lt;/a&gt;, which is a very unusable book about programming: it consists solely of interviews with pretty well known programmers or &quot;coders&quot;. It&#039;s an interesting constellation: On the one hand, Peter Seibel is well known in the Common Lisp community for his book &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=697&amp;amp;entry_id=169&quot;  onmouseover=&quot;window.status=&#039;http://www.gigamonkeys.com/book/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.gigamonkeys.com/book/&quot;&gt;Practical Common Lisp&lt;/a&gt; which gives a modern view on Lisp: not only is it an introduction to the language but also to several libraries and the general setting of modern lisp programming. On the other (fifteen) hands, there are people like Jamie Zawinski (XEmacs, Netscape), Don Knuth (TeX, &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=698&amp;amp;entry_id=169&quot;  onmouseover=&quot;window.status=&#039;http://www-cs-faculty.stanford.edu/~uno/taocp.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www-cs-faculty.stanford.edu/~uno/taocp.html&quot;&gt;Art of Computer Programming&lt;/a&gt;), Guy Steele (Lisp, Scheme, Java), Peter Norvig (&lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=699&amp;amp;entry_id=169&quot;  onmouseover=&quot;window.status=&#039;http://norvig.com/paip.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://norvig.com/paip.html&quot;&gt;PAIP&lt;/a&gt;, Google), Brendan Eich (Javascript) and Ken Thompson (Unix)  -- just to note the ones that are probably the most well known.&lt;br /&gt;
&lt;br /&gt;
I&#039;ve had resisted the urge to buy the book because I&#039;ve always felt that programming is a craft that ultimately forces you to make your own experiences. I mean, you can read all the books you like but ultimately you have to make your own hands dirty to really get knowledge about the issues involved. So, what could I learn from other peoples experiences? On the other hand, as a lightweight (in terms of reading attention) holiday book it seemed about right, so I finally gave in.&lt;br /&gt;
&lt;br /&gt;
Well, the book turned out to be a real page turner for me. It&#039;s a fascinating read because of the re-occuring topics Seibel is addressing and the various opinions he got. He addresses topics you would expect like preferred tools (e.g. editor), worst bugs, debugging techniques, asssertions and verification, literate programming (which suprises me a little), design approaches and team work, but of course the main focus is the personal experiences and how they wound up with whatever made these guys known. One thing that I liked is that Seibel has a way to ask good follow-up questions to the responses he gets, without ever letting his own experiences or opinions getting in the way, which I can imagine has probably made for pleasant interview situations (at least I take away that impression). I wouldn&#039;t have imagined beforehand that I would find the different stories how the guys (and one woman) got into coding so interesting. There are very few people in this book whose experience doesn&#039;t go back to teletype and time sharing systems. Of course, as a result these stories tend to be similar, but the details differ enough that&#039;s it doesn&#039;t get too boring. Starting with computers in the early 80s, I don&#039;t have any experiences with such systems and which I frankly don&#039;t miss at all after reading more about it. But just to get to this conclusion is interesting: the constant comparison with your own experiences and opinions you can&#039;t help but make while reading this book alone is worth buying and reading it.&lt;br /&gt;
&lt;br /&gt;
Over all, it&#039;s hard to say which interviews I found the most interesting one, essentially each has some unique point or other. That being said, the interviews with Joe Armstrong and Guy Steele made a lot of impresssion on me, whereas I&#039;m a little disappointed by the one with Peter Norvig (though he had the funniest quotes), but I can&#039;t really nail down why. I didn&#039;t particular like the interview with Brad Fitzpatrick, it didn&#039;t seem  to contain as much information as the others. And Joshua Bloch seemed to hype Java all the time which I found not very convincing -- the idea that todays larger context for programming contains quite a few different languages and approaches seems to elude him. &lt;br /&gt;
&lt;br /&gt;
There are some points I took away from this book: For one, most of the interviewed people seem to be much more concerned with data types than I am, even the ones who have done extensiv work on dynamically or weakly typed languages. I guess I should really take a closer look at that topic and, to make it more concrete, play around with e.g. Haskell. Another point is that concurrency or parallel programming is a topic that (IIRC) all of the interviewees have seen as being responsible for the worst bugs they encountered and as a result are interested in newer approaches like &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=700&amp;amp;entry_id=169&quot;  onmouseover=&quot;window.status=&#039;http://en.wikipedia.org/wiki/Software_transactional_memory&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://en.wikipedia.org/wiki/Software_transactional_memory&quot;&gt;STM&lt;/a&gt;. So, it might be worthwhile to look closer into such developments, for example by playing with &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=701&amp;amp;entry_id=169&quot;  onmouseover=&quot;window.status=&#039;http://clojure.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://clojure.org/&quot;&gt;Clojure&lt;/a&gt;, Erlang. or the transaction monad, if I&#039;ll ever really play around with Haskell. A third point is that I realized that I&#039;m not keeping up with academic research in CS and, not having TAoCP, might never have been up to date at all. I&#039;m following a few online references like &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=702&amp;amp;entry_id=169&quot;  onmouseover=&quot;window.status=&#039;http://lambda-the-ultimate.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://lambda-the-ultimate.org/&quot;&gt;LtU&lt;/a&gt;, but not closely and it&#039;s pretty rare these days that I look deeply into some research paper. This is something else I should probably change, if time permits.&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Wed, 22 Sep 2010 20:38:00 +0200</pubDate>
    <guid isPermaLink="false">http://hillview.1on.de/archives/169-guid.html</guid>
    <category>book</category>
<category>programming</category>
<category>review</category>

</item>
<item>
    <title>Every planet we reach is dead</title>
    <link>http://hillview.1on.de/archives/168-Every-planet-we-reach-is-dead.html</link>
            <category>Linux</category>
    
    <comments>http://hillview.1on.de/archives/168-Every-planet-we-reach-is-dead.html#comments</comments>
    <wfw:comment>http://hillview.1on.de/wfwcomment.php?cid=168</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://hillview.1on.de/rss.php?version=2.0&amp;type=comments&amp;cid=168</wfw:commentRss>
    

    <author>nospam@example.com (Holger Schauer)</author>
    <content:encoded>
    When I bought a new workstation some time ago, I made sure it would have much more power than I would probably need. One reason for this was that I wanted to toy around more with virtualization. I had successfully used VMware server on a comparingly weak laptop some time ago, but opted to try out the more recent open source solutions. I looked briefly at VirtualBox but that seemed to be very similar to VMware which I already knew, so I didn&#039;t really pursue this path. Xen had caught my interest for quite a while, but it looked to me as not to straight forward to setup and as of not-so-recent time, KVM seems to be the new kid on the block that nearly everybody seems to see as the more natural solution for linux users.&lt;br /&gt;
&lt;br /&gt;
What got me going was that I wanted to take a look at how far Debian Squeeze had already got. In particular, I wanted to try the amd64 bit variant, but as I quickly discovered that requires a 64bit host installation. So, off I went, re-installing my lenny system to be 64bit instead of the original 32bit system I had been using up to then, thinking that I could easily re-establish that 32bit system as a virtual system on top of my 64bit host.  The general idea was to have a relatively clean host system with several guests for developing, surfing and working running on top of it.&lt;br /&gt;
&lt;br /&gt;
Given the considerations above and that Debian ships with easy to install KVM packages (see the &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=693&amp;amp;entry_id=168&quot;  onmouseover=&quot;window.status=&#039;http://wiki.debian.org/KVM&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://wiki.debian.org/KVM&quot;&gt;debian wiki on KVM&lt;/a&gt; for details), that was the way I choose. In particular, I installed the KVM and qemu packages as well as virt-manager, a graphical frontend to manage virtual machines. And sure enough, setting up a first virtual machine really looked easy: click a few buttons, decide on a few things like image size and feed the machine an installation medium of the OS to boot. For this installation medium, I choose a squeeze netinstall image. However, as I soon discovered, the squeeze guest couldn&#039;t see/access the net on boot. No problem, I thought, I&#039;ll fix it later on. Unfortunately, though, it turned out that although virt-manager claimed to provide a network card, dnsmasq and stuff was running, the squeeze guest wasn&#039;t able to see the outside world -- which is, of course, quite problematic when the guest requires network access to complete installation. The guest was provided a network interface, but it wouldn&#039;t recive an IP via DHCP and even setting routes manually didn&#039;t allow to access the net.&lt;br /&gt;
&lt;br /&gt;
So I thought, maybe updating the host to squeeze might help -- as the host has a real small and lean installation, this was neither problematic nor taking much time. This time, with the new KVM and virt-manager packages in squeeze, again I had no net on installation, but I had success with regard to the network access afterwards, so I could happily install a complete squeeze system in the guest. &lt;i&gt;Update:&lt;/i&gt;What I forgot to mention was that I fiddled around with the available virtual networks with virt-manager, adding a new network. As I recognized that the guest was using the provided default network, I deleted the additional one and re-enabled auto-start on the default one. This, however, doesn&#039;t really work: whenever I startup virtmanager, I have to manually restart the virtual net, now (no, virsh net-auto-start didn&#039;t help) and worse, I have to first manually add an iptables rule (that then gets deleted on start up of the virtual net) and restart dnsmasq. &lt;strong&gt;Sigh&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Afterwards, I turned to re-install my private data in the guest which I had previously copied to an external USB drive. This turned out to be a bad idea. First of all, you can&#039;t easily assign new hardware to a running virtual machine -- you have to startover the guest. But second, and much more problematic, was IO time. Looking at iotop, I saw an average data transfer of 500k/sec with reads from the USB disk, which means copying a single gigabyte would nearly take forever. Compared to copying the same data from the same disk on the host, iotop showed an average of 31M/sec! I haven&#039;t as of yet tried to verified that the problem is accessing the USB or if a similar problem exists with accessing &quot;local&quot; disks (i.e. reading/writing to the virtio disk/image is equally slow). If it&#039;s only USB access, the problem is a lot smaller in everyday usage, but still this experience was a real disappointment. &lt;i&gt;Update:&lt;/i&gt;In the meantime I&#039;ve verified that the problem is reading from the USB disc. Reading and writing to the guest virtio filesystem is, of course, slower than IO on the host, but it&#039;s not that huge a difference.&lt;br /&gt;
&lt;br /&gt;
But that&#039;s still not the end of the story. Given that I really wanted to more or less live inside my guests, I also wanted to use multimedia stuff there. That this idea might turn out to have restrictions with regard to video performance was clear to me from the beginning. However, I didn&#039;t expect that I might have trouble to have audio. It looks like the problem is best summarized in this ubuntu &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=694&amp;amp;entry_id=168&quot;  onmouseover=&quot;window.status=&#039;https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/591489&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/591489&quot;&gt;bug report on virt-manager and vnc&lt;/a&gt;: while qemu/KVM of course can hand over audio to the host, this fails when using virt-manager with VNC because the vnc viewer virt-manager is using doesn&#039;t handle audio. There are ways around this, for instance &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=695&amp;amp;entry_id=168&quot;  onmouseover=&quot;window.status=&#039;http://etbe.coker.com.au/2007/01/07/xephyr/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://etbe.coker.com.au/2007/01/07/xephyr/&quot;&gt;Russel Crockers advise to use Xephyr&lt;/a&gt;, but this a) takes even more time to setup and b) takes away the bit of comfort of using virt-manager.&lt;br /&gt;
&lt;br /&gt;
So, in summary, using KVM as provided by Debian Lenny and or Squeeze turned out to be quite a disappointment. I would go so far and claim that it&#039;s not really recommandable unless you&#039;re willing to invest a substantial amount of time. I&#039;ve had my fair share of trouble with VMware, too, but getting things up and running was never so troublesome as this.&lt;br /&gt;
&lt;br /&gt;
ObTitle: &lt;i&gt;Gorillaz&lt;/i&gt;, &quot;Demon Days&quot; 
    </content:encoded>

    <pubDate>Thu, 29 Jul 2010 21:02:00 +0200</pubDate>
    <guid isPermaLink="false">http://hillview.1on.de/archives/168-guid.html</guid>
    <category>debian</category>
<category>kvm</category>
<category>vmware</category>

</item>
<item>
    <title>On password safety</title>
    <link>http://hillview.1on.de/archives/167-On-password-safety.html</link>
            <category>Computer</category>
    
    <comments>http://hillview.1on.de/archives/167-On-password-safety.html#comments</comments>
    <wfw:comment>http://hillview.1on.de/wfwcomment.php?cid=167</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://hillview.1on.de/rss.php?version=2.0&amp;type=comments&amp;cid=167</wfw:commentRss>
    

    <author>nospam@example.com (Holger Schauer)</author>
    <content:encoded>
    I&#039;m using computers for quite a while and since fifteen or more years I&#039;ve been using multi-user systems and the internet. Having a computer science and linguistics background, security of passwords is not exactly a new issue for me. Quite to the contrary, I&#039;ve been telling a lot of my friends that using good passwords is important.&lt;br /&gt;
&lt;br /&gt;
However, this week I&#039;ve stumbled about some interesting pieces that shed new light on the topic for me. The first is a not exactly new article by Bruce Schneier about how &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=690&amp;amp;entry_id=167&quot;  onmouseover=&quot;window.status=&#039;http://www.schneier.com/essay-148.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.schneier.com/essay-148.html&quot;&gt;secure passwords keep you safer&lt;/a&gt;, which contained quite some information that was new to me. It&#039;s a very interesting piece on possible approaches to break passwords &lt;em&gt;as of three years ago&lt;/em&gt;. Now combine that with a more recent piece on &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=691&amp;amp;entry_id=167&quot;  onmouseover=&quot;window.status=&#039;http://www.darknet.org.uk/2009/11/using-cloud-computing-to-crack-passwords-amazons-ec2/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.darknet.org.uk/2009/11/using-cloud-computing-to-crack-passwords-amazons-ec2/&quot;&gt;using cloud computing to crack passwords&lt;/a&gt; and you might get an idea how important using really good passwords might have become today. The second piece that hit the same spot for me, takes known approaches to come up with a new method to &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=692&amp;amp;entry_id=167&quot;  onmouseover=&quot;window.status=&#039;http://www.eecs.harvard.edu/~michaelm/postscripts/hotsec2010.pdf&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.eecs.harvard.edu/~michaelm/postscripts/hotsec2010.pdf&quot;&gt;let users pick their passwords&lt;/a&gt; -- that is, which ever password they want, unless it is too popular.&lt;br /&gt;
&lt;br /&gt;
This brings me back to my current usage of passwords. Until now, I&#039;ve seen my passwords as reasonably hard to break. They contain all the usual stuff, a mix of upper and lower case letters, numbers and some symbols. However, reading Schneiers article made it clear to me that not all my passwords may really be as secure as I thought they would be, so it&#039;s time to overhaul these.&lt;br /&gt;
&lt;br /&gt;
In addition, I&#039;ve been using some passwords for more than one site (though not for critical/important ones), to ease the mental cost of having to remember particular passwords for some sites. On the other hand, some time ago, I already started using a password manager to store my passwords, synchronizing the db over several installations. So, the cost for using unique passwords is lower as it used to be, so I&#039;m going to correct that error, too.&lt;br /&gt;
&lt;br /&gt;
What this amounts to at the end of the day, though, is a really old lesson: security is a permanent issue not a one-time shot. What once might have been enough security measure might be totally insufficient soon. 
    </content:encoded>

    <pubDate>Fri, 23 Jul 2010 14:31:50 +0200</pubDate>
    <guid isPermaLink="false">http://hillview.1on.de/archives/167-guid.html</guid>
    <category>privacy</category>
<category>security</category>

</item>
<item>
    <title>Firefox plugins</title>
    <link>http://hillview.1on.de/archives/166-Firefox-plugins.html</link>
            <category>Computer</category>
    
    <comments>http://hillview.1on.de/archives/166-Firefox-plugins.html#comments</comments>
    <wfw:comment>http://hillview.1on.de/wfwcomment.php?cid=166</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://hillview.1on.de/rss.php?version=2.0&amp;type=comments&amp;cid=166</wfw:commentRss>
    

    <author>nospam@example.com (Holger Schauer)</author>
    <content:encoded>
    &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=661&amp;amp;entry_id=166&quot;  onmouseover=&quot;window.status=&#039;http://blog.koehntopp.de/archives/2885-Firefox-Plugins.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://blog.koehntopp.de/archives/2885-Firefox-Plugins.html&quot;&gt;Kristian hat eine interessante Liste von Firefox Plugins&lt;/a&gt;. Meine weicht an einigen Stellen ab, insbesondere habe ich eben auch das ein oder andere Webentwickler-Plugin mit drin.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;&lt;a href=&quot;http://hillview.1on.de/archives/166-Firefox-plugins.html#extended&quot;&gt;Continue reading &quot;Firefox plugins&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 09 Jul 2010 11:16:18 +0200</pubDate>
    <guid isPermaLink="false">http://hillview.1on.de/archives/166-guid.html</guid>
    <category>firefox</category>
<category>internet</category>
<category>privacy</category>
<category>web development</category>

</item>
<item>
    <title>Men in love</title>
    <link>http://hillview.1on.de/archives/161-Men-in-love.html</link>
            <category>Linux</category>
    
    <comments>http://hillview.1on.de/archives/161-Men-in-love.html#comments</comments>
    <wfw:comment>http://hillview.1on.de/wfwcomment.php?cid=161</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://hillview.1on.de/rss.php?version=2.0&amp;type=comments&amp;cid=161</wfw:commentRss>
    

    <author>nospam@example.com (Holger Schauer)</author>
    <content:encoded>
    When I got a Handspring Visor (a Palm Pilot offspring) roughly ten years ago, I was amazed about all the nice things you could do with the device. I even wrote a German version of the visor linux howto, although I never really finished it. What I especially liked was the possibility to install a ssh client and use it to connect on the push of a button to my workstation -- which I took to good use several imes when my Xserver went beserk.  Unfortunately, over time the major incentive to use the thing, syncing calender and address book vanished, as it turned out to be a major hassle when the main calendar to sync with was Lotus Domino. So, since some years my trusty Visor has only gathered dust. But even back in 2000, it was clear to me that the Palm Pilot would only be the starting point and that at some time in the then-unknown future, we would have small devices that would allow issuing phone calls, taking pictures, listening to music as well as providing the &quot;usual&quot; features of handhelds.&lt;br /&gt;
&lt;br /&gt;
Back then, I didn&#039;t really think about when exactly that device would arrive but I think the time has come finally. Some days ago I bought a Nokia N900, which is a mobile device running &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=640&amp;amp;entry_id=161&quot;  onmouseover=&quot;window.status=&#039;http://www.maemo.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;external link: maemo&quot;&gt;Maemo&lt;/a&gt; on top of a Linux kernel on an ARM platform (see &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=641&amp;amp;entry_id=161&quot;  onmouseover=&quot;window.status=&#039;http://natisbad.org/N900/n900-commented-hardware-specs.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://natisbad.org/N900/n900-commented-hardware-specs.html&quot;&gt;this overview of the hardware&lt;/a&gt; for more details).  This is really a neat little gadget which is really as close to my ten year old dream as you can get: It comes with mobile phone capabilitiy, UMTS and wlan connection, 5MP camera, media player, RSS feed reader, etc. and also has a quite usable sliding keyboard. It&#039;s not really a mobile phone but a pocket computer which you can also use to call people with, which shows for instance in that most applications require the device to held in landscape position.&lt;br /&gt;
&lt;br /&gt;
Of course, what&#039;s most interesting to me is the software on the device. Basically, Maemo 5 is a linux distribution based on Debian technology, e.g. apt/dpkg and friends work as expected. You don&#039;t get all of your favourite linux applications of course, but still there are quite a lot of the regular stuff you would expect. This includes the mobile version of Firefox, &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=642&amp;amp;entry_id=161&quot;  onmouseover=&quot;window.status=&#039;http://www.mozilla.com/en-US/mobile/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://www.mozilla.com/en-US/mobile/&quot;&gt;Fennec&lt;/a&gt;, vim, OpenSSH (client and server) and even &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=643&amp;amp;entry_id=161&quot;  onmouseover=&quot;window.status=&#039;http://bit.ly/4GUpRE&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;(external link: Emacs on N900)&quot;&gt;Emacs&lt;/a&gt;. Being the geek that I am, nearly the first thing I did was a remote login via ssh from my workstation on the N900 (also see &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=644&amp;amp;entry_id=161&quot;  onmouseover=&quot;window.status=&#039;http://wiki.maemo.org/N900_USB_networking&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://wiki.maemo.org/N900_USB_networking&quot;&gt;this overview of USB networking on the N900&lt;/a&gt;). Native maemo applications are typically developed with Python and GTK, although that is probably going to change for Maemo 6 (Nokia has announced it favours Qt over GTK).  The community seems quite active, too: just shortly, a &lt;a href=&quot;http://hillview.1on.de/exit.php?url_id=645&amp;amp;entry_id=161&quot;  onmouseover=&quot;window.status=&#039;http://talk.maemo.org/showthread.php?t=42339&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;http://talk.maemo.org/showthread.php?t=42339&quot;&gt;port of Clisp&lt;/a&gt; (a Common Lisp compiling to byte code) was announced (including a running Swank backend, so you can connect from your development Emacs remotely), although I imagine that the development environment for Python is, generally speaking, more advanced (for Maemo development, this is). I haven&#039;t looked any closer into developing for Maemo up to now, but it surely looks interesting.&lt;br /&gt;
&lt;br /&gt;
ObTitle: &lt;i&gt;Gossip&lt;/i&gt;, &quot;Music for men&quot; 
    </content:encoded>

    <pubDate>Wed, 27 Jan 2010 11:23:16 +0100</pubDate>
    <guid isPermaLink="false">http://hillview.1on.de/archives/161-guid.html</guid>
    <category>linux</category>
<category>n900</category>
<category>python</category>

</item>

</channel>
</rss>
