
<?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>The Serval Project</title>
	<atom:link href="http://www.servalproject.org/feed" rel="self" type="application/rss+xml" />
	<link>http://www.servalproject.org</link>
	<description>The Serval Project making commnications available anywhere, anytime</description>
	<lastBuildDate>Tue, 08 May 2012 23:11:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Jeremy creates an amazing UI tool for Android Developers!</title>
		<link>http://www.servalproject.org/archives/926</link>
		<comments>http://www.servalproject.org/archives/926#comments</comments>
		<pubDate>Tue, 08 May 2012 23:11:39 +0000</pubDate>
		<dc:creator>Romana</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Jeremy Lakeman]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://www.servalproject.org/?p=926</guid>
		<description><![CDATA[From his initial Google Plus post: Not all android UI designers are coders. The eclipse layout editor is atrocious and doesn&#8217;t show you what you&#8217;ll get at run time. The emulator is too slow. And sometimes you&#8217;re trying to design a screen for a process that doesn&#8217;t exist yet. So what can we do to [...]]]></description>
			<content:encoded><![CDATA[<p>From his initial <a href="https://plus.google.com/u/0/100061940421685613355/posts//p/pub">Google Plus post</a>:</p>
<p>Not all android <a class="zem_slink" title="User interface" href="http://en.wikipedia.org/wiki/User_interface" rel="wikipedia" target="_blank">UI</a> designers are coders. The eclipse <a class="zem_slink" title="Page layout" href="http://en.wikipedia.org/wiki/Page_layout" rel="wikipedia" target="_blank">layout</a> editor is atrocious and doesn&#8217;t show you what you&#8217;ll get at run time. The emulator is too slow. And sometimes you&#8217;re trying to design a screen for a process that doesn&#8217;t exist yet.</p>
<p>So what can we do to reduce the turn around time for testing what an android layout actually looks like on a specific device?</p>
<p>First I was thinking that it should be possible to build a minimal resource bundle and open it from a generic, pre-installed <a class="zem_slink" title="Application software" href="http://en.wikipedia.org/wiki/Application_software" rel="wikipedia" target="_blank">application</a>. Nope, not going to work. While the <a class="zem_slink" title="Software development kit" href="http://en.wikipedia.org/wiki/Software_development_kit" rel="wikipedia" target="_blank">SDK</a> allows you to examine some details about an apk without installing it, I couldn&#8217;t find a way to explode a layout. If you have to install it anyway, you might as well build a custom application every time.</p>
<p>So how can we get a list of the layouts in this application? What about reflection? Add a small class that gives you a list based on R.layout.class.getDeclaredFields(). Then pass the resource value to another simple activity that can show the result? Hmmmm, that could work. But these activities would need to be built into your application. Or build the resources into another smaller test application&#8230;. That&#8217;s a much better idea.</p>
<p>It works, and it&#8217;s really quite simple;<br />
<a href="https://github.com/lakeman/layout-preview">https://github.com/lakeman/layout-preview</a></p>
<p>Simply clone the above repository, symlink or copy the res folder from another application. Build, install and open. Ta-Da, rapid layout previews on actual android hardware.</p>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.servalproject.org/archives/895" target="_blank">Wireframing and UI Development</a> (servalproject.org)</li>
<li class="zemanta-article-ul-li"><a href="http://www.i-programmer.info/book-watch-archive/4081-android-ui-fundamentals-peachpit-press.html" target="_blank">Android UI Fundamentals (Peachpit Press)</a> (i-programmer.info)</li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/zemified_e.png?x-id=e07fee99-d97f-41a8-8bfe-fc32ebe09099" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.servalproject.org/archives/926/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Starting to Explore OpenStreetMap and PostgreSQL</title>
		<link>http://www.servalproject.org/archives/925</link>
		<comments>http://www.servalproject.org/archives/925#comments</comments>
		<pubDate>Wed, 25 Apr 2012 15:40:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Corey]]></category>

		<guid isPermaLink="false">http://www.servalproject.org/archives/925</guid>
		<description><![CDATA[By: Torkild Retvedt The core of the Serval Maps application is powered by the mapsforge library which uses OpenStreetMap data to render maps. The OpenStreetMap data myst first be converted in a binary format specific to the library and stored in the external storage of the Android device. Last week I started exploring how we can make the conversion of [...]]]></description>
			<content:encoded><![CDATA[<div><a href="http://www.flickr.com/photos/torkildr/3462606643/"><img class="size-full wp-image-2427" src="http://www.servalproject.org/wp-content/plugins/wp-o-matic/cache/af75b_server-room.jpg" alt="" width="320" height="213" /></a>
<p>By: Torkild Retvedt</p>
</div>
<p>The core of the <a title="Serval Maps page in the Serval Project wiki" href="http://developer.servalproject.org/dokuwiki/doku.php?id=content:servalmaps:main_page">Serval Maps</a> application is powered by the <a title="Official mapsforge library website" href="http://code.google.com/p/mapsforge/">mapsforge library</a> which uses <a title="Official OpenStreetMap website" href="http://www.openstreetmap.org/">OpenStreetMap</a> data to render maps. The OpenStreetMap data myst first be converted in a binary format specific to the library and stored in the external storage of the Android device.</p>
<p>Last week I started exploring how we can make the conversion of the OpenStreetMap data into the binary format used by mapsforge easier. The place I chose to start is the use of <a title="Official PostgreSQL website" href="http://www.postgresql.org/">PostgreSQL</a> to store OpenStreetMap data.</p>
<p>With thanks to <a title="Official ITShare website" href="http://www.itshare.org.au/">ITShare SA</a> I was able to put together an <a title="Official Ubuntu website" href="http://www.ubuntu.com/">Ubuntu</a> based server using a <a title="Wikipedia on this type of processor" href="http://en.wikipedia.org/wiki/Pentium_4">Pentium 4</a> CPU with lots of hard disk space and RAM to explore this type of activity.</p>
<p>The most complete source of data from OpenStreetMap is known as the <a title="Official documentation on this file" href="http://wiki.openstreetmap.org/wiki/Planet.osm">Planet file</a>, and the main application used to work with this file is known as <a title="Official documentation on Osmosis" href="http://wiki.openstreetmap.org/wiki/Osmosis">Osmosis</a>.</p>
<p>Given that the binary version of the Planet file is over 16GB of space I expected the process to take some time. What I didn&#8217;t expect was that it would take 3 days to complete the import of a planet file into a PostgreSQL database. That is a very long time!</p>
<pre>techxplorer@trellheim:~$ /data/openstreetmap/osmosis/latest/bin/osmosis --read-pbf file=&quot;/data/openstreetmap/planet/planet-120401.osm.pbf&quot; --write-pgsql user=&quot;osm&quot; database=&quot;osm&quot; password=&quot;osm&quot;
18/04/2012 10:50:42 AM org.openstreetmap.osmosis.core.Osmosis run
INFO: Osmosis Version 0.40.1
18/04/2012 10:50:42 AM org.java.plugin.registry.xml.ManifestParser &lt;init&gt;
INFO: got SAX parser factory - org.apache.xerces.jaxp.SAXParserFactoryImpl@1c78e57
18/04/2012 10:50:42 AM org.java.plugin.registry.xml.PluginRegistryImpl configure
INFO: configured, stopOnError=false, isValidating=true
18/04/2012 10:50:42 AM org.java.plugin.registry.xml.PluginRegistryImpl register
INFO: plug-in and fragment descriptors registered - 1
18/04/2012 10:50:42 AM org.java.plugin.standard.StandardPluginManager activatePlugin
INFO: plug-in started - org.openstreetmap.osmosis.core.plugin.Core@0.40.1
18/04/2012 10:50:42 AM org.openstreetmap.osmosis.core.Osmosis run
INFO: Preparing pipeline.
18/04/2012 10:50:42 AM org.openstreetmap.osmosis.core.Osmosis run
INFO: Launching pipeline execution.
18/04/2012 10:50:42 AM org.openstreetmap.osmosis.core.Osmosis run
INFO: Pipeline executing, waiting for completion.
21/04/2012 10:16:06 AM org.openstreetmap.osmosis.core.Osmosis run
INFO: Pipeline complete.
21/04/2012 10:16:06 AM org.openstreetmap.osmosis.core.Osmosis run
INFO: Total execution time: 257124838 milliseconds.
techxplorer@trellheim:~$</pre>
<p>Some of the things I&#8217;ve learnt along the way:</p>
<ol>
<li>Having never administered a PostgreSQL database before I found it rather different, for example changing to the specific postgre user to administer the server and run SQL commands;</li>
<li>The osmosis application uses a lot of  temporary space when undertaking an operation like this, ~300GB</li>
<li>The completed PostgreSQL database is ~417GB when the process finished</li>
</ol>
<p>My next task now is to see if all of this work is worth it, and that it is faster to process an extract of data into the mapsforge format from the database as opposed to the flat file.</p>
<p>Logic suggests it should be, which is why I undertook the work, but I need to undertake the experiment.</p>
<p>Some resources that I found useful:</p>
<ul>
<li><a title="Direct link to the page" href="http://wiki.openstreetmap.org/wiki/PostgreSQL">PostgreSQL database</a> page on the OpenStreetMap wiki</li>
<li><a title="Direct link to the page" href="http://wiki.openstreetmap.org/wiki/Osmosis/PostGIS_Setup">Osmosis/PostGIS</a> page on the OpenStreetMap wiki</li>
</ul>
<p>The &#8220;<a title="Direct link to the photo at Flickr" href="http://www.flickr.com/photos/torkildr/3462606643/">Server room at CERN</a>&#8221; was uploaded to <a title="Flickr homepage" href="http://www.flickr.com/">Flickr</a> by <a title="Flickr profile page" href="http://www.flickr.com/people/torkildr/">Torkild Retvedt</a> and used under the terms of a <a title="Direct link to the license" href="http://creativecommons.org/licenses/by-sa/2.0/">Creative Commons license</a>.</p>
<div>
<hr />
<p>This post was originally published on the <a href="http://techxplorer.com/" title="Thoughts by Techxplorer homepage">Thoughts by Techxplorer</a> blog and is licensed using a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/au/">Creative Commons</a> license.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.servalproject.org/archives/925/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is happening for me atm?</title>
		<link>http://www.servalproject.org/archives/924</link>
		<comments>http://www.servalproject.org/archives/924#comments</comments>
		<pubDate>Sat, 21 Apr 2012 14:00:17 +0000</pubDate>
		<dc:creator>Romana</dc:creator>
				<category><![CDATA[Romana]]></category>

		<guid isPermaLink="false">http://www.servalproject.org/archives/924</guid>
		<description><![CDATA[As of yesterday: 1) doing PhD over next few years 2) frantically coding for May release for the Serval Project 3) now working for the next two years at Flinders University as an academic &#8211; a lecturer in two Comp Sci/Eng topics 4) after two years, if all going well with PhD, get employed by [...]]]></description>
			<content:encoded><![CDATA[<p>As of yesterday:</p>
<p>1) doing PhD over next few years<br />
2) frantically coding for May release for the <a href="http://servalproject.org">Serval Project</a><br />
3) now working for the next two years at <a href="http://flindersuniversity.edu.au">Flinders University</a> as an academic &#8211; a lecturer in two Comp Sci/Eng topics<br />
4) after two years, if all going well with PhD, get employed by uni as perm staff<br />
5) continue with the growing excitement of Serval<br />
6) one last trip to<a href="http://standards.ieee.org/"> IEEE </a>as handover- but continuing research on IEEE network issues<br />
7) we have a sleepover party* for ms 10 tonight, so caused epic spring clean, very little of which i can do with disability</p>
<p>&nbsp;</p>
<p>*5 ten years olds &#8211; meep!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.servalproject.org/archives/924/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making Security Simple</title>
		<link>http://www.servalproject.org/archives/923</link>
		<comments>http://www.servalproject.org/archives/923#comments</comments>
		<pubDate>Wed, 18 Apr 2012 20:40:04 +0000</pubDate>
		<dc:creator>Dr Paul</dc:creator>
				<category><![CDATA[Dr Paul Gardner-Stephen]]></category>

		<guid isPermaLink="false">http://www.servalproject.org/archives/923</guid>
		<description><![CDATA[One of the major features we are working on for the Serval Project right now is security. &#160;We want secure phone calls, secure MeshMS/SMS and secure data transfer. But the reality is that we have been working on security from the outset, because we know that it is a vital component of any modern communications [...]]]></description>
			<content:encoded><![CDATA[<p>One of the major features we are working on for the Serval Project right now is security. &nbsp;We want secure phone calls, secure MeshMS/SMS and secure data transfer. But the reality is that we have been working on security from the outset, because we know that it is a vital component of any modern communications system, particularly if we are to preserve people&#8217;s privacy.</p>
<p>One of the very early design decisions was to use public keys are the mechanism for identifying phone users at the network level (at the human levels, it is all phone numbers, so that it remains easy to use).</p>
<p>By using public keys as the network identifier, we get some very nice properties. &nbsp;By carefully choosing the cryptographic algorithm we are gain the ability to perform a <a href="http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange">Diffie-Hellman shared secret agreement</a> process. &nbsp;This makes it possible for any two parties to encrypt their mutual communications, <i>without them having to first establish contact</i>.&nbsp;This provides the same major security benefits (confidentiality, authenticity of communications) of insanely complex systems such as <a href="http://en.wikipedia.org/wiki/IPsec">IPsec</a>, but without the pain.</p>
<p>We have now reached the point where we can perform secure communications over the Serval Overlay Mesh, which is our implementation of this concept, using 256-bit Curve25519 public keys as network addresses, and with a defaults-secure Mesh Datagram Protocol. &nbsp;This is based on the <a href="http://nacl.cr.yp.to/">NaCl crypto library</a>, and uses CryptoBox authenticated-encryption for unicast traffic, and CryptoSign verified signing for publicly readable broadcast traffic.</p>
<p>Curve25519 makes this feasible, due to the relatively short key length. &nbsp;In contrast, using RSA we would need 3,072 bit keys for similar security (~128 <a href="http://en.wikipedia.org/wiki/Key_size">bits of security</a>). &nbsp;Three addresses are required in each packet: source, destination and next-hop. &nbsp;Using RSA 3,072 bit keys this would be 1,152 bytes &#8212; just for addresses. &nbsp;Even using insecure RSA 1,024 bit keys the addresses would require 384 bytes.&nbsp;With Curve25519 we need just 768 bits (96 bytes) for addresses. We further improve on this through address abbreviation, where we only send the full addresses occasionally, and use a unique prefix the remainder of the time. &nbsp;This allows us to reduce the address overhead by 75% or more, thus resulting in a lower address overhead than IPv6, but while gaining the attractive security properties that we have been talking about.</p>
<p>An important distinction between our MDP security layer and IPsec is that that we do not need any key exchange, as the keys are implicitly communicated since the network address <i>is</i> the key. &nbsp;This is a luxury that IPsec could not make use of, because IPsec was required to be able to be retro-fit into existing IP networks with already-allocated addresses, and geographically allocated addresses. &nbsp;MDP&#8217;s your-key-is-your-network-address only makes sense because geographically allocated addresses are not necessary (or even really possible) on a mobile adhoc mesh network. &nbsp;Also, IPsec relies on third-party authorities to manage key exchange and related functions, and so is not suitable for use in an infrastructure-deprived setting. &nbsp;MDP&#8217;s security is not client-server, but rather truly peer-to-peer.</p>
<p>The current state of the MDP security system is that it is operational, but requires some further refinement that we are undertaking, in particular to settle the API. &nbsp;Nonetheless, it is already surprisingly easy to use MDP to enable secure communications.</p>
<p>So let&#8217;s see how this all ties together by taking a look at the MDP ping test program that we have written. &nbsp;You can find the source code <a href="https://github.com/servalproject/serval-dna/blob/master/commandline.c">here</a> as part of the Serval/DNA source on github. The vast majority of this example is in fact to perform the ping function and to report on errors (a common situation for network programming), the actual MDP networking primitives are no more complex than UDP. &nbsp;So let&#8217;s take a look.</p>
<p>First, we need to bind to an MDP socket. &nbsp;MDP uses 32-bit port numbers and 256-bit network addresses. A given node might have more than one network address. &nbsp;As MDP is implemented as an overlay network, we must talk to the local MDP server on the node to perform all operations. &nbsp;This is done over a unix-domain socket. &nbsp;This has the advantage that it can be poll()&#8217;d, select()&#8217;d or whatever you prefer, just like a normal socket. &nbsp;So let&#8217;s start by opening the connection to the MDP server and asking for the list of network addresses:</p>
<div><a href="http://3.bp.blogspot.com/-Mc9HhFjMlsU/T439ZdugVSI/AAAAAAAAAM0/dYS3Z2gR-fQ/s1600/mdp-get-addrlist.png"><img border="0" height="300" src="http://3.bp.blogspot.com/-Mc9HhFjMlsU/T439ZdugVSI/AAAAAAAAAM0/dYS3Z2gR-fQ/s400/mdp-get-addrlist.png" width="400" /></a></div>
<div>We start by creating an <span>overlay_mdp_frame</span> structure and populating it with our request. &nbsp;Here we are asking for any local addresses (SIDs), by making the requested range of SIDs start at the beginning (-1), and include up to a couple of billion entries. &nbsp;Of course the reply has to fit in a single packet, so the server may respond with only a partial list, which will be indicated by it <span>setting last_sid</span> to the index of the last SID returned, and <span>frame_sid_count</span> to the number of entries returned.</div>
<div></div>
<div>We then send the MDP request by calling <span>overlay_mdp_send</span>, with the mdp frame, any flags, in this case <span>MDP_AWAITREPLY</span> that tells the MDP library that we want to send this request, and then wait for a reply from the server, followed by the timeout for that reply (in milliseconds). &nbsp;So the call in the above example will allow the server up to five seconds to come back with the list of local addresses. The return value of <span>overlay_mdp_send</span> is the the number of MDP frames sent, either for for success or zero for failure.</div>
<p>The remainder of the above code checks to make sure that no error has been returned, and that what the server replied with was in fact a list of addresses, as indicated by the packet type being <span>MDP_ADDRLIST</span>.</p>
<p>Once we have the address list, we can then use one of the local addresses to bind our listener to:
<div><a href="http://3.bp.blogspot.com/-GESXvAmPLWc/T43_uszarlI/AAAAAAAAAM8/L0HQAWMOHwk/s1600/mdp-bind-addr.png"><img border="0" height="275" src="http://3.bp.blogspot.com/-GESXvAmPLWc/T43_uszarlI/AAAAAAAAAM8/L0HQAWMOHwk/s400/mdp-bind-addr.png" width="400" /></a></div>
<div>We start by choosing a port, in this case a random port number in the range 0&#215;8000 &#8211; 0xffff. &nbsp;The port numbers are natively 32-bit, however, so you could use much larger port numbers. &nbsp;Port numbers 0xf0000000 &#8211; 0xffffffff are reserved.</div>
<div></div>
<div>Moving on to the network address part, we could just set our bind source address to all zeroes like on an IPv4 network, and listen on all local addresses, as illustrated in the disabled line of code, in which case we would not have needed to get the list of local addresses. &nbsp;Similarly, if we already knew the address we wanted to listen on, then we can simply provide it in the bind <span>sid</span> field. &nbsp;But it is helpful to illustrate here how to find and bind to a specific local address.</div>
<div></div>
<p>We know that the previous call to overlay_mdp_send has returned a list of addresses, and we know that a Serval overlay mesh node always has at least one local address, so we will assume in this example that the server response contains at least one address. &nbsp;We then copy this address from the list of SIDs into the bind source address field. &nbsp;We have to do this before we setup the rest of the bind request, because we are reusing the same <span>overlay_mdp_frame</span> structure, and <span>mdp.addrlist</span> and <span>mdp.bind</span> are part of a union that share storage space. &nbsp;All that then remains is to provide the port number, and call <span>overlay_mdp_send</span> to request that the server make the binding. &nbsp;If no error has occurred, the binding has been created, and can be used.</p>
<div><a href="http://2.bp.blogspot.com/-qtud7YP-XIU/T44B30-6DKI/AAAAAAAAANE/mjDimMTbub4/s1600/mdp-ping-prepare-dst-addr.png"><img border="0" height="201" src="http://2.bp.blogspot.com/-qtud7YP-XIU/T44B30-6DKI/AAAAAAAAANE/mjDimMTbub4/s400/mdp-ping-prepare-dst-addr.png" width="400" /></a></div>
<div>For this ping-over-MDP application we use a sequence number to help filter any old packets that might arrive, and keep track of packet arrival statistics (this is a fairly simplistic implementation of a ping-like service, and lacks a number of important features, but it serves to illustrate the use of MDP sockets just fine). &nbsp;We then determine the SID we want to ping. &nbsp;If the string &#8220;broadcast&#8221; is supplied, we fill the SID with all ones (0xff bytes) to indicate broadcast, and set a flag to remind us that we are broadcasting, just as it does on IPv4 and ethernet. &nbsp;Else, we store the hexadecimal representation of the address using the <span>stowSid</span> convenience function. &nbsp;The next step is to actually send ping packets:</div>
<div><a href="http://4.bp.blogspot.com/-kYFRbcWukxA/T44DPAJ9aAI/AAAAAAAAANM/J2QX9XktHu4/s1600/mdp-ping-send-ping.png"><img border="0" height="305" src="http://4.bp.blogspot.com/-kYFRbcWukxA/T44DPAJ9aAI/AAAAAAAAANM/J2QX9XktHu4/s400/mdp-ping-send-ping.png" width="400" /></a></div>
<div>This code warns the user that if they are broadcasting that the ping packets will not be encrypted (not that there is anything too private in these packets, but it is nice to inform the user). &nbsp;We then enter a loop of endlessly sending ping packets. &nbsp;These data packets are identified by giving them a packet type of <span>MDP_TX</span>. &nbsp;If they are being broadcast, then the packets must also be marked as not requiring encryption using the <span>MDP_NOCRYPT</span> flag. &nbsp;As the <span>MDP_NOSIGN</span> flag is not specified, the packet will still be signed, allowing the recipient to reject the packet if it has been tampered with, and to be assured that the packet did in fact originate from the claimed address.</div>
<div></div>
<div>We could have done this the other way around, and have the programmer mark when a packet should be encrypted, but that would cause errors of omission to result in security breaches, instead of resulting in accidental employment of full security, which is a much better failure mode. &nbsp;This passive safety is supported by MDP server checks that will return an error if an impossible combination is employed, e.g., a broadcast packet with encryption.</div>
<p>The remainder of the above code simply packs the source and destination addresses and payload (the server rejects any packets with a source address/port combination that has not been bound to), and sends it by the now familiar <span>overlay_mdp_send</span> function. &nbsp;The next step is to watch for any incoming &#8220;pongs&#8221;:</p>
<div><a href="http://2.bp.blogspot.com/-h9vomRI3v8I/T44Fbr3FG-I/AAAAAAAAANU/LsNwaOW-1AA/s1600/mdp-ping-get-pongs.png"><img border="0" height="400" src="http://2.bp.blogspot.com/-h9vomRI3v8I/T44Fbr3FG-I/AAAAAAAAANU/LsNwaOW-1AA/s400/mdp-ping-get-pongs.png" width="372" /></a></div>
<div>This loop waits until one second has passed, and displays any ping-replies (pongs) that arrive. &nbsp;It uses the <span>overlay_mdp_client_poll</span> function as a convenience over providing the mdp client socket directly to poll or select (although that could be done). &nbsp;If packets are waiting, it uses <span>overlay_mdp_recv</span> to receive them, and if the received MDP message is indeed a packet (indicated by the <span>MDP_RX</span> type), then the packet is displayed. &nbsp;The packet type and flags field also tells the receiver whether the arriving packets were signed and/or encrypted. &nbsp;Signed or auth-crypted packets that have been tampered with are detected and dropped, and so the client never sees them. &nbsp;To improve passive security for applications that only want to receive authenticated data we may add an option to the MDP bind request to specify that any unsigned packets be dropped and never presented to the client.</div>
<div></div>
<div>Below is an example of MDP ping in action, showing that the packets received via the MDP loop-back from the local address (<span>FE83</span>&#8230;) are signed but not encrypted (since encryption is not required), and that packets received from a remote host (<span>2447</span>&#8230;) were both signed and encrypted:</div>
<div></div>
<div><a href="http://4.bp.blogspot.com/--wkSsfP1r9c/T44HTVQKNII/AAAAAAAAANc/ZwEWHFhevsc/s1600/mdp-ping-run-1.png"><img border="0" height="84" src="http://4.bp.blogspot.com/--wkSsfP1r9c/T44HTVQKNII/AAAAAAAAANc/ZwEWHFhevsc/s640/mdp-ping-run-1.png" width="640" /></a></div>
<div></div>
<div>Notice that nowhere in this program is there any mention of keys (apart from their implicit handling as network addresses), and no key-exchange must be handled, or third-party authority consulted. &nbsp;Instead, special effort is required to <i>reduce</i> the security of the communications, e.g., for sending broadcast messages.</div>
<div></div>
<div>The security is just baked in from the ground up, defaults to on, and can be used anywhere, anytime, as it should be.</div>
<div><img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/9068638994894102968-7654943859981216196?l=servalpaul.blogspot.com" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.servalproject.org/archives/923/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sharpening Serval&#8217;s Mission</title>
		<link>http://www.servalproject.org/archives/922</link>
		<comments>http://www.servalproject.org/archives/922#comments</comments>
		<pubDate>Mon, 16 Apr 2012 20:59:00 +0000</pubDate>
		<dc:creator>Dr Paul</dc:creator>
				<category><![CDATA[Dr Paul Gardner-Stephen]]></category>

		<guid isPermaLink="false">http://www.servalproject.org/archives/922</guid>
		<description><![CDATA[We have been doing a bit of reflecting lately about what it is that we are trying to accomplish with the Serval Project, not because we wonder what we are trying to do or why we are trying to do it. &#160;Rather, we have been thinking about what order to do things in, so that [...]]]></description>
			<content:encoded><![CDATA[<p><span><span>We have been doing a bit of reflecting lately about what it is that we are trying to accomplish with the Serval Project, not because we wonder what we are trying to do or why we are trying to do it. &nbsp;</span></span><span>Rather, we have been thinking about what order to do things in, so that we can get something usable into people&#8217;s hands as soon as possible.</span><br /><span><br /></span><br /><span>To answer this question we went back to our motto of &#8220;communications anywhere, anytime&#8221;, and did some thinking there. &nbsp;We came to realise that we can probably refine that, and that by doing so, we will probably come to understand what are the important things that need to happen first, and what are the (in many cases equally important) things that we will work on once we have the initial objectives under control.</span><br /><span><br /></span><br /><span>So here is our current thinking, and we invite any and all to give us feedback on this, and potentially change the line up. &nbsp;What follows is our working position in the absence of any feedback.</span><br /><span><span><br /></span></span><br /><span><span>We think that Serval&#8217;s mission can be expressed more clearly as:</span></span></p>
<div><span><span>mobile communications for those in need</span></span></div>
<p><span><br /></span><br /><span>This more or less says what we have been saying all along, but it moves the focus from the technology to the people using the technology. &nbsp;At the end of the day, we are only making the technology in the hope that it can help people.</span><br /><span><br /></span><br /><span>So we then turned to think about what the &#8220;minimum viable product&#8221; is for Serval, and we settled on a short-list of the four things that really matter right now. &nbsp;These are the things that we are focussing our resources on, and not until those are under control will we move on to our longer list of things that we have on the drawing board (some of which I will describe later).</span><br /><span><br /></span><br /><span><span>The four things that matter now are:</span></span></p>
<ul>
<li><b><i>ease of use</i></b><span> &#8211; the Serval software must be easy and intuitive to use, otherwise no one will use it, irrespective of how great and innovative the technology might be.&nbsp;</span></li>
<li><i>resilient phone calls, messaging and file distribution</i><span>&nbsp;- these are the core functions of the Serval software, i.e., what it let&#8217;s you do.</span></li>
<li><b><i>strong, simple, security</i></b><span> &#8211; security in mobile communications is so often an after thought, or severely compromised. &nbsp;For example, the security of 2G and 3G mobile telephone systems has been thoroughly broken for years. &nbsp;And when security is introduced into systems it has a bad habit of making life harder rather than easier. &nbsp;Consider the complexity and interoperability issues suffered by IPSec as an example, indeed so complex that it&#8217;s security benefits go largely un-used.</span></li>
<li><b><i>no infrastructure needed</i></b><span> &#8211; this is what is needed to make sure that we can most effectively help those in need, as it is the failure or absence of infrastructure (or affordable access to infrastructure) that is a recurring characteristic of those we are trying to help. &nbsp;Besides, there are already plenty of infrastructure-bound communications systems.</span></li>
</ul>
<p><span>We are tracking well on these points, and expect to have positive news on the progress of several of these points over the next month or so.</span><br /><span><br /></span><br /><span>Once we have these under control, we have a long list of features that we will immediately turn to, use-cases and improvements, some of which we are working on now in a limited capacity, and that we are planning support for from the outset. In no particular order, this list includes:<br /><span><br /></span></span></p>
<ul>
<li><b><i>broad device support</i></b><span>&nbsp;- For now we are happy to support a limited range of handsets, but we know that eventually we need to support as wide a range as possible, including non-Android phones.</span></li>
<li><b><i>Traffic prioritisation/QoS</i></b><span>&nbsp;- Right now our focus is on making the core functionality as solid as possible. &nbsp;We have plans in place for some innovative QoS functions that we will implement as resources allow.</span></li>
<li><b><i>optimising battery life</i></b><span>&nbsp;- The mesh can already run for a full business day on a cheap Android phone, but we want more. We want to get to at least 48 hours of continuous operation on a single charge, and ideally much more.</span></li>
<li><b><i>massive scalability</i></b><span>&nbsp;- Our protocols are designed with massive scalability in mind, but there are aspects of this that we simply don&#8217;t have the time or resources to implement right now. &nbsp;We figure that it is more important to get it working at the &#8220;village scale&#8221;, and once that is right and larger networks start to emerge, it will be quite natural for us to complete our plans for scalability.</span></li>
<li><b><i>privacy and plausible deniability</i></b><span> &#8211; For some people they take their privacy seriously, sometimes because their lives depend on it, or because the lives of the people they are in contact with depend on it. &nbsp;Eventually our software should make sure that it can be configured to not betray any such information. &nbsp;This is a considerable technical challenge, and one that it is not even certain that it is possible to achieve.</span></li>
<li><i>journalistic applications</i><span>&nbsp;- This is intrinsically linked to the previous point, as one of the main issues for journalists is keeping their sources confidential.</span></li>
<li><b>complex “crisis mode” of operation</b><span> &#8211; By this we mean some complex modes of operation where a network of phones automatically detects that a crisis is underway using various network heuristics (such as loss of cellular service, correlated vibrations or loud noise over a wide area, and to take some hithero undefined appropriate action.</span></li>
<li><b><i>group coordination</i></b><span> &#8211; We have plans to introduce a variety of work-group/team features, that will allow ease of communications and coordination amongst small teams of people. &nbsp;These are based on the core features that we are working on now, and so will be natural for us to complete once the dependent features are complete.</span></li>
<li><b><i>global mapping system and services</i></b><span> &#8211; We already have an effective prototype of our mapping application that we </span><a href="http://servalpaul.blogspot.com.au/2012/03/at-kiwiex-2012-part-1.html">demonstrated recently</a><span>, and that we will continue work on as we are able. &nbsp;This is a feature that has us quite excited, because it allows for a wide variety of coordinated and crowd-sourced activities through allowing users to create and share points of interest on the map, and to even automatically share the map tiles over the mesh, creating something like Google Maps that works without the internet.</span></li>
<li><b>environmental monitoring applications</b><span> &#8211; We already have some projects in mind here that will make use of the mapping system to make it easy to collect, share and visualise environmental data in the field, and so hopefully help people assess and protect the natural and built environment.</span></li>
<li><span>-</span><i>medical applications</i><span>&nbsp;- We are quite excited about the possibility of making a cheap medical device platform that uses a sub-$100 Android phone as it&#8217;s basis, combined with an open hardware port that allows the connection of an increasing number of off-the-shelf and custom medical attachments, such as pulse-oximetry, </span><a href="http://www.ted.com/talks/myshkin_ingawale_a_blood_test_without_bleeding.html">prick-less anemia testing</a><span>, blood pressure, foetal heart-rate monitor and even imaging ultra-sound. &nbsp;Support for additional functions and probes would be added to the platform overtime (with </span><a href="http://servalpaul.blogspot.com.au/2012/03/kiwiex-2012-installing-and-updating.html">software updates over the mesh</a><span> where required), as the interface would be open and flexible, doing to the medical device field what the smart-phone did to the software field. Extreme low-cost, field-upgradability, combined with resilient mesh communications to allow remote monitoring and collection of data and communication of alerts in infrastructure-deprived medical settings, we expect this concept to be highly disruptive to much of the medical devices space.</span></li>
</ul>
<p><span><span><br /></span></span><br /><span><span>So that&#8217;s what we are thinking about right now. &nbsp;But we invite your input to help us shape this as best we can, and also to help us achieve these goals if you want to be part of the action or to help us resource this work.</span></span>
<div><img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/9068638994894102968-4811501438058192553?l=servalpaul.blogspot.com" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.servalproject.org/archives/922/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serval Maps comes under the umbrella of the Serval Project</title>
		<link>http://www.servalproject.org/archives/921</link>
		<comments>http://www.servalproject.org/archives/921#comments</comments>
		<pubDate>Tue, 10 Apr 2012 10:20:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Corey]]></category>

		<guid isPermaLink="false">http://www.servalproject.org/archives/921</guid>
		<description><![CDATA[By: Torben Worm The Serval Maps application started life as a prototype application developed to meet the requirements of my honours thesis in 2011. I started by second honours degree in 2011, after not studying for 9 years, as a way to restart my career in research. I&#8217;ve been fortunate to be able to continue development [...]]]></description>
			<content:encoded><![CDATA[<div><a href="http://www.flickr.com/photos/tworm/3362762909/"><img class="size-full wp-image-2416" src="http://www.servalproject.org/wp-content/plugins/wp-o-matic/cache/407dd_umbrella.jpg" alt="" width="240" height="159" /></a>
<p>By: Torben Worm</p>
</div>
<p>The <a title="Serval Maps in the Serval Project wiki" href="http://developer.servalproject.org/dokuwiki/doku.php?id=content:servalmaps:main_page">Serval Maps</a> application started life as a prototype application developed to meet the requirements of <a title="Direct link to my honours thesis" href="http://bytechxplorer.com/studies/honours-thesis/">my honours thesis</a> in 2011.</p>
<p>I started by second honours degree in 2011, after not studying for 9 years, as a way to restart my career in research. I&#8217;ve been fortunate to be able to continue development of Serval Maps by joining the Serval Project at the beginning of the year.</p>
<p>Over the easter break this year it was decided to bring the Serval Maps application officially under the umbrella of the main <a title="Official Serval Project website" href="http://www.servalproject.org">Serval Project</a>.</p>
<p>In the short term the only change is that source code is now <a title="Direct link to the new repository" href="https://github.com/servalproject/ServalMaps">hosted in a repository</a> that is part of the Serval Project organisation on GitHub.</p>
<p>In the medium to long term it means that I can continue to develop the application, to which I&#8217;ve grown rather attached, as well as contribute to the main Serval Mesh application. It also means that users of the Serval Maps application in the future gain the support of the entire project.</p>
<p>I look forward to the exciting changes and opportunities that this change will bring.</p>
<p>The &#8220;<a title="Direct link to the photo" href="http://www.flickr.com/photos/tworm/3362762909/">Umbrella</a>&#8221; photo was uploaded to <a title="Flickr homepage" href="http://www.flickr.com/">Flickr</a> by <a title="Flickr Profile" href="http://www.flickr.com/people/tworm/">Torben Worm</a> and used under the terms of a <a title="More information about the license" href="http://creativecommons.org/licenses/by-nc-nd/2.0/deed.en">Creative Commons license</a>.</p>
<div>
<hr />
<p>This post was originally published on the <a href="http://techxplorer.com/" title="Thoughts by Techxplorer homepage">Thoughts by Techxplorer</a> blog and is licensed using a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/au/">Creative Commons</a> license.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.servalproject.org/archives/921/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serval Mesh Software and Root Access in Android</title>
		<link>http://www.servalproject.org/archives/919</link>
		<comments>http://www.servalproject.org/archives/919#comments</comments>
		<pubDate>Fri, 30 Mar 2012 00:20:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Corey]]></category>

		<guid isPermaLink="false">http://www.servalproject.org/archives/919</guid>
		<description><![CDATA[By: Andrew Mason The Serval Mesh application, to which I contribute when I&#8217;m not working on the Serval Maps application, makes use of a significant number of standard permissions when installed on an Android phone. These permissions are used to gain access to either data or components of the Android operating system. For example to make and receive phone calls, or [...]]]></description>
			<content:encoded><![CDATA[<div><a href="http://www.flickr.com/photos/a_mason/4255426890/"><img class="size-full wp-image-2406" src="http://www.servalproject.org/wp-content/plugins/wp-o-matic/cache/557b7_android-root.jpg" alt="" width="240" height="180" /></a>
<p>By: Andrew Mason</p>
</div>
<p>The <a title="Official Serval Project homepage" href="http://www.servalproject.org/">Serval Mesh</a> application, to which I contribute when I&#8217;m not working on the <a title="Official Serval Maps page in the Serval Project Wiki" href="http://developer.servalproject.org/dokuwiki/doku.php?id=content:servalmaps:main_page">Serval Maps</a> application, makes use of a significant number of standard permissions when installed on an <a title="Official Android hompage" href="http://www.android.com/">Android</a> phone.</p>
<p>These permissions are used to gain access to either data or components of the Android operating system. For example to make and receive phone calls, or to access the external storage on the device.</p>
<p>In addition to these standard permissions the Serval Mesh application also requires the ability to undertake tasks using the elevated privileges of the root user.</p>
<p>This level of access is required to configure and manage the Ad Hoc <a title="Wikipedia article on this topic" href="http://en.wikipedia.org/wiki/Wireless_mesh_network">Wireless Mesh network</a> which is a core component of the software. Unfortunately Android doesn&#8217;t provide a standard way of configuring or using this type of network and so we need to use software at a lower level in the operating system to interface directly with the wireless network hardware driver.</p>
<p>Adding the ability to gain root access on a phone is typically known as &#8220;Rooting the phone&#8221;. Unfortunately there is some confusion about what rooting a phone within the context of the Serval Mesh software means.</p>
<p>This was highlighted for me recently when I read <a title="Direct link to the article" href="http://computerworld.co.nz/news.nsf/news/opinion-network-alternatives-in-an-emergency">an article</a> on the <a title="Computerworld New Zealand homepage" href="http://computerworld.co.nz/">Computerworld New Zealand</a> website.</p>
<p>The <a title="Wikipedia homepage" href="http://www.wikipedia.org/">Wikipedia</a> article for <a title="Direct link to the Wikipedia article" href="http://en.wikipedia.org/wiki/Wireless_mesh_network">Rooting in Android OS</a> states that:</p>
<blockquote><p>Rooting is a process allowing users of <a title="Mobile phones" href="http://en.wikipedia.org/wiki/Mobile_phones">mobile phones</a>, <a title="Tablet computer" href="http://en.wikipedia.org/wiki/Tablet_computer">tablet PCs</a>, and other devices running the <a title="Android (operating system)" href="http://en.wikipedia.org/wiki/Android_(operating_system)">Android operating system</a> to attain <a title="Privilege escalation" href="http://en.wikipedia.org/wiki/Privilege_escalation">privileged control</a> (known as &#8220;<a title="Superuser" href="http://en.wikipedia.org/wiki/Superuser">root access</a>&#8220;) within Android&#8217;s subsystem. Rooting is often performed with the goal of overcoming limitations that <a title="Wireless carrier" href="http://en.wikipedia.org/wiki/Wireless_carrier">carriers</a> and hardware manufacturers put on some devices, resulting in the ability to alter or replace system applications and settings, run specialized <a title="Application software" href="http://en.wikipedia.org/wiki/Application_software">apps</a> that require administrator-level permissions, or perform other operations that are otherwise inaccessible to a normal Android user.</p>
</blockquote>
<p>Once root access is achieved many users will choose to install a custom version of the Android operating system. One such popular custom version is <a title="Official homepage for CyanogenMod" href="http://www.cyanogenmod.com/">CyanogenMod</a>.</p>
<p>It is important to note that from the perspective of the Serval Mesh software it isn&#8217;t necessary to install a custom version of Android. For example my current development phone is a <a title="More information about this phone" href="http://huaweimobile.com.au/ideos-x1">Huawei IDEOS X1</a> also known as a Huawei U8180.</p>
<p>I got mine from one of the local retail stores for one of the Australian carriers. It has a version of Android installed on it that has been customised by the carrier. The only change I&#8217;ve made to the operating system is the installation of software that supports root access using <a title="More information about this application" href="http://www.chainfire.eu/projects/43/GingerBreak/">GingerBreak</a>. There was a <a title="Direct link to the discussion" href="http://groups.google.com/group/serval-project-developers/browse_thread/thread/a0304e80724ab18c/d49f00305ad06b7d?lnk=gst&amp;q=gingerbreak">discussion about it</a> on our <a title="Main page of the mailing list" href="http://groups.google.com/group/serval-project-developers/">developer mailing list</a> at the time.</p>
<p>Just to be clear the Serval Mesh software requires the ability to run processes as root to configure and manage the wireless hardware of the device for use in an Ad Hoc Wireless mesh network. To do this the device must be rooted, however it isn&#8217;t necessary to have installed a custom version of Android.</p>
<p>The photo &#8220;<a title="Direct link to the photo" href="http://www.flickr.com/photos/a_mason/4255426890/">Rooting my HTC Hero Android Phone</a>&#8221; was uploaded to <a title="Flickr homepage" href="http://www.flickr.com/">Flickr</a> by <a title="Flickr profile page" href="http://www.flickr.com/people/a_mason/">Andrew Mason</a> and used under the terms of a <a title="Details of the license" href="http://creativecommons.org/licenses/by/2.0/deed.en">Creative Commons License</a>.</p>
<div>
<hr />
<p>This post was originally published on the <a href="http://techxplorer.com/" title="Thoughts by Techxplorer homepage">Thoughts by Techxplorer</a> blog and is licensed using a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/au/">Creative Commons</a> license.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.servalproject.org/archives/919/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serval Overlay Mesh Can Now Ping</title>
		<link>http://www.servalproject.org/archives/916</link>
		<comments>http://www.servalproject.org/archives/916#comments</comments>
		<pubDate>Fri, 30 Mar 2012 00:00:07 +0000</pubDate>
		<dc:creator>Dr Paul</dc:creator>
				<category><![CDATA[Dr Paul Gardner-Stephen]]></category>

		<guid isPermaLink="false">http://www.servalproject.org/archives/916</guid>
		<description><![CDATA[Okay, so it is one small step, but for us it is a significant one: the Serval Overlay Mesh can now ping nodes, simply using the Serval network identifiers (that are really stand-alone public keys in the NaCl CryptoBox key space): It looks just like normal ping, except for those really long addresses (256 bits). [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, so it is one small step, but for us it is a significant one: the Serval Overlay Mesh can now ping nodes, simply using the Serval network identifiers (that are really stand-alone public keys in the NaCl CryptoBox key space):</p>
<div><a href="http://3.bp.blogspot.com/-dLo0jvJ3hSQ/T3RQbHtnvBI/AAAAAAAAAMg/YDBkVNw_KKQ/s1600/mdp-ping.png"><img border="0" height="273" src="http://3.bp.blogspot.com/-dLo0jvJ3hSQ/T3RQbHtnvBI/AAAAAAAAAMg/YDBkVNw_KKQ/s640/mdp-ping.png" width="640" /></a></div>
<p>It looks just like normal ping, except for those really long addresses (256 bits). &nbsp;What is important for us, is that behind the scenes we have the Mesh Datagram Protocol (MDP) working, and all of the supporting infrastructure that goes behind it. </p>
<p>This means we are getting closer to carrying phone calls over MDP, and that <i>is</i> significant, because it lets us enjoy great transparent super-strong cryptography to protect the privacy of people making calls on a Serval phone.</p>
<p>It also lets us use non-IP based transports to carry the data, such as UHF and VHF radio based long-range mesh technologies that we are working on. &nbsp;We are having some really encouraging conversations with one phone manufacturer about including UHF long-range meshing into their phones, which would be great, as it would provide hundreds of metres range indoors and potentially one to a few kilometres outdoors under ideal conditions. </p>
<p>Such improved range compared with WiFi makes mesh telephony much more useful, as it means that fewer mesh phones are needed in an area to allow communications to occur. &nbsp;With WiFi you need someone in just about every house with a mesh node if you want to connect a community, because the range is about one house. &nbsp;But the long-range meshing would increase that range to perhaps a 5 to 10 house radius. &nbsp;In that context only a few percent of homes need mesh devices, which is much easier to achieve.</p>
<p>Meanwhile, I should get some sleep and then get back to writing software.
<div><img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/9068638994894102968-1480853366854862279?l=servalpaul.blogspot.com" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.servalproject.org/archives/916/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>All the window-cameos from the old Batman TV series</title>
		<link>http://www.servalproject.org/archives/915</link>
		<comments>http://www.servalproject.org/archives/915#comments</comments>
		<pubDate>Wed, 28 Mar 2012 21:04:15 +0000</pubDate>
		<dc:creator>Romana</dc:creator>
				<category><![CDATA[Batphone]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Humour]]></category>
		<category><![CDATA[Romana]]></category>

		<guid isPermaLink="false">http://www.servalproject.org/?p=915</guid>
		<description><![CDATA[A bit of Batman* software (our internal code name for our software) levity - All the window-cameos from the old Batman TV series &#8211; Boing Boing. &#160; * we have two labs &#8211; the small, windowless one is the Batcave, the larger, airier one is Stately Wayne Manor:)]]></description>
			<content:encoded><![CDATA[<p>A bit of Batman* software (our internal code name for our software) levity -</p>
<p><a href="http://boingboing.net/2012/03/27/all-the-window-cameos-from-the.html">All the window-cameos from the old Batman TV series &#8211; Boing Boing</a>.</p>
<p>&nbsp;</p>
<p>* we have two labs &#8211; the small, windowless one is the Batcave, the larger, airier one is Stately Wayne Manor:)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.servalproject.org/archives/915/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stand back &#8211; Serval does Science!</title>
		<link>http://www.servalproject.org/archives/914</link>
		<comments>http://www.servalproject.org/archives/914#comments</comments>
		<pubDate>Wed, 28 Mar 2012 06:46:43 +0000</pubDate>
		<dc:creator>Romana</dc:creator>
				<category><![CDATA[Dr Paul Gardner-Stephen]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Lyn Stephens]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Serval]]></category>

		<guid isPermaLink="false">http://www.servalproject.org/?p=914</guid>
		<description><![CDATA[Our own Dr Paul does a science broadcast regularly on local radio. This week, ably assisted by The Serval hardware guru, Lyn Stephens, they demonstrated how to make a satisfyingly scary bang&#8230; Sonyas imploding 44-gallon drum &#8211; ABC Adelaide &#8211; Australian Broadcasting Corporation.]]></description>
			<content:encoded><![CDATA[<p>Our own Dr Paul does a science broadcast regularly on local radio. This week, ably assisted by The Serval hardware guru, Lyn Stephens, they demonstrated how to make a satisfyingly scary bang&#8230;</p>
<p><a href="http://www.abc.net.au/local/videos/2012/03/28/3465858.htm?site=adelaide">Sonyas imploding 44-gallon drum &#8211; ABC Adelaide &#8211; Australian Broadcasting Corporation</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.servalproject.org/archives/914/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

