<?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>Conceptric &#187; distributed computing</title>
	<atom:link href="http://www.conceptric.co.uk/tag/distributed-computing/feed" rel="self" type="application/rss+xml" />
	<link>http://www.conceptric.co.uk</link>
	<description>Ideas and Applications</description>
	<lastBuildDate>Sat, 31 Jul 2010 20:30:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>My sequential diploma</title>
		<link>http://www.conceptric.co.uk/my-sequential-diploma.htm</link>
		<comments>http://www.conceptric.co.uk/my-sequential-diploma.htm#comments</comments>
		<pubDate>Sat, 25 Oct 2008 17:13:11 +0000</pubDate>
		<dc:creator>James Whinfrey</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Personal Perspectives]]></category>
		<category><![CDATA[Posts]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[distributed computing]]></category>
		<category><![CDATA[open university]]></category>

		<guid isPermaLink="false">http://www.conceptric.co.uk/?p=84</guid>
		<description><![CDATA[Another Open University course completed having raised my awareness of the nightmare of true concurrent programming. There has to be an easier way?]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m still working towards an <abbr title="Open University">OU</abbr> <a href="http://www3.open.ac.uk/courses/bin/p12.dll?Q01D12">Diploma in Computing</a>, and taking my time about it, hence the title. Despite this theme, my last module in developing concurrent distributed systems &#8212; catchy title, but accurate  &#8212; opened up the world of concurrency, and the ease with which truly parallel applications can be developed using modern tools. Ha, as far as I can tell Java is pretty good in the concurrent minefield of a mutable state environment, but limited IDEs are the equivalent of wandering into it with a blindfold. </p>
<p>The problem is trying to decide which of these mutable resources are likely to be accessed in a concurrent fashion, provide locks to enforce mutual exclusivity; ensuring no other processes is working from an intermediate, invalid state; and all without becoming deadlocked. Traditional debugging and even test&#8212;driven approaches aren&#8217;t much help, because the errors are dependent on the order in which the processes are scheduled to be executed; not very repeatable, and certainly not controllable.</p>
<p>So the course left me itching to have a go, but aware that concurrent object oriented development needs to be done in the right language, oh, and very carefully. A little reading around the topic lead me to the idea of immutable state development. </p>
<p>Now in <acronym title="Object Oriented Programming">OOP</acronym> terms an immutable state is not very helpful, nothing much ever happens. We rely on the software state being stored in the attributes of all those objects, and actions being driven by the exchange of messages between them. But in the <a href="http://en.wikipedia.org/wiki/Functional_programming">functional programming paradigm</a> an immutable state is implicit, since the state is stored in the way functions execute each other, and themselves, no data is actually stored in variables. This means that processes can be executed in any order without any danger of seeing an invalid state: no need for any locking and a much simpler programming job!</p>
<p>I&#8217;ve only just started investigating these ideas, but with the thrust of computing performance in the direction of multiple processors, either on a single machine or via the &#8216;cloud&#8217;, it seems that concurrent, parallel programming may be very important in the future. A couple of languages I want to check out are <a href="http://www.erlang.org/">Erlang</a> and <a href="http://clojure.org/">Clojure</a>. Finally, I found the <a href="http://podcast.rubyonrails.org/">Ruby on Rails Podcast</a> <a href="http://podcast.rubyonrails.org/programs/1/episodes/erubycon-jim-weirich">interview with Jim Weirich</a> an interesting perspective on the programming.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.conceptric.co.uk/my-sequential-diploma.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The device I want</title>
		<link>http://www.conceptric.co.uk/the-device-i-want.htm</link>
		<comments>http://www.conceptric.co.uk/the-device-i-want.htm#comments</comments>
		<pubDate>Fri, 05 Sep 2008 13:13:41 +0000</pubDate>
		<dc:creator>James Whinfrey</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Everything]]></category>
		<category><![CDATA[Personal Perspectives]]></category>
		<category><![CDATA[Posts]]></category>
		<category><![CDATA[devices]]></category>
		<category><![CDATA[distributed computing]]></category>

		<guid isPermaLink="false">http://www.jameswhinfrey.co.uk/?p=70</guid>
		<description><![CDATA[We're surrounded by smartphones, PDAs and laptops, many are fantastic already, but it'll take something more to part me from my money.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve played with the iPhone, the best handheld device interface I&#8217;ve come across by a large margin, and it would probably be my device of choice at the moment. However, there&#8217;s still a lot of functionality missing before such a device could oust both my mobile phone and laptop.</p>
<p>Here&#8217;s the near future dream; they can get a lot wilder.</p>
<p>I&#8217;m working on my latest project on the train, in a tunnel, whilst I travel to a meeting with a client. I reach a critical part where I need to see the big picture, so I find transfer the output to an LCD display in a coffee bar at the station.</p>
<p>It&#8217;s not going smoothly, and I decide I could use some help, so I call a few colleagues and arrange a conference in 15 minutes time. Once we&#8217;re all virtually present, it&#8217;s early remember, I&#8217;d show them the problem by sharing my display output via the network. Each using our own devices we work together, version controlled and still conferencing, until we crack the problem.</p>
<p>I thank everyone and leave for the Client&#8217;s office. Once there I transfer the presentation of the key project details to a large TV in the conference room and send a hardcopy to the printer in the office. </p>
<p>Oh&#8230; and all seamlessly without wires. Of course, this is a picture of the utopia of perfect interoperability and security, but what are the chances?</p>
<h4>Interoperability.</h4>
<p>The device layer interface is a key feature, with transparent support a wide selection of drivers and protocols, I don&#8217;t want to have to get involved. As many devices aren&#8217;t wireless enabled at the moment, have poor device driver support, or use proprietary communication protocols, this is a real challenge.</p>
<h4>Getting input.</h4>
<p>Input is probably still the good old keyboard and pointing device, of which there are several approaches for those who don&#8217;t mind carrying extra kit.</p>
<ul>
<li>Fabric keyboards that can be folded away, like the <a href="http://www.just-mobileonline.com/products_communicationseries_2.html">Just Mobile RoKy&#178;</a>.</li>
<li>Projected light keyboards like the <a href="http://www.virtual-laser-keyboard.com">I-Tech Virtual Laser Keyboard</a> are compact and lightweight.</li>
<li>The pointing is easier, a wide range of Bluetooth mice and other devices already exist.</li>
</ul>
<p>And for those that do?</p>
<ul>
<li>Traditional mobile phone keyboard. I hate this, I&#8217;m too old to be any good and have an aversion to developing arthritis in my thumbs.</li>
<li>Touch screen keyboards, the Apple iPhone is the best implementation I&#8217;ve come across.</li>
<li>Stylus on touch screen for handwriting recognition as used by Palm.</li>
<li>Or just being able to use any input device I find lying around, wireless of course.</li>
</ul>
<p>There are other options like voice recognition, cameras, and detecting eye movements which could find wider use in the future. I&#8217;d like a direct mental link, so I can just think what I want to do, but I&#8217;d probably end up with a nasty brain wiping piece of malware!</p>
<h4>Displaying output.</h4>
<p>Displaying output raises important issues surrounding the usability of the actual user interface, after all, I&#8217;m proposing to go from working on a typical PDA size display to a 40 inch TV! I want to make the best use of the visible area on any given device, whilst avoiding 4 inch high characters. </p>
<p>The experience of designing for different web browsers, screen resolutions, and colour maps could be leveraged for this new platform.  CSS can be targeted at different media types and such an approach could be adopted throughout the new system.</p>
<h4>Staying mobile.</h4>
<p>Power management is vital for extended mobile operation and I&#8217;d like to be able to work normally for several days at least. </p>
<p>This may be achieved by longer battery life or a totally different energy storage or generation technology. Fuel cells, solar panels or even nuclear power could be used; though even I&#8217;d be a bit concerned about carrying around a nuclear reactor. What if the fuel cell ran on a range of organic feed stocks, just like I do? I could recharge my computer at the same time as myself in any restaurant.</p>
<p>Wireless recharging could be an option, maybe inductive charging such as <a href="http://www.wildcharge.com/">WildCharge pad</a>. I&#8217;d prefer my device to selectively recharge at any opportunity, and from any source, so that I don&#8217;t have to be in any particular place or make any conscious decision. The device could decide to top-up from a nearby power cable, the sun as I walk around, or even using the heat of a warm day. Again, I don&#8217;t want to know it&#8217;s happening or how.</p>
<h4>How long?</h4>
<p>Much of the software architecture and implementation technologies already exist to make my dream device a reality, the real work is in perfecting the hardware at a cost that makes loss or damage acceptable; it&#8217;s portable remember. At the current rate of development I suspect I won&#8217;t have to wait too long for the device itself. But the legacy issues for hardware interoperability?</p>
<p>Ultimately it&#8217;s my guess that computing and the Internet will become indivisible; not sticking my neck out too much since for many of us it already is. If some of the wilder concepts of <a href="http://en.wikipedia.org/wiki/Pervasive_computing">ubiquitous computing</a> come to pass I won&#8217;t need a single device anyway, I&#8217;ll just pick up computing resources whenever I need them from the environment surrounding me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.conceptric.co.uk/the-device-i-want.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
