<?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>Shaun Abram &#187; gtug</title>
	<atom:link href="http://www.shaunabram.com/tag/gtug/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.shaunabram.com</link>
	<description>Java and Technology weblog</description>
	<lastBuildDate>Tue, 27 Jul 2010 23:14:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>HTML5 talk at Google Technology User Group</title>
		<link>http://www.shaunabram.com/gtug-html5-talk/</link>
		<comments>http://www.shaunabram.com/gtug-html5-talk/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 05:38:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Closure]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[gtug]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.shaunabram.com/?p=824</guid>
		<description><![CDATA[Last Wednesday, I attended a talk on HTML5 at the Silicon Valley Google Technology User Group (SV GTUG). HTML5 is a broad term for the next generation of web technologies, including (obviously) the next and long overdue version of HTML, as well as CSS and JavaScript Libraries. The talk was in 3 sections: The first [...]]]></description>
			<content:encoded><![CDATA[<p>Last Wednesday, I attended <a href="http://www.meetup.com/sv-gtug/calendar/13977944/">a talk on HTML5</a> at the Silicon Valley Google Technology User Group (<a href="http://www.meetup.com/sv-gtug/">SV GTUG</a>). HTML5 is a broad term for the next generation of web technologies, including (obviously) the next and long overdue version of HTML, as well as CSS and JavaScript Libraries. The talk was in 3 sections: The first by Seth Ladd (a Developer Advocate for Google) was an introduction to HTML5; The second by Tab Atkins Jr. (a Software Engineer at Google) was on the new HTML5 &lt;video&gt; and &lt;canvas&gt; tags; And the third and final section was by Nathan Naze (also a software engineer at Google) on the Closure JavaScript Library.  </p>
<p><span id="more-824"></span></p>
<h1>Intro to HTML5</h1>
<p>Seth Ladd&#8217;s introduction was the highlight of the night for me. </p>
<h3>New JavaScript capabilities</h3>
<p>He started talking about the new capabilities of JavaScript Libraries:</p>
<h5>Web storage</h5>
<p>aka Local Storage or DOM Storage<br />
A way to store data on the client side (crash safe), making it crash safe and a good way to store, for example, user preferences. It is similar in some way to cookies, but offers more storage (5-10MB)and better programmatic interfaces.<br />
<a href="http://diveintohtml5.org/storage.html">http://diveintohtml5.org/storage.html</a></p>
<h5>Web SQL Database</h5>
<p>Web Storage is useful for storing simple key value pairs but not for more complex relational data. That is where the new Web SQL Database API comes into play. It brings SQL to the client side. Databases can be created on the fly, updated queried like any server side database and can involve asynchronous transactions for a more responsive user experience.<br />
<a href="http://html5doctor.com/introducing-web-sql-databases/">http://html5doctor.com/introducing-web-sql-databases/</a><br />
<a href="http://openbit.co.uk/?p=135">http://openbit.co.uk/?p=135</a></p>
<h5>Application Cache API</h5>
<p>Prior to HTML, most browsers performed some kind of caching, but it could be inconsistent and of limited value (e.g. try refreshing a web page when you have no internet connection). With the offline application caching API, you (the developer) can specify exactly what should be cached by using a manifest file. This can result in a faster browser experience with less load on the server and, of course, means web pages can still be browsed even when you go offline.</p>
<h5>Web Workers</h5>
<p>Web workers are kind of like threads for your HTML apps. Your can now spawn background workers running scripts in parallel to the main page. </p>
<h5>Web Sockets</h5>
<p>Bi directional, full duplex communication channels over a single TCP socket, designed to be implemented in web browsers and web servers.</p>
<h5>Notifications</h5>
<p>How do we deliver a more desktop like experience to users?<br />
Notifications can appear transiently in upper right hand corner. They fade in and fade out rather than being intrusive or modal.</p>
<h5>Drag &#038; drop</h5>
<p>This was one of the most interesting (at least from a visual perspective) aspects of the new JavaScript APIs. Drag &#038; Drop provides a very desktop like experience. Similar functionality could previously be provided by using libraries with JQuery,  but now you no longer need to do crazy workarounds, or browser specific solutions.</p>
<h5>Geo Location</h5>
<p>Imprecise forms of geolocation have been available for a while, for example via best-guess based on your IP address. But the new Geo Location capabilities provide more reliable ways to provide location specific or customized content and functionality.</p>
<h3>New HTML5 Capabilities</h3>
<p>Seth&#8217;s next section was HTML5 itself, i.e. the new capabilities in HTML itself.</p>
<h5>New semantic tags</h5>
<p>He talked about the new semantic tags (such as section/article/header and aside) that can be used as a way to avoid &#8216;div&#8217;itus.</p>
<h5>New link relations</h5>
<p>Several new rel attributes for the &lt;a&gt; and &lt;ink&gt; elements have been introduced for HTML5. </p>
<h5>Micro data</h5>
<p>Is intended to provide a simple way to embed semantic markup into HTML documents, without the complexities of approaches such as RDFa (Resource Description Framework in Attributes).</p>
<h5>ARIA attributes</h5>
<p>Attributes for enhancing the accessibility of RIAs (Rich Internet Applications)</p>
<h5>New form field types</h5>
<p>e.g. can specify valid input ranges</p>
<h5>Audio &#038; Video</h5>
<p>e.g. audio &#038; video tags can interact with JavaScript, Canvas<br />
e.g. Javascript can control video</p>
<h5>Canvas</h5>
<p>A Canvas is a 2Dimensional drawing surface that can be manipulated pixel by pixel.</p>
<h3>New CSS Capabilities</h3>
<p>Finally, Seth talked about the new CSS aspects of HTML5, including the new font support, columns (no JavaScript required!) and Sliders, which can be implemented using just css with no JavaScript required.</p>
<h1>HTML5 &lt;video&gt; and &lt;canvas&gt; Tags</h1>
<p>The 2nd of the 3 presentations was by Tab Atkins Jr., on the new HTML5 &lt;video&gt; and &lt;canvas&gt; Tags. </p>
<h1>Closure JavaScript Library</h1>
<p>The final presenter was Nathan Naze on the <a href="http://code.google.com/closure/library/">Closure JavaScript Library</a>.<br />
Closure is Google&#8217;s &#8216;Standard Lib&#8217; for JavaScript. It is designed for large scale web development and is the Javascript library behind Google web apps such as GMail, Blogger and Google Books.</p>
<p>It was started in 2005 and is made exclusively by developers working on their 20% projects. </p>
<p>My overall impressions of Closure were that it is a complex, powerful and stable JavaScript library but with a steep learning curve best suited to large scale development (e.g. enterprise apps developed by large teams). It seems a useful library, but not something I would consider using for the upcoming <a href="http://www.meetup.com/sv-gtug/pages/GTUG_Campout:_Silicon_Valley/">GTUG HTML5 campout</a> for example, where something a little more lightweight might be more useful.</p>
<p>Links<br />
<a href="http://www.webreference.com/authoring/languages/html/HTML5/">http://www.webreference.com/authoring/languages/html/HTML5/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.shaunabram.com/gtug-html5-talk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GTUG Campout Demos</title>
		<link>http://www.shaunabram.com/gtug-camp-out-demos/</link>
		<comments>http://www.shaunabram.com/gtug-camp-out-demos/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 17:15:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[campout]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[gtug]]></category>
		<category><![CDATA[wave]]></category>

		<guid isPermaLink="false">http://www.shaunabram.com/?p=545</guid>
		<description><![CDATA[Last night saw the end of the Google Technology Campout weekend, with about 25 or 30 groups giving demos of a lot of cool Wave apps. I particularly liked the robot/gadget that analyzed when it was time for a group of wave participants to leave the wave and meet in real life, supplying a list [...]]]></description>
			<content:encoded><![CDATA[<p>Last night saw the end of the Google Technology Campout weekend, with about 25 or 30 groups giving demos of a lot of cool Wave apps. I particularly liked the robot/gadget that analyzed when it was time for a group of wave participants to leave the wave and meet in real life, supplying a list of possible venues to meet based on the participants&#8217; physical location. A vocabulary analyzer from a group of brothers also looked pretty good. I also liked the h3lp application, kind of like an Onstar four your mobile phone, which pushed out alerts to selected contacts in case of an emergency. In the end, the winner was the video sharing team. </p>
<p>The demo for our BlipWiki project (which I blogged about <a href="http://www.shaunabram.com/gtug-campout-followup/">here</a>) unfortunately had technical difficulties so our presentation didn&#8217;t go so well. One of our 2 browsers couldn&#8217;t seem to connect so we didn&#8217;t get to show our Wiki updating in real time in the way we would have liked. Still, I think we had a great application at the end of the weekend, and I certainly learned a lot, met a lot of great people, and got to know Google Wave much better. A great weekend&#8230;</p>
<p>There are photos and videos from the weekend posted <a href="http://sites.google.com/site/svgtugcampout/video-and-photo">here</a> and a write up in the San Jose <a href="http://www.mercurynews.com/ci_13027427">Mercury News</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shaunabram.com/gtug-camp-out-demos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GTUG Campout Follow up</title>
		<link>http://www.shaunabram.com/gtug-campout-followup/</link>
		<comments>http://www.shaunabram.com/gtug-campout-followup/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 10:12:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[campout]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[gtug]]></category>
		<category><![CDATA[wave]]></category>

		<guid isPermaLink="false">http://www.shaunabram.com/?p=510</guid>
		<description><![CDATA[I&#8217;m currently at the Google Technology User Group Camp out weekend down at Google&#8217;s offices in Mountain View. The objective of the weekend is to form a team and develop an application, using Google technologies. The demos are Sunday afternoon. I joined the Blip Wiki team. A Blip is simply a single message within a [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently at the <a href="http://www.meetup.com/sv-gtug/pages/GTUG_Campout:_Silicon_Valley/">Google Technology User Group Camp out</a> weekend down at Google&#8217;s offices in Mountain View. The objective of the weekend is to form a team and develop an application, using Google technologies. The demos are Sunday afternoon.</p>
<p>I joined the <a href="http://tr.im/blipwiki">Blip Wiki</a> team. A Blip is simply a single message within a &#8216;Wave&#8217; conversation. A Wiki, of course, is a software tool that allows users to easily create, link and collaborate on documents. So, our goal with the &#8216;Blip Wiki&#8217; project was to bring the incredible collaboration capabilities of Google Wave (real time updates, autocorrect context sensitive spelling etc) to the easy document setup and linkability of a Wiki.<br />
Although Wave can certainly be used to collaboratively create documents as it is, Wave is inherently conversation focused. We wanted Blip Wiki to be inherently Document focused.</p>
<p>To do this however, we needed to use our own instance of a Wave server i.e. use the <a href="http://code.google.com/p/wave-protocol/">Google Wave Federation Prototype Server</a> rather than the regular Wave server hosted by Google. We also needed to come up with a new client (something like <a href="http://www.tiddlywiki.com/">tiddlywiki</a>) and, most importantly, ensure our client can communicate with the server. Our project won the award for the most ambitious pitch at the start of the weekend!</p>
<h3>Federation Prototype Server and example client</h3>
<p>We got off to a good start by getting the Wave Prototype Server downloaded, building and running (it runs on top of <a href="http://www.igniterealtime.org/projects/openfire/index.jsp">OpenFire</a>, a real time collaboration server that uses XMPP/Jabber). We then got the <a href="http://code.google.com/p/wave-protocol/wiki/ConsoleClient">demo wave client</a> running and talking to our server. We managed this by late Friday evening.</p>
<h3>Client/Server protocol</h3>
<p>Next, we created our own demo client and tried to get it interacting with our Wave server. That is when we started running into problems. First, the client/server protocol has not yet been formalized, and there don&#8217;t seem to be any definite plans to do that yet either. For example, although this <a href="http://www.waveprotocol.org/whitepapers/internal-client-server-protocol">Client Server Protocol White paper</a> describes a protocol and data model, it does not give any details on the format that should be used, or suggestions on how to use it. There is a lengthy discussion in the <a href="http://groups.google.com/group/wave-protocol/browse_thread/thread/a2de2480e4c3beeb/28e7f75f428ad9f3?lnk=raot">Wave Protocol Google Group</a> about this. For example, someone suggests that the client server protocol is just <a href="http://code.google.com/p/protobuf/">protocol buffers</a> &#8216;over the wire&#8217;.  But a protobuf is really just a simple data format, and while I assume &#8216;over the wire&#8217; means RPC, it is all a bit vague.</p>
<h3>Submitting changes</h3>
<p>The client/server protocol used in the example client (a &#8220;toy&#8217; text client) is for &#8220;illustrative purposes only&#8221;, according to this <a href="http://groups.google.com/group/wave-protocol/browse_thread/thread/618ff4e9ef477e80?tvc=2">doc</a>. We couldn&#8217;t seem to find much documentation for it, perhaps because it is not supposed to serve as a standardized example. As a result, we found it difficult to reverse engineer. So, we ended up resorting to using the Client example code to marshal our data to and from the server. The example client code in effect became a sort of interface to the server for us. A client side stub, if you will. (We had this running in the web tier servlet layer).</p>
<h3>Receiving updates</h3>
<p>So, after we had used the Client example code to submit changes (blip updates) to the server, our next hurdle was understanding the data that gets returned. Ideally, we would like a &#8216;delta&#8217; of the data. That is, after the server has done it <a href="http://www.waveprotocol.org/whitepapers/operational-transform">Operational Transformation</a> magic, we would just like the latest and greatest version of the data to display on the client. However, this proved difficult to get from the server. Instead all I could seem to get was a non-delimited complete history of the blip. I admit that this was done using pretty hacky code. I am sure there must be another, better way!</p>
<p>So, we ended up taking a similar approach to the example client, and just displaying the latest submissions.</p>
<h3>Demo ready &#8211; almost&#8230;</h3>
<p>Right now, we have a working client and server with updates made on one user&#8217;s WikiBlip automatically showing up in another users.</p>
<p>It would have been really nice to be able to deploy our local Wave Server to app engine, but apparently this isn&#8217;t possible since the OpenFire jars required aren&#8217;t on the whitelist of allowed jars.<br />
It also would have been nice to experiment with our local Wave server talking to the real Google Wave server (e.g. to have a regular wave client user be able to interact with a blip wiki), but apparently this is not possible due to authentication issues.</p>
<p>So, we chose a very difficult task for the weekend! But, we have a working version ready to demo and it has been a great weekend all in all.</p>
<h3>Thank you&#8217;s</h3>
<p>A big thank you to
<ul>
<li>Sriram and Sreejith, my BlipWiki teammates </li>
<li>Kevin and Van from the GTUG</li>
<li>Stephanie, Brian, Fred and all the all Googlers who made the weekend possible and great! </li>
</ul>
<p>I will post again later with the results of the demo&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shaunabram.com/gtug-campout-followup/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Google Technology User Group Campout</title>
		<link>http://www.shaunabram.com/gtu-campout/</link>
		<comments>http://www.shaunabram.com/gtu-campout/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 20:13:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[googleAppEngine]]></category>
		<category><![CDATA[gtug]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[wave]]></category>

		<guid isPermaLink="false">http://www.shaunabram.com/?p=433</guid>
		<description><![CDATA[I have signed up for the Google Technology User Group (GTUG) Campout. It is a weekend (August 7-9, 2009) of designing and coding an application, as part of a team, using Google technologies. As far as I know, Google &#8216;technologies&#8217; can include things like GWT, Android, OpenSocial etc, but there will be a particular emphasis [...]]]></description>
			<content:encoded><![CDATA[<p>I have signed up for the <a href="http://www.meetup.com/sv-gtug/pages/GTUG_Campout:_Silicon_Valley/">Google Technology User Group (GTUG) Campout</a>. It is a weekend (August 7-9, 2009) of designing and coding an application, as part of a team, using Google technologies. As far as I know, Google &#8216;technologies&#8217; can include things like <a href="http://code.google.com/webtoolkit/">GWT</a>, <a href="http://www.android.com/about/">Android</a>, <a href="http://code.google.com/apis/opensocial/">OpenSocial</a> etc, but there will be a particular emphasis on <a href="http://wave.google.com/">Google Wave</a> (due to members of the Wave team being out and about to help), and hence <a href="http://code.google.com/appengine/">Google App Engine</a>.</p>
<p>I am not too familiar with Wave yet, so this should be a great opportunity to get to know it better, meet a bunch of fellow techs, and hopefully produce something cool by the end of the weekend. Looking forward to it&#8230;</p>
<p>Registration is free, so if you are interested you can sign up at <a href="http://gtug-campout-sv.eventbrite.com/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shaunabram.com/gtu-campout/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
