<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Monomorphic</title>
	<atom:link href="http://www.monomorphic.org/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.monomorphic.org/wordpress</link>
	<description>Conceptual meandering</description>
	<lastBuildDate>Mon, 14 May 2012 13:53:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Identity games</title>
		<link>http://www.monomorphic.org/wordpress/identity-games/</link>
		<comments>http://www.monomorphic.org/wordpress/identity-games/#comments</comments>
		<pubDate>Mon, 14 May 2012 13:53:30 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[academic]]></category>
		<category><![CDATA[espionage]]></category>
		<category><![CDATA[foucault]]></category>
		<category><![CDATA[human condition]]></category>
		<category><![CDATA[identity]]></category>
		<category><![CDATA[literature]]></category>
		<category><![CDATA[society]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=1069</guid>
		<description><![CDATA[I&#8217;ve recently seen the film Tinker, Tailor, Soldier, Spy, based on John le Carré&#8217;s novel with the same name. In the 1970&#8242;s a TV series based on the same novel, with Alec Guinness as George Smiley, was very popular in Britain. This film, with Gary Oldman as the protagonist, is supposed to be something like [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.monomorphic.org/wordpress/wp-content/uploads/2012/05/IMG_1965.jpg"><img class="size-medium wp-image-1079 alignright" style="margin: 1em;" title="IMG_1965" src="http://www.monomorphic.org/wordpress/wp-content/uploads/2012/05/IMG_1965-300x224.jpg" alt="" width="300" height="224" /></a>I&#8217;ve recently seen the film Tinker, Tailor, Soldier, Spy, based on John le Carré&#8217;s novel with the same name. In the 1970&#8242;s a TV series based on the same novel, with Alec Guinness as George Smiley, was very popular in Britain. This film, with Gary Oldman as the protagonist, is supposed to be something like an update for the new generation.</p>
<p>It is a very good film indeed. (I cannot remember the last time I was so gripped by a film shortly after its release.) I was also inspired to read several of le Carré&#8217;s novels, including but not limited to Tinker, Tailor, Soldier, Spy. What they have in common is a subtle, rich portrayal of the spy trade from the viewpoint of Britain during the cold war; a world that seems to be, increasingly, a thing of the past. Voice recognition, social profiling and data mining seems to be taking the place of a good chunk of what le Carré calls tradecraft &#8211; the concrete skills that spies with 1970&#8242;s technology need in order to perform their work on the ground in enemy territory &#8211; and computer scientists like myself are to blame.</p>
<p>While being hailed as the anti-Ian Fleming due to his relatively gritty realism, Le Carré is not without his own spy romanticism. But the bleakness inherent in the work comes through on every page.</p>
<p>In his commentary on the film, le Carré states that</p>
<blockquote><p>[The world of spies is] not so far from corporate life, from the ordinary world. At the time of writing the novel, I thought that there was a universality that I could exploit. The book definitely resonated with the public; people wanted to reference their lives in terms of conspiracy, and that remains central to the relationship between man and the institutions he creates.</p></blockquote>
<p>There is something profound in this. Spies are merely concentrated versions of something that we all are ourselves, something that we must be every day. Spies project false personalities in order to gain access and information, either about enemy assets or about other spies. They hide to survive, and they hide so that they may uncover a kind of truth. With a view to the spy as the most concentrated form of a certain kind of existence, let us take a look at some other forms that this existence may take.</p>
<p><strong>The modern professional.</strong> To be professional means to effectively project a professional identity in the workplace. To be unprofessional almost always means that too much of another, possibly more genuine personality shines through &#8211; one has become too unrestrained. The professional needs to always be projecting, to a degree, in order to remain compatible with the workplace and retain his income and career prospects. Young people are socialised into this condition very early &#8211; at career workshops, students learn how to polish their CVs, how to embellish their record, and to hide their flaws. This is essentially a partial course in spycraft. But all this is only at the entry level. When any kind of sophisticated politics enters the organisation &#8211; as it does &#8211; the professional may be pushed ever closer to the spy. A recruiter: &#8220;Too bad that we couldn&#8217;t hire him, he seemed <em>genuine</em>.&#8221;</p>
<p><strong>The academic.</strong> The academic can be thought of as a special version of the professional with some essential differences. First, professionals do not yet have universal records that follow them around for their entire lifetime &#8211; much of the &#8220;record&#8221; that they create, which is associated with the persona they are supposed to project, exists only in the memory of people and of one organisation. Academics build their records with units such as publications and conference attendance. Publications in particular form an atomic record that does not go away. On the other hand, the everyday life of the academic may &#8211; possibly &#8211; be less artificial than that of the professional, since focus is on the production of publishable units, not on pleasing people in one&#8217;s surroundings as much as possible.</p>
<p><strong>The philosopher.</strong>  Philosophers seek to uncover some hidden truth about the world. In this sense, they are spies without enemies. The philosopher lives among people with a view to analysing them and understanding their behaviour, so that he can explain it to them. But most of the time the philosopher is likely to be a flaneur or a quiet observer, like the spy often is: someone who seeks to learn something hidden from situations that other participants may regard as being routine and their everyday existence. In this sense spies may have something in common with philosophers.</p>
<p>Here I have highlighted a phenomenon but not made any recommendations. Maybe it&#8217;s for the better that we are all a little bit like spies. Masks of some kind are worn in most social interactions, not just the ones above, and they are not a recent phenomenon. Exposing something like a true inner self requires that the inner self remains static long enough for it to be possible to expose. But the difference between most social relationships and the relationships we have with institutions today is that the former can change or dissolve naturally to fit spontaneous changes in people&#8217;s characters or needs. Relationships between people and modern institutions do not seem to be capable of this dynamic as of yet.</p>
 <p><a href="http://www.monomorphic.org/wordpress/?flattrss_redirect&amp;id=1069&amp;md5=2f686c12b9b7b27f8006f706ff7094e4" title="Flattr" target="_blank"><img src="http://www.monomorphic.org/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/identity-games/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Books: Deleuze&#8217;s Nietzsche and De Landa&#8217;s Nonlinear History</title>
		<link>http://www.monomorphic.org/wordpress/books-deleuzes-nietzsche-and-de-landas-nonlinear-history/</link>
		<comments>http://www.monomorphic.org/wordpress/books-deleuzes-nietzsche-and-de-landas-nonlinear-history/#comments</comments>
		<pubDate>Thu, 03 May 2012 04:09:54 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[deleuze]]></category>
		<category><![CDATA[hegel]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[nietzsche]]></category>
		<category><![CDATA[nonlinear]]></category>
		<category><![CDATA[society]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=1063</guid>
		<description><![CDATA[In 2012, so far, I&#8217;ve finished two very evocative books. One is Deleuze&#8217;s Nietzsche and Philosophy. The other is Manuel De Landa&#8217;s 1000 Years of Nonlinear History. Deleuze&#8217;s Nietzsche is the author&#8217;s interpretation of Nietzsche&#8217;s thought. This is perhaps one of the most coherent interpretations of Nietzsche I&#8217;ve read. It succeeds in turning Nietzsche&#8217;s notoriously [...]]]></description>
			<content:encoded><![CDATA[<p>In 2012, so far, I&#8217;ve finished two very evocative books. One is Deleuze&#8217;s <em>Nietzsche and Philosophy</em>. The other is Manuel De Landa&#8217;s <em>1000 Years of Nonlinear History</em>.</p>
<p>Deleuze&#8217;s Nietzsche is the author&#8217;s interpretation of Nietzsche&#8217;s thought. This is perhaps one of the most coherent interpretations of Nietzsche I&#8217;ve read. It succeeds in turning Nietzsche&#8217;s notoriously unsystematic philosophy into a system with something like well-defined concepts and their interrelationships at its core. The work feels simultaneously fresh and firmly grounded in Nietzsche&#8217;s own ideas. This is a book that I expect I will read again, because I&#8217;m quite certain I haven&#8217;t understood everything. For example, I don&#8217;t yet have a good feel for the difference between Deleuze&#8217;s active and reactive force  - I cannot even imagine what an active force is. Reading this work has made me suspect that I&#8217;ve thought of every force as being essentially reactive up until this point.</p>
<p>One caveat with this work is that it is a book with a mission; the mission is to destroy Hegelian philosophy and dialecticism. This is in line with the historical context of Nietzsche usage in France, where he was used mainly as an antidote to the dominant Hegelian thought, if I understand correctly.</p>
<p>I&#8217;ve previously read De Landa&#8217;s <em>Philosophy and Simulation</em>, a book about emergence and about corroborating philosophical theories with computer simulations. <em>1000 Years of Nonlinear History</em> is an earlier, but no less interesting, work of his. It tells the simultaneous history of geology, genes and memes (in the form of languages). In order to fully appreciate this book I think I ought to gain some idea of the mathematics behind attractors and dynamic systems.  Still, there is a lot to be gained even without those insights. The parallels between the three different historical fields are interesting, and the essential point that is made is that there is nothing like progress or determinism about the forms that society, language, ideas, life or matter take today. Instead, the state of the world is a nonlinear system of interacting attractors. We are invited to view the world as rich but essentially accidental, and free of distinctions such as organic-inorganic and human-nonhuman.</p>
<p>&nbsp;</p>
 <p><a href="http://www.monomorphic.org/wordpress/?flattrss_redirect&amp;id=1063&amp;md5=21ffa39c020b4e51c7fbc66a885c835e" title="Flattr" target="_blank"><img src="http://www.monomorphic.org/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/books-deleuzes-nietzsche-and-de-landas-nonlinear-history/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entering into bioinformatics</title>
		<link>http://www.monomorphic.org/wordpress/entering-into-bioinformatics/</link>
		<comments>http://www.monomorphic.org/wordpress/entering-into-bioinformatics/#comments</comments>
		<pubDate>Sat, 14 Apr 2012 13:37:15 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Bioinformatics]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[academic]]></category>
		<category><![CDATA[epistemology]]></category>
		<category><![CDATA[genetics]]></category>
		<category><![CDATA[science]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=1057</guid>
		<description><![CDATA[As of now, I have been working with bioinformatics in the Mizuguchi lab at NIBIO, Osaka, for about two weeks. The lab environment is stimulating and I feel quite fortunate to be here. It is interesting to compare computer science and bioinformatics with just the hindsight of this short period. In computer science and electronics, [...]]]></description>
			<content:encoded><![CDATA[<p>As of now, I have been working with bioinformatics in the Mizuguchi lab at NIBIO, Osaka, for about two weeks. The lab environment is stimulating and I feel quite fortunate to be here.</p>
<p>It is interesting to compare computer science and bioinformatics with just the hindsight of this short period. In computer science and electronics, we study systems that have been built from the ground up with well known components at various scales. They have been designed with certain high level functionalities in mind, and it is always well known how these high level functions are being realised and what makes them tick. In biology, in contrast, we encounter systems designed by nature. These systems, organisms, have certain high level functions we are aware of. We are also aware of some of the low level functions, such as molecules, atoms and cells (although we may have only a partial understanding of some of these). The problem in biology is now to explain what makes a high level function tick or not tick, how to steer it, enhance it, or suppress it. The intermediate steps are not always revealed to us, and we must painstakingly tease them out with experiments. As always with empirical science, we can never be sure that we&#8217;ve obtained the whole picture.</p>
<p>This difference &#8211; the fact that we must reconstruct all the design principles and intermediate mechanisms for organisms, but not for computers &#8211; leads to different styles of teaching and thinking. Biology texts appear to be very top down and focus on what has been observed and what it appears to be. Technology texts can be bottom up, building up a complex design smoothly by adding one layer at a time, starting from the core, having the confidence that nothing is being omitted. The contrast is striking.</p>
<p>A limitation that both biology and computer science share is the problem of defining the exact capabilities of an organism or a system. In biology we often do not know, and I doubt if we ever will, considering how complex the genetic code is. In computer science, the capabilities of very simple programs can be completely understood, but understanding a nontrivial program &#8212; for example, verifying that it does what is desired and does not do what is not desired &#8212; usually requires nontrivial formal methods, if it is at all possible.</p>
 <p><a href="http://www.monomorphic.org/wordpress/?flattrss_redirect&amp;id=1057&amp;md5=f36c0c40a2218a2c1f31cabda6aeede4" title="Flattr" target="_blank"><img src="http://www.monomorphic.org/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/entering-into-bioinformatics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Ph.D. Thesis: &#8220;Extending the Java Programming Language for Evolvable Component Integration&#8221;</title>
		<link>http://www.monomorphic.org/wordpress/my-ph-d-thesis-extending-the-java-programming-language-for-evolvable-component-integration/</link>
		<comments>http://www.monomorphic.org/wordpress/my-ph-d-thesis-extending-the-java-programming-language-for-evolvable-component-integration/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 05:22:39 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[academic]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[poplar]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[research]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=1052</guid>
		<description><![CDATA[After three very hectic first months of 2012, the final version of my Ph.D. thesis has been submitted and I&#8217;ve gone through the graduation ceremonies. From the 1st of April I will be a postdoctoral associate in bioinformatics at the National Institute of Biomedical Innovation in Osaka, Japan. I will comment further on my Ph.D. [...]]]></description>
			<content:encoded><![CDATA[<p>After three very hectic first months of 2012, the final version of my Ph.D. thesis has been submitted and I&#8217;ve gone through the graduation ceremonies. From the 1st of April I will be a postdoctoral associate in bioinformatics at the <a href="http://www.nibio.go.jp/index.html">National Institute of Biomedical Innovation</a> in Osaka, Japan. I will comment further on my Ph.D. experience and my entry into bioinformatics when I can.</p>
<p>Being a Ph.D. student in the Honiden laboratory has been a great experience, and I am very grateful to professor Honiden and to the other lab members for their support.</p>
<p>My <a href="http://www.monomorphic.org/papers/nystroemJohanThesis.pdf">thesis</a> and the <a href="http://www.monomorphic.org/papers/nystroemJohanThesisSlides.pdf">associated slides</a> are available. The abstract is as follows.</p>
<p><em>In the last few decades, software systems have become less and less atomic, and increasingly built according to the component-based software development paradigm: applications and libraries are increasingly created by combining existing libraries, components and modules. Object-oriented programming languages have been especially important in enabling this development through their essential feature of encapsulation: separation of interface and implementation. Another enabling technology has been the explosive spread of the Internet, which facilitates simple and rapid acquisition of software components. As a consequence, now, more than ever, different parts of software systems are maintained and developed by different people and organisations, making integration and reintegration of software components a very challenging problem in practice. </em></p>
<p><em>One of the most popular and widespread object-oriented programming languages today is the Java language, which through features such as platform independence, dynamic class loading, interfaces, absence of pointer arithmetic, and bytecode verification, has simplified component-based development greatly. However, we argue that Java encapsulation, in the form supported by its interfaces, has several shortcomings with respect to the need for integration. API clients depend on the concrete forms of interfaces, which are collections of fields and methods that are identified by names and type signatures. But these interfaces do not capture essential information about how classes are to be used, such as usage protocols (sequential constraints), the meaning and results of invoking a method, or useful ways for different classes to be used together. Such constraints must be communicated as human-readable documentation, which means that the compiler cannot by itself perform tasks such as integrating components and checking the validity of an integration following an upgrade. In addition, many trivial interface changes, such as the ones that may be caused by common refactorings, do not lead to complex semantic changes, but they may still lead to compilation errors, necessitating a tedious manual upgrade process. These problems stem from the fact that client components depend on exact syntactic forms of interfaces they are making use of. In short, Java interfaces and integration dependencies are too rigid and capture both insufficient and excessive information with respect to the integration concern. </em></p>
<p><em>We propose a Java extension, Poplar, which enriches interfaces with a semantic label system, which describes functional properties of variables, as well as an effect system. This additional information enables us to describe integration requests declaratively using integration queries. Queries are satisfied by integration solutions, which are fragments of Java code. Such solutions can be found by a variety of search algorithms; we evaluate the use of the well-known partial order planning algorithm with certain heuristics for this purpose. A solution is guaranteed to have at least the useful effects requested by the programmer, and no destructive effects that are not permitted. In this way, we generate integration links (solutions) from descriptions of intent, instead of making programmers write integration code manually. When components are upgraded, the integration links can be verified and accepted as still valid, or regenerated to conform to the new components, if possible. The design of Poplar is such that verification and reintegration can be carried out in a modular fashion. Poplar aims to provide a sound must-analysis for the establishment of labels, and a sound may-analysis for the deletion of labels. We describe the semantics of Poplar informally using examples, and provide a formal specification of Poplar, which is based on Middleweight Java (MJ). We describe an implementation of a Poplar integration checker and generator, called Jardine, which compiles Poplar code to pure Java. We evaluate the practical applicability of Jardine through a case study, which is carried out by refactoring the JFreeChart library. We also discuss the applicability of Poplar to Martin Fowler&#8217;s well known collection of refactorings. Our results show that Poplar is highly applicable to a wide range of refactorings and that the evolution of integrated components becomes considerably simpler.</em></p>
 <p><a href="http://www.monomorphic.org/wordpress/?flattrss_redirect&amp;id=1052&amp;md5=3b0d6f170e759698d6730dc31334cb3e" title="Flattr" target="_blank"><img src="http://www.monomorphic.org/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/my-ph-d-thesis-extending-the-java-programming-language-for-evolvable-component-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Technology and utilitarianism</title>
		<link>http://www.monomorphic.org/wordpress/technology-and-utilitarianism/</link>
		<comments>http://www.monomorphic.org/wordpress/technology-and-utilitarianism/#comments</comments>
		<pubDate>Sun, 04 Mar 2012 04:19:11 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[society]]></category>
		<category><![CDATA[utilitarianism]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=1044</guid>
		<description><![CDATA[Technologists and engineers often use the ideas of utilitarianism to evaluate their solutions. If something is cheaper, or faster, or lets people live 3.2 days longer on average, or some other number can be optimised, they judge a solution to be better. In short, they use a quantitative form of  judgment. This way of thinking [...]]]></description>
			<content:encoded><![CDATA[<p>Technologists and engineers often use the ideas of utilitarianism to evaluate their solutions. If something is cheaper, or faster, or lets people live 3.2 days longer on average, or some other number can be optimised, they judge a solution to be better. In short, they use a quantitative form of  judgment. This way of thinking is the appropriate way of judging engineering problems, but not the best way of judging <em>design problems</em>.</p>
<p>To a degree it is possible to come up with a new product by simply improving on some numbers from an old one. &#8220;Here&#8217;s a new hard drive with 1.3x more space.&#8221; However, such innovation will always be incremental.</p>
<p>The challenge for technology is how to create products and solutions that are not justified or evaluated from a quantitative, utilitarian perspective, but from an entirely different one, perhaps an aesthetic perspective. And this is also the challenge for social innovators and policymakers in society. Solutions that maximise numbers have value and can enable qualitative change in the long run, but in themselves they never constitute true progress.</p>
<p>To see how far the utilitarian thinking has gone, think about how many technology products are justified with sentences along the lines of &#8220;it makes more information available&#8221;, or &#8220;it makes X cheaper&#8221; , or &#8220;it makes you more connected&#8221;. In all seriousness, <a href="http://www.google.com/url?sa=t&amp;rct=j&amp;q=information%20hazards&amp;source=web&amp;cd=1&amp;ved=0CCQQFjAA&amp;url=http%3A%2F%2Fwww.nickbostrom.com%2Finformation-hazards.pdf&amp;ei=3u5ST9qaC-PImAXV_PiiCg&amp;usg=AFQjCNFpDtSFvyIMWcU6dG1zQhrcLx36eg&amp;sig2=dG2-d3loSYomvvFSPE1NtQ">there are situations when it is not desirable to have more information</a>.</p>
 <p><a href="http://www.monomorphic.org/wordpress/?flattrss_redirect&amp;id=1044&amp;md5=7cf4b3c16f3838e81dcbe1668bf65e18" title="Flattr" target="_blank"><img src="http://www.monomorphic.org/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/technology-and-utilitarianism/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Towards an understanding of will</title>
		<link>http://www.monomorphic.org/wordpress/towards-an-understanding-of-will/</link>
		<comments>http://www.monomorphic.org/wordpress/towards-an-understanding-of-will/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 02:05:50 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[definitions]]></category>
		<category><![CDATA[nature]]></category>
		<category><![CDATA[possibly novel]]></category>
		<category><![CDATA[tentative]]></category>
		<category><![CDATA[will]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=1037</guid>
		<description><![CDATA[Will has the potential to be turned into a fundamental concept through which ethics, epistemology, art, life and politics might be understood. How can we define the idea of will? I&#8217;m sure I&#8217;ll find a lot of answers to this in the philosophical literature in time (maybe I should read Schopenhauer). But what I came [...]]]></description>
			<content:encoded><![CDATA[<p>Will has the potential to be turned into a fundamental concept through which ethics, epistemology, art, life and politics might be understood. How can we define the idea of will?</p>
<p>I&#8217;m sure I&#8217;ll find a lot of answers to this in the philosophical literature in time (maybe I should read Schopenhauer). But what I came up with myself, as a preliminary definition, is this:</p>
<p><em>A system can be said to have will if it makes progress towards some goal state in a wide array of circumstances, circumnavigating obstacles (including other systems with will) to some degree.</em></p>
<p>Here, progress doesn&#8217;t need to be an <em>achievement</em> - progress in the form of maintaining some state should also qualify.</p>
<p>This definition is dependent on definitions of states, progress, circumstances and systems. An intuitive conception of all of these should suffice for the time being.</p>
<p>One of my friends suggested that instead of trying to define will as an intrinsic property of something, it should instead just be understood as a human heuristic, a cognitive tool that we use as a lens through which to view the world. These two views are not incompatible, since the question here becomes: what is the minimal set of attributes that something must have for us to view it through the conceptual lens of &#8220;will&#8221;?</p>
 <p><a href="http://www.monomorphic.org/wordpress/?flattrss_redirect&amp;id=1037&amp;md5=958198d6f20f54f28e66d984ecfa2a22" title="Flattr" target="_blank"><img src="http://www.monomorphic.org/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/towards-an-understanding-of-will/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The limits of responsibility</title>
		<link>http://www.monomorphic.org/wordpress/the-limits-of-responsibility/</link>
		<comments>http://www.monomorphic.org/wordpress/the-limits-of-responsibility/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 17:26:39 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[complexity]]></category>
		<category><![CDATA[economics]]></category>
		<category><![CDATA[fallacies]]></category>
		<category><![CDATA[human condition]]></category>
		<category><![CDATA[nietzsche]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[society]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=1026</guid>
		<description><![CDATA[(The multi-month hiatus here on Monomorphic has been due to me working on my thesis. I am now able to, briefly, return to this and other indulgences.) Life presupposes taking responsibility. It presupposes investing people, objects and matters around you with your concern. In particular, democratic society presupposes that we all take full, in some [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.monomorphic.org/wordpress/wp-content/uploads/2011/12/people.jpg"><img class="alignleft size-medium wp-image-1029" style="margin:1em" title="people" src="http://www.monomorphic.org/wordpress/wp-content/uploads/2011/12/people-300x224.jpg" alt="" width="300" height="224" /></a></p>
<p><em>(The multi-month hiatus here on Monomorphic has been due to me working on my thesis. I am now able to, briefly, return to this and other indulgences.)</em></p>
<p>Life presupposes taking responsibility. It presupposes investing people, objects and matters around you with your concern.</p>
<p>In particular, democratic society presupposes that we all take full, in some sense, responsibility for society itself, its decision making and its future.</p>
<p>However, he who lacks information about some matter cannot take responsibility for it. And thus we often defer to authorities in practice. Authorities allow us to specialise our understanding, which increases our net ability to understand as a collective, assuming that we have sufficiently well functioning interpersonal communication.</p>
<p>There are whole categories of problems that routinely are assigned to specific, predefined authorities and experts; for instance legal matters, constitutional matters, whether some person is mentally ill, medical matters, nuclear and chemical hazards, and so on. Fields where some degree of extensive training is generally required. (However, under the right conditions, these authorities could probably also be called into question by the public opinion.) The opposite is those categories of problems that are routinely assigned to &#8220;public opinion&#8221; and all of its voices and modulating contraptions and devices, its amplifiers, dampeners, filters, switches and routing mechanisms.</p>
<p>Responsibility aside, in order to maximise an individual&#8217;s prospects for life, and by extension society&#8217;s prospects for life, it seems important that the individual possess just the right knowledge that they need in their situation. Adding more knowledge is not always a benefit; some kinds of knowledge can be entirely counterproductive. Nietzsche showed this (&#8220;On the use and abuse of history for life&#8221;), and we can easily apply the idea of computational complexity to see how having access to more information would make it harder to make  decisions.</p>
<p>This is especially true for some kinds of knowledge: knowledge about potential grave dangers, serious threats, monumental changes threatening to take place. Once we have such knowledge we cannot unlearn it, even if it is absolutely clear that we cannot act on it and that we do not have the competence to assess the situation fully. It  takes effort and an act of will to fully disregard a threat on the basis of one&#8217;s own insufficient competence.</p>
<p>On the other hand, knowledge about opportunities, about resources, and about problems that one is able to, or could become able to deal with, would generally be helpful and not harmful. However, even this could be harmful if the information is so massive as to turn into noise.</p>
<p>Even disregarding these kinds of knowledge, one of the basic assumptions of democracy &#8211; that each individual takes full responsibility for society &#8211; seems to be an imperative that is designed never to be fulfilled. An imperative designed to be satisfied by patchworks of individual decisions and &#8220;public opinion&#8221;, and whatever information fate happens to throw in one&#8217;s way. Out of a basic, healthy understanding of their own limitations, individuals generally assume that the democratic imperative to know and to take responsibility was never meant to be taken seriously anyway, but one does one&#8217;s best to match one&#8217;s peers in <em>appearing</em> to do so.</p>
<p>It seems to me that the questions we must ask and answer are about the proper extent of responsibility, and the proper extent of knowledge, for each individual. For the individual, taking on no responsibility seems detrimental to life; taking on full responsibility for all problems in the world right now, here today, would also be an impossibility. There would be such a thing as a proper extent of responsibility. One&#8217;s initial knowledge and abilities would inform this proper extent of responsibility, and the two might properly expand and shrink together, rather than expand and shrink separately.</p>
<p>In a democratic society, in so far as one wants to have one, we should ask: what is the proper level of responsibility that society should expect from each individual, and what level should the individual expect from himself as an ideal?</p>
<p>More generally, empirical studies of how public opinion functions and how democracies function in practice are needed. It is inappropriate to judge and critique democracies based on their founding ideals when the democratic practice differs sharply from those ideals &#8211; as inappropriate as it is to critique and judge economies based on the presumption that classical economic principles apply to economic practice in the large.</p>
 <p><a href="http://www.monomorphic.org/wordpress/?flattrss_redirect&amp;id=1026&amp;md5=fda57e272addacf7112588261950aab9" title="Flattr" target="_blank"><img src="http://www.monomorphic.org/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/the-limits-of-responsibility/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Platonism and the dominant decomposition</title>
		<link>http://www.monomorphic.org/wordpress/platonism-and-the-dominant-decomposition/</link>
		<comments>http://www.monomorphic.org/wordpress/platonism-and-the-dominant-decomposition/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 17:33:43 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[composition]]></category>
		<category><![CDATA[epistemology]]></category>
		<category><![CDATA[nietzsche]]></category>
		<category><![CDATA[ontologies]]></category>
		<category><![CDATA[platonism]]></category>
		<category><![CDATA[poplar]]></category>
		<category><![CDATA[programming languages]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=1020</guid>
		<description><![CDATA[I&#8217;m in Portland, Oregon for the SPLASH conference. There&#8217;s a lot of energy and good ideas going around. I gave a talk about my project, Poplar, at the FREECO workshop. At the same workshop there was a very interesting talk given by Klaus Ostermann, outlining some of the various challenges facing software composition. He linked [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m in Portland, Oregon for the <a href="http://www.splashcon.org">SPLASH</a> conference. There&#8217;s a lot of energy and good ideas going around.</p>
<p>I gave a talk about my project, <a href="http://www.poplar-lang.org">Poplar</a>, at the <a href="http://trese.ewi.utwente.nl/workshops/FREECO/FREECO-Onward2011/home.html">FREECO</a> workshop. At the same workshop there was a very interesting talk given by Klaus Ostermann, outlining some of the various challenges facing software composition. He linked composition of software components to concepts in classical logic, and informally divided composition into a light side and a dark side. On the light side are ideal concepts such as monotonicity (the more axioms we have, the more we can prove), absence of side effects and a single, canonical decomposition of everything. On the dark side are properties such as side effects, the absence of a single decomposition, knowledge that invalidates previously obtained theorems, and so on.</p>
<p>One of the ideas that resonated the most with me is the tyranny of the dominant decomposition. (For instance, a single type hierarchy). Being forced to decompose a system in a single way at all times implies only having a single perspective on it. Is this not platonism coming back to haunt us in programming languages? (Ostermann did indeed say that he suspects that mathematics and the natural sciences have had too much influence on programming). What we might need now is an antiplatonism in programming: we might need subjectivist/perspectivist programming languages. If components can view their peer components in different ways, depending on their domain and their interests (i.e. what kind of stakeholders they are), we might truly obtain flexible, evolvable, organic composition.</p>
 <p><a href="http://www.monomorphic.org/wordpress/?flattrss_redirect&amp;id=1020&amp;md5=aab39ff709a53e33a585f94992d25b1f" title="Flattr" target="_blank"><img src="http://www.monomorphic.org/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/platonism-and-the-dominant-decomposition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What makes a good programming language?</title>
		<link>http://www.monomorphic.org/wordpress/what-makes-a-good-programming-language/</link>
		<comments>http://www.monomorphic.org/wordpress/what-makes-a-good-programming-language/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 09:00:09 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[academic]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=1012</guid>
		<description><![CDATA[New programming languages are released all the time. History is littered with dead ones. There are also many long time survivors in good shape, as well as geriatric languages on life support. What makes a programming language attractive and competitive? How can we evaluate its quality? There are many different aspects of this problem. Ease [...]]]></description>
			<content:encoded><![CDATA[<p>New programming languages are released all the time. History is littered with dead ones. There are also many long time survivors in good shape, as well as geriatric languages on life support.</p>
<p>What makes a programming language attractive and competitive? How can we evaluate its quality? There are many different aspects of this problem.</p>
<p><strong>Ease of reading and writing</strong>, or: directness of the mapping between the problem in your head and the model you are creating on the computer. This can be highly domain dependent, for instance languages such as LaTeX, Matlab and R are designed with specific problems in mind and cater to users from that domain. Their limits show quickly when you try to stretch them beyond their envisioned purpose. Speaking of general programming languages, I think Python deserves to be mentioned as a language that is extremely readable and writable. It has other shortcomings though &#8211; see below. Prolog is also highly read- and writable if it suits your problem.</p>
<p><strong>Runtime performance. </strong>Arguably this is one of the few reasons to bother with using C++. For the majority of programming projects though, performance is much less of a problem than one might think, especially if one considers how close the performance of many JVM languages get to C++. When programmers think about their overall productivity and effectiveness in developing and maintaining a system, C++ is often not the best choice, obviously.</p>
<p><strong>Scalability to large teams. </strong>The key property here is: does the language do anything to help me, as a developer, work with code that other people wrote? Ease of maintenance may be strongly correlated with usability in large teams. An anti-pattern here is languages that allow for solving the same problem in a huge amount of ways with very variable syntax. For instance, Perl and C++ can lead to notoriously unmaintainable code if used carelessly. Some say that Scala also suffers from this problem. Basically, the language helps here if it prevents me from doing things that other developers might not expect, and that I might forget to document or communicate. This is why Gosling famously called Java a blue collar language; it restricts you enough to make teamwork quite practical. It even restricts the layout of your source file hierarchy. (Now we begin to see that some goals are in conflict with each other).</p>
<p><strong>Scalability to large systems. </strong>This is related to the preceding property, but whereas team scalability seems to be mainly about avoiding the creation of code fragments that surprise people other than their creators, system size scalability seems to be about avoiding the creation of code fragments that surprise other code fragments. Here one needs invariants, good type checking, static constraints of all kinds. Scripting languages like Perl and Python, lacking static typing completely, are some of the worst in this regard, since we cannot even be sure at startup time that methods we try to invoke on objects exist at all (Python).</p>
<p><strong>Scalability over time (maintainability).</strong> If there is both system size scalability and team scalability, then the system is also likely to be able to live for a long time without great troubles.</p>
<p><strong>Developer efficiency and rapid prototyping. </strong>Depending on the nature of the system being developed, this may depend on several different properties listed above.</p>
<p><strong>Availability of quality tools.</strong> Mature runtime environments, such as the JVM, have many more high quality tools and IDEs available than a language than Ruby. Mature languages also have more compilers for more different architectures available.</p>
<p>These points begin to give us an idea of how we can evaluate programming languages. However, I also believe that making a good language and making people use it is largely about luck and factors outside the design itself. Just like there&#8217;s a big step between imagining and specifying an utopian society and making that social order an actuality, there&#8217;s a big step between designing an ideal programming language and achieving widespread adoption for it. We have seen a way forward though: with generalised runtime environments such as the JVM and the CLR, we may develop and deploy languages that take advantage of a lot of existing infrastructure much more easily than before. And what I hope for is in fact that it becomes even easier to deploy new languages, and that new languages are as interoperable as possible (insofar as it doesn&#8217;t constrain their design), so that we could see more competition, more evolution and more risk taking in the PL space.</p>
 <p><a href="http://www.monomorphic.org/wordpress/?flattrss_redirect&amp;id=1012&amp;md5=fff6eeac12b2b852112ea787fe9ec90f" title="Flattr" target="_blank"><img src="http://www.monomorphic.org/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/what-makes-a-good-programming-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pointers in programming languages</title>
		<link>http://www.monomorphic.org/wordpress/pointers-in-programming-languages/</link>
		<comments>http://www.monomorphic.org/wordpress/pointers-in-programming-languages/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 15:21:03 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[academic]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[reuse]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[state]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=1006</guid>
		<description><![CDATA[It is likely that few features cause as much problems as pointers and references in statement-oriented languages, such as C, C++ and Java. They are powerful, yes, and they allow us to control quite precisely how a program is to represent something. We can use them to conveniently compose objects and data without the redundancy [...]]]></description>
			<content:encoded><![CDATA[<p>It is likely that few features cause as much problems as pointers and references in statement-oriented languages, such as C, C++ and Java. They are powerful, yes, and they allow us to control quite precisely how a program is to represent something. We can use them to conveniently compose objects and data without the redundancy of replicating information massively. In languages like C they are even more powerful than in Java, since just about any part of memory can be viewed as if it were just about anything through the use of pointer arithmetic, which is indeed frightening.</p>
<p>But they also complicate reasoning about programs enormously. Both human reasoning and automated reasoning. Pointers allow any part of the program to have side effects in any other part of the program (if we have a reference to an object that originated there), and they make it very hard to reason about the properties that an object might have at a given point in time (since we generally have no idea who might hold a reference to it &#8211; it is amazing that programmers are forced to track this in their heads, more or less). In my effort to design my own language, multiple pointers to the same objects &#8211; aliases &#8211; have come back from time to time to bite me and block elegant, attractive designs. I believe that this is a<em> very </em>hard problem to design around. Aliased pointers set up communication channels between arbitrary parts of a program.</p>
<p>Nevertheless attempts have been made, in academia and in research labs, to solve this problem. Fraction-based permissions track how many aliases exist and endow each alias with specific permissions to access the object that is referred to. Ownership analysis forces access to certain objects to go through special, &#8220;owning&#8221; objects. Unique or &#8220;unshared&#8221; pointers in some language extensions restrict whether aliases may be created or not. But so far no solution has been extremely attractive and convenient, and none has made it into mainstream languages. (<del>I know that someone</del> Philipp Haller made a <a href="http://lamp.epfl.ch/~phaller/readme_uniqueness.html">uniqueness plugin for the Scala compiler</a>, but it is not in wide use, I believe.)</p>
<p>If we are to attempt further incremental evolution of the C-family languages, aliased pointers are one of the most important issues we can attack in my opinion.</p>
 <p><a href="http://www.monomorphic.org/wordpress/?flattrss_redirect&amp;id=1006&amp;md5=45794a6be4c8cfc42a0be706de7eb18b" title="Flattr" target="_blank"><img src="http://www.monomorphic.org/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/pointers-in-programming-languages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

