<?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>Simon Koelsch &#187; google</title>
	<atom:link href="http://www.simon-koelsch.de/tag/google/feed" rel="self" type="application/rss+xml" />
	<link>http://www.simon-koelsch.de</link>
	<description>coding software, using gadgets</description>
	<lastBuildDate>Mon, 20 Jun 2011 09:38:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Android 2.2 Froyo auf dem Vodafone Nexus One (EPF30)</title>
		<link>http://www.simon-koelsch.de/191-android-2-2-froyo-auf-dem-vodafone-nexus-one-epf30</link>
		<comments>http://www.simon-koelsch.de/191-android-2-2-froyo-auf-dem-vodafone-nexus-one-epf30#comments</comments>
		<pubDate>Fri, 02 Jul 2010 22:59:37 +0000</pubDate>
		<dc:creator>Simon Koelsch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://www.simon-koelsch.de/?p=191</guid>
		<description><![CDATA[Seit ein paar Tagen bin ich Besitzer eines Nexus One. Ein Grund warum ich mich gegen das HTC Desire entschieden habe ist unter anderem, dass ich bei einer neuen Android Version nicht Wochenlang warten möchte bis HTC seine Änderungen an der Firmware nachgezogen hat. Android 2.2, Releasename Froyo, ist nun schon eine Weile verfügbar und [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.simon-koelsch.de/191-android-2-2-froyo-auf-dem-vodafone-nexus-one-epf30/android_logo" rel="attachment wp-att-203"><img src="http://www.simon-koelsch.de/wp-content/uploads/2010/07/android_logo.png" alt="Android Logo" title="Android Logo" width="100" height="104" class="alignleft size-full wp-image-203" /></a><br />
Seit ein paar Tagen bin ich Besitzer eines Nexus One. Ein Grund warum ich mich gegen das HTC Desire entschieden habe ist unter anderem, dass ich bei einer neuen Android Version nicht Wochenlang warten möchte bis HTC seine Änderungen an der Firmware nachgezogen hat.<br />
Android 2.2, Releasename Froyo, ist nun schon eine Weile verfügbar und bringt ein paar nette Features wie zum Beispiel Tethering mit.</p>
<p>Hat man sein Nexus One nicht direkt bei Google in den USA gekauft, sondern zum Beispiel bei Vodafone, bricht das Update auf Android 2.2 aufgrund einer falschen Prüfsumme schon vor der Installation ab. Hier heisst es dann eigentlich warten, bis Vodafone Android Froyo selbst verteilt.</p>
<p>Wer nicht warten möchte sondern trotzdem auf die aktuelle Version updaten will kann das tun, muss aber vorher seinen Bootloader entsperren und die aktuelle Firmware aufspielen. Ich habe hier in einer kleinen Anleitung zusammengefasst was ich Schritt für Schritt beim Update getan habe. Bei mir ist inzwischen die heute veröffentlichte Build Version Android 2.2 FRF91 installiert und ich kann über keinerlei Probleme klagen.<br />
<span id="more-191"></span></p>
<p>Ein Hinweis vorab: Wurde der Bootloader einmal entsperrt lässt er sich nichtmehr sperren. Beim Einschalten des Nexus One wird ab diesem Zeitpunkt unter dem Logo ein kleines geöffnetes Schloss angezeigt. Dabei erlischt die Garantie.</p>
<h2>Vorbereitungen</h2>
<p>Folgende Dateien werden während der Installation benötigt:</p>
<ul>
<li>fastboot.zip (373 KB)</li>
<li>PASSIMG_Passion_Google_WWE_1.01.1700.1_ERD79_release_signed.zip (78 MB)</li>
<li>signed-passion-ERE27-from-ERD79.a487b405.zip (16 MB)</li>
<li>signed-passion-ota-42745.dc39ca1f.zip (82 MB)</li>
<li>signed-passion-FRF91-from-FRF85B.db99fdf1.zip (910 KB)</li>
</ul>
<p>Da Google die Downloads inzwischen entfernt hat und ich nicht weiss, ob ich die Dateien überhaupt selbst hosten darf, werde ich diese hier nicht hochladen.<br />
Allerdings findet man alle Files problemlos bei einer Google Suche.</p>
<p>Wer möchte kann hier auch die SHA1 Checksummen der gefunden Dateien prüfen:</p>
<p><code>e3798bf97777bf00d095913a96a55e3969518dd3<br />
PASSIMG_Passion_Google_WWE_1.01.1700.1_ERD79_release_signed.zip</p>
<p>a487b405e4dd2ed94623fe3747c3db354dc1fc01<br />
signed-passion-ERE27-from-ERD79.a487b405.zip</p>
<p>dc39ca1f5796c766bb5e7abf816f8b171562c792<br />
signed-passion-ota-42745.dc39ca1f.zip</p>
<p>db99fdf11a5059c903b4cdef9c355b9df5251db0<br />
signed-passion-FRF91-from-FRF85B.db99fdf1.zip</code></p>
<p>Vor den hier beschriebenen Schritten sollte man USB-Debugging für das Nexus One einschalten. Die entsprechende Option findet sich unter Einstellungen -> Anwendungen -> Entwicklung -> USB-Debugging. Eine Sicherung der vorhanden Daten sollte selbstverständlich sein.</p>
<p>Noch ein Wort zur Navigation:<br />
Im Bootloader navigiert man mit den Lautstärketasten an der linken Geräteseite. Mit der Power-Taste wird die ausgewählte Menüoption bestätigt.<br />
Im Recovery Programm kann der Trackball benutzt werden.</p>
<h2>Bootloader entsperren</h2>
<ol>
<li>Nexus One abschalten.</li>
<li>Trackball drücken und Gerät wieder einschalten um in den Bootloader zu gelangen.
</li>
<li>fastboot.zip entpacken und je nach Betriebssystem das entsprechende Script mit folgenden Parametern ausführen:<br />
<code lang="sh">./fastboot-linux oem unlock</code><br />
Hinweis von Carsten aus den Kommentaren: Unter Linux muss Fastboot eventuell mit Rootrechten ausgeführt werden.
</li>
</ol>
<p>Auf dem Nexus One erscheint jetzt eine Abfrage ob der Bootloader wirklich entsperrt werden soll. Diese Abfrage einfach bestätigen.</p>
<h2>Downgrade auf Firmware ERD79</h2>
<ol>
<li>PASSIMG_Passion_Google_WWE_1.01.1700.1_ERD79_release_signed.zip im gleichen Verzeichniss wie fastboot entpacken.
</li>
<li>Auch hier wieder Nexus One abschalten.
</li>
<li>Trackball drücken und Gerät wieder einschalten um in den Bootloader zu gelangen.
</li>
<li>
<code>/fastboot-linux devices</code><br />
sollte das mit dem USB-Kabel verbundene Gerät anzeigen.</code>
</li>
<li>Danach folgende Befehle ausführen:<br />
<code><br />
./fastboot-linux erase cache<br />
./fastboot-linux flash userdata userdata.img<br />
./fastboot-linux flash boot boot.img<br />
./fastboot-linux flash system system.img<br />
./fastboot-linux flash recovery recovery.img<br />
./fastboot-linux reboot<br />
</code>
</li>
</ol>
<p>Bei mir waren dann folgende Ausgaben auf dem Bildschirm zu sehen:<br />
<code><br />
sending 'userdata' (2 KB)... OKAY<br />
writing 'userdata'... OKAY<br />
[echox@kaffeesatz:~/android/froyo/fastboot] % ./fastboot-linux flash boot boot.img<br />
sending 'boot' (2044 KB)... OKAY<br />
writing 'boot'... OKAY<br />
[echox@kaffeesatz:~/android/froyo/fastboot] % ./fastboot-linux flash system system.img<br />
sending 'system' (116663 KB)... OKAY<br />
writing 'system'... OKAY<br />
[echox@kaffeesatz:~/android/froyo/fastboot] % ./fastboot-linux flash recovery recovery.img<br />
sending 'recovery' (2294 KB)... OKAY<br />
writing 'recovery'... OKAY<br />
[echox@kaffeesatz:~/android/froyo/fastboot] % ./fastboot-linux reboot<br />
rebooting...<br />
</code></p>
<p>Nach einer kurzen Wartezeit ist die neue Firmware dann aufgespielt.<br />
Von hier können wir jetzt einfach bis auf Android 2.2 FRF91 Updaten.</p>
<h2>Update auf ERE27, FRF85B (Froyo) und FRF91 (Froyo)</h2>
<ol>
<li>Nexus One über USB-Kabel mit dem Rechner verbinden.</li>
<li>signed-passion-ERE27-from-ERD79.a487b405.zip in update.zip umbenennen und auf die SD-Karte des Androids speichern.</li>
<li>Nexus One abschalten, Trackball drücken, Gerät wieder einschalten um in den Bootloader zu gelangen.</li>
<li>Im Bootloader sollte ausgewählt sein, mit der Power-Taste dann bestätigen.</li>
<li>Recovery auswählen und wieder mit der Powertaste bestätigen.<br />
Wenn ein Ausrufezeichen und ein kleines Android Logo zu sehen ist, die Power-Taste drücken und dann dazu die Volume-Up-Taste.</p>
<p>Die Meldung <i>"E:Can't open /cache/recovery/command"</i> kann dabei getrost ignoriert werden.
</li>
<li>Hier mit dem Trackball "Apply sdcard:update.zip" auswählen und einfach mit dem Trackball bestätigen.</li>
</ol>
<p>Danach erfolgt die Installation und nach einem Neustart ist die Firmware ERE27 installiert.</p>
<p>Diese Schritte müssen als nächstes einfach für die Datei "signed-passion-ota-42745.dc39ca1f.zip" und anschliessend für "signed-passion-FRF91-from-FRF85B.db99fdf1.zip" wiederholt werden.</p>
<p><strong>Danach ist die aktuelle Android 2.2 Version auf dem Nexus One installiert.</strong></p>
<p>Ich habe dafür mit dem Suchen der Files knapp 20 Minuten gebraucht.</p>
<p><strong>Update:</strong> Wer <a href="http://nodomain.cc/2010/07/03/android-2-2-froyo-auf-dem-desire.html">eine Anleitung für Android 2.2 "Froyo" auf dem Desire</a> sucht, wird bei <a href="http://nodomain.cc/2010/07/03/android-2-2-froyo-auf-dem-desire.html">Fabian</a> fündig.</p>
<p><strong>Update 2:</strong>Stephan hat in den Kommentaren noch ein paar Hinweise zur Benutzung von Windows 7 gegeben:</p>
<blockquote><p>
Vorab musste ich die Datei "AdbWinApi.dll", sowie die "AdbWinUsbApi.dll" in den entpackten fastboot-Ordner kopieren - ansonsten kam die Fehlermeldung, dass die AdbWinApi.dll fehle.<br />
Außerdem musste ich - da ich Win7 nutze - die Eingabeaufforderung als Admininstrator ausführen, um den Bootloader erfolgreich zu entsperren und das Downgrade auf ERD79 anzustossen zu können.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.simon-koelsch.de/191-android-2-2-froyo-auf-dem-vodafone-nexus-one-epf30/feed</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Google JavaScript Bibliothek Closure Library</title>
		<link>http://www.simon-koelsch.de/91-google-javascript-bibliothek-closure-library</link>
		<comments>http://www.simon-koelsch.de/91-google-javascript-bibliothek-closure-library#comments</comments>
		<pubDate>Mon, 09 Nov 2009 00:41:53 +0000</pubDate>
		<dc:creator>Simon Koelsch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[closure]]></category>
		<category><![CDATA[closure-library]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.simon-koelsch.de/?p=91</guid>
		<description><![CDATA[Google realisiert in seinen Webanwendungen das Interface durch intensiven Gebrauch von Javascript. Man denke dabei an Google Mail, Google Maps oder Google Wave. Ein Teil der Werkzeuge die dabei benutzt werden sind jetzt als Closure Tools veröffentlicht worden. Closure Tools besteht aus den folgenden Teilprojekten: Der Closure Compiler übersetzt JavaScript Code in eine kompaktere Form. [...]]]></description>
			<content:encoded><![CDATA[<p>Google realisiert in seinen Webanwendungen das Interface durch intensiven Gebrauch von Javascript. Man denke dabei an <a title="Gmail" href="http://mail.google.com">Google Mail</a>, <a title="Maps" href="http://maps.google.com">Google Maps</a> oder<a title="Google Wave" href="http://wave.google.com"> Google Wave</a>. Ein Teil der Werkzeuge die dabei benutzt werden sind jetzt als <a title="Closure Tools bei Google Labs" href="http://code.google.com/closure/">Closure Tools </a>veröffentlicht worden.</p>
<p>Closure Tools besteht aus den folgenden Teilprojekten:</p>
<p>Der <a title="Closure Compiler bei Google Labs" href="http://code.google.com/closure/compiler/">Closure Compiler</a> übersetzt JavaScript Code in eine kompaktere Form. Dadurch werden die Scripte kleiner und damit auch schneller. Es wird toter Code entfernt und nach üblichen Fehler gesucht. Eine Erweiterung für Firebug ist auch verfügbar.</p>
<p>Mit <a title="Closure Templates bei Google Labs" href="http://code.google.com/closure/templates/">Closure Templates</a> gibt es eine einfache Möglichkeit dynamisch HTML zu generieren. Die Templates sind fertig kompiliert als Java und JavaScript.</p>
<p>In diesem Posting geht es um den dritten Teil des Closure Projekts: <a title="Closure Library bei Google Code" href="http://code.google.com/p/closure-library/">Closure Library</a>. Die veröffentlichte Bibliothek enthält eine breite Sammlung von Funktionen und ist kompatibel zu den gängigen Browsern.<br />
Außerdem bringt sie noch ein paar andere nette Konzepte mit.<br />
<span id="more-91"></span></p>
<h3>Abhängigkeiten</h3>
<p>Closure Library besitzt ein simples Abhängigkeits-Konzept. Mit <code>goog.provide()</code> wird ein eigener Namensraum für eine Funktion geschaffen. Mit <code>goog.require()</code> ist es dann möglich auf die vorher definierten Funktionen zuzugreifen.<br />
Dabei sind <code>goog.provide()</code> und <code>goog.require()</code> nicht nur als vereinfachte Include Funktionen zu sehen. Mit der Bibliothek kommt ein Python Script welches eine JavaScript Datei analysiert und mit den benötigten Abhängigkeiten ein grosses Script erstellt.<br />
Dieses Script kann bei Bedarf dann mit dem Closure Compiler weiter optimiert werden.</p>
<h3>Events</h3>
<p>JavaScript sendet bei einer Benutzerinteraktion mit einem DOM-Element ein Event an dieses Element. Zum Beispiel bei einem Klick oder einem Kontakt mit dem Mauszeiger. Auf diese Events lässt sich dann im Programmcode reagieren. Leider sind Events bei jedem Browser ein wenig anderst implementiert. Auf diese Unterschiede müsste man eigentlich bei der Entwicklung achten. Closure umgeht dieses Problem mit einem eigenen Eventmodell. Dieses Modell funktioniert dann mit allen gängigen Browsern gleich.<br />
Es ist auch möglich eigene Eventtypen zu erstellen und zu benutzen.<br />
Die Demo <a title="Closure JavaScript Mausrad Demo" href="http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/mousewheelhandler.html">goog.events.MouseWheelHandler</a> zeigt zum Beispiel eine Reaktion auf Events des Mausrads.</p>
<h3>Vererbung</h3>
<p>Ein rudimentäres Vererbungskonzept wird mit <code>goog.inerhits(child, parent)</code> ermöglicht. Soll eine Klasse von einer anderen abgeleitet werden, muss <code>goog.inerhits(child, parent)</code> eine Refernz auf beide Klassen übergeben werden. Danach sind die vererbeten Funktionen sichtbar. Den Konstruktor der Vaterklasse muss man allerdings noch selbst aufrufen.</p>
<p>Ein Beispielcode aus der <a title="Einfuehrung in Closure" href="http://code.google.com/closure/library/docs/introduction.html">Dokumentation</a>:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">goog.<span style="color: #006633;">ui</span>.<span style="color: #006633;">MenuButton</span> <span style="color: #339933;">=</span> function<span style="color: #009900;">&#40;</span>content, opt_menu, opt_renderer, opt_domHelper<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  goog.<span style="color: #006633;">ui</span>.<span style="color: #003399;">Button</span>.<span style="color: #006633;">call</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, content, opt_renderer <span style="color: #339933;">||</span>
      goog.<span style="color: #006633;">ui</span>.<span style="color: #006633;">MenuButtonRenderer</span>.<span style="color: #006633;">getInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, opt_domHelper<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Menu buttons support the OPENED state.</span>
  <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">setSupportedState</span><span style="color: #009900;">&#40;</span>goog.<span style="color: #006633;">ui</span>.<span style="color: #003399;">Component</span>.<span style="color: #006633;">State</span>.<span style="color: #006633;">OPENED</span>, <span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>opt_menu<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">setMenu</span><span style="color: #009900;">&#40;</span>opt_menu<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">timer_</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> goog.<span style="color: #003399;">Timer</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// 0.5 sec</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
goog.<span style="color: #006633;">inherits</span><span style="color: #009900;">&#40;</span>goog.<span style="color: #006633;">ui</span>.<span style="color: #006633;">MenuButton</span>, goog.<span style="color: #006633;">ui</span>.<span style="color: #003399;">Button</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Hier erbt die Komponente MenuButton von Button. Zeile 3 zeigt den Aufruf des Konstruktor der Vaterklasse mit call().</p>
<h3>Funktionen</h3>
<p>Closure besitzt Funktionen für sehr viele Anwendungsfälle. Allein <code>goog.ui</code> enthält 138 verschiedene Komponenten. Dabei sind einfache Elemente wie ein <a title="Benutzerdialog Demo" href="http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/prompt.html#">Benutzerdialog</a> genauso enthalten, wie eine Komponente zur <a title="Spellchecking Demo Closure" href="http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/richtextspellchecker.html">Rechtschreibkorrektur</a>, einer <a title="Baumstruktur Closure" href="http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/tree/demo.html">Baumstruktur </a>oder einem kompletten <a title="Closure Editor Demo" href="http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/editor/editor.html">WYSIWYG-Editor</a>.<br />
Es sind Datumsfunktionen vorhanden, einfache Iteratoren, komplexere Datentypen wie Maps und Sets, i18n-Funktionen zur Lokalisierung und einfache Effekte.</p>
<p>Wer sich selbst mit den Möglichkeiten vertraut machen will, dem Empfehle ich die <a title="Closure API und Demos" href="http://closure-library.googlecode.com/svn/trunk/closure/goog/docs/index.html">API und die darin enthaltenen Demos</a>.</p>
<p>Die komplette Bibliothek ist über Subversion verfügbar:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">svn</span> checkout http:<span style="color: #000000; font-weight: bold;">//</span>closure-library.googlecode.com<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>trunk<span style="color: #000000; font-weight: bold;">/</span> closure-library-read-only</pre></div></div>

<p>Achtung: Es sind hier auch alle Beispiele und Tests enthalten. Aus diesem Grund werden 156 MB heruntergeladen.</p>
<p>Closure Library ist verfügbar unter der <a title="Apache 2.0 Lizenz" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simon-koelsch.de/91-google-javascript-bibliothek-closure-library/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Wave geht in erste grosse Beta Phase</title>
		<link>http://www.simon-koelsch.de/69-google-wave-geht-in-erste-grosse-beta-phase</link>
		<comments>http://www.simon-koelsch.de/69-google-wave-geht-in-erste-grosse-beta-phase#comments</comments>
		<pubDate>Thu, 01 Oct 2009 18:08:32 +0000</pubDate>
		<dc:creator>Simon Koelsch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[wave]]></category>
		<category><![CDATA[xmpp/jabber]]></category>

		<guid isPermaLink="false">http://www.simon-koelsch.de/?p=69</guid>
		<description><![CDATA[Kurzer Kommentar zur Google Wave Beta Phase, kleine Zusammenfassung der Aenderungen und Google Wave Einladungen.]]></description>
			<content:encoded><![CDATA[<p>Seit es die Google Wave Developers Sandbox zum reinschnuppern ins Protokoll, die vielen bunten Gadgets, die API, etc. hat sich wieder einiges getan.</p>
<p>Rund 27.000 Entwickler haben sich dafür erfolgreich registriert, mit der API gespielt und kleine Prototypen in Form von Gadgets und Robots geschrieben.<span id="more-69"></span>Die<a title="Java robot Client Library" href="http://code.google.com/p/wave-robot-java-client/"> Java Robot Client Library</a> wurde nun ganz offiziell als Open Source verabschiedet und ist bei Google Code zum download verfügbar.</p>
<p><a title="Google Featured Wave Extensions" href="http://wave.google.com/help/wave/extensions.html">Es wurden von verschiedenen Firmen Extensions entwickelt die jetzt von Google selbst unterstützt werden</a>. Dazu zählen einfache Spiele wie Sudoku genauso, wie Video Chat Anwendungen und eine Wetter Erweiterung.</p>
<p>Eine Vorschau gibt es für Erweiterungen von SAP, salesForce.com (Stichwort Cloud Computing) und MediaWiki (dafür scheint Google Wave ja wie gemacht zu sein).</p>
<p>Ausserdem findet man bei den Extensions jetzt auch die<a title="Wave Extensions Design Principles" href="http://code.google.com/apis/wave/extensions/designprinciples.html"> "Wave Extension Design Principles"</a>.</p>
<p>Wer bisher keine Lust oder Zeit hatte, sich das 80 Minuten Video zur Google Wave Präsentation auf der Google I/O anzusehen, hat nun die Möglichkeit in 8 Minuten eine Übersicht zu bekommen. Stephanie und Greg vom Entwicklerteam haben die Features nochmal schnell zusammengefasst:</p>
<p><object width="480" height="295" data="http://www.youtube.com/v/p6pgxLaDdQw&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;hd=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/p6pgxLaDdQw&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;hd=1" /><param name="allowfullscreen" value="true" /></object></p>
<p>Ob das etwas mit den 100.000 verschickten Einladungen zu tun hat? <img src='http://www.simon-koelsch.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Aus <img title="Google Wave Developer Sandbox Logo" src="https://wave.google.com/a/wavesandbox.com/static/images/logo_dev_preview.png" alt="Google Wave Developer Sandbox Logo" width="176" height="39" /> wird jedenfalls <img title="Google Wave Beta Logo" src="https://wave.google.com/wave/static/images/logo_preview.png" alt="Google Wave Beta Logo" width="136" height="39" />.</p>
<p>Laut dem <a title="Ankündigung Google Wave Beta Einladungen" href="http://googlewavedev.blogspot.com/">offiziellen Blogposting von Stephanie</a> sind die Einladungen naemlich schon raus.</p>
<blockquote><p>To all sandbox developers, thank you for your patience, feedback, creativity and riding the sometimes bumpy waves with us. You will get accounts on <a href="http://wave.google.com/wave">wave.google.com</a> tomorrow - check your sandbox account for instructions on how to login. You'll also get invitations to bring on people you want to wave with or have try your extensions. Google Wave is more fun with friends or colleagues to collaborate with so use your invitations wisely!</p></blockquote>
<p>Tatsächlich habe ich in meinem Developer Sandbox Account eine Einladung zur Betaphase auf <a title="Google Wave" href="http://wave.google.com">wave.google.com</a> gefunden.</p>
<p>In meinem Firefox 3.5 laeuft das Frontend inzwischen deutlich stabiler als in der Sandbox. Auche meine ich einen positiven Geschwindigkeitsunterschied feststellen zu koennen. Mehr kommt dann in den nächsten Tagen.</p>
<p>Aber testet doch am besten selbst, <del datetime="2009-10-11T17:49:51+00:00">ich habe noch 4 Einladungen übrig</del> <img src='http://www.simon-koelsch.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Hinterlasst dazu einfach einen kurzen Kommentar - First come, first served!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simon-koelsch.de/69-google-wave-geht-in-erste-grosse-beta-phase/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Google Wave &#8211; Ein erster Eindruck</title>
		<link>http://www.simon-koelsch.de/17-google-wave-erste-eindruecke</link>
		<comments>http://www.simon-koelsch.de/17-google-wave-erste-eindruecke#comments</comments>
		<pubDate>Thu, 04 Jun 2009 17:49:33 +0000</pubDate>
		<dc:creator>Simon Koelsch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[wave]]></category>
		<category><![CDATA[xmpp/jabber]]></category>

		<guid isPermaLink="false">http://www.simon-koelsch.de/?p=17</guid>
		<description><![CDATA[Am 28.5. wurde Google Wave das erstemal auf der Developers Konferenz Google IO in San Francisco vorgestellt. Die Praesentation[1] dauerte 1.20h und ist ein schoener erster Einstieg in die Ideen, welche hinter diesem Projekt stecken. Hier zeigt Lars Rasmussen mit seinem Team schoen ueber mehrere Rechner verteilt wie einfach es ist, mit den Google eigenen [...]]]></description>
			<content:encoded><![CDATA[<p>Am 28.5. wurde Google Wave das erstemal auf der Developers Konferenz Google IO in San Francisco vorgestellt.<br />
Die Praesentation[1] dauerte 1.20h und ist ein schoener erster Einstieg in die Ideen, welche hinter diesem Projekt stecken.</p>
<p>Hier zeigt Lars Rasmussen mit seinem Team schoen ueber mehrere Rechner verteilt wie einfach es ist, mit den Google eigenen Wave Applikationen zu Chatten, Teilnehmer zum Chat hinzuzufuegen, private Gespraeche zu fuehren, die History zurueckzuspielen und Dokumente zu tauschen. Bildergalerien werden einfach per "<em>Drag and Drop</em>" in die Anwendung gezogen worauf hin fast sofort eine Vorschau mit Thumbnails entsteht, obwohl die Bilder noch nicht komplett hochgeladen wurden.</p>
<p>Besitze ich nun einen Blog, kann ich diese Bildergalerie direkt aus Google Wave heraus einbinden. Aenderungen, zum Beispiel an einem Bildtitel, werden sofort sichtbar.<br />
Das bedeutet Tastenanschlag fuer Tastenaschlag wird unmittelbar uebertragen. Ich kann meinem Kommunikationspartner also beim Tippen zusehen.</p>
<p>Die in der Einfuehrung gezeigte Webapplikation ist uebrigends mit dem Web Toolkit und HTML 5 gebaut[2].</p>
<p>Doch was ist denn Google Wave eigentlich ohne die bunten Webapplikationen betrachtet?</p>
<h3><span id="more-17"></span>Protokolluebersicht</h3>
<p>Google Wave ist vor allem erstmal ein erweitertes XMPP Protokoll. Damit erben wir sozusagen saemtliche Bestandteile von Jabber, das heisst die XML Basis, Adressierung, TLS, Buddylist-Konzept, etc.</p>
<p>Jetzt gibt es in Google Wave sogenannte Wavelets. Ein Wavelet besteht aus einer eindeutigen ID, einer Liste mit Berechtigungen und einem Satz von XML Dokumenten. Dieses Wavelet liegt dann beim Waveprovider des Erstellers. Moechte man nun dieses Dokument mit anderen Benutzern teilen, fuegt man die Benutzer der Berechtigungsliste hinzu. Die anderen Benutzer koennen dabei zum Beispiel nur Leserechte haben oder ebenfalls auch Schreibrechte.</p>
<p>Am Anfang wird dann der Wave Provider des Benutzers eine Kopie der fuer ihn zugaenglichen XML Dokumente erhalten. Aenderungen an den Dokumenten des Wavelets werden von da an in Echtzeit durch das Google Wave Protokoll an alle anderen Benutzer uebertragen. Durch jede Eingabe, jeden Tastenanschlag, entsteht also eine eigene "Wave"mit den Aenderungen zur vorherigen Dokumentenversion. Durch dieses System entstehen verschiedene Versionen der Ursprungsdokumente. Diese Versionen koennen jederzeit problemlos angefordert werden,  so entsteht ganz automatisch eine beliebig flexible History. Es ist also nicht nur moeglich einen Schritt zurueck zu gehen, sondern man kann ganz gezielt den Urzustand einer bestimmten Stelle des Dokuments herstellen.</p>
<p>Google Wave  ist also erstmal nur ein Protokoll, um Aenderungen an Dokumenten in Echtzeit zu publizieren.</p>
<h3>Anforderungen und Probleme</h3>
<p>Um diese Technik nutzen zu koennen benoetige ich also einen Wave Provider und meine Anwendung, welche die erstellten XML Dokumente in einer brauchbaren Form rendert.</p>
<p>Wave Provider wird es ueber kurz oder lang wohl recht viele geben. Da das Protokoll "Open Source" und recht ueberschaubar ist, wird es wahrscheinlich kein Problem sein, einen eigenen Server zu schreiben. Zur Google eigenen Serversoftware wurde im Vortrag leider nichts gesagt, auch nicht ueber die Systemanforderungen. Anforderungen sind fuer mich jetzt schlecht abzuschaetzen, aber ich denke hier wird es hohe Ansprueche an die Infrastruktur geben. Ich bin selbst kein grosser Freund von XMPP/Jabber, aber die grossen Jabber Server haben immer wieder Probleme durch erhebliche Netzlast die zum Beispiel durch Onlinestatus-Updates der Benutzer generiert werden. Jeder kann sich selbst ausrechnen was fuer Traffic generiert wird, wenn wirklich viele Benutzer, zum Beispiel waehrend einer Konferenz, ein Dokument in Echtzeit bearbeiten. Auf die technischen Probleme von XMPP/Jabber wird im Wiki zu PSYC entsrpechend eingegangen[3].</p>
<p>Ein weiteres Problem sehe ich in der Strukturierung des XMLs. Google zeigt zwar waehrend der Demo schoen, wie einfach es ist gemeinsam Dokumente zu bearbeiten und das jeder sich im Prinzip seinen eigenen Wave Server aufsetzen kann, trotzdem muesste dann auch das Dokumentnformat irgendwo spezifizieren da sich die darin enthaltenen Informationen sonst nicht rendern lassen. An eine offene Spezifikation aus der Community will ich irgendwie noch nicht so recht glauben.</p>
<p>Ob Google Wave also wirklich die Technik fuer eine neue Kommunikationsform wird, haengt vor allem davon ab, ob man sich gemeinsam auf ein entsprechendes Format zur Uebertragung dieser Kommunikation einigen kann. Bei Google Groups zum Thema Wave Protokoll wurde diese Problematik wohl kurz angesprochen[4], inzwischen scheint die Diskussion aber eingeschlafen zu sein.</p>
<p>In der Google Wave Robots API gibt es zwar ein Interface "Blip"[5], welches einen Knoten in einer Kommunikation repraesentiert, genauere Spezifikationen habe ich aber dazu leider noch nicht finden koennen.</p>
<h3>Ausblick</h3>
<p>Sicher das Wave Protokoll ist eine nette Sache. Ob es aber tatsaechlich die Kommunikation im Netz so massgeblich beeinflussen wird, wie ueberall prophezeit bleibt abzuwarten.</p>
<p>Sicher kann man sich aber sein, dass dieses Protokoll auf jedenfall kommen wird. Google hat die ersten Teile der Spezifikationen oeffentlich zugaenglich gemacht und ein kleines API Kit in Java und Python fuer Robots und aehnliche Anwendungsfaelle zur Verfuegung gestellt. Die Teilnehmer der Google IO Konferenz haben alle einen Sandbox Zugang erhalten und koennen vorab die Google Anwendungen und das Protokoll testen.</p>
<p>Mit der Zeit wird man sicher immer mehr Robots als Service zur Verfuegung haben. Anwendungsfaelle wie zum Beispiel eine schicke kontextabhaengige Rechtschreibkontrolle, automatisiertes Bloggen, etc. wurden ja im Vortrag schon demonstriert. Das die Google App Engine Python und Java unterstuetzt ist sicherlich auch kein Zufall und so findet man fuer kleinere Robots hier sogar in Google einen kostenlosen Hoster.</p>
<p>Ich bin gespannt was beim Sandboxtest rauskommt und wie gut das Protokoll tatsaechlich in einer echten Umgebung skaliert. Die Performance Problematik habe ich ja oben kurz angesprochen...</p>
<p>Ausserdem interessiert mich wie Google den Open Source Prozess umsetzt. Traditionell bestehen die Committer und Maintainer (also die Leute welche Aenderungen am Protokoll auch wirklich einspielen koennen) ja aus der Community welche entweder durch eine spezielle Gruppe ausgewaehlt werden oder eben direkt gewaehlt sind. Natuerlich bedeutet Open Source nicht die Verpflichtung diese Aufgaben an eine Community zu geben, aber die "Community Principles"[6] lassen auf etwas in dieser Richtung schliessen. Im Moment sind die Committer selbstverstaendlich noch die Entwickler bei Google[7] selbst.</p>
<h3>Weiterfuehrende Links</h3>
<p>Wer sich mit dem Thema naeher befassen will, dem empfehle ich folgende Links:</p>
<p><a title="YouTube Wave Einfuehrung" href="http://www.youtube.com/watch?v=v_UyVmITiYQ">Einfuehrung von Google Wave auf der Google IO</a></p>
<p><a title="Draft Protocol Spec" href="http://www.waveprotocol.org/draft-protocol-spec">Ein erster Entwurf der Protokollspezifikationen</a></p>
<p><a title="Google Wave Federation Architecture" href="http://www.waveprotocol.org/whitepapers/google-wave-architecture">Uebersicht ueber die Protokollarchitektur</a></p>
<p><a title="Diskussionen ueber Google Wave bei Google Groups" href="http://groups.google.com/group/wave-protocol">Google Groups Diskussionen</a></p>
<p><a title="Google Wave API" href="http://code.google.com/apis/wave/guide.html">Google Wave APIs</a></p>
<h3><strong> </strong>Fussnoten:</h3>
<p>[1] <a title="Google IO Wave Introduction" href="http://www.youtube.com/watch?v=v_UyVmITiYQ">Google Wave Introduction from Google IO - http://www.youtube.com/watch?v=v_UyVmITiYQ</a></p>
<p>[2] <a title="Google Blogpost ueber Wave" href="http://googleblog.blogspot.com/2009/05/went-walkabout-brought-back-google-wave.html">Went walkabout. Brought back Google Wave - http://googleblog.blogspot.com/2009/05/went-walkabout-brought-back-google-wave.html</a></p>
<p>[3] <a title="PSYC Wiki - Jabber" href="http://about.psyc.eu/Jabber">Technical Issues in Jabber - http://about.psyc.eu/Jabber</a></p>
<p>[4] <a title="Wavelets XML Rendering Problematik" href="http://groups.google.com/group/wave-protocol/browse_thread/thread/2d3fb5ce88dc3249">Google Groups: <span id="thread_subject_site">Wavelets with different XML schemas - how to render?</span> - http://groups.google.com/group/wave-protocol/browse_thread/thread/2d3fb5ce88dc3249</a></p>
<p>[5]<a title="Robots API Kit Javadoc" href="http://wave-robot-java-client.googlecode.com/svn/trunk/doc/index.html"> Google Wave Robots API Javadoc - http://wave-robot-java-client.googlecode.com/svn/trunk/doc/index.html</a></p>
<p>[6] <a title="Community Principles" href="http://www.waveprotocol.org/wave-community-principles">Google Wave Community Principles - http://www.waveprotocol.org/wave-community-principles</a></p>
<p>[7] <a title="Comitter des Wave Protokolls" href="http://www.waveprotocol.org/committers">Google Wave Committers - http://www.waveprotocol.org/committers</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simon-koelsch.de/17-google-wave-erste-eindruecke/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

