<?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>Jayway Team Blog &#187; Peter Neubauer</title>
	<atom:link href="http://blog.jayway.com/author/peterneubauer/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jayway.com</link>
	<description>Sharing Experience</description>
	<lastBuildDate>Sat, 11 Feb 2012 10:33:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Pimp-my-Pumpkin!</title>
		<link>http://blog.jayway.com/2009/10/16/pimp-my-pumpkin/</link>
		<comments>http://blog.jayway.com/2009/10/16/pimp-my-pumpkin/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 20:23:44 +0000</pubDate>
		<dc:creator>Peter Neubauer</dc:creator>
				<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[lego mindstorms]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.jayway.com/?p=2034</guid>
		<description><![CDATA[As Halloween is approaching and the aftternoons grow rainy, it's time for some tinkering. So, why not try to get the pumpkins a bit more interesting than cut-out veggies? Getting some tinkerers together was no problem, so we got three families with kids, 4 pumpkins, one LEGO Mindstorms set and 2 Arduinos to start with. [...]]]></description>
			<content:encoded><![CDATA[<p>As Halloween is approaching and the aftternoons grow rainy, it's time for some tinkering. So, why not try to get the pumpkins a bit more interesting than cut-out veggies?</p>
<p>Getting some tinkerers together was no problem, so we got three families with kids, 4 pumpkins, one <a>LEGO Mindstorms</a> set and 2 <a href="http://www.arduino.cc">Arduinos</a> to start with. I recently discovered the awesome <a href="http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&amp;key=NPS1055">HiTechnic Prototype board</a>, turning the LEGO Mindstorms set into a full IO-enabled prototyping experience with the added convenience of the thought-through LEGO sensors and the comfort of the <a href="http://lejos.sourceforge.net/">LeJOS</a> Java OS for the Brick. You get 6 analog inputs and 6 digital input or output pins - not bad.</p>
<p><img title="Lego Mindstorms Proto Board" src="http://www.hitechnic.com/contents/media/Proto-Exp1.gif" alt="" width="444" height="296" /></p>
<p>So, I got one of these and started with wrapping the Proto Sensor into a LeJOS java class using the I2CSensor base. The communication protocol is fairly straightforward and not tight to the HiTechnic plugin software for the LEGO IDE they provide:</p>
<pre>package org.peter;

import lejos.nxt.I2CPort;
import lejos.nxt.I2CSensor;

public class ProtoSensor extends I2CSensor {

 public static final int A0 = 0x42;
 public static final int A1 = 0x44;
 public static final int A2 = 0x46;
 public static final int A3 = 0x48;
 public static final int A4 = 0x4A;
 public static final int DOUBLE = 2;
 public static final int SINGLE = 1;
 public static final int DIGITAL_READ = 0x4C;
 public static final int DIGITAL_WRITE = 0x4D;
 public static final int IO_MODE = 0x4E;
 public static final int PIN_OUTPUT = 1;
 public static final int PIN_INPUT = 0;
 public static final int B0 = 1;
 private byte[] buf = new byte[2];

 public ProtoSensor(I2CPort port) {
 super(port);
 }

 public ProtoSensor(I2CPort port, int mode) {
 super(port, mode);
 }

 /**
 * Reads A0 Analog input
 *
 * @return byte[2], first byte is high, second byte low part
 */
 public byte[] readA0() {

   return getAnalog(A0);
 }
 private byte[] getAnalog(int address) {
   int res = getData(address, buf, DOUBLE);
   if (res != 0) {
     System.out.println("Error: " + res);
   }
   return buf;
 }

 /**
 *
 * @return the one byte read on all digital PINs on bits 0-5. bist 6 and 7
 *         will be ignored
 */
 public byte[] readDigital() {
   byte[] result = new byte[8];
   int res = getData(DIGITAL_READ, result, SINGLE);
   if (res != 0) {
     System.out.println("Error: " + res);
   }
   return result;
 }

 /**
 * set the input (0) or output (1) mode for the digital pins
 *
 * @param d0
 * @param d1
 * @param d2
 * @param d3
 * @param d4
 * @param d5
 * @return 0 if success, fail otherwise
 */
 public int setDigitalModes(int d0, int d1, int d2, int d3, int d4, int d5) {
   int mode = d5 * 32 + d4 * 16 + d3 * 8 + d2 * 4 + d1 * 2 + d0 * 1;
   return sendData(IO_MODE, (byte) mode);
 }

 public int setDigitalOutput(int d0, int d1, int d2, int d3, int d4, int d5) {
   int mode = d5 * 32 + d4 * 16 + d3 * 8 + d2 * 4 + d1 * 2 + d0 * 1;
   return sendData(DIGITAL_WRITE, (byte) mode);
 }

 public boolean isHigh(int pin) {
   return (readDigital()[0] &amp; pin)==pin;
 }
}</pre>
<p>Now, you can communicate with the Prototype sensor with only minimal hassle. The first test was to just have a light resistor connected to one analog input, and light a LED upon shadowing it (see <a href="http://qik.com/video/3117816">here</a>) . Oskar and me settled on listening for the touch sensor to be pressed (sticking through the nose of the pumpkin). On press, we simply light the 2 LED-eyes (cool blue color) and play a short "Happy Halloween" file tw times that Oskar has been recording on an old iPaq, transforming it with <a href="http://audacity.sourceforge.net/">Audacity</a> into 8bit ECM WAV that the LEGO brick can play:</p>
<pre>import java.io.File;

import lejos.nxt.Button;
import lejos.nxt.SensorPort;
import lejos.nxt.Sound;
import lejos.nxt.TouchSensor;

import org.peter.ProtoSensor;

public class Helloween {
 private static ProtoSensor proto;

 private static TouchSensor touch;

 public static void main(String[] args) throws Exception {
 proto = new ProtoSensor(SensorPort.S1);
 touch = new TouchSensor(SensorPort.S2);
 // set all digital pins to OUT
 proto.setDigitalModes(1, 1, 1, 1, 1, 1);

 while (!Button.ESCAPE.isPressed()) {
   if (touch.isPressed()) {
     proto.setDigitalOutput(1, 1, 1, 1, 1, 1);
     sayHello();
   } else {
     proto.setDigitalOutput(0, 0, 0, 0, 0, 0);
   }
 }

}

 private static void sayHello() {
   File hello = new File("helloshort.wav");
   try {
     Sound.playSample(hello, 100);
     Thread.sleep(2000);
     Sound.playSample(hello, 100);
     Thread.sleep(1500);
   } catch (InterruptedException e) {
   }
 }
}</pre>
<p>And voilá, the super-scary pumpkin is done and we even got time for some Kanelbullar and hot chocolate!<br />
The competing comic-art-eyes super-cool-pumpkin is made by David Cuartilles of Arduino and 1Scale1 fame. It won the competition without problems - thanks all Pumpkin Pimpers for a great 3 hours with the kids!</p>
<pre><a href="http://picasaweb.google.com/lh/photo/sk49ZyQehoxy46L-hxNdaw?feat=embedwebsite"><img src="http://lh6.ggpht.com/_FS7Tw5PaoNY/StN4GV9h4CI/AAAAAAAACUQ/VUl9aCbQTQA/s144/VIDEO0013.3gp.jpg" alt="" width="437" height="327" /></a></pre>
<p>Happy Halloween!<br />
/peter</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jayway.com/2009/10/16/pimp-my-pumpkin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Social Computing or Let the bots talk!</title>
		<link>http://blog.jayway.com/2009/09/01/social-computing-or-let-the-bots-talk/</link>
		<comments>http://blog.jayway.com/2009/09/01/social-computing-or-let-the-bots-talk/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 12:45:31 +0000</pubDate>
		<dc:creator>Peter Neubauer</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[linkedprocess]]></category>
		<category><![CDATA[neo4j]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[social computing]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://blog.jayway.com/?p=1918</guid>
		<description><![CDATA[This is a long article to follow up my talk at SSWC, so I will start with a summary for the lazy reader Summary With connected devices, JavaScript enabled web sites and the extensibility of the XMPP protocol, we are at the beginning of a new kind of applications that are operating in the social [...]]]></description>
			<content:encoded><![CDATA[<p>This is a long article to follow up my talk at <a href="http://www.swedensocialwebcamp.com/index.php/Main_Page">SSWC</a>, so I will start with a  summary for the lazy reader <img src='http://blog.jayway.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Summary</h2>
<p>With connected devices, JavaScript enabled web sites and the extensibility of the XMPP protocol, we are at the beginning of a new kind of applications that are operating in the social context of their owners. Google Wave is just the first well known application doing other-than-chatting things on top of XMPP. <a href="http://www.linkedprocess.org">LinkedProcess</a> is trying to lay a foundation for a much more general computing and distribution infrastructure for context-aware, social-spreadable and trusted application scenarios that potentially enable users to regain control over their own graph of information and control access to it using social connections.</p>
<h2>What is XMPP?</h2>
<p>XMPP is an XML instant messaging protocol that was developed by the <a href="http://www.jabber.org/ ">Jabber foundation</a>, as a reaction to the closed protocols of ICQ, Microsoft Messenger etc etc. It is based on the concepts of</p>
<ul>
<li>server side contact lists (Roster in XMPP terminology)</li>
<li>open XML streams between the XMPP server and any connected client once the connection is established</li>
<li>every connected XMPP client gets a unique ID (e.g. "neubauer.peter@gmail.com/phone1/xyz") under the common XMPP "bare" ID (neubauer.peter@gmail.com) and is uniquely addressable by XMPP packets. This can be used in situations where there is no direct IP number available or it is changing (e.g. mobile devices), making any Internet-connected device addressable as a potential server, with a constant address over time and space - an URI.</li>
<li>extensible payloads of XML packets as defined by <a href="http://xmpp.org/">the XMPP Specification</a>, the most important reflecting the 3 paradigms of asynchronous communication, and supported by all major XMPP servers
<ul>
<li>broadcast ("<strong>&lt;presence&gt;</strong>")</li>
<li>one-to-one or one-to-many ("<strong>&lt;message&gt;</strong>")</li>
<li>request/response with acknowledgement ("<strong>&lt;iq&gt;</strong>"), similar to the HTTP protocol</li>
</ul>
</li>
<li>handling of status, presence of resources and routing of messages to the right receivers by the XMPP servers</li>
<li>from the beginning built to scale for the Internet with distributed infrastructure, as explained in <a href="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2008/01/24/xmpp-aka-jabber-is-the-future-for-cloud-services">this blog post</a></li>
<li>large existing XMPP networks to tap into (GoogleTalk, iChat, Facebook Connect, holding part of your existing social graph in the contact lists) and <a href="http://xmpp.org/software/servers.shtml">open XMPP servers</a> to set up your own XMPP network</li>
<li>SSL support built into the base specification, distributed server-to-server communication even between XMPP networks like GoogleTalk and iChat.</li>
</ul>
<p><a href="xmpp.png" rel="lightbox"><img class="alignnone size-full wp-image-1917" title="xmpp" src="http://blog.jayway.com/wordpress/wp-content/uploads/2009/09/xmpp.png" alt="xmpp" width="522" height="287" /></a><em></em></p>
<p><em>XMPP principle setup</em></p>
<h2>Why should I care about XMPP?</h2>
<ul>
<li>XMPP is the currently most popular infrastructure for instant communication, used by systems like iChat, Google Talk and Google Wave. These are just a few of the possible applications we can do on top of XMPP, Twitter and TiVo are rumored to follow</li>
<li>via the use of a server side contact list of peers in any XMPP communication, suddenly there is a social or trust-like aspect to any XMPP conversation between two or more participating systems, users or devices</li>
<li>any modern mobile phone, javascript-enabled website, J2ME, Java or Flash-capable home automation device (e.g. BluRay players or media servers) or server application can talk XMPP and thus become a true peer to the other clients, without any new server side infrastructure or cloud service development more than existing XMPP servers for routing via e.g. http://www.kaazing.com, HTML5 web sockets or various XMPP libraries for <a href="http://code.stanziq.com/strophe/">JavaScript</a>, <a href="http://www.igniterealtime.org/projects/xiff/index.jsp">ActionScript</a>, <a href="http://www.igniterealtime.org/projects/openfire/index.jsp"> for an XMPP server</a> and <a href="http://www.igniterealtime.org/projects/smack/index.jsp"> Smack for Java</a>.</li>
</ul>
<h2>What can we do with this?</h2>
<p>Now, with all these characteristics in place, we can look at the different emerging platforms for XMPP communication:</p>
<h3>Chat - simple text exchange</h3>
<p>This is the simple tracking of presence for XMPP clients and the exchange of only human-readable text messages between them. However, a certain coolness is added by being able to distinguish between different clients logged in under the same XMPP account (e.g. different browser windows logging into GTalk and still sending and receiving in the right window). This has been in use for the past 15 years and is nothing new, even if the clients have gotten lighter and fancier over the years (see figure, marie@neubauer.se talking from the browser to neubauer.peter@gmail.com on iChat).</p>
<p><em><img class="alignnone size-full wp-image-1910" title="chat" src="http://blog.jayway.com/wordpress/wp-content/uploads/2009/09/chat.png" alt="chat" width="589" height="167" /></em></p>
<p><em>Normal XMPP chat setup</em></p>
<h3>Google Wave - concurrent document editing on steroids</h3>
<p>Google Wave is introducing a concept where a central XML document (the Wave), reflecting the total of a conversation, is simultaneously edited by several participants (via XMPP clients) of the conversation at the same time. While the incremental changes are sent to the XMPP Google Wave server for merging into the central Wave, they are at the same time even sent to the other online clients in the Roster of the current conversation just as chat messages, creating the real-time response impression of the Google Wave experience. However, these packages do not contain simple chat but actual machine-data interpreted by special Google Wave clients in e.g. JavaScript (see <a href="http://www.waveprotocol.org/">the Wave Protocol</a><a></a>).<br />
Google Wave even supports extensions to its functionality, see <a href="http://mashable.com/2009/06/11/google-wave-extensions/">this blog post</a> which means that a lot of the infrastructure can be used to e.g. support new functionality and data packets.</p>
<p><em><img class="alignnone size-full wp-image-1913" title="gwave" src="http://blog.jayway.com/wordpress/wp-content/uploads/2009/09/gwave.png" alt="gwave" width="575" height="277" /></em></p>
<p><em>Google Wave setup</em></p>
<h2>LinkedProcess - turn any connected device into a server with a social context</h2>
<p><a href="http://www.linkedprocess.org">LinkedProcess (LoP)</a>, driven by <a href="http://markorodriguez.com">Marko Rodriguez</a> and <a href="http://fortytwo.net/">Joshua Shinavier</a> is taking the approach of providing a set of XMPP tags for sending scripts and code snippets from XMPP clients ("LoP Villeins") to other XMPP peers acting as servers ("LoP Farms"), get them executed there and the result sent back. The thought is to be able to speed up the processing aspect of the emerging Semantic Web/Web of Data by moving the processes to the data instead of the usual move of the data to the processor.<br />
One huge application is the processing of the emerging Semantic Web or Linked Data (<a href="http://www.ted.com/index.php/talks/tim_berners_lee_on_the_next_web.html">Tim Berners Lee talks about that at TED 2009</a>) by sending processing instructions to the big servers holding large chunks of this emerging graph structure instead of having to pull all data onto your own device prior to processing it (see the <a href="http://code.google.com/p/linkedprocess/wiki/Introduction">LinkedProcess introduction</a>).</p>
<p><em><img class="alignnone size-full wp-image-1911" title="cloud" src="http://blog.jayway.com/wordpress/wp-content/uploads/2009/09/cloud.png" alt="cloud" width="514" height="308" /></em></p>
<p><em>LinkedProcess distributed processing of LinkedData setup</em></p>
<p>This has a number of interesting aspects:</p>
<ul>
<li>any XMPP capable client (mobile phones, websites etc) can be turned into a server being in direct contact with its peers</li>
<li>data can stay at one logical place (e.g. the mobile phone) while others can send scripts to operate to the data in order to get ad-hoc queries executed</li>
<li>code can be spread within the social context, so scripts can be shared and spread through the social network of resources and people rapidly, without special installation hassle, giving birth to truly viral "web- and mobile only" applications and social networks of both humans, content and hardware</li>
<li>the access to the computing resources and data is controlled via the contact list of the XMPP client executing the script. Thus, it is always known who is trying to access the LinkedProcess server</li>
<li>via the use of existing or new social chat networks, this extends the social aspect of your contact list to any XMPP speaking resource under your account, persons, devices and software alike.</li>
</ul>
<h2>So, what is social about LinkedProcess?</h2>
<p>Well, with all this said, we have suddenly a couple of very interesting concrete scenarios:</p>
<h3>1. Personal and Social Could Computing</h3>
<p>This is the concept of spreading code to execute on other servers and devices that are available within the social context of the sender - either a number of servers being set up under the same bare account or friends and colleagues providing their resources to others in their social vicinity. E.g. if I want to transcode a HD movie from <a href="http://www.ted.com">TED</a> to fit my mobile phone, I could send a script to my home server instructing the server to download the appropriate encoder, download the original high-resolution link and put the result onto a URL and return that to me. Totally Ad Hoc, without any new programs installed in my phone or the server afterwards.</p>
<p><em><img class="alignnone size-full wp-image-1915" title="social_cloud" src="http://blog.jayway.com/wordpress/wp-content/uploads/2009/09/social_cloud.png" alt="social_cloud" width="535" height="335" /></em></p>
<p><em>The Social Cloud</em></p>
<h3>2. Totally distributed and viral social apps - my personal Facebook</h3>
<p>A user writes, downloads or is recommended a script - "SOClet" (written in e.g. LUA or Python for Android phones, see Android Sctripting Environment) that asks all its friends phones to evaluate if there is any content related to the asking phones owner. If yes, return the URIs of matching content on the friends phones. That results in an aggregated feed on "Pictures of me by my friends, friends statuses etc" - a Facebook- like setup, totally up to every individual to customize and no central storage. Of course if desired there can be a central server as an equal XMPP client in the middle in order to help holding state, much like the Google Wave setup.</p>
<p><em><img class="alignnone size-full wp-image-1914" title="mobile" src="http://blog.jayway.com/wordpress/wp-content/uploads/2009/09/mobile.png" alt="mobile" width="542" height="347" /></em></p>
<p><em>Viral apps spreading in the social device context across mobile devices and e.g. web pages</em></p>
<h3>3. Installing servers on phones and other resources</h3>
<p>The technical use setup is as the previous one, but here, long running server code is executed on your friends devices and thus, we create new services on top of the LinkedProcess infrastructure, and turn the devices into mini-servers. This serves potential use cases like <a href="http://unite.opera.com/">Opera Unite</a>, although not with a central namespace like Unite but totally distributed. Peter could for instalnce install a script on Maries phone serving an RSS feed back to Peter when he asks for new content every 5 minutes, including the current location. This can easily be displayed as a GeoRSS over a map on Peters phone or used to mash up the feed with other information using e.g. <a href="http://pipes.yahoo.com">Yahoo Pipes</a>. This could even be done from a web page (e.g. in Facebook), resulting in a Facebook application that talks to the phone directly and can mash up live phone data with the rest of the Facebook data.</p>
<h3>4. Privacy and ownership of everybody's personal information</h3>
<p>By turning the physical holder of your own data - the phone or your home desktop - into a server that accepts or denies requests for operations on that data, users regain control over the personal data. Imagining different protection zones (private, business, open), access can then be granted via the social contact list to individuals, groups of contacts (e.g. friends, co-workers in a project) or anyone.<br />
If unknown or public clients like e.g. Google bots want to access that information, even commercial transactions can be attached and making the commercial client sending the script or access request pay for access to e.g. the GPS location, thus reversing the current notion of users spreading their data and its connections into multiple commercial cloud services, paying with their copyright, usage patterns and privacy only to be forced to aggregate the total personal information again via services like FriendFeed, Plaxo etc.<br />
In the longer run, the total personal information, turned into a consistent personal graph of information with data models like <a href="http://www.neo4j.org">Neo4j, a Graph Database</a> would of course be held physically at more convenient locations than a non-backed up mobile phone and linked to the other personal sources of new information like desktop computers and embedded devices like cameras and GPS.</p>
<p><em><img class="alignnone size-full wp-image-1912" title="graph" src="http://blog.jayway.com/wordpress/wp-content/uploads/2009/09/graph.png" alt="graph" width="325" height="402" /></em></p>
<p><em>Socially controlled access to the personal information</em></p>
<h3>5. Social home automation and media sharing, the Internet Of Things</h3>
<p>With media and home automation devices having Internet access (TV, set top boxes, media servers, stereo), installing XMPP aware software on them or providing a <a href="http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance">DLNA</a>/XMPP gateway on my home computer under my personal account will expose these as different accessible resources on the Internet, without the intervention of firewalls, wireless routers etc. So, now my friends LinkedProcess enabled phone marie@neubuaer.se/phone1 can discover my living room TV, peter@neubaeur.se/tv1 since I am in Maries Roster, and the TV is AVAILABLE in XMPP. It discovers the capabilities of the TV much like DLNA and <a href="http://en.wikipedia.org/wiki/Universal_Plug_and_Play">UPnP</a> and then either sends over the latest photo stream to my TV directly, or negotiates means of doing so, e.g. via FTP to a third server. Voila, the home automation is freed onto the Internet and visible and controlled by me and the friends I trust. The same goes for lamps, fridges, home security systems etc with the appropriate bridging in place on a convenient machine, e.g. your home media server. For an actual implementation of light-control via XMPP, see <a href="http://blog.intuitymedialab.eu/2009/08/27/lab-session-making-things-talk-01-controlling-lights-with-your-mobile-via-xmpp">this bridging lab</a></p>
<p><em><img class="alignnone size-full wp-image-1916" title="things" src="http://blog.jayway.com/wordpress/wp-content/uploads/2009/09/things.png" alt="things" width="563" height="310" /></em></p>
<p><em>Home autmomation devices, directly or via an UPnP/XMPP bridge exposed to LinkedProcess</em></p>
<h2>Conclusion</h2>
<p>These are just some use cases that one can think of when it comes to merging the key ingredients:</p>
<ul>
<li>status aware, realtime, lightweight messaging infrastructure with contact list support</li>
<li>widely used infrastructure with existing contact networks (GTalk, iChat etc)</li>
<li>Open Platforms like LinkedProcess providing the protocol for communication and exchange of machine-readable data packets</li>
</ul>
<p>With the advent of Google Wave, I think the time has come to realize the great potential in Social Computing - introducing social aspects into core programming, security and distribution paradigms.</p>
<p>/peter neubauer</p>
<p>Co-founder, <a href="http://www.neotechnology.com">NeoTechnology</a></p>
<p>Consultant, <a href="http://www.jayway.se">Jayway</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jayway.com/2009/09/01/social-computing-or-let-the-bots-talk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jayway, 1Scale1 and Österportskolan getting kids into electronics</title>
		<link>http://blog.jayway.com/2009/04/02/jayway-1scale1-and-osterportskolan-getting-kids-into-electronics/</link>
		<comments>http://blog.jayway.com/2009/04/02/jayway-1scale1-and-osterportskolan-getting-kids-into-electronics/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 11:27:42 +0000</pubDate>
		<dc:creator>Peter Neubauer</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[tinkerway education]]></category>

		<guid isPermaLink="false">http://blog.jayway.com/?p=1490</guid>
		<description><![CDATA[Hi there, on Tuesday, 23 kids and two teachers from Österportskolan in Malmö, Sweden, went to Malmö Högskolan to get first hand experience with advanced multitouch technology research, see real laser cutters in action, look at 3D printers and break apart old electronics from the school. 1Scale1 coverage It was an amazing experience to see [...]]]></description>
			<content:encoded><![CDATA[<p>Hi there,<br />
on Tuesday, 23 kids and two teachers from Österportskolan in Malmö, Sweden, went to Malmö Högskolan to get first hand experience with advanced multitouch technology research, see real laser cutters in action, look at 3D printers and break apart old electronics from the school.<br />
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fneubauer.peter%2Falbumid%2F5319452838452362945%3Fkind%3Dphoto%26alt%3Drss%26authkey%3DGv1sRgCPram_ri8f33gwE" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed><br />
<a href="http://www.1scale1.com/node/87">1Scale1 coverage</a></p>
<p>It was an amazing experience to see the kids play 20-finger-games, soldier, cut, bend and slice open stuff and see inside old stuff to discover a lot of reusable parts.</p>
<p>Everyone got a laser-cut MDF keyring with Goofy on it, and we got lots of magnets, loudspeakers, key pads, mirrors and switches for later use in a "build from scratch" session <img src='http://blog.jayway.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>For a fast result, we built a very easy Walkie-Talkie by just wiring together two loudspeakers - it actually worked!</p>
<p>Thanks for making this possible Jayway, 1Scale1 and Österportskolan - the kids loved it and we think this could certainly be a stepping stone to the goal of getting more young engineers into higher education!</p>
<p>Thanks to all involved - David, David, Jannike, Elisabeth and my wife Marie.</p>
<p>We will submit this even to <a href="http://www.onceuponaschool.org">OnceUponASchool.org</a>, thanks TED and Dave Eggers for the inspiration and stay tuned!</p>
<p>Happy tinkering,</p>
<p>/peter</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jayway.com/2009/04/02/jayway-1scale1-and-osterportskolan-getting-kids-into-electronics/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Waygroup joining Earth Hour 2009</title>
		<link>http://blog.jayway.com/2009/03/26/waygroup-joining-earth-hour-2009/</link>
		<comments>http://blog.jayway.com/2009/03/26/waygroup-joining-earth-hour-2009/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 10:50:05 +0000</pubDate>
		<dc:creator>Peter Neubauer</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[earth hour]]></category>
		<category><![CDATA[environment]]></category>

		<guid isPermaLink="false">http://blog.jayway.com/?p=1370</guid>
		<description><![CDATA[Hi there, we decided to join Earth Hour and try to get all people at Jayway, Testway, Realway, Dotway and Leadway to save as much energy as they can on Saturday, 20.30 - 21.30. If you read this, please join in and register yourself or your organization! It won't save the planet but it will [...]]]></description>
			<content:encoded><![CDATA[<p>Hi there,</p>
<p>we decided to join <a href="http://www.earthhour.org">Earth Hour</a> and try to get all people at Jayway, Testway, Realway, Dotway and Leadway to save as much energy as they can on Saturday, 20.30 - 21.30. If you read this, please join in and register yourself or your organization! It won't save the planet but it will set a sign of our willingness to find energy saving lifestyles and solutions that in total can help to slow down the transformation of our habitat to an unknown state.</p>
<p>Cheers</p>
<p>/peter</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jayway.com/2009/03/26/waygroup-joining-earth-hour-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android on the FreeRunner</title>
		<link>http://blog.jayway.com/2008/11/21/android-on-the-freerunner/</link>
		<comments>http://blog.jayway.com/2008/11/21/android-on-the-freerunner/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 17:01:48 +0000</pubDate>
		<dc:creator>Peter Neubauer</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[oredev]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.jayway.com/?p=450</guid>
		<description><![CDATA[Hi there, Øredev was great success, especially all the people and the organization - a big Thank You to Michael and Emily for making this possible, you rock! Now, it was really awesome to exchange Android games with Mike Jennings fro the Android team, and get him excited over the recent Android port to the [...]]]></description>
			<content:encoded><![CDATA[<p>Hi there,</p>
<p>Øredev was great success, especially all the people and the organization - a big Thank You to Michael and Emily for making this possible, you rock!</p>
<p>Now, it was really awesome to exchange Android games with Mike Jennings fro the Android team, and get him excited over the recent Android port to the Neo FreeRunner! Thanks Anders Hedberg for coming over to fix the FR, and to all the OpenMoko enthusiasts doing the hard work!</p>
<p><a href="http://blog.jayway.com/wordpress/wp-content/uploads/2008/11/1227281553155.jpg" rel="lightbox"><img class="alignnone size-medium wp-image-451" title="Android on the NeoFreerunner" src="http://blog.jayway.com/wordpress/wp-content/uploads/2008/11/1227281553155-225x300.jpg" alt="" width="225" height="300" /></a></p>
<p>/peter neubauer</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jayway.com/2008/11/21/android-on-the-freerunner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Give back my XMPP in Android!</title>
		<link>http://blog.jayway.com/2008/11/21/give-back-my-xmpp-in-android/</link>
		<comments>http://blog.jayway.com/2008/11/21/give-back-my-xmpp-in-android/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 16:46:25 +0000</pubDate>
		<dc:creator>Peter Neubauer</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[oredev]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.jayway.com/?p=443</guid>
		<description><![CDATA[Since the release of the Android SDK 1.0, people (including me) have been complaining about the lack of connectivity for the very convenient Smack API to talk to Googles GTalk servers following http://davanum.wordpress.com/2007/12/31/android-just-use-smack-api-for-xmpp/, see here. However, yesterday @Øredev, I met Mike Jennings from the Android team and together we looked into this problem over a [...]]]></description>
			<content:encoded><![CDATA[<p>Since the release of the Android SDK 1.0, people (including me) have been complaining about the lack of connectivity for the very convenient Smack API to talk to Googles GTalk servers following <a title="this tutorial" href="http://davanum.wordpress.com/2007/12/31/android-just-use-smack-api-for-xmpp/">http://davanum.wordpress.com/2007/12/31/android-just-use-smack-api-for-xmpp/</a>, see <a title="XMPP problems" href="http://groups.google.com/group/android-developers/search?hl=en&amp;group=android-developers&amp;q=xmpp&amp;qt_g=Search+this+group">here</a>.</p>
<p>However, yesterday @Øredev, I met Mike Jennings from the Android team and together we looked into this problem over a beer in the Oracle booth. Looking into the current SVN source at <a title="source" href="http://svn.igniterealtime.org/svn/repos/smack/trunk/source" target="_blank">http://svn.igniterealtime.org/svn/repos/smack/trunk/source</a>, it seemed that a fast hack to get things working (especiallly the keystore problem on the device) would be to simply disable SSL negotiation.This does of course not work for SSL stuff, but it gets you going and it is enough for talk.google.com:5222. It is enough to just disable SSL negotiation by hardcoding it away in the ConnectionConfiguration.java, and comment out everything related to java.beans and other packages that are not present on the Android platform to get things working.</p>
<p>After doing that, voila things started to work and I am now happily logging in programatically via SVN Smack again!</p>
<p>Thanks Mike for the hints, help and a great BouncingBall application!</p>
<p>For anyone intersted, I am attaching the patch.</p>
<p>/peter neubauer</p>
<p><a href="http://blog.jayway.com/wordpress/wp-content/uploads/2008/11/smackdiff.zip">smackdiff</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jayway.com/2008/11/21/give-back-my-xmpp-in-android/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>JavaOne 2007 &#8211; What’s left?</title>
		<link>http://blog.jayway.com/2007/05/01/javaone-2007-what%e2%80%99s-left/</link>
		<comments>http://blog.jayway.com/2007/05/01/javaone-2007-what%e2%80%99s-left/#comments</comments>
		<pubDate>Tue, 01 May 2007 14:04:00 +0000</pubDate>
		<dc:creator>Peter Neubauer</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[javaone]]></category>
		<category><![CDATA[jayview]]></category>

		<guid isPermaLink="false">http://blog.jayway.com/?p=3488</guid>
		<description><![CDATA[Having been at this years JavaOne, the event was impressive as always, but left me with a feeling of being mostly a marketing display for Sun and its partners, not for Java as a whole. I even had the feeling that within Java standard and enterprise computing, things are moving at the pace of evolution, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Having been at this years JavaOne, the event was impressive as always, but left me with a feeling of being mostly a marketing display for Sun and its partners, not for Java as a whole. I even had the feeling that within Java standard and enterprise computing, things are moving at the pace of evolution, while embedded Java is getting most attention right now. Sun seems to focus on fostering and capitalizing on the vast install base of small Java runtimes. Nevertheless, here are some of the non-embedded highlights with follow up on recent developments where applicable.</strong></p>
<h2>The Consumer JRE </h2>
<h3>The ads</h3>
<p>In its endeavours to again push Java onto the desktop, Sun announced that the JRE<br />
will be slimmed down to approx 2 Mb, containing only the essential classes needed<br />
to run “Hello world” and other basic applications. That will make it comparable to<br />
e.g.	the	Flex	runtime	and	significantly	improve	the	load	time	perception.	Other<br />
modules will be downloaded and installed on demand. There was even a new good<br />
looking Windows installer, default Java codecs for media and a deployment toolkit<br />
that lets you install Java for your app in the browser with a single line of JavaScript. </p>
<h3>The reality </h3>
<p>Some of the things mentioned above are actually already being deployed, such as<br />
the improved installer. The latest Java6 versions have a much friendlier installation<br />
experience.	SUN	seems	to	be	so	committed	to	Java	that	even	the	stock	ticker	sym-<br />
bol has been changed to JAVA.<br />
The latest take was that the Leaner Meaner JRE should come at the latest in Q1<br />
2008 but it has been very quiet on release dates. I still hope for it, since it would<br />
make the Java experience so much more pleasant. </p>
<h2>OpenJDK</h2>
<h3>The ads </h3>
<p>Java has finally been released under an “open” license, loosely based on the GPLv2,<br />
some parts with the classpath exception. This enables Suns JDK and JRE to be<br />
shipped	via	Ubuntu,	Debian	and	other	Linux	distributions.	To	guide	the	transition<br />
to open code, a Governance Board, consisting of a number of high profile OSS<br />
people even outside Sun, has been formed. The release comprises both the JDK 1.5<br />
(followed by Java6 and 7) and interestingly, the CLDC and CDC JavaME parts. </p>
<h3>The reality </h3>
<p>It seems things are progressing nicely, Java7 milestones are appearing, and a com-<br />
munity is being established. However, now the question is what Apaches Harmony,<br />
the Classpath project and OpenJDK bring to the table and how we all can avoid a<br />
fracturing of Java. Interesting times. Anyway the opening up of the JDK is a great<br />
move and OpenJDK will probably continue to be the reference and major imple-<br />
mentation of the JDK in the future as well. </p>
<h2>Java (FX) is everywhere</h2>
<h3>The ads </h3>
<p>Java technology nowadays has spread almost everywhere except in the original Ap-<br />
plet domain. We find Java in SmartCards, routers, phones, servers, desktops, web<br />
cameras, Lego Mindstorms Robots, to name but a few. To leverage this installation<br />
power for the new strategy of going visual with even Java, Sun is launching a new<br />
initiative	called	JavaFX	for	bringing	interactive	content	to	Java	based	systems.	After<br />
that	Applets	and	Swing	failed	to	live	up	to	the	expectations,	JavaFX	tries	to	stand-<br />
ardize the different Java platforms regarding interactive content delivery, and adds a<br />
scripting	language,	JavaFX	Script,	based	on	the	F3	(Form	Follows	Function)	project,<br />
to the mix.<br />
How relevant the system is for the target group, the content creators, design-<br />
ers	and	artists,	remains	to	be	seen.	Right	now	the	only	tool	for	JavaFX	Script	is	a<br />
command	shell,	so	there	is	no	Flash	or	Silverlight-like	tooling	around.	Even	from	a<br />
platform point of view, it has not been clarified in what incarnations (e.g. a unified<br />
animation	API)	JavaFX	is	going	to	emerge	on	existing	platforms	such	as	J2SE	or<br />
J2ME. </p>
<p><img src="http://blog.jayway.com/wordpress/wp-content/uploads/2009/12/Picture-85.png" alt="Figure 1" title="Figure 1" width="435" height="274" class="alignnone size-full wp-image-3489" /></p>
<h3>The reality</h3>
<p>On	the	development	tools	side,	JavaFX	plugins	for	NetBeans	6.0,	M10	is	out,	so<br />
take	a	look	at	it.	For	the	designers,	being	the	most	important	target	group	for	FX<br />
Script,	Sun	seems	honestly	to	be	working	on	something	closer	to	FlexDesigner	than<br />
Netbeans, but no details are to be leaked right now. </p>
<h2>Glassfish for president</h2>
<h3>The ads </h3>
<p>Sun pushed Glassfish very hard as the best application server around. Glassfish ver-<br />
sion 2 is about to be released. Among the notable new developments are Ericsson<br />
contributing a SIP servlet engine to Glassfish, enabling open development of public<br />
telecommunication services like VoIP, Multimedia and Instant Messaging. </p>
<h3>The reality</h3>
<p>Glassfish v2 has just been released. It is the reference implementation for JavaEE,<br />
and	will	be	the	basis	of	SUN’s	commercial	Application	Server	offerings.	Even	Net-<br />
beans	6.0	will	be	packaged	with	a	Glassfish	server.	Seems	SUN	really	wants	to	take<br />
market share from JBoss, IBM and BEA. </p>
<h2>Scripting support in the JVM and IDE </h2>
<h3>The ads </h3>
<p>Sun has hired 3 of the 5 core JRuby developers. Even the Groovy folks are work-<br />
ing closely with Sun to make these languages a real alternative to classic class based<br />
development. The next version of Suns JVM will go one step further and explicitly add support for dynamic methods and other goodies, if JSR292 (Supporting Dy-<br />
namically Typed Languages on the JavaTM Platform) can be pushed through until<br />
then. </p>
<h3>The reality</h3>
<p>Both Netbeans 6.0 and Eclipse via the DLTK (Dynamic Languages Tool Kit) and<br />
RDT (Ruby Development Tools) plugins provide good support for JRuby, JavaS-<br />
cript and others. Refactoring is not a strong side of dynamic languages but that is<br />
partly made up for by shortened testing cycles without the building and packaging<br />
phase.<br />
For	the	JVM	part,	the	JSR292	is	underway	to	ease	the	execution	of	dynamic<br />
code, but there is some debate on whether that will really have the desired effects<br />
and what the timeframe is. Meanwhile, JRuby and others are getting to a state where<br />
commercial products are built on them, Thoughtworks Mingle platform being one<br />
of the most public ones. It seems dynamic languages on the JVM are here to stay,<br />
partly because they have their uses in a lot of areas, and partly because most of them<br />
need	a	VM,	and	SUN’s	JVM	has	proven	itself	to	be	a	rock	solid	foundation	to	build<br />
on. </p>
<h2>Netbeans - the one and only</h2>
<h3>The ads</h3>
<p>Netbeans has been pushed very hard at JavaOne. I could not spot any single oc-<br />
currence of Eclipse at any seminar. Speakers seem to have been instructed to show<br />
any code or examples exclusively in Netbeans. Netbeans has very good support for<br />
J2ME development, JSP integration and visual tools, whereas these are optional<br />
plugins in Eclipse. </p>
<h3>The reality</h3>
<p>Netbeans is probably just as flexible and powerful as Eclipse, but its approach is a<br />
bit different. Whereas Netbeans and IDEA try only to be an IDE, thus being able to<br />
package that product more tightly, Eclipse with its OSGi and RCP core is more of<br />
a generic platform, the Java IDE being just a subset of plugins, bundled in the JDT,<br />
WTK and related projects.<br />
Furthermore,	Netbeans	and	IDEA	are	driven	by	a	single	company	whereas	the<br />
Eclipse foundation consists of very big players in the Java market. Still, Netbeans de-<br />
livers a highly integrated and consistent Java IDE, making it an obvious alternative to<br />
today’s ruling Eclipse trend. The support for J2ME development is particularly nice,<br />
with visual development of Midlet screen flows, easy emulation and good support<br />
for signing and deploying Midlets. </p>
<h2>Summary </h2>
<p>After 10 years in existence, it seems the pace of revolutionary improvements in Java<br />
Standard Edition is starting to slow down. This might be a good thing, as it means<br />
even more compatibility and stability for long running systems. Nevertheless, with<br />
the existing platform there is plenty of space for progress and development outside<br />
the core Java platform, like the Java IDEs, scripting languages being ported to the<br />
JVM and new efforts like Spring and QI4J (www.qi4j.org). I am very confident in<br />
Java - and the surrounding technologies - having the power to give us new ways to<br />
build better systems in the future too and being able to reinvent itself in the face of<br />
mobile computing, scripting and new programming paradigms bubbling up.</p>
<p><em>Originally published in <a href="http://jayway.se/jayview">JayView</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jayway.com/2007/05/01/javaone-2007-what%e2%80%99s-left/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

