<?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 &#187; Computer science</title>
	<atom:link href="http://www.monomorphic.org/wordpress/category/computing/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.monomorphic.org/wordpress</link>
	<description>Nystrom re-presents</description>
	<lastBuildDate>Tue, 27 Jul 2010 02:12:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Continuous computing</title>
		<link>http://www.monomorphic.org/wordpress/continuous-computing/</link>
		<comments>http://www.monomorphic.org/wordpress/continuous-computing/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 08:45:36 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[nature]]></category>
		<category><![CDATA[possibly novel]]></category>
		<category><![CDATA[state]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=643</guid>
		<description><![CDATA[Disclaimer: I haven&#8217;t checked academic sources for any of the statements made in this post &#8211; all of it is speculation which may be affirmed or rejected by existing literature. Existing computing hardware and software are based on a discrete model: the Church-Turing model. The machinery is built on digital logic, and formalisms such as [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.monomorphic.org/wordpress/wp-content/uploads/2010/07/nordenSight.jpg"><img class="alignleft size-medium wp-image-657" style="margin:1em" title="nordenSight" src="http://www.monomorphic.org/wordpress/wp-content/uploads/2010/07/nordenSight-219x300.jpg" alt="" width="219" height="300" /></a></p>
<p>Disclaimer:<em> I haven&#8217;t checked academic sources for any of the statements made in this post &#8211; all of it is speculation which may be affirmed or rejected by existing literature.</em></p>
<p>Existing computing hardware and software are based on a discrete model: the Church-Turing model. The machinery is built on digital logic, and formalisms such as lambda calculus and turing machines are also essentially discrete. But what if we were to attempt to build some kind of continuous, or non-discrete, computer?</p>
<p>Digital logic gives us some unique capabilities that do not <em>seem</em> to exist in the real world, for instance: the ability to read a value without altering it, the ability to copy a value without altering it, the ability to test for equivalence and receive a yes or no as an answer. (The whole idea of &#8220;equality&#8221; is digital/platonic in nature.)</p>
<p>It will not do to simulate a continuous computer in software, not even with <a href="http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic">arbitrary precision</a> <a href="http://gmplib.org/">arithmetic</a>. It seems that some properties that a continuous computer might have would be impossible to simulate on discrete hardware. At least, we would need some kind of non-digital hardware extension that produces the continuous operations.</p>
<p>The discrete, digital model may seem like an abstract ideal, disjoint from reality. Yet continuous, real numbers are at least as much of an ideal. Between any two real numbers, no matter how close they are, there is an infinite amount of intermediate real numbers by definition. It seems implausible that we could find this infinite amount in the real world.</p>
<p>Is the real world continuous or discrete? I don&#8217;t know, and last time I asked one of my friends who knows physics, the answer I got was too complicated to be reduced to yes or no, or even to &#8220;yes, mostly&#8221; or &#8220;no, mostly&#8221;, if memory serves.</p>
<p>What properties might a continuous computer have? Depending on how it is designed, maybe some or all of the following:</p>
<ul>
<li> If we compute a value twice, there would be a level of precision at which the results appear different</li>
<li> In fact, there is no way to establish the absolute equivalence of two values, equality is reduced to a matter of precision and generalisation (as it in practice already is for computer implementations of floating point arithmetic today)</li>
<li>The simple act of reading a value might alter it slightly.</li>
<li>The more steps a value passes through (i.e. the greater the number of times it is copied), the more it deviates from the original value</li>
<li>The ability to truly move a value, as opposed to mere copying and deletion, might become important, to mitigate the above effect (digital computers cannot truly move values)</li>
</ul>
<p>We must also ask the question: how do we model continuous computing mathematically? Is it enough to allow for numbers with arbitrary range and precision and use standard logic, simulating the destructive effects of computation somehow? (Probably insufficient). Could we generalise lambda calculus/turing machines to abandon their inherent discreteness and end up with a more general formalism?</p>
<p>If we accept the above list of properties, even if we concede that we cannot accurately simulate a C. computer on discrete hardware, maybe we can build a simulator that gives us an idea of what a real device might behave like. But we would have no idea what we&#8217;re missing.</p>
<p>Motivation? The main motivation is that it is interesting, i.e. it promises to point us in new and powerful directions, laden with potential discoveries. If something more concrete is needed: intuitively, we should be able to bridge computer software and the physical world much more easily with this kind of system, bringing benefits to UIs, simulation and modelling, etc.</p>
<p>Edit: After writing the above, I found out that people have investigated the idea of <a href="http://en.wikipedia.org/wiki/Analog_computer">analog computers</a>, which intersects with the idea of the (perhaps poorly named) continuous computing described in this post. The image at the start of this post is a diagram of the <a href="http://en.wikipedia.org/wiki/Norden_bombsight">Norden bombsight</a>, an optical/mechanical computer used in WW2.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/continuous-computing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>On statefulness</title>
		<link>http://www.monomorphic.org/wordpress/on-statefulness/</link>
		<comments>http://www.monomorphic.org/wordpress/on-statefulness/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 12:52:55 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[human condition]]></category>
		<category><![CDATA[nature]]></category>
		<category><![CDATA[state]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=614</guid>
		<description><![CDATA[Last year I made some attempts at free association around formal languages and state machines. But at that time, not much was said about the idea of a state itself; an idea which I think holds a lot of interesting uncharted territory. To begin with, what is state really? Intuitively the word distinguishes states of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.monomorphic.org/wordpress/wp-content/uploads/2010/06/hitotsubashiCars.jpg"><img class="alignleft size-medium wp-image-615" style="margin: 1em;" title="hitotsubashiCars" src="http://www.monomorphic.org/wordpress/wp-content/uploads/2010/06/hitotsubashiCars-225x300.jpg" alt="" width="225" height="300" /></a></p>
<p>Last year I made some attempts at <a href="http://www.monomorphic.org/wordpress/languages-and-automata-part-1/">free association</a> around <a href="http://www.monomorphic.org/wordpress/languages-and-automata-part-2/">formal languages</a> and state machines. But at that time, not much was said about the idea of a state itself; an idea which I think holds a lot of interesting uncharted territory.</p>
<p>To begin with, what is state really? Intuitively the word distinguishes <em>states</em> of an <em>object</em>. The key here is the plurality. A single state in itself is uninteresting. Only as contrasted with another state does the first state acquire meaning. This leads us to an interpretation: states are a way of grouping all the possible forms-of-existence, for want of a better word, that an object has, which lets us make sense of such forms more easily.</p>
<p>To exemplify: the light switch in my apartment can be on or off. But in physical space, the plastic switch can occupy a very large number of positions between one and zero. However, the spring mechanism forces the switch into the first state or the second state as soon as I release my finger from it, giving rise to two distinct functional states. When I was a kid, I would sometimes play with the rather old light switches in my parents&#8217; house by keeping the switch in the middle between on and off. A humming sound would be emitted, and the lights would flicker on and off. Surely not a very good thing for the fittings, and potentially dangerous, but interesting since this broke down the abstraction &#8211; the continuum behind the discrete was exposed.</p>
<p>So given a physical system, then, which remains the same system even as some parts move around, electrical currents flow, etc, we use states to partition all the forms of existence of that system into meaningful ideas. &#8220;The door is open/closed&#8221;, &#8220;The engine is turned on/off&#8221;, &#8220;The engine is turned on but there&#8217;s almost no fuel left&#8221;, and so on. States have probably been with us as long as we have been able to think of binary distinctions, which is to say throughout the history of mankind &#8211; opposites such as day/night and alive/dead must have been with the human mind from prelinguistic times.</p>
<p>Today, states are an essential way of turning the unmanageable analog realm into a finite, subjugated digital representation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/on-statefulness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>One year into the Ph.D. process</title>
		<link>http://www.monomorphic.org/wordpress/one-year-into-the-ph-d-process/</link>
		<comments>http://www.monomorphic.org/wordpress/one-year-into-the-ph-d-process/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 05:25:29 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[academic]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[trivia]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=574</guid>
		<description><![CDATA[I thought I&#8217;d write a more personal note for a change. It&#8217;s been just over a year since I started studying for my Ph.D. &#8212; formally, I entered the program in April 2009. With at least two years to go, how do things look with some hindsight? What do I think it means to obtain [...]]]></description>
			<content:encoded><![CDATA[<p>I thought I&#8217;d write a more personal note for a change.</p>
<p>It&#8217;s been just over a year since I started studying for my Ph.D. &#8212; formally, I entered the program in April 2009. With at least two years to go, how do things look with some hindsight? What do I think it means to obtain the Ph.D. degree, or, more specifically and usefully, to be a researcher in computer science?</p>
<p>Much of what I&#8217;m noticing are things that sound obvious and natural, like everyday truisms, when expressed with words, but the idea I have of it goes a little bit deeper than that. For instance, we all get told over and over throughout our lives, starting in high school, that we have to become good communicators. So it&#8217;s not going to be a surprise to anyone when I say that I think the process entails becoming a much better communicator than I&#8217;ve ever been before. Maybe what&#8217;s different is that I am trying to communicate things that haven&#8217;t been communicated before, things that I invented &#8212; or things that have hitherto been communicated only by a very small number of people. (Most of the communication I did prior to becoming a Ph.D. student may not have been terribly original.) Basically, reading and understanding a large amount of scientific papers, and understanding them with a particular use in mind, either having or getting a sense of how they fit into your own work. Then, writing your own papers, and communicating, somehow, what you thought, and what you were the first person to think, so that somebody else might read it like you read the works of others, and use it similarly. Then, presenting research, discussing it, and understanding what is being presented and discussed by others &#8212; similar challenges in speech instead of in writing.</p>
<p>I can&#8217;t speak for other fields, but in computer science ( I work with programming languages and software engineering), I find that a lot of this, for me, has been about building up a certain mental dexterity with formalisms. Understanding the implications of formalisms as you read about them and seek to apply them. Communicating formalisms to others. Some of this is still difficult, in particular the &#8220;communicating to others&#8221; part, but I think I am achieving things in this regard.</p>
<p>Communication, then, where does it take us? One of my mental images of academic knowledge is a big directed acyclic graph (a tree) where papers reference other papers. A surprisingly big part of writing a paper is ensuring that your work can get assimilated into this graph easily &#8212; placing it well, referencing the right things, making sure that you can be referenced easily. Also: defining the boundaries of your work extremely well &#8212; here&#8217;s where it begins, here&#8217;s where it ends. We assume precisely this and arrive at precisely that. It really seems that these things can never be made clear enough.</p>
<p>Which leads to another mental image of research: the paper/unit of work as a building block. The more solid it is, and the harder and sharper its surfaces and edges are, the better structures can be built from it (though I think there are other kinds of valuable works too). That&#8217;s one direction I think I need to be aiming for as an aspiring researcher.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/one-year-into-the-ph-d-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making playtime useful with color filling games</title>
		<link>http://www.monomorphic.org/wordpress/making-playtime-useful-with-color-filling-games/</link>
		<comments>http://www.monomorphic.org/wordpress/making-playtime-useful-with-color-filling-games/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 00:44:00 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[complexity]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[human condition]]></category>
		<category><![CDATA[possibly novel]]></category>
		<category><![CDATA[society]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=487</guid>
		<description><![CDATA[There&#8217;s a veritable torrent of little games constantly being released for the iPhone. One of the more likable ones is Flood-It, which I&#8217;ve been playing recently. The premise is extremely simple: you start off with a grid divided into squares of different, randomized colors. You are given a tool that works a bit like the [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_493" class="wp-caption alignleft" style="width: 218px"><a href="http://www.monomorphic.org/wordpress/wp-content/uploads/2010/01/flood-it.jpg"><img class="size-medium wp-image-493 " title="The Flood-it game" src="http://www.monomorphic.org/wordpress/wp-content/uploads/2010/01/flood-it-208x300.jpg" alt="Flood-it, a color filling game. This version was made by Lab Pixies for the iPhone, but many others exist." width="208" height="300" /></a><p class="wp-caption-text">Flood-it, a color filling game. This version was made by Lab Pixies for the iPhone, but many others exist.</p></div>
<p>There&#8217;s a veritable torrent of little games constantly being released for the iPhone. One of the more likable ones is <a href="http://www.labpixies.com/gadget_page.php?id=10">Flood-It</a>, which I&#8217;ve been playing recently. The premise is extremely simple: you start off with a grid divided into squares of different, randomized colors. You are given a tool that works a bit like the bucket fill in a picture editor. At each turn, the player chooses a color to fill the grid with, starting from the upper left corner. The monochromatic area slowly grows, and the aim is to fill the entire grid with a single color within a limited number of turns.</p>
<p>A <a href="http://arxiv.org/abs/1001.4420">recent analysis</a> showed that finding an optimal solution to games like Flood-It is aÂ <a href="http://en.wikipedia.org/wiki/NP-hard">NP-hard</a> problem. In addition, deciding whether the game can be solved in <em>n</em> steps for some n is NP-complete. The analysis relies on a reduction of Flood-It to an instance of the SCS problem (shortest common superstring). (It&#8217;s important to note that what is NP-complete is deciding whether a particular board can be solved in a certain number of steps, not solving the game with a bounded number of steps. This can be done in polynomial time.) For those who need a summary, ACM Communications had an excellent <a href="http://cacm.acm.org/magazines/2009/9/38904-the-status-of-the-p-versus-np-problem/fulltext">review</a> of the state of the P/NP problem in September last year.</p>
<p>For a NP-hard problem H, there exists a polynomial time reduction of any problem in NP to H, meaning that if we can solve H in P-time, we can solve any problem in NP in P-time. Many optimization problems in society rely on approximate solutions to difficult problems: routing traffic, assembling DNA sequences from partial subsequences, mathematical theorem proving&#8230; On the hypothesis that evolution has turned people into efficient solvers of hard problems (i.e. we have good heuristics in our brains from birth and from experience), we ought to pay people to play these games on their phones, but map real problems into game instances, so that people effectively work while they&#8217;re playing. We ought to design games that act as front-ends for real combinatorial problems.</p>
<p>A computer game, as we understand it, can be defined as a very smooth learning curve, and if we only &#8220;play&#8221; very tricky instances of combinatorial problems, the game would probably present too much of a barrier to new players. So maybe the best way of executing this kind of scheme would be that a majority of all game instances do not represent real problems, but mere training or verification of already solved problems &#8212; but every once in a while, a real problem pops up. The player should still get paid though.</p>
<p>A double benefit would be blurring the line between work time and Â play time, what is useful and what is useless &#8212; I think this line is often artificially constructed. Has technology ever before given us the possibility to literally turn work into play?</p>
<p><strong>Acknowledgements</strong>. I am indebted to Christian Sommer for showing me the complexity analysis of Flood-it.</p>
<div id="attachment_498" class="wp-caption aligncenter" style="width: 218px"><a href="http://www.monomorphic.org/wordpress/wp-content/uploads/2010/01/flood-it-filled.png"><img class="size-medium wp-image-498" title="Flood-it mid-game" src="http://www.monomorphic.org/wordpress/wp-content/uploads/2010/01/flood-it-filled-208x300.png" alt="The Flood-It game, easy difficulty setting, with the player having made some progress." width="208" height="300" /></a><p class="wp-caption-text">The Flood-It game, easy difficulty setting, with the player having made some progress.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/making-playtime-useful-with-color-filling-games/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A couple of quick ideas</title>
		<link>http://www.monomorphic.org/wordpress/a-couple-of-quick-ideas/</link>
		<comments>http://www.monomorphic.org/wordpress/a-couple-of-quick-ideas/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 10:42:31 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[nature]]></category>
		<category><![CDATA[society]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=299</guid>
		<description><![CDATA[I&#8217;m currently in Sweden, enjoying the Scandinavian nature, catching up with family and a few old friends. This time, some quick notes on a few ideas that have been brewing. Orthopraxy is when people do things the same way: &#8220;correct&#8221; action/praxis. On Artima developer spotlight, there was a lively discussion on this in the Ruby [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently in Sweden, enjoying the Scandinavian nature, catching up with family and a few old friends.</p>
<p>This time, some quick notes on a few ideas that have been brewing.</p>
<p><em>Orthopraxy</em> is when people do things the same way: &#8220;correct&#8221; action/praxis. On Artima developer spotlight, there was a <a href="http://www.artima.com/forums/flat.jsp?forum=270&amp;thread=262798">lively discussion</a> on this in the Ruby community: is Ruby a language that is less <em>patronizing</em> to the programmer than many other languages? That is, does it enforce orthopraxy to a lesser extent than other languages? In very established languages such as Java, orthopraxy does not just come from language design though; it comes from the culture surrounding the language. Today it is so mature that there is a very small number of accepted styles and accepted ways of coding. This does make people more productive by easing communication, but I wonder if we could have both ease of communication and stylistic freedom&#8230;?</p>
<p><em>Garbage collection</em> in society is the collection of discarded resources: entropy has gone so far that we banish used up objects to a heap of rubbish. Some of these may be immediately recyclable, most of them will take a long time to disintegrate fully. In software, garbage collection is about reclaiming the space used by lost objects that can no longer be used by the program. As such it&#8217;s more about recycling &#8211; all the memory is reused pretty much instantaneously. The trick here is finding those lost objects and putting the memory to use in a good way. Finally, in life, when plants or animals die, they become part of new plants and animals in a normal ecosystem. Isn&#8217;t this garbage collection on a molecular/atomic level? Maybe even as high as on the protein level.</p>
<p><em><a href="http://www.scala-lang.org/node/242">Actor programming</a></em> in Scala is something I casually started experimenting with for a text processing tool, and it turned out to be a very pleasant way of doing parallel computation. The asynchronous message queues were a much nicer way of doing things than the conventional monitor/mutex methods. I recommend trying to use it for something. In Scala they can equally easily be made threadless (usually each runs on its own thread), making support for a huge number of actors trivial.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/a-couple-of-quick-ideas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Searching and creating</title>
		<link>http://www.monomorphic.org/wordpress/searching-and-creating/</link>
		<comments>http://www.monomorphic.org/wordpress/searching-and-creating/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 11:17:34 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[intellectual property]]></category>
		<category><![CDATA[metaphors]]></category>
		<category><![CDATA[programmer psychology]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=195</guid>
		<description><![CDATA[We distinguish between inventions and discoveries. You can own the intellectual property rights to an invention, but not to a discovery (you can&#8217;t patent the discovery of mercury or selenium, for instance). Inventions are meant to be created, and discoveries are meant to be sought for.Â But sometimes, the line between invention and discovery is blurry. [...]]]></description>
			<content:encoded><![CDATA[<p>We distinguish between inventions and discoveries. You can own the intellectual property rights to an invention, but not to a discovery (you can&#8217;t patent the discovery of mercury or selenium, for instance). Inventions are meant to be <em>created</em>, and discoveries are meant to be<em> sought for</em>.Â But sometimes, the line between invention and discovery is blurry.</p>
<p>We cannot own the rights to mathematical structures or theorems, since they follow directly from axioms. Anyone with a mathematical education would come to the same results within the same axiomatic system. The creation of a mathematical theorem can be said to be a search process, hence the term &#8220;discovery&#8221; and not &#8220;invention&#8221;.</p>
<p>We can own the rights to music and paintings, since these are considered to be inventions. But isn&#8217;t the process that leads to a painting or work of music being created also a search process? Doesn&#8217;t the artist search for possible combinations that work together, in a &#8212; albeit very large and continuous &#8212; search space? But this is considered to be creation/synthesis rather than search.</p>
<p>The software developer is, at least sometimes, somewhere in between. A vision of a user interface that interacts with end users in a certain way can perhaps be said to come from the same large, continuous space as music and paintings come from. But given the constraints imposed by such a vision, and by the platform on which the system is to be built, the available libraries, the languages, etc, I would say that the construction of much of desktop/consumer software is a search problem. We look for combinations of components that fit the constraints, and when we have decided on this combination, we must connect the pieces together correctly. The space of possible solutions here, at least for someone who follows good design principles, is in essence much smaller than the music/painting search space. Of course there are considerations of taste and style, but they are completely irrelevant to the compiled product. They are a programmer aid.</p>
<p><a href="http://www.kurzweilai.net/brain/frame.html?startThought=Artificial%20Intelligence%20(AI)">Artificial intelligence</a> problems are defined as search problems. But what are search problems, and what are &#8220;creational&#8221; problems, precisely? Is it merely a question of the size of the search/design space?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/searching-and-creating/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Languages and automata, part 2</title>
		<link>http://www.monomorphic.org/wordpress/languages-and-automata-part-2/</link>
		<comments>http://www.monomorphic.org/wordpress/languages-and-automata-part-2/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 14:55:13 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[metaphors]]></category>
		<category><![CDATA[society]]></category>
		<category><![CDATA[state]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=175</guid>
		<description><![CDATA[Today an oppressive, passivizing heat covers Tokyoites like a massive woollen blanket. Summer is here. In a feeble attempt to defy the heat, I follow up on my previous post on languages and automata. That post ended with the suggestion that we can apply these concepts to interactions in society. But can we? As a [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.monomorphic.org/wordpress/wp-content/uploads/2009/07/suidou.jpg"><img class="aligncenter size-medium wp-image-179" style="margin: 10px;" title="Suidoubashi, Tokyo" src="http://www.monomorphic.org/wordpress/wp-content/uploads/2009/07/suidou-300x225.jpg" alt="suidou" width="300" height="225" /></a></p>
<p>Today an oppressive, passivizing heat covers Tokyoites like a massive woollen blanket. Summer is here. In a feeble attempt to defy the heat, I follow up on <a href="http://www.monomorphic.org/wordpress/languages-and-automata-part-1/">my previous post on languages and automata</a>.</p>
<p>That post ended with the suggestion that we can apply these concepts to interactions in society. But can we? As a starting point, let&#8217;s think about <em>stateless</em> and <em>stateful</em> interactions in a system. Stateful interactions involve a change of state, in some sense. Stateless interactions involve no such change. What counts as stateful depends very much on how detailed the model is &#8211; these might be examples:</p>
<ul>
<li>You make a purchase in a convenience store &#8211; the obvious changes of state are the balance in your wallet/bank account, the amount of items you possess/carry with you, and the corresponding opposite changes on behalf of the store.</li>
<li>You greet somebody you know on the street and exchange some small talk. Even though no actionable information is exchanged, you both feel happier afterwards and in a better mood because you were acknowledged by someone else. This is a change of state. The precondition is that you are in a state where you know the other person &#8211; this interaction would not be possible with a random person in a random state. (On a different level, a typical such exchange goes through at least three discrete states in itself &#8211; &#8220;greeting&#8221;, &#8220;exchange of information&#8221;, &#8220;goodbye&#8221;).</li>
<li>You go to your job in an office, read some documents, write some reports and leave. We can think about the wear and tear on the furniture and the building, the carbon dioxide-oxygen exchange in the air, and the changes to your company&#8217;s total body of information as changes of state. Which to choose depends, again, on the model.</li>
</ul>
<p>Are there any stateless interactions then? Within the context of a particular model, yes. If we only care about monetary and material transactions, the meeting on the street might be stateless. If we only care about &#8220;mood&#8221; states, the purchase in the store might be stateless, and the office job might have a negative effect on accumulated mood.</p>
<p>In software engineering, we always try to hide state as much as possible. State makes the system far harder to understand and reason about. Â We like <em>immutable</em> objects, whose state never change. If we look at reality through abstractions, maybe such things can exist, but in the physical world I don&#8217;t believe they do (I&#8217;d have to ask a physicist to know the answer though).</p>
<p>The most complex interactions in society, I think, take place among people and organisations that have long lasting relationships. These entities can modify each other&#8217;s state over a long period of time. If I&#8217;ve known somebody for years, there&#8217;s a very large number of possible states a conversation with that person might be in, a large number of topics I might possibly bring up and discuss. But the limitations of societal norms and my own knowledge imply that a conversation with a stranger might be a very small state machine indeed. (On the other hand, maybe this is why getting to know a new person can be very satisfying &#8211; the newness of building a new structure from scratch in your head to represent this person&#8217;s states). Companies that interact with customers in short, anonymous relationships almost never present them with complex interactions (convenience stores, taxi drivers). With other companies we have more complex interactions and longer relationships (doctors, banks).</p>
<p>These transitions of state are, again, like words that make up sentences in formal languages. We all live these languages every day. How many states do you have?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/languages-and-automata-part-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Languages and automata, part 1</title>
		<link>http://www.monomorphic.org/wordpress/languages-and-automata-part-1/</link>
		<comments>http://www.monomorphic.org/wordpress/languages-and-automata-part-1/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 02:50:52 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[metaphors]]></category>
		<category><![CDATA[nature]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[society]]></category>
		<category><![CDATA[state]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=150</guid>
		<description><![CDATA[Computing is very new as a science. Blaise Pascal devised a mechanical calculator in 1645, but Charles Babbage&#8217;s analytical engine, widely considered the first programmable computer, was not conceived of until the mid-19th century. However, it was never constructed (unlike Babbage&#8217;s simpler &#8220;difference engine&#8221;), and even at this time there was almost no theory to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.monomorphic.org/wordpress/wp-content/uploads/2009/07/yoyogi.jpg"><img class="alignleft size-medium wp-image-153" style="margin: 10px;" title="Yoyogi, Tokyo" src="http://www.monomorphic.org/wordpress/wp-content/uploads/2009/07/yoyogi-225x300.jpg" alt="Yoyogi, Tokyo" width="225" height="300" /></a>Computing is very new as a science. Blaise Pascal devised a mechanical calculator in 1645, but Charles Babbage&#8217;s analytical engine, widely considered the first programmable computer, was not conceived of until the mid-19th century. However, it was never constructed (unlike Babbage&#8217;s simpler &#8220;difference engine&#8221;), and even at this time there was almost no theory to go with the invention. Today, the fundamental abstractions of computing and programming are Turing machines and Lambda calculus, described in the 1930&#8242;s. So essentially, the theory has had less than a century to mature, and is being viewed by many as a branch of mathematics.</p>
<p>The newness of computing means that we don&#8217;t know that much about its role or its applicability outside of devices built specifically for computing, nor do we know if today&#8217;s fundamental computing abstractions are the best ones.</p>
<p>Languages and automata are two of the most fundamental ideas in computing. In contrast to human languages, which are informal and rather unsystematic, in computing we often speak of formal languages. Something like the following is an example of a formal grammar:</p>
<ul>
<li><em>Sequence-list:</em> <em>Sequence [ Sequence-list ]</em></li>
<li><em>Sequence: </em>Wake up <em>Action-list </em>Have lunch <em>Action-list </em>Go to sleep</li>
<li><em>Action-list: Action [ Action-list ]</em></li>
<li><em>Action: </em>Work | Answer the phone | Attend meeting | Relax</li>
</ul>
<p>Using this grammar we can model the life of an office worker. We can generate an infinite list of potentially infinitely long &#8220;sentences&#8221;. The following are examples of valid sentences in the grammar:</p>
<ul>
<li>Wake up, Work, Have lunch, Attend meeting, Go to sleep</li>
<li>Wake up, Work, Have lunch, Work, Go to sleep, Wake up, Work, Have lunch, Work, Go to sleep</li>
<li>Wake up, Answer the phone, Answer the phone, Answer the phone, Have lunch, Work, Go to sleep</li>
</ul>
<p>A grammar such as this has a 1-1 correspondence with what is known as a deterministic finite automaton (DFA) &#8211; a very simple building block of software and hardware models. A formal grammar like the above is in a sense just a more natural way of thinking about a DFA.</p>
<p>What is the applicability of formal languages outside computing hardware and software?</p>
<p><a href="http://www.monomorphic.org/wordpress/wp-content/uploads/2009/07/ferns.jpg"><img class="aligncenter size-medium wp-image-162" title="Ferns. Kyoto, Japan" src="http://www.monomorphic.org/wordpress/wp-content/uploads/2009/07/ferns-300x225.jpg" alt="Ferns. Kyoto, Japan" width="300" height="225" /></a></p>
<p>For one thing, we see them in nature, not least in ferns, which on a miniature level appear to have used the same rules as on the macro level. We see them in trees and flowers. In fact, the formal language paradigm appears to be a very good fit for many natural phenomena. One reason for this might be that formal languages allow rich structures to be constructed from a very small description.</p>
<p>One idea I find fascinating is trying to apply these models to human society: people and institutions. Can we describe the interactions in society as automata and formal languages, and if so, what can we learn about them?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/languages-and-automata-part-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Computing in and with the physical world</title>
		<link>http://www.monomorphic.org/wordpress/computing-in-and-with-the-physical-world/</link>
		<comments>http://www.monomorphic.org/wordpress/computing-in-and-with-the-physical-world/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 06:59:50 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[society]]></category>
		<category><![CDATA[the future]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=62</guid>
		<description><![CDATA[Computers are connected to people, and to the physical world, through input/output devices. These are not just keyboards, mice, monitors, printers etc, but also various sensors, e.g. temperature, light, movement sensors and video cameras, and output devices like industrial control systems or robots. Every day, we increase the extent of what computers can observe, and [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-84 alignleft" style="margin: 5px;" title="rubik_small" src="http://www.monomorphic.org/wordpress/wp-content/uploads/2009/06/rubik_small.jpg" alt="test caption" width="240" height="180" /></p>
<p>Computers are connected to people, and to the physical world, through input/output devices. These are not just keyboards, mice, monitors, printers etc, but also various sensors, e.g. temperature, light, movement sensors and video cameras, and output devices like industrial control systems or robots. Every day, we increase the extent of what computers can observe, and what they can affect.</p>
<p>Computers are also more connected to each other, thanks to the internet. So now, by virtue of being connected to computers, physical objects are becoming indirectly connected to each other more and more. One of the consequences of this is that physical objects can manipulate other physical objects in different ways, even when they are far away or otherwise unrelated to the sending object. In other words, the internet is converging with the physical world.Â This is sometimes called theÂ <a href="http://www.iot2008.org/">internet of things</a>.</p>
<p>An example: <a href="http://www.nabaztag.com/en/index.html">The Nabaztag</a> is a rabbit like internet connected object that has many novel ways of interacting with its environment. However, it&#8217;s an artificial object created for this purpose &#8211; the real changes are when conventional objects around us become connected unexpectedly. The Economist has an article about <a href="http://www.economist.com/science/tq/displaystory.cfm?story_id=13725743">what happens when cars become connected</a>. Quote from the article:</p>
<blockquote><p>â€œWe can stop looking at a car as one system,â€ says Rahul Mangharam, an engineer at the University of Pennsylvania, â€œand look at it as a node in a network.â€</p></blockquote>
<p>In preparing for the future, it would be prudent to anticipate a world where things are interconnected even more strongly today. I can think of several problems and opportunities that would arise in such a world:</p>
<ul>
<li>Safety, ownership and security become much more important. Today buildings and property are protected by locks and physical barriers. What happens when the weakest link in a security chain is a bit switch in computer memory? (We already have this in many situations today, but those systems tend to be less connected. The pressure to be more connected will turn those bit switches into greater risks.)</li>
<li>Privacy and anonymity on one hand, versus openness and identification on the other, will acquire even more importance. I expect we will have the ability to control in great detail what information we want to reveal about ourselves and our objects, and to whom and what. For instance, there are experiments with software to accumulate footage from many different CCTV cameras and reconstruct a realistic three-dimensional model of physical reality. There are as many exciting applications as there are dangerous ones (from a surveillance state perspective).</li>
<li>Completely unrelated objects might be linked to each other in interesting ways by their owners. I might set up a Rubik&#8217;s cube so that entering a particular combination on its faces makes my computer decrypt a hidden file (maybe this isn&#8217;t very good from a security perspective). The color and intensities of highway streetlights might change dynamically depending on where the cars are. Depending on whether my friends did something interesting today (found out by observing, for instance, their twitter feeds), I might want the speed dial numbers to appear in a different order on my phone. (The system could also try to figure out which friends I might be likely to contact based on my own actions).</li>
</ul>
<p>But these are all trivial examples.</p>
<p>A related, but different (as I understand it) topic is <a href="http://admissions.media.mit.edu/research/group/physics-and-media">being researched</a> by Neil Gershenfeld at the MIT Media Lab. They call it &#8220;bringing the programmability of the digital world to the physical world&#8221;. This seems focussed on creating programmability without conventional computer equipment. If brought to fruition, it might have some consequences in common with increased connectivity.</p>
<p>Indubitably, these questions will enter mainstream politics increasingly in this century. Ideally, the necessary debates will be informed ones, and held early rather than at the last minute when faced with crises.</p>
<p><a href="http://www.flickr.com/photos/tonyjcase/2262229518/">Image by Great Beyond</a>. <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/deed.en">Some rights reserved (CC)</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/computing-in-and-with-the-physical-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
