<?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; html</title>
	<atom:link href="http://www.shaunabram.com/tag/html/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.shaunabram.com</link>
	<description>Java and Technology weblog</description>
	<lastBuildDate>Wed, 18 Jan 2012 00:39:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>OSCON Day4: WebSockets</title>
		<link>http://www.shaunabram.com/oscon-day4-websockets/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oscon-day4-websockets</link>
		<comments>http://www.shaunabram.com/oscon-day4-websockets/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 01:03:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[comet]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[oscon]]></category>
		<category><![CDATA[websockets]]></category>

		<guid isPermaLink="false">http://www.shaunabram.com/?p=882</guid>
		<description><![CDATA[The first talk of the day I attended at Day 4 of OSCON was from Sean Sullivan (Aravo), who gave a talk on &#8220;Programming WebSockets&#8220;. Intro WebSockets is a technology that enables bidirectional communication between web browsers and server side processes. It provides a persistent connection between client &#038; Server, hence enabling &#8216;push&#8217; abilities where [...]]]></description>
			<content:encoded><![CDATA[<p>The first talk of the day I attended at Day 4 of <a href="http://www.oscon.com/oscon2010">OSCON</a> was from Sean Sullivan (<a href="http://www.aravo.com/">Aravo</a>), who  gave a talk on &#8220;<a href="http://www.oscon.com/oscon2010/public/schedule/detail/13805">Programming WebSockets</a>&#8220;.</p>
<h3>Intro</h3>
<p><a href="http://en.wikipedia.org/wiki/WebSockets">WebSockets</a> is a technology that enables bidirectional communication between web browsers and server side processes. It provides a persistent connection between client &#038; Server, hence enabling &#8216;push&#8217; abilities where you can push data/notification to browsers from the client. Other client communication options to compare it with would be <a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29">Ajax</a><br />
and <a href="http://en.wikipedia.org/wiki/Comet_%28programming%29">Comet</a> (basically Ajax with long polling).</p>
<p><span id="more-882"></span> </p>
<h3>Specifications</h3>
<ul>
<li><a href="http://dev.w3.org/html5/websockets/">WebSockets API</a> &#8211; This focuses on the client side programming model.</li>
<li><a href="http://www.whatwg.org/specs/web-socket-protocol/">WebSockets protocol</a> &#8211; Describes the client/server communication in more detail. More complicated and 51 pages long. The WebSockets protocol is still actively being changed.</li>
</ul>
<h3>Browser Support</h3>
<ul>
<li>Google Chrome 4.0.249.0 and higher (v5 has WebSockets enabled by default)</li>
<li>Safari 5.0</li>
<li>FireFox 4.0 beta 1</li>
<li>
IE 9: TBD</li>
</ul>
<p>There was a suggestion that Apple have decided to disable WebSockets in iOS4 but this is unconfirmed and the speaker suspects Apple will support WebSockets in the future.</p>
<h3>Server side support</h3>
<ul>
<li>Apache Server &#8211; not supported yet</li>
<li><a href="http://code.google.com/p/pywebsocket/">Py WebSocket</a> &#8211; designed for use with Apache Server (actually implemented by Google Chromium team.)</li>
<li>There is also a DJango solution: <a href="http://pypi.python.org/pypi/django-websocket/">django-websocket</a></li>
<li><a href="http://blogs.webtide.com/gregw/entry/jetty_websocket_server">Jetty WebSocket Server</a> &#8211; Jetty has supported WebSockets since last September. This seems to be a good option.</li>
</ul>
<p>However, note that there is no standard service side Java API. Each Java container has it&#8217;s own API. Therefore it will likely be difficult to write WebSockets for one app server and do a straight port to another app server.</p>
<h3>Projects</h3>
<p>Other Java Projects supporting WebSockets:</p>
<ul>
<li>GlassFish/Grizzly (see a DZone posting on it <a href="http://www.dzone.com/links/glassfish_web_sockets_sample.html?ref=rs">here</a>)</li>
<li><a href="http://jwebsocket.org/">jWebSocket</a></li>
<li><a href="http://jboss.org/netty">JBoss Netty</a> (see patch <a href="https://jira.jboss.org/browse/NETTY-264">here</a>)</li>
<li><a href="http://www.caucho.com/resin/examples/websocket-java/index.xtp">Caucho Resin</a></li>
</ul>
<p>Sean finished by showing the <a href="http://code.google.com/p/quake2-gwt-port/">Google Quake demo</a> (also reported <a href="http://www.bit-tech.net/news/2010/04/05/google-ports-quake-2-to-html5/1">here</a>).</p>
<p>The conclusion of the talk was on how to gracefully handle browsers that don&#8217;t support WebSockets (e.g. IE8). The main option here seems to be &#8220;<a href="http://code.google.com/p/jquery-graceful-websocket/">The Graceful WebSocket</a>&#8220;. This resorts back to using AJAX long pulling if WebSockets isn&#8217;t supported in the browser.</p>
<h3>My Thoughts</h3>
<p>WebSockets looks like one of the most interesting technologies that fall under the HTML5 umbrella. If it gets wide browser support (e.g. IE9), and perhaps some standardization on the server side, it could really take off and even potentially over take Ajax. Definitely one to watch&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shaunabram.com/oscon-day4-websockets/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTML5 talk at Google Technology User Group</title>
		<link>http://www.shaunabram.com/gtug-html5-talk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=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>
	</channel>
</rss>

