<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUYERHo8fip7ImA9WxJUEkg.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883</id><updated>2009-07-10T12:11:45.476-07:00</updated><title type="text">Google Open Source Blog</title><subtitle type="html">News about Google's Open Source projects and programs.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://google-opensource.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>A Googler</name><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>241</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/GoogleOpenSourceBlog" type="application/atom+xml" /><entry gd:etag="W/&quot;DEMEQ3w5eip7ImA9WxJVGUQ.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-969601881148672518</id><published>2009-07-07T12:38:00.000-07:00</published><updated>2009-07-07T12:53:22.222-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-07T12:53:22.222-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="neatx" /><category scheme="http://www.blogger.com/atom/ns#" term="releases" /><category scheme="http://www.blogger.com/atom/ns#" term="fisl" /><category scheme="http://www.blogger.com/atom/ns#" term="ganeti" /><title>Releasing Neatx, an Open Source NX Server</title><content type="html">&lt;p&gt; We at Google have been looking at remote desktop technologies for quite a while. The good old &lt;a title="X Window system" href="http://en.wikipedia.org/wiki/X_Window_System" id="x66r"&gt;X Window system&lt;/a&gt; can be used over the network, but it has issues with network latency and bandwidth. &lt;a title="Neatx" href="http://code.google.com/p/neatx/" id="biih"&gt;Neatx&lt;/a&gt; remedies some of these issues.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;In 2003, &lt;a href="http://www.nomachine.com/"&gt;NoMachine&lt;/a&gt; released a large portion of the source code of their NX product under the &lt;a title="GPL" href="http://www.gnu.org/copyleft/gpl.html" id="ba:y"&gt;GPL&lt;/a&gt; licence. &lt;a title="NX" href="http://en.wikipedia.org/wiki/NX_technology" id="i2sn"&gt;NX&lt;/a&gt; is a protocol compressing X requests and reducing round-trips. Although mostly Open Source, NoMachine's NX product contains one closed component, the NX server. It's the part connecting clients with the Open Source libraries doing the work. &lt;/p&gt;  &lt;p&gt;A free implementation of an NX server based on NoMachine's libraries named &lt;a href="http://freenx.berlios.de/"&gt;FreeNX&lt;/a&gt; was published in 2004 by &lt;a href="http://www.fabian-franz.de/"&gt;Fabian Franz&lt;/a&gt;. FreeNX's primary target is to replace the one closed component and is written in a mix of several thousand lines of &lt;a href="http://www.gnu.org/software/bash/"&gt;BASH&lt;/a&gt;, &lt;a href="http://expect.nist.gov/"&gt;Expect&lt;/a&gt; and &lt;a title="C" href="http://en.wikipedia.org/wiki/C_%28programming_language%29" id="ic8o"&gt;C&lt;/a&gt;, making FreeNX difficult to maintain. &lt;/p&gt;  &lt;p&gt;Last week, we released the source code of our own proof-of-concept implementation of an NX server, &lt;a href="http://code.google.com/p/neatx/"&gt;Neatx&lt;/a&gt;. Designed from scratch with flexibility and maintainability in mind, Neatx minimizes the number of involved processes and all code is split into several libraries. It is written in &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;, with the exception of very few wrapper scripts in BASH and one program written in C for performance reasons. Neatx was also able to reuse some code from another &lt;a href="http://code.google.com/opensource/"&gt;&lt;/a&gt;Google Open Source project, &lt;a href="http://code.google.com/p/ganeti/"&gt;Ganeti&lt;/a&gt;. The code still has some issues, but we're confident interested developers will be able to fix them. &lt;/p&gt;  &lt;p&gt;Also, Neatx implements features not found in FreeNX, such as the drop-down menu for session control in rootless sessions. At the same time, not all of FreeNX's features are implemented in Neatx.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Michael Hanselmann gave a presentation at &lt;a title="FISL 10" href="http://fisl.softwarelivre.org/10/www/" id="x:wm"&gt;FISL 10&lt;/a&gt; in Porto Alegre, Brazil describing our &lt;a title="implementation and use of virtual workstations" href="http://fisl.softwarelivre.org/10/papers/pub/programacao/289" id="uj4t"&gt;implementation and use of virtual workstations&lt;/a&gt; (&lt;a title="slides" href="http://neatx.googlecode.com/files/herding-virtual-workstations-fisl-2009.pdf" id="upm:"&gt;slides: PDF, 200 KB&lt;/a&gt;).&lt;br /&gt;&lt;/p&gt; &lt;p&gt;More information and the code can be found at the &lt;a href="http://code.google.com/p/neatx/"&gt;Neatx code.google.com project&lt;/a&gt;. You can also send us questions and feedback on the &lt;a href="http://groups.google.com/group/neatx"&gt;Neatx discussion list&lt;/a&gt;. Happy hacking!&lt;br /&gt;&lt;/p&gt; &lt;span style="font-style: italic;" class="byline-author"&gt;By Euan Guttridge, Stephen Shirley and Michael Hanselmann, Systems Administration Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-969601881148672518?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=kHMtvoUHAk8:b6OAuOqHvP0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=kHMtvoUHAk8:b6OAuOqHvP0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=kHMtvoUHAk8:b6OAuOqHvP0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/kHMtvoUHAk8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/969601881148672518/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=969601881148672518" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/969601881148672518?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/969601881148672518?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/kHMtvoUHAk8/releasing-neatx-open-source-nx-servier.html" title="Releasing Neatx, an Open Source NX Server" /><author><name>Leslie Hawthorn</name><uri>http://www.blogger.com/profile/04472868563053273609</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17288473024986932204" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">8</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/07/releasing-neatx-open-source-nx-servier.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQFRH45fyp7ImA9WxJVFUo.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-5273648618874659792</id><published>2009-07-02T16:10:00.000-07:00</published><updated>2009-07-02T16:11:55.027-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-02T16:11:55.027-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="london os jam" /><category scheme="http://www.blogger.com/atom/ns#" term="meetups" /><title>London Open Source Jam 13</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_S5_xMiIF4Sc/Sk0-CoKa20I/AAAAAAAAAEA/uFOIMRjqiPM/s1600-h/DSC_0293.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 266px;" src="http://4.bp.blogspot.com/_S5_xMiIF4Sc/Sk0-CoKa20I/AAAAAAAAAEA/uFOIMRjqiPM/s400/DSC_0293.jpg" alt="" id="BLOGGER_PHOTO_ID_5354003746875169602" border="0" /&gt;&lt;/a&gt;Here in London, we recently hosted &lt;a id="ikzj" href="http://osjam.appspot.com/jam/13" title="London Open Source Jam 13"&gt;London Open Source Jam 13&lt;/a&gt;&lt;gdoc:callout name="gdoccallout" id="htrv" class="writely-callout writely-callout-data google_footnote" callouttype="footnote" calloutmarkerid="ukry" calloutclosed="false" calloutshowfull="true" contenteditable="false"&gt;&lt;span style="font-family:Verdana,sans-serif;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/gdoc:callout&gt;(Our 14th jam, as naturally we count from zero.) &lt;marker style="display: inline-block;" class="writely-footnote-marker" id="ukry"&gt; &lt;/marker&gt;- unlucky for some, but not for us! We threw the floor open to talks of any kind and we had a bumper crop of lightning talks on a diverse range of topics. We learned how to make a wiki in 58 lines of python, why open source developers should care about open standards, some new approaches to database design, and a whole lot more.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_S5_xMiIF4Sc/Sk0-C0KRPGI/AAAAAAAAAEI/zDoYo9GKCX0/s1600-h/DSC_0263.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 266px;" src="http://4.bp.blogspot.com/_S5_xMiIF4Sc/Sk0-C0KRPGI/AAAAAAAAAEI/zDoYo9GKCX0/s400/DSC_0263.jpg" alt="" id="BLOGGER_PHOTO_ID_5354003750095764578" border="0" /&gt;&lt;/a&gt;Kai Hendry talked about &lt;a id="z-9e" href="http://webconverger.org/" title="Webconverge"&gt;Webconverger&lt;/a&gt;, a teeny weeny Linux Live CD designed for web kiosks, and his experience commercialising an open source project by offering services to go with it.&lt;div&gt;&lt;br /&gt;&lt;/div&gt; &lt;div&gt;Zak Cohen &lt;a id="bqc2" href="http://prezi.com/108683/view/" title="shared his experiences"&gt;shared his experiences&lt;/a&gt; using open source libraries in the games world in developing the award-winning game &lt;a id="itfh" href="http://www.youtube.com/watch?v=SS_8VIPGJsY" title="Climbactic"&gt;Climbactic&lt;/a&gt;. It turns out there's some great open source stuff out there, but sometimes paying for support is the only way to get the features you need.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_S5_xMiIF4Sc/Sk0-Dct3dkI/AAAAAAAAAEQ/Gn4I2_9caho/s1600-h/DSC_0287.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 266px;" src="http://4.bp.blogspot.com/_S5_xMiIF4Sc/Sk0-Dct3dkI/AAAAAAAAAEQ/Gn4I2_9caho/s400/DSC_0287.jpg" alt="" id="BLOGGER_PHOTO_ID_5354003760982488642" border="0" /&gt;&lt;/a&gt;&lt;a id="kbum" href="http://fnd.lewcid.org/" title="Frederik Dohr"&gt;Frederik Dohr&lt;/a&gt; and &lt;a id="j91y" href="http://softwareas.com/" title="Mike Mahemoff"&gt;Mike Mahemoff&lt;/a&gt; spoke about &lt;a id="rx4d" href="http://tiddlyweb.com/" title="TiddlyWeb"&gt;TiddlyWeb&lt;/a&gt;, a generic RESTful store for structured data, and &lt;a id="gju6" href="http://scrumptious.tv/" title="Scrumptious"&gt;Scrumptious&lt;/a&gt;, a jQuery-based web app that allows people to annotate and comment on web pages, which uses TiddlyWeb for storage.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Other contributors included:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a id="p::i" href="http://pubbitch.org/blog/" title="Simon Stewart"&gt;Simon Stewart&lt;/a&gt; - Testing Google Wave with &lt;a id="r70t" href="http://code.google.com/p/webdriver" title="WebDriver"&gt;WebDriver&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a id="yq5o" href="http://msmvps.com/blogs/jon_skeet/" title="Jon Skeet"&gt;Jon Skeet&lt;/a&gt; - &lt;a id="zm-v" href="http://msmvps.com/blogs/jon_skeet/archive/2009/06/19/os-jam-at-google-london-c-4-and-the-dlr.aspx" title="The Dynamic Language Runtime and C# 4.0"&gt;The Dynamic Language Runtime and C# 4.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Zaheda Bhorat - &lt;a id="jeg5" href="http://docs.google.com/Present?docid=dc6k56p2_2864864rf5&amp;amp;skipauth=true" title="Open Standards"&gt;Open Standards&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Ambikesh Jayal - &lt;a id="jw4-" href="http://www.iceg.net/2007/books/2/25_324_2.pdf" title="Open source e-Learning middleware"&gt;Open source e-Learning middleware&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a id="wbur" href="http://www.pjwhams.co.uk/research.html" title="Paul Walmsley"&gt;Paul Walmsley&lt;/a&gt; - &lt;a id="l0t4" href="http://www.pjwhams.co.uk/download/Bayesian%20Data%20Modelling%20For%20Smarter%20Applications.pdf" title="Bayesian data modelling"&gt;Bayesian data modelling&lt;/a&gt;&lt;/li&gt;&lt;li&gt;David Sheldon - Where's Java's CPAN?&lt;/li&gt;&lt;li&gt;&lt;a id="l4gf" href="http://rrees.wordpress.com/" title="Robert Rees"&gt;Robert Rees&lt;/a&gt; - &lt;a id="dqp4" href="https://launchpad.net/bzr-wiki" title="Bazaar Wiki"&gt;Bazaar Wiki&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Rob McKinnon - Politics and representation&lt;/li&gt;&lt;li&gt;Ivan De Marino - Caching templated CSS&lt;/li&gt;&lt;li&gt;Matt Godbolt - &lt;a id="v:4e" href="http://docs.google.com/Present?docid=dq57cch_7dwt7gxch&amp;amp;skipauth=true" title="Testing+Mobile"&gt;Testing+Mobile&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a id="qqoh" href="http://roard.com/" title="Nicolas Roard"&gt;Nicolas Roard&lt;/a&gt; - &lt;a id="g4ym" href="http://seaside.st/" title="Seaside"&gt;Seaside&lt;/a&gt; and Smalltalk&lt;/li&gt;&lt;li&gt;Phil Dawes - New approaches to database server design&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt; &lt;div&gt;The OSJam website has &lt;a id="wb7j" href="http://osjam.appspot.com/jam/13/talks" title="more information on the talks"&gt;more information about all the talks&lt;/a&gt;, and the photographs taken at the event are available on &lt;a id="dse5" href="http://picasaweb.google.co.uk/ZBPICS/LondonOpenSourceJamJUNE09#" title="picasaweb"&gt;Picasa Web Albums&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;We'll be planning the next OSJam for a couple of months' time - subscribe to the &lt;a id="huze" href="http://groups.google.com/group/london-open-source-jam" title="Google group"&gt;London Open Source Jam Group&lt;/a&gt; or keep any eye on the &lt;a id="b04z" href="http://osjam.appspot.com/" title="OSJam website"&gt;OSJam website&lt;/a&gt; (&lt;a id="e4th" href="http://osjam.appspot.com/feed" title="Atom feed"&gt;Atom feed&lt;/a&gt;) for more details.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt; &lt;/div&gt;&lt;span style="font-style: italic;"&gt;By Malcolm Rowe and Matt Godbolt, Software Engineering Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-5273648618874659792?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=G5VMJtAp1FI:X49pnmq4mNU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=G5VMJtAp1FI:X49pnmq4mNU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=G5VMJtAp1FI:X49pnmq4mNU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/G5VMJtAp1FI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/5273648618874659792/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=5273648618874659792" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/5273648618874659792?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/5273648618874659792?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/G5VMJtAp1FI/london-open-source-jam-13.html" title="London Open Source Jam 13" /><author><name>Ellen Ko</name><uri>http://www.blogger.com/profile/01259694314067375269</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04397124090885274713" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_S5_xMiIF4Sc/Sk0-CoKa20I/AAAAAAAAAEA/uFOIMRjqiPM/s72-c/DSC_0293.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/06/london-open-source-jam-13.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04CRHw8fCp7ImA9WxJVFEU.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-2152027794589685132</id><published>2009-07-01T15:00:00.000-07:00</published><updated>2009-07-01T15:06:05.274-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-01T15:06:05.274-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="omaha" /><category scheme="http://www.blogger.com/atom/ns#" term="google update" /><title>Google Update, regularly scheduled</title><content type="html">&lt;div&gt;Client software products have unique challenges, with one of the important challenges being keeping the product up to date. Deploying critical security fixes in a timely and effective manner is one key way that we help &lt;a target="_blank" id="ddnv" href="http://www.techzoom.net/publications/silent-updates/" title="keep users secure"&gt;keep users secure&lt;/a&gt;. Another benefit is that cool new features get deployed and adopted quickly. Google Update is the shared updating infrastructure used by &lt;a href="http://chrome.google.com/"&gt;Google Chrome&lt;/a&gt;, &lt;a href="http://earth.google.com/"&gt;Google Earth&lt;/a&gt; and other Google software  that runs on PCs to keep our products up to date on users' computers. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A couple of months ago we &lt;a target="_blank" href="http://google-opensource.blogspot.com/2009/04/google-update-goes-open-source.html" id="cn43" title="released"&gt;released&lt;/a&gt; the Google Update source code to give users and developers transparency into our update mechanism. One month later, we released &lt;a target="_blank" id="qujh" href="http://google-opensource.blogspot.com/2009/05/google-update-releases-update-controls.html" title="update"&gt;Update Controls&lt;/a&gt; that allowed network administrators and advanced users the ability to control the installation and updating of Google products via Google Update. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We hope to help address concerns users have voiced around Google Update running as a continuous process. Until now, Google Update would always run in the background, functioning primarily as a reliable scheduler performing update checks at periodic time intervals. With today's release, Google Update now uses the &lt;a target="_blank" id="v-ed" href="http://en.wikipedia.org/wiki/Task_Scheduler" title="Windows Task Scheduler"&gt;Windows Task Scheduler&lt;/a&gt; to only run at periodic intervals. We have worked hard to ensure that automatic updates work just as reliably, and that our users are just as safe and secure as before. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are a couple of details that we want to mention. First, in a very small number of cases when Google Update determines that the Windows Task Scheduler or Service mechanisms are not working as expected, we have added in fallback mechanisms that cause Google Update to begin running as a continuous process again to ensure users are still receiving updates to their Google software. Second, if you opted in to sending anonymous usage statistics and crash reports to Google for a particular Google application, we will run a process in the background called GoogleCrashHandler.exe. GoogleCrashHandler.exe is responsible for reporting crashes to Google when they occur in your Google product.&lt;/div&gt;&lt;br /&gt;&lt;i style="font-family: Verdana;"&gt;by S. Ganesh, Google Update Team&lt;/i&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-2152027794589685132?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=gprGzs1lke4:X9Oe3VF7ZCQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=gprGzs1lke4:X9Oe3VF7ZCQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=gprGzs1lke4:X9Oe3VF7ZCQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/gprGzs1lke4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/2152027794589685132/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=2152027794589685132" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/2152027794589685132?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/2152027794589685132?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/gprGzs1lke4/google-update-regularly-scheduled.html" title="Google Update, regularly scheduled" /><author><name>Ellen Ko</name><uri>http://www.blogger.com/profile/01259694314067375269</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04397124090885274713" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">7</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/07/google-update-regularly-scheduled.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYBRHk7eSp7ImA9WxJVFEo.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-4260973630903641550</id><published>2009-07-01T10:00:00.000-07:00</published><updated>2009-07-01T12:39:15.701-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-01T12:39:15.701-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SimplexSolver" /><category scheme="http://www.blogger.com/atom/ns#" term="patching" /><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="releases" /><title>Introducing Apache Commons Math SimplexSolver</title><content type="html">&lt;a target="_blank" title="SimplexSolver" href="http://commons.apache.org/math/apidocs/org/apache/commons/math/optimization/linear/SimplexSolver.html" id="kre0"&gt;SimplexSolver&lt;/a&gt; is an easy-to-use, object-oriented method of solving linear programming problems.  We're happy to &lt;span style="background-color: rgb(255, 255, 255);"&gt;announce today&lt;/span&gt; that we've &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;a title="Open Sourced the code" target="_blank" href="http://commons.apache.org/math/xref-test/org/apache/commons/math/optimization/linear/SimplexSolverTest.html" id="kdpo"&gt;Open Sourced the code&lt;/a&gt;&lt;/span&gt; that runs the newly released &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;a title="Google Spreadsheets Solve Feature" target="_blank" href="http://googledocs.blogspot.com/2009/06/solve-feature-lets-you-solve.html" id="f24x"&gt;Google Spreadsheets Solve Feature&lt;/a&gt;&lt;/span&gt; and made it a part of &lt;a target="_blank" title="Apache Commons Math" href="http://commons.apache.org/math/" id="c1g-"&gt;Apache Commons Math&lt;/a&gt; 2.0.&lt;br /&gt;&lt;br /&gt;While numerous other libraries are available that run linear optimization problems, SimplexSolver is the first written in &lt;span style="background-color: rgb(255, 255, 255);"&gt;Java&lt;/span&gt; with a &lt;span style="background-color: rgb(255, 255, 255);"&gt;commercially-friendly license.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let's say we have the following LP:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;MIN -2x + y - 5&lt;br /&gt;S.T.&lt;br /&gt;x + 2y &lt;= 6&lt;br /&gt;3x + 2y &lt;= 12&lt;br /&gt;y &gt;= 0&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;We could solve the problem in Java using the SimplexSolver:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;// describe the optimization problem&lt;br /&gt;LinearObjectiveFunction f = new LinearObjectiveFunction(new double[] { -2, 1 }, -5);&lt;br /&gt;Collection&lt;linearconstraint&gt; constraints = new ArrayList&lt;linearconstraint&gt;();&lt;br /&gt;constraints.add(new LinearConstraint(new double[] { 1, 2 }, Relationship.LEQ, 6));&lt;br /&gt;constraints.add(new LinearConstraint(new double[] { 3, 2 }, Relationship.LEQ, 12));&lt;br /&gt;constraints.add(new LinearConstraint(new double[] { 0, 1 }, Relationship.GEQ, 0));&lt;br /&gt;&lt;br /&gt;// create and run the solver&lt;br /&gt;RealPointValuePair solution = new SimplexSolver().optimize(f, constraints, GoalType.MINIMIZE, false);&lt;br /&gt;&lt;br /&gt;// get the solution&lt;br /&gt;double x = solution.getPoint()[0];&lt;br /&gt;double y = solution.getPoint()[1];&lt;br /&gt;double min = solution.getValue();&lt;br /&gt;&lt;/linearconstraint&gt;&lt;/linearconstraint&gt;&lt;/div&gt;&lt;br /&gt;Looking at the LP problem and Java code side-by-side, we can see how easy it is to describe the problem in the &lt;span style="background-color: rgb(255, 255, 255);"&gt;Apache Commons Math API&lt;/span&gt;.  More examples can be viewed in the &lt;a target="_blank" title="SimplexSolverTest source code" href="http://commons.apache.org/math/xref-test/org/apache/commons/math/optimization/linear/SimplexSolverTest.html" id="mu8i"&gt;SimplexSolverTest source code&lt;/a&gt;.  Apache Commons Math 2.0 is not quite released yet, so for the time being if you want to use the SimplexSolver, you'll need to compile it from source.&lt;br /&gt;&lt;br /&gt;So that's SimplexSolver: a clean, fast method of solving LP problems. We hope you like it as much as we do!  Thanks to &lt;span style="background-color: rgb(255, 255, 255);"&gt;Luc Maisonobe&lt;/span&gt; and the rest of &lt;span style="background-color: rgb(255, 255, 255);"&gt;the Apache Team&lt;/span&gt; who helped integrate the SimplexSolver into the Apache codebase.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;&lt;i&gt;by Ben McCann, Software Engineering Team&lt;/i&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-4260973630903641550?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=Awn37URDzYM:P0vVH_RLWH0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=Awn37URDzYM:P0vVH_RLWH0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=Awn37URDzYM:P0vVH_RLWH0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/Awn37URDzYM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/4260973630903641550/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=4260973630903641550" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/4260973630903641550?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/4260973630903641550?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/Awn37URDzYM/introducing-apache-commons-math.html" title="Introducing Apache Commons Math SimplexSolver" /><author><name>Ellen Ko</name><uri>http://www.blogger.com/profile/01259694314067375269</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04397124090885274713" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/06/introducing-apache-commons-math.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMARHk7eSp7ImA9WxJVE0Q.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-3650588202042879280</id><published>2009-06-30T14:30:00.000-07:00</published><updated>2009-06-30T14:47:25.701-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T14:47:25.701-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sydney" /><category scheme="http://www.blogger.com/atom/ns#" term="hackathons" /><category scheme="http://www.blogger.com/atom/ns#" term="open government" /><title>Australia Goes Open</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_fxRR_bT3LgA/SkqHJzswkoI/AAAAAAAAB9o/My701RgM_tc/s1600-h/hacking.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 267px;" src="http://4.bp.blogspot.com/_fxRR_bT3LgA/SkqHJzswkoI/AAAAAAAAB9o/My701RgM_tc/s400/hacking.jpeg" alt="" id="BLOGGER_PHOTO_ID_5353239709649769090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here in Google's shiny new Sydney office, we recently hosted the first hackfest for &lt;a href="http://openaustralia.org/" target="blank"&gt;OpenAustralia.org&lt;/a&gt;. OpenAustralia takes the data from Australia's record of Federal Parliament speeches, the &lt;a href="http://www.aph.gov.au/hansard/" target="blank"&gt;Australian Hansard&lt;/a&gt;, and makes it easy for people to follow topics they're interested in.&lt;br /&gt;&lt;br /&gt;Back in 2004, Matthew Landauer and Katherine Szuminska found themselves at the launch of the UK site &lt;a href="http://theyworkforyou.com/" target="blank"&gt;TheyWorkForYou.com&lt;/a&gt;, a website designed to allow the average person to quickly and easily search the &lt;a href="http://en.wikipedia.org/wiki/Hansard" target="blank"&gt;United Kingdom's Hansard&lt;/a&gt; - the record of all happenings in Parliament. Their work blossomed and they were inspired to make a similar site happen in Australia, OpenAustralia.org.&lt;br /&gt;&lt;br /&gt;Both websites give ordinary people, who often have no idea who their local representative is, let alone what their representative has been doing on their behalf, the ability to track topics they're interested in and find out exactly what their representatives are doing.&lt;br /&gt;&lt;br /&gt;When Matthew emailed out asking for a location for a place to host a hackfest, we were very happy to lend a helping hand. The hackfest ran on Saturday the 13th of June at the newly opened Google offices in Sydney, Australia and was successful beyond anyone's expectations.&lt;br /&gt;&lt;br /&gt;When originally announced, the event's original 25 attendee slots filled so fast that we ended up increasing the number to 50 (which also filled remarkably fast). More surprisingly, almost everyone turned up and we even had a number of attendees fly in from other Australian states. No one expected this level of enthusiasm from the community, and we were pleased to share in everyone's excitement.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_fxRR_bT3LgA/SkqHSLB9feI/AAAAAAAAB9w/V8fpJpDC2go/s1600-h/hacking2.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 267px;" src="http://2.bp.blogspot.com/_fxRR_bT3LgA/SkqHSLB9feI/AAAAAAAAB9w/V8fpJpDC2go/s400/hacking2.jpeg" alt="" id="BLOGGER_PHOTO_ID_5353239853351665122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some &lt;a href="http://groups.google.com/group/openaustralia-dev/browse_thread/thread/6a0561dddea74ee4#" b=""&gt;cool outcomes&lt;/a&gt; include a tool for crowd sourcing transcription of the "register of member's interests", an API and datasource for mapping street addresses to representatives, a "FixMyStreet" iPhone App and numerous bugs on the site fixed. More information on these and the ongoing efforts of this community can be found on the &lt;a href="http://groups.google.com/group/openaustralia-dev/browse_thread/thread/6a0561dddea74ee4#" b=""&gt;Open Australia Development list&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fxRR_bT3LgA/SkqHa3OZDUI/AAAAAAAAB94/U8lyt6C8ryk/s1600-h/ddu.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 266px;" src="http://1.bp.blogspot.com/_fxRR_bT3LgA/SkqHa3OZDUI/AAAAAAAAB94/U8lyt6C8ryk/s400/ddu.jpeg" alt="" id="BLOGGER_PHOTO_ID_5353240002653916482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Matthew was also gracious enough to give a tech talk for Googlers about some of the many challenges faced by creating such a site, e.g. dealing with Crown Copyright, problems with getting a clean source of data, and problems getting the data fixed when it's clearly in error. Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/H34LqdqXMY8&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/H34LqdqXMY8&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="340" width="560"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Tim Ansell, Technical Solutions Engineering Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-3650588202042879280?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=h0zsqvH_Uu8:QDfBhICzpnU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=h0zsqvH_Uu8:QDfBhICzpnU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=h0zsqvH_Uu8:QDfBhICzpnU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/h0zsqvH_Uu8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/3650588202042879280/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=3650588202042879280" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/3650588202042879280?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/3650588202042879280?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/h0zsqvH_Uu8/australia-goes-open.html" title="Australia Goes Open" /><author><name>Leslie Hawthorn</name><uri>http://www.blogger.com/profile/04472868563053273609</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17288473024986932204" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_fxRR_bT3LgA/SkqHJzswkoI/AAAAAAAAB9o/My701RgM_tc/s72-c/hacking.jpeg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/06/australia-goes-open.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08NRHs-fCp7ImA9WxJWGEQ.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-8645552509512514234</id><published>2009-06-24T18:03:00.000-07:00</published><updated>2009-06-24T18:04:55.554-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-24T18:04:55.554-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linuxtag" /><title>Guten LinuxTag!</title><content type="html">&lt;a title="The Open Source Team" target="_blank" href="http://code.google.com/opensource/" id="nd8q"&gt;The Open Source Team's&lt;/a&gt; &lt;a title="Cat Allman" target="_blank" href="http://www.topicalrothko.blogspot.com/" id="ndn-"&gt;Cat Allman&lt;/a&gt; will be in &lt;a title="Berlin, Germany" target="_blank" href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=berlin,+germany&amp;amp;ie=UTF8&amp;amp;ll=52.533767,13.41156&amp;amp;spn=0.427707,1.299133&amp;amp;z=10&amp;amp;iwloc=addr" id="tsc:"&gt;Berlin, Germany&lt;/a&gt; this week to present at &lt;a title="LinuxTag 2009" target="_blank" href="http://www.linuxtag.org/2009/" id="c5u3"&gt;LinuxTag 2009&lt;/a&gt;.  Cat's talk, &lt;a title="Getting Started in Open Source: An Overview for Newbies" target="_blank" href="http://www.linuxtag.org/2009/en/program/freies-vortragsprogramm/all-events/details.html?talkid=589" id="a2xw"&gt;Getting Started in Open Source: An Overview for Newbies&lt;/a&gt;, will take place on Friday, June 26th at 4 PM local time.  This will be Cat's &lt;a title="second time presenting" target="_blank" href="http://google-opensource.blogspot.com/2008/05/heading-to-linuxtag-2008.html" id="o37o"&gt;second time presenting&lt;/a&gt; at LinuxTag - in 2008 she gave a talk about &lt;a title="Google Summer of Code™" target="_blank" href="http://code.google.com/soc/" id="mauf"&gt;Google Summer of Code™&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;This year LinuxTag expects over 10,000 visitors from around the world- If you are there make sure to attend Cat's talk!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Ellen Ko, Open Source Team&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-8645552509512514234?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=_PYZV9gaOPA:CEhCI5fvk-E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=_PYZV9gaOPA:CEhCI5fvk-E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=_PYZV9gaOPA:CEhCI5fvk-E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/_PYZV9gaOPA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/8645552509512514234/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=8645552509512514234" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/8645552509512514234?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/8645552509512514234?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/_PYZV9gaOPA/guten-linuxtag.html" title="Guten LinuxTag!" /><author><name>Ellen Ko</name><uri>http://www.blogger.com/profile/01259694314067375269</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04397124090885274713" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/06/guten-linuxtag.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08HRnY5cSp7ImA9WxJWGE0.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-3475296575235286247</id><published>2009-06-23T18:06:00.000-07:00</published><updated>2009-06-23T18:10:37.829-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-23T18:10:37.829-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="gsoc2009" /><category scheme="http://www.blogger.com/atom/ns#" term="gsoc" /><category scheme="http://www.blogger.com/atom/ns#" term="meetups" /><category scheme="http://www.blogger.com/atom/ns#" term="fisl" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Chris DiBona and Leslie Hawthorn at FISL</title><content type="html">If you are in South America this week and you have been wanting to find out more about Google's Open Source activities or the future of Open Source and its communities, &lt;a title="Chris DiBona" target="_blank" href="http://egofood.blogspot.com/" id="yvj_"&gt;Chris DiBona&lt;/a&gt; and &lt;a title="Leslie Hawthorn" target="_blank" href="http://www.hawthornlandings.org/" id="qc9."&gt;Leslie Hawthorn&lt;/a&gt; from the &lt;a title="Google Open Source Programs Office" target="_blank" href="http://code.google.com/opensource/" id="v.be"&gt;Google Open Source Programs Office&lt;/a&gt; will be speaking at the tenth annual &lt;a title="Fórum Internacional Software Livre" target="_blank" href="http://fisl.softwarelivre.org/10/www/en" id="p88o"&gt;Fórum Internacional Software Livre&lt;/a&gt; (FISL) in  Porto Alegre, Brazil.&lt;br /&gt;&lt;br /&gt;Leslie will be &lt;a title="presenting tomorrow" target="_blank" href="http://fisl.softwarelivre.org/10/papers/pub/programacao/632" id="dorf"&gt;presenting tomorrow&lt;/a&gt;, June 24th, 1 PM local time about &lt;a title="Google Summer of Code™" target="_blank" href="http://code.google.com/soc/" id="ahxn"&gt;Google Summer of Code™&lt;/a&gt;, and she'll be staying afterward to &lt;a target="_blank" title="hang out with any Google Summer of Code participants" href="http://groups.google.com/group/google-soc-meetups/browse_thread/thread/9f9f888585562f48#" id="e8fb"&gt;meetup with Google Summer of Code participants&lt;/a&gt; who are in the area.  On June 26th at 2 PM, Leslie will be presenting "&lt;a title="Community Management Basics" target="_blank" href="http://fisl.softwarelivre.org/10/papers/pub/programacao/633" id="n:v:"&gt;Community Management Basics&lt;/a&gt;" and how to make FLOSS projects and communities welcoming for new contributors.&lt;br /&gt;&lt;br /&gt;Chris' first talk, "&lt;a title="Open Source: Then, Now and Tomorrow" target="_blank" href="http://fisl.softwarelivre.org/10/papers/pub/programacao/720" id="mbk4"&gt;Open Source: Then, Now and Tomorrow&lt;/a&gt;" takes place on June 26th at 3 PM local time.  In addition to the past, present, and future of FOSS, Chris will discuss how Google uses and releases Open Source software.  In Chris's second talk, "&lt;a title="An Introduction to Android" target="_blank" href="http://fisl.softwarelivre.org/10/papers/pub/programacao/728" id="y47e"&gt;An Introduction to Android&lt;/a&gt;" at 5 PM on the 26th, he will explain the ideas and structure behind the Open Source mobile operating system Android.&lt;br /&gt;&lt;br /&gt;All four talks are great opportunities to learn more about Google and Open Source.  Come ask questions and get to know members of the Open Source Team!&lt;br /&gt;&lt;br /&gt;&lt;i&gt;by Ellen Ko, Open Source Team&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-3475296575235286247?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=ynWtM1cYB8Y:dMbeK6eD_EI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=ynWtM1cYB8Y:dMbeK6eD_EI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=ynWtM1cYB8Y:dMbeK6eD_EI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/ynWtM1cYB8Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/3475296575235286247/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=3475296575235286247" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/3475296575235286247?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/3475296575235286247?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/ynWtM1cYB8Y/chris-dibona-and-leslie-hawthorn-at.html" title="Chris DiBona and Leslie Hawthorn at FISL" /><author><name>Ellen Ko</name><uri>http://www.blogger.com/profile/01259694314067375269</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04397124090885274713" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/06/chris-dibona-and-leslie-hawthorn-at.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMFQHk-cCp7ImA9WxJXFUs.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-8471153433917053388</id><published>2009-06-09T08:59:00.000-07:00</published><updated>2009-06-09T09:03:31.758-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-09T09:03:31.758-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="southeast linuxfest" /><title>Sojourning at SouthEast LinuxFest</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_fxRR_bT3LgA/Si6HWaZZeiI/AAAAAAAAB9E/urzOgQv8DYU/s1600-h/self_banner_300x250_01.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 250px;" src="http://3.bp.blogspot.com/_fxRR_bT3LgA/Si6HWaZZeiI/AAAAAAAAB9E/urzOgQv8DYU/s400/self_banner_300x250_01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5345358626848078370" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fresh on the heels from speaking at &lt;a href="http://code.google.com/events/developerday/2009/" target=blank&gt;Google Developer Day&lt;/a&gt; in &lt;a href="http://code.google.com/intl/zh-CN/events/developerday/2009/home.html" target=blank&gt;Beijing&lt;/a&gt; and &lt;a href="http://code.google.com/intl/ja/events/developerday/2009/home.html" target=blank&gt;Tokyo&lt;/a&gt;, &lt;a href="http://egofood.blogspot.com/" target=blank&gt;Chris DiBona&lt;/a&gt; will be heading to the &lt;a href="http://southeastlinuxfest.org/" target=blank&gt;SouthEast LinuxFest&lt;/a&gt;. This new conference promises to provide a welcoming environment for novice users of Open Source software, with a little something for everyone with talks on data warehousing, education and philanthropy.  Should you find yourself in or around &lt;a href="http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=clemson,+south+carolina&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=58.206849,128.232422&amp;amp;ie=UTF8&amp;amp;ll=34.686793,-82.814083&amp;amp;spn=0.059919,0.125227&amp;amp;z=14" target=blank&gt;Clemson, South Carolina&lt;/a&gt; this Saturday, June 13th, please stop by to hear Chris discuss "&lt;a href="http://southeastlinuxfest.org/?q=node/88" target=blank&gt;Open Source: Then, Now and Tomorrow&lt;/a&gt;." As much as the Open Source Team enjoys connecting with Open Source developers and users worldwide, Chris is particularly looking forward attending this grassroots, community driven event and sharing his thoughts in this intimate setting.&lt;br /&gt;&lt;br /&gt;We hope to see you there and, if you're attending, please do come by to say hello!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Leslie Hawthorn, Open Source Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-8471153433917053388?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=dAsQyFeWmE4:RyP9kybYSp0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=dAsQyFeWmE4:RyP9kybYSp0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=dAsQyFeWmE4:RyP9kybYSp0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/dAsQyFeWmE4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/8471153433917053388/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=8471153433917053388" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/8471153433917053388?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/8471153433917053388?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/dAsQyFeWmE4/sojourning-at-southeast-linuxfest.html" title="Sojourning at SouthEast LinuxFest" /><author><name>Leslie Hawthorn</name><uri>http://www.blogger.com/profile/04472868563053273609</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17288473024986932204" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_fxRR_bT3LgA/Si6HWaZZeiI/AAAAAAAAB9E/urzOgQv8DYU/s72-c/self_banner_300x250_01.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/06/sojourning-at-southeast-linuxfest.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUARH05cCp7ImA9WxJXFEQ.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-2518417265273702298</id><published>2009-06-08T12:52:00.000-07:00</published><updated>2009-06-08T14:24:05.328-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-08T14:24:05.328-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASE" /><category scheme="http://www.blogger.com/atom/ns#" term="releases" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Introducing Android Scripting Environment</title><content type="html">The &lt;a title="Android Scripting Environment" href="http://code.google.com/p/android-scripting" id="b2en"&gt;Android Scripting Environment&lt;/a&gt; (ASE) brings scripting languages to Android by allowing you to edit and execute scripts and interactive interpreters directly on the Android device. These scripts have access to many of the APIs available to full-fledged Android applications, but with a greatly simplified interface that makes it easy to:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Handle intents&lt;/li&gt;&lt;li&gt;Start activities&lt;/li&gt;&lt;li&gt;Make phone calls&lt;/li&gt;&lt;li&gt;Send text messages&lt;/li&gt;&lt;li&gt;Scan &lt;a title="bar codes" href="http://code.google.com/p/zxing" id="axt3"&gt;bar codes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Poll location and sensor data&lt;/li&gt;&lt;li&gt;Use &lt;a title="text-to-speech" href="http://eyes-free.googlecode.com/" id="ecb3"&gt;text-to-speech&lt;/a&gt; (TTS)&lt;/li&gt;&lt;li&gt;And &lt;a title="more" href="http://code.google.com/p/android-scripting/wiki" id="dejh"&gt;more&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Scripts can be run interactively in a terminal, started as a long running service, or started via &lt;a title="Locale" href="http://www.androidlocale.com/" id="ugi9"&gt;Locale&lt;/a&gt;. Python, Lua and BeanShell are currently supported, and we're planning to add Ruby and JavaScript support, as well.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_fxRR_bT3LgA/Si1v2SdVBrI/AAAAAAAAB8c/_xQixSzsCrI/s1600-h/scripteditor.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: left; cursor: pointer; width: 400px; height: 267px;" src="http://2.bp.blogspot.com/_fxRR_bT3LgA/Si1v2SdVBrI/AAAAAAAAB8c/_xQixSzsCrI/s400/scripteditor.png" alt="" id="BLOGGER_PHOTO_ID_5345051311217116850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;Scripts can be edited directly on the phone.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fxRR_bT3LgA/Si1wU-RGDhI/AAAAAAAAB8k/2w4KZiPS1JY/s1600-h/scriptmanager.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 400px;" src="http://1.bp.blogspot.com/_fxRR_bT3LgA/Si1wU-RGDhI/AAAAAAAAB8k/2w4KZiPS1JY/s400/scriptmanager.png" alt="" id="BLOGGER_PHOTO_ID_5345051838373039634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;The script manager displays available scripts.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_fxRR_bT3LgA/Si1wtaCRlgI/AAAAAAAAB8s/0p82J6PABXI/s1600-h/scriptmanagercontextmenu.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 400px;" src="http://2.bp.blogspot.com/_fxRR_bT3LgA/Si1wtaCRlgI/AAAAAAAAB8s/0p82J6PABXI/s400/scriptmanagercontextmenu.png" alt="" id="BLOGGER_PHOTO_ID_5345052258143933954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Scripts can be launched interactively or as background services.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_fxRR_bT3LgA/Si1xLB5fgGI/AAAAAAAAB80/mmDmbSH-QVY/s1600-h/pythonterminal.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 400px;" src="http://3.bp.blogspot.com/_fxRR_bT3LgA/Si1xLB5fgGI/AAAAAAAAB80/mmDmbSH-QVY/s400/pythonterminal.png" alt="" id="BLOGGER_PHOTO_ID_5345052767060721762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;Interactive terminals can be started for interpreters that support it.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fxRR_bT3LgA/Si1xaq5rHSI/AAAAAAAAB88/hGEQof4K7_k/s1600-h/runningscript.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 400px;" src="http://1.bp.blogspot.com/_fxRR_bT3LgA/Si1xaq5rHSI/AAAAAAAAB88/hGEQof4K7_k/s400/runningscript.png" alt="" id="BLOGGER_PHOTO_ID_5345053035765374242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;Scripts can use the Android UI to get user input.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;You may ask, why write scripts instead of real Android applications? Admittedly, Android's development environment makes life pretty easy, but you're tied to a computer to do your work. ASE lets you develop on the device itself using high-level scripting languages to try out your idea now, in the situation where you need it, quickly. Have a look at the following example Lua script to see for yourself:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;--Placing the phone face down will disable the ringer. Turning it face up again will enable&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;--the ringer.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;require "android"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;android.startSensing()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;android.sleep(1)  --Give the sensors a moment to come online.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;silent = false&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;while true do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;  s = android.readSensors()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;  facedown = s.result and s.result.zforce and s.result.zforce &gt; 9&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;  if facedown and not silent then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    android.vibrate()  --A short vibration to indicate we're in silent mode.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    android.setRingerSilent(true)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    silent = true&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;  elseif not facedown and silent then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    android.setRingerSilent(false)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    silent = false&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;  end&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;  android.sleep(1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here's another useful script, this time in Python.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;"""Say chat messages aloud as they are received."""&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;import android, xmpp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;_SERVER = 'talk.google.com', 5223&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;class SayChat(object):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;  def __init__(self):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    self.droid = android.Android()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    username = self.droid.getInput('Username')['result']&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    password = self.droid.getInput('Password')['result']&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    jid = xmpp.protocol.JID(username)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    self.client = xmpp.Client(jid.getDomain(), debug=[])&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    self.client.connect(server=_SERVER)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    self.client.RegisterHandler('message', self.message_cb)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    if not self.client:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;      print 'Connection failed!'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;      return&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    auth = self.client.auth(jid.getNode(), password, 'botty')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    if not auth:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;      print 'Authentication failed!'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;      return&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    self.client.sendInitPresence()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;  def message_cb(self, session, message):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    jid = xmpp.protocol.JID(message.getFrom())&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    username = jid.getNode()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    text = message.getBody()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    self.droid.speak('%s says %s' % (username, text))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;  def run(self):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    try:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;      while True:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;        self.client.Process(1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;    except KeyboardInterrupt:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;      pass&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;saychat = SayChat()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;saychat.run()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;These scripts demonstrates several of the available APIs available for both &lt;a title="Lua" href="http://code.google.com/p/android-scripting/wiki/LuaAndroidAPI" id="urfy"&gt;Lua&lt;/a&gt; and &lt;a title="Python" href="http://code.google.com/p/android-scripting/wiki/PythonAndroidAPI" id="vymu"&gt;Python&lt;/a&gt;. It is intended to be run as a service and silences the ringer when the phone is placed face down. For some scripting languages, like BeanShell, it's possible to access Android's Java API directly. To simplify things, ASE provides the AndroidFacade class. For other languages, like Python and Lua, the API is made available via &lt;a title="JSON RPC" href="http://json-rpc.org/" id="tv7r"&gt;JSON RPC&lt;/a&gt; calls to a proxy. Naturally this means that only the part of the API which has been wrapped by the AndroidFacade and AndroidProxy are available to cross-compiled interpreters like Python and Lua. Thankfully, both AndroidFacade and AndroidProxy are simple to extend.&lt;br /&gt;&lt;br /&gt;If you'd like to give ASE a try, it's not yet published to the Market, but will be soon. You can download the latest APK from our &lt;a title="project page" href="http://code.google.com/p/android-scripting" id="c581"&gt;project page&lt;/a&gt;. Some sample scripts and documentation are also included there to help you get started. We always love to hear what you think, so please send us feedback or ask your questions in the &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;a title="ASE discussion group" href="http://groups.google.com/group/android-scripting" id="g2hb"&gt;ASE discussion group&lt;/a&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Damon Kohler, Software Engineering Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-2518417265273702298?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=un-P6NVCPhA:SWoA9t2qX2c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=un-P6NVCPhA:SWoA9t2qX2c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=un-P6NVCPhA:SWoA9t2qX2c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/un-P6NVCPhA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/2518417265273702298/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=2518417265273702298" title="33 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/2518417265273702298?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/2518417265273702298?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/un-P6NVCPhA/introducing-android-scripting.html" title="Introducing Android Scripting Environment" /><author><name>Leslie Hawthorn</name><uri>http://www.blogger.com/profile/04472868563053273609</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17288473024986932204" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_fxRR_bT3LgA/Si1v2SdVBrI/AAAAAAAAB8c/_xQixSzsCrI/s72-c/scripteditor.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">33</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/06/introducing-android-scripting.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYMRns8fyp7ImA9WxJWF00.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-5997780816994156006</id><published>2009-06-05T16:27:00.000-07:00</published><updated>2009-06-22T13:23:07.577-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-22T13:23:07.577-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Open Source Bridge" /><title>Getting Started in Free and Open Source</title><content type="html">The &lt;a target="_blank" title="Open Source Programs Office's" href="http://code.google.com/opensource/" id="qj4q"&gt;Open Source Programs Office's&lt;/a&gt; &lt;a target="_blank" title="Cat Allman" href="http://topicalrothko.blogspot.com/" id="l1fz"&gt;Cat Allman&lt;/a&gt; and &lt;a target="_blank" title="Leslie Hawthorn" href="http://www.hawthornlandings.org/" id="xz0o"&gt;Leslie Hawthorn&lt;/a&gt; will be presenting at a brand new conference, &lt;a title="Open Source Bridge" target="_blank" href="http://opensourcebridge.org/" id="dn6d"&gt;Open Source Bridge&lt;/a&gt;, in two weeks.  Their talk, "&lt;a title="Getting started in Free and Open Source" target="_blank" href="http://opensourcebridge.org/sessions/46" id="njv4"&gt;Getting started in Free and Open Source&lt;/a&gt;" will be held on Wednesday, June 17 from 11:20am – 12:05 PM.  Leslie and Cat will share their wisdom with Open Source newbies and those looking to attract or retain them.  Their talk will cover the basics of:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Why you might want to get involved&lt;/li&gt;&lt;li&gt; What you can get out of participating&lt;/li&gt;&lt;li&gt; What you can contribute besides code&lt;br /&gt;&lt;/li&gt;&lt;li&gt; How to choose a project&lt;/li&gt;&lt;li&gt; How to get started&lt;/li&gt;&lt;li&gt; Etiquette of lists and other communication&lt;/li&gt;&lt;li&gt; Dos and don’ts of joining a community&lt;/li&gt;&lt;/ul&gt;&lt;a title="The conference" target="_blank" href="http://opensourcebridge.org/about/" id="ukkt"&gt;The conference&lt;/a&gt; is held in Portland, Oregon and runs from June 17th to the 19th.  It features over 80 talks in &lt;a title="five tracks" target="_blank" href="http://opensourcebridge.org/2009/03/five-tracks-to-rule-them-all/" id="gs2c"&gt;five tracks&lt;/a&gt; of Open Source topics and a 24-hour hacker lounge for code sprints.  One of the most exciting aspects of Open Source Bridge is that it is entirely volunteer-run, and because this conference brings together developers from all different types of Open Source projects, the structure is designed to provide developers an opportunity to learn from people they might not connect with at other events.&lt;br /&gt;&lt;br /&gt;We hope to &lt;a title="see you there" target="_blank" href="http://opensourcebridge.org/attend/" id="uxhq"&gt;see you there&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Ellen Ko, Open Source Team&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-5997780816994156006?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=OYwnWn7dTbk:eYagKBe9RxU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=OYwnWn7dTbk:eYagKBe9RxU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=OYwnWn7dTbk:eYagKBe9RxU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/OYwnWn7dTbk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/5997780816994156006/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=5997780816994156006" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/5997780816994156006?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/5997780816994156006?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/OYwnWn7dTbk/getting-started-in-free-and-open-source.html" title="Getting Started in Free and Open Source" /><author><name>Ellen Ko</name><uri>http://www.blogger.com/profile/01259694314067375269</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04397124090885274713" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/06/getting-started-in-free-and-open-source.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ACRH84fip7ImA9WxJQFkw.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-4258064107060585964</id><published>2009-05-29T10:46:00.000-07:00</published><updated>2009-05-29T10:56:05.136-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-29T10:56:05.136-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="freenet" /><title>Improving Freenet's Performance</title><content type="html">The &lt;a href="http://freenetproject.org/whatis.html" target=blank&gt;Free Network project&lt;/a&gt; is the community that creates and maintains &lt;a href="http://freenetproject.org/" target=blank&gt;Freenet&lt;/a&gt;, free software that allows you publish and obtain information on the Internet without fear of censorship by means of a decentralized, anonymous network. Since &lt;a href="http://wiki.freenetproject.org/FreenetZeroPointSeven" target=blank&gt;version 0.7&lt;/a&gt; , the software has had built-in support for downloading and uploading large files. These are long-term downloads, which persist between restarts of the node. This support has improved performance and usability, but it has also meant that when lots of downloads are going on at the same time, Freenet uses a lot of memory, takes a long time to complete the startup process, and crashes if you queue too many downloads. By storing the current progress of uploads and downloads in &lt;a href="http://db4o.com/" target="_blank"&gt;db4o.com&lt;/a&gt;'s open source object database (= a file on disk) rather than in memory, Freenet's memory usage can be greatly reduced, the end-user doesn't need to worry about running out of memory, we can have an unlimited number of uploads and tens of gigs of downloads, and so on.&lt;br /&gt;&lt;br /&gt;To begin at the beginning, Freenet divides all files into 32KB blocks (called CHKs), which are each fetched and decrypted separately. Then we have a layer of redundancy, and various complexities surrounding putting files together and putting in-Freenet websites together, which makes up the client layer. Before the db4o branch, uploads were persistent, but downloads were restarted from scratch after every restart, pulling huge numbers of blocks from the datastore (on-disk cache). Worse, memory usage was rather large if you had any significant number of downloads on the queue. &lt;br /&gt;&lt;br /&gt;The db4o project puts the client layer (persistent downloads and uploads) into a database (db4o). I had initially hoped that this would be a relatively quick project, which shows how much I knew about databases then! We decided to use db4o in a fairly low-level way, specifically to minimize memory usage. We had heard from testimonials that some embedded applications had done this, but unfortunately this is not really the way that db4o is usually used, which caused some complications. Overall, the project took one developer most of a year, the final diff was over 46K lines of code covering 320 files, and went well beyond its original remit, solving many long-standing problems in the process. New architecture was required for optimal performance, including using Bloom filters to identify blocks we are interested in, a queue of database jobs, major refactoring in many areas of the client layer, a new system for handling temporary files, etc.&lt;br /&gt;&lt;br /&gt;The effort was well worth it. Our client layer overall has vastly improved and Freenet now&lt;br /&gt;&lt;ul&gt;&lt;li&gt;starts up quickly&lt;/li&gt;&lt;br /&gt;&lt;li&gt;resumes work on downloads and uploads almost instantly on startup&lt;/li&gt;&lt;br /&gt;&lt;li&gt;can have an almost unlimited number of downloads and uploads&lt;/li&gt;&lt;br /&gt;&lt;li&gt;doesn't need the user to worry about or configure the maximum memory usage&lt;/li&gt;&lt;br /&gt;&lt;li&gt;doesn't go into limbo with constant 100% CPU usage desperately trying to scrounge a few more bytes&lt;/li&gt;&lt;br /&gt;&lt;li&gt;can insert DVD-sized files and huge websites (or git/hg repositories) on relatively low end systems&lt;/li&gt;&lt;br /&gt;&lt;li&gt;uses fewer file handles&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;This project would not have happened without support from Google's &lt;a href="http://code.google.com/opensource/" target=blank&gt;Open Source Programs Office&lt;/a&gt;. It will be one of the most important changes in &lt;a href="http://wiki.freenetproject.org/FreenetZeroPointEight" target=blank&gt;version 0.8&lt;/a&gt;  of Freenet when it is released later this year, and current work includes Bloom filter sharing, a new feature that should greatly improve performance both for popular and rare content. Google is also funding that project, watch this space!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Matthew Toseland, Freenet Core Developer&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-4258064107060585964?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=TpFxP8IAovc:McMw36sOzwY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=TpFxP8IAovc:McMw36sOzwY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=TpFxP8IAovc:McMw36sOzwY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/TpFxP8IAovc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/4258064107060585964/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=4258064107060585964" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/4258064107060585964?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/4258064107060585964?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/TpFxP8IAovc/improving-freenets-performance.html" title="Improving Freenet's Performance" /><author><name>Leslie Hawthorn</name><uri>http://www.blogger.com/profile/04472868563053273609</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17288473024986932204" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/05/improving-freenets-performance.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4DQ3s_fCp7ImA9WxJQFUk.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-511788046020977748</id><published>2009-05-28T14:33:00.000-07:00</published><updated>2009-05-28T14:59:32.544-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-28T14:59:32.544-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="io2009" /><category scheme="http://www.blogger.com/atom/ns#" term="wspl" /><category scheme="http://www.blogger.com/atom/ns#" term="html5" /><title>Web Storage Portability Layer: A Common API for Web Storage</title><content type="html">As discussed in &lt;a href="http://google-code-updates.blogspot.com/2009/05/gmail-for-mobile-html5-series-common.html" target="blank"&gt;our Google Code Blog post on HTML5 for Gmail Mobile&lt;/a&gt;, Google's new version of Gmail for iPhone and Android-powered devices uses the Web Storage Portability Layer (WSPL) to let the same database code run on browsers that provide either Gears or HTML5 structured storage facilities.  The WSPL consists of a collection of classes that provide asynchronous transactional access to both Gears and HTML5 databases and can be found on &lt;a href="http://code.google.com/p/webstorageportabilitylayer" target="blank"&gt;Project Hosting on Google Code&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There are five basic classes:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:'Courier New';"&gt;google.wspl.Statement&lt;/span&gt; - A parametrizable SQL statement class&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:'Courier New';"&gt;google.wspl.Transaction&lt;/span&gt; - Used to execute one or more Statements with ACID properties&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:'Courier New';"&gt;google.wspl.ResultSet&lt;/span&gt; - Arrays of JavaScript hash objects, where the hash key is the table column name&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:'Courier New';"&gt;google.wspl.Database&lt;/span&gt; - A connection to the backing database, also provides transaction support&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:'Courier New';"&gt;google.wspl.DatabaseFactory&lt;/span&gt; - Creates the appropriate HTML5 or Gears database implementation&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also included in the distribution is a simple note-taking application with a persistent database cache built using the WSPL library. This application (along with Gmail mobile for iPhone and Android-powered devices) is an example of the &lt;i&gt;cache pattern&lt;/i&gt; for building offline web applications. In the cache pattern, we insert a browser-local cache into the web application to break the synchronous link between user actions in the browser and server-generated responses. Instead, as shown below, we have two data flows.  First, entirely local to the device, contents flow from the cache to the UI while changes made by the user update the cache. In the second flow, the cache asynchronously forwards user changes to the web server and receives updates in response.&lt;br /&gt;&lt;br /&gt;By using this architectural pattern, a web application can made tolerant of a flaky (or even absent) network connection!&lt;br /&gt;&lt;br /&gt;We'll be available at the &lt;a href="http://code.google.com/events/io/sandbox.html" target="blank"&gt;Developer Sandbox &lt;/a&gt;at &lt;a href="http://code.google.com/io" target="blank"&gt;Google I/O&lt;/a&gt; to discuss the cache pattern, HTML5 development and the WSPL library. Check it out! If you have questions or comments, please visit &lt;a id="yo3c" href="http://groups.google.com/group/webstorageportabilitylayer" target="blank"&gt;our discussion list&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Robert Kroeger, Software Engineer - Mobile Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-511788046020977748?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=ZE-I0mGkQzg:XBwXvK-qGVg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=ZE-I0mGkQzg:XBwXvK-qGVg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=ZE-I0mGkQzg:XBwXvK-qGVg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/ZE-I0mGkQzg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/511788046020977748/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=511788046020977748" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/511788046020977748?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/511788046020977748?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/ZE-I0mGkQzg/web-storage-portability-layer-common.html" title="Web Storage Portability Layer: A Common API for Web Storage" /><author><name>Leslie Hawthorn</name><uri>http://www.blogger.com/profile/04472868563053273609</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17288473024986932204" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/05/web-storage-portability-layer-common.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YHRHc7cCp7ImA9WxJQFU4.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-585402757482757315</id><published>2009-05-28T12:27:00.000-07:00</published><updated>2009-05-28T12:32:15.908-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-28T12:32:15.908-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="io2009" /><category scheme="http://www.blogger.com/atom/ns#" term="mercurial" /><category scheme="http://www.blogger.com/atom/ns#" term="project hosting" /><title>Support for Mercurial Now Available for All Projects Hosted on Google Code</title><content type="html">You may recall that we recently asked for help from some early testers of &lt;a href="http://google-code-updates.blogspot.com/2009/04/mercurial-support-for-project-hosting.html" target="_blank"&gt;Mercurial on Project Hosting on Google Code&lt;/a&gt;. As of today, all of our &lt;a href="http://code.google.com/hosting/" target="_blank"&gt;Project Hosting&lt;/a&gt; users can make use of this added functionality. For full details, check out the &lt;a href="http://google-code-updates.blogspot.com/2009/05/mercurial-now-available-to-all-open.html"&gt;Google Code Blog&lt;/a&gt;. Better still, if you happen to be joining us at &lt;a href="http://code.google.com/io" target="_blank"&gt;Google I/O&lt;/a&gt;, stop by the &lt;a href="http://code.google.com/events/io/sessions/MercurialBigTable.html" target="_blank"&gt;Mercurial on Big Table Tech Talk&lt;/a&gt; to learn more.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Leslie Hawthorn, Open Source Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-585402757482757315?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=K3mPbiNL5ec:7NYhpocwYNQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=K3mPbiNL5ec:7NYhpocwYNQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=K3mPbiNL5ec:7NYhpocwYNQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/K3mPbiNL5ec" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/585402757482757315/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=585402757482757315" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/585402757482757315?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/585402757482757315?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/K3mPbiNL5ec/support-for-mercurial-now-available-for.html" title="Support for Mercurial Now Available for All Projects Hosted on Google Code" /><author><name>Leslie Hawthorn</name><uri>http://www.blogger.com/profile/04472868563053273609</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17288473024986932204" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/05/support-for-mercurial-now-available-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIMSXoyfCp7ImA9WxJRGUg.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-8793340997565986209</id><published>2009-05-21T19:09:00.000-07:00</published><updated>2009-05-21T19:16:28.494-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-21T19:16:28.494-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="gsoc2009" /><category scheme="http://www.blogger.com/atom/ns#" term="gsoc" /><category scheme="http://www.blogger.com/atom/ns#" term="meetups" /><category scheme="http://www.blogger.com/atom/ns#" term="beijing lug" /><title>2009 Google Summer of Code™ Celebration at Beijing LUG</title><content type="html">&lt;div style="text-align: center;" id="a2ba"&gt;&lt;img src="https://docs.google.com/a/google.com/File?id=ddf3hj6j_7f9f3bwfw_b" height="240" width="320" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:78%;"&gt;Newly elected BLUG President, Pockey Lam, handing over &lt;i&gt;Google Summer of Code&lt;/i&gt; stickers&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The &lt;a href="http://www.beijinglug.org/" target="_blank"&gt;Beijing Linux User Group&lt;/a&gt; (BLUG) invited all the &lt;i&gt;&lt;a href="http://code.google.com/soc/" target="_blank" id="wasy"&gt;Google Summer of Code&lt;/a&gt;&lt;/i&gt; students and mentors in China to a special BBQ lamb skewers night night (we call these "&lt;a href="http://en.wikipedia.org/wiki/Chuanr" target="_blank" id="g5co"&gt;chuan'r&lt;/a&gt; nights" actually) on Saturday, May 9th.  The BLUG has been supporting this fantastic initiative from Google as much as possible since 2007 by organizing conferences in universities and spreading the word online in Chinese websites.&lt;br /&gt;&lt;br /&gt;This year we're very proud to have 2 mentors and at least 5 student members of our group selected for &lt;i id="du5f"&gt;Google Summer of Code&lt;/i&gt;. Both mentor proposals are centered around building better Linux support for &lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;a title="MIPS" target="_blank" href="http://en.wikipedia.org/wiki/MIPS_architecture" id="v0yq"&gt;MIPS&lt;/a&gt;&lt;/span&gt; and the Chinese &lt;a href="http://en.wikipedia.org/wiki/Loongson" target="_blank" id="xvch"&gt;Loongson&lt;/a&gt; CPU. We also managed to get the two main hardware manufacturers (&lt;a href="http://www.emtecelectronics.com/" target="_blank" id="mvvu"&gt;Dexxon/Emtec&lt;/a&gt; and &lt;a href="http://www.lemote.com/english/index.html" target="_blank" id="hrf-"&gt;Lemote&lt;/a&gt;) to donate free MIPS laptops to the selected students.&lt;br /&gt;&lt;br /&gt;And to add icing on the cake, Google sent schwag for our little party, Lemote a few free T-shirts and the Beijing LUG distributed its 2009 edition of their own T-shirts for free as well! Definitely something not to be missed if you were in &lt;a href="http://en.wikipedia.org/wiki/Beijing" target="_blank" id="oti9"&gt;town (Beijing, China)&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Celebration announcement details &lt;a href="http://www.beijinglug.org/en/index.php?option=com_content&amp;amp;task=view&amp;amp;id=387&amp;amp;Itemid=14" target="_blank" id="z9y."&gt;here&lt;/a&gt;, location details &lt;a href="http://www.beijinglug.org/en/index.php?option=com_openwiki&amp;amp;Itemid=60&amp;amp;id=groups:chuanr:lao_cheng_yi_guo" target="_blank" id="jbys"&gt;here&lt;/a&gt;, and full picture gallery &lt;a href="http://www.beijinglug.org/en/index.php?option=com_rsgallery2&amp;amp;Itemid=45&amp;amp;catid=60" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Frederic Muller, Beijing LUG Vice President&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-8793340997565986209?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=PQzn-UX240M:GKGycKqg9ro:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=PQzn-UX240M:GKGycKqg9ro:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=PQzn-UX240M:GKGycKqg9ro:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/PQzn-UX240M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/8793340997565986209/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=8793340997565986209" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/8793340997565986209?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/8793340997565986209?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/PQzn-UX240M/2009-google-summer-of-code-celebration.html" title="2009 Google Summer of Code™ Celebration at Beijing LUG" /><author><name>Ellen Ko</name><uri>http://www.blogger.com/profile/01259694314067375269</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04397124090885274713" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/05/2009-google-summer-of-code-celebration.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEINQnkyfip7ImA9WxJRF0g.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-5994048968874480604</id><published>2009-05-19T10:54:00.000-07:00</published><updated>2009-05-19T11:09:53.796-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-19T11:09:53.796-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="unicode" /><category scheme="http://www.blogger.com/atom/ns#" term="ICU" /><category scheme="http://www.blogger.com/atom/ns#" term="CLDR" /><title>Happy Birthday, ICU!</title><content type="html">The &lt;a href="http://site.icu-project.org/"&gt;ICU project&lt;/a&gt; is celebrating 10 years of being open source this month.&lt;br /&gt;&lt;br /&gt;"ICU" in this case stands for International Components for Unicode - not to be confused with &lt;a href="http://acronyms.thefreedictionary.com/ICU"&gt;Intensive Care Unit or International Communist Union&lt;/a&gt;... It is the premier software internationalization library, appearing in everything from your Google Android phone or your iPod all the way up to IBM mainframes. It provides the &lt;a href="http://googleblog.blogspot.com/2008/05/moving-to-unicode-51.html"&gt;Unicode support&lt;/a&gt; that all of these programs need for handling the languages of the world, from Arabic to Chinese to Vietnamese.&lt;br /&gt;&lt;br /&gt;ICU originated back in an Apple/IBM/HP joint venture. That code was morphed into the core of Java internationalization for JDK 1.1.4 - a large portion of this code still exists in the &lt;a href="http://java.sun.com/javase/6/docs/api/java/text/package-summary.html"&gt;java.text&lt;/a&gt; and &lt;a href="http://java.sun.com/javase/6/docs/api/java/util/package-summary.html"&gt;java.util&lt;/a&gt; packages. At that time, it included pretty much just sorting, locale/message support, and formatting for dates, numbers and so on. (If you're interested in early history, see an older &lt;a href="http://www.icu-project.org/docs/papers/history_of_java_internationalization.html"&gt;paper by Laura Werner&lt;/a&gt; - now at Google). The libraries were refined over time and ported back to C and C++; now there are also wrappers for other languages, such as PHP.&lt;br /&gt;&lt;br /&gt;ICU's data comes from the Unicode Consortium's open source project for locale data - CLDR - and typically releases each new version right after CLDR does. CLDR 1.7 was just released  &lt;a href="http://www.unicode.org/press/pr-cldr1.7.html"&gt;Friday, May 8&lt;/a&gt;, with ICU 4.2 following on the very same day.&lt;br /&gt;&lt;br /&gt;While ICU was around before Google, more recently Google has played a strong role in the development of ICU, and in providing major contributions to the Unicode &lt;a href="http://cldr.unicode.org/"&gt;CLDR&lt;/a&gt; project. ICU forms the foundation of our &lt;a href="http://googleblog.blogspot.com/2008/07/hitting-40-languages.html"&gt;40 language initiative&lt;/a&gt;, so we look forward to many successful future birthdays!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Mark Davis, Internationalization team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-5994048968874480604?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=hw343aZbH8s:o3ZOEbAtJbQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=hw343aZbH8s:o3ZOEbAtJbQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=hw343aZbH8s:o3ZOEbAtJbQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/hw343aZbH8s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/5994048968874480604/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=5994048968874480604" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/5994048968874480604?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/5994048968874480604?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/hw343aZbH8s/happy-birthday-icu.html" title="Happy Birthday, ICU!" /><author><name>Cat Allman</name><uri>http://www.blogger.com/profile/03328856688494884083</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="09375904300230216223" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/05/happy-birthday-icu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEANR347fip7ImA9WxJRF0g.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-8158158249291964971</id><published>2009-05-18T16:42:00.000-07:00</published><updated>2009-05-19T11:13:16.006-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-19T11:13:16.006-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Linux kernel" /><category scheme="http://www.blogger.com/atom/ns#" term="LSF" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux Foundation" /><title>Report from Day 2 of the Linux Storage and Filesystem Workshop, April 6-7th, 2009</title><content type="html">&lt;span style="font-style: italic;"&gt;(The sequel to &lt;/span&gt;&lt;a style="font-style: italic;" href="http://google-opensource.blogspot.com/2009/04/report-from-day-1-of-linux-storage-and.html"&gt;Report from Day 1&lt;/a&gt;&lt;span style="font-style: italic;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The first official discussion of the day was around optimizing Solid State Disk performance, led by &lt;a title="Matthew &amp;quot;willy&amp;quot; Wilcox" target="_blank" href="http://www.wil.cx/matthew/" id="vb2j"&gt;Matthew "willy" Wilcox&lt;/a&gt; (Intel).  SSD behaviors and "modeling" that behavior are still of interest. File systems developers need to understand how the performance costs have shifted compared to regular disks. Matthew noted the Intel SSDs are adaptive and export a 512 byte sector illusion.  Ric Wheeler (RedHat) also raised concerns about current use of fallocate() and how adding use of "TRIM" to fallocate() would affect "Thin Client Provisioning." Consensus was any form of over subscription of HW would cause problems and TRIM command might exacerbate those issues.  But TRIM would have measurable positive impact for most users (of SSDs).  &lt;a target="_blank" title="Ted Ts'o" href="http://thunk.org/tytso/" id="qd5q"&gt;Ted Ts'o&lt;/a&gt; expected ext4 to already properly issue TRIM at the right times.&lt;br /&gt;&lt;br /&gt;Moving on, "4KB sector" hard disk support is mostly done and &lt;a title="Martin Petersen" target="_blank" href="http://martinpetersen.sys-con.com/" id="ws2s"&gt;Martin Petersen&lt;/a&gt; did much of the recent work to prepare linux kernel for it.  Performance issues are still lurking however when using FAT partition tables or anything else that might affect the alignment offset of a write. The&lt;br /&gt;root cause of this disaster is the drives export a 512 byte logical sector (despite implementing 4k physical sectors). They export 512 byte sectors in order to boot from older BIOS and function with "legacy" operating systems.  But in order to get good performance with FAT partition tables, HW vendors have "offset" the logical-&gt;physical block mapping so logical sector 63 (size of "track" in ancient BIOSs) is "well aligned" physcially. "Badly aligned" means a 4k write will require reading and writing parts of two 4K physical sectors and thus "burning" an extra rotation (must read data first and then write it out on the next rotation). Well, anyone using full disk or some other partition table (e.g. GPT) will learn the joys of unnecessary complexity when they demonstrate and try to explain two levels of disk performance for the same application binary. The only way to avoid this mess is if HDD vendors provide the means to directly use native 4k blocks.&lt;br /&gt;&lt;br /&gt;The second issue with 512 byte block emulation is error handling. The problem here is performance will be horrid for sequential small writes to a single 4k block unless the intermediate writes are cached anyway and then written in one go when the last sector is written....if the 8th write fails, the OS will think the previous 7 sectors are fine and just rewrite the last sector again. Previous 7x512 bytes are gone. With Write Cache Enabled (WCE) turned on for most SATA drives, this problem already exists. The only thing new this speculation exposes is disk vendors have strong incentives to violate the intent of "WCE off" despite dire consequences.&lt;br /&gt;&lt;br /&gt;The last presentation I want to mention was "Virtual Machine I/O". The challenge was how Block IO schedulers need to manage bandwidth in various topologies typically seen in Virtualized IO. Google's &lt;a title="Naumann Rafique" target="_blank" href="http://www.informatik.uni-trier.de/%7Eley/db/indices/a-tree/r/Rafique:Nauman.html" id="j_g-"&gt;Naumann Rafique&lt;/a&gt; was one of the presenters with a focus on "Proportional IO" implementation. &lt;a target="_blank" title="Hannes Reincke" href="http://en.opensuse.org/User:Hreinecke" id="nt_o"&gt;Hannes Reincke&lt;/a&gt; summarized the core problems nicely: IO scheduling is only needed when there is contention at the device level- keep the mechanism to enforce scheduling at that level. Different policies should be implemented at higher levels as needed.&lt;br /&gt;&lt;br /&gt;Later on, when talking with the group in a "hacking session", I backed up my assertion that this is not a new problem by showing &lt;a title="my copy of OLS 2004 schedule where IO prioritization was mentioned" target="_blank" href="http://www.kernel.org/doc/ols/2004/ols2004v1-pages-51-62.pdf" id="uiiu"&gt;my copy of OLS 2004 schedule where IO prioritization was mentioned&lt;/a&gt; by &lt;a title="Jens Axboe" target="_blank" href="http://en.wikipedia.org/wiki/Jens_Axboe" id="zx.:"&gt;Jens Axboe&lt;/a&gt; in his talk and in a BOF led by &lt;a target="_blank" title="Werner Almsberger" href="http://www.almesberger.net/cv/projects.html" id="luom"&gt;Werner Almsberger&lt;/a&gt; (&lt;a href="http://abiss.sourceforge.net/" target="_blank" id="xvl54"&gt;http://abiss.sourceforge.net/&lt;/a&gt;).  My advice was to solve and push the simplest piece first before confusing everyone with grand designs and huge patches.&lt;br /&gt;&lt;div id=":2xe" class="ii gt"&gt;&lt;br /&gt;And I'll close with my kudos to Linux Foundation staff to pulling this off smoothly! Really. It was nice to see a small event get handled so professionally and courteously.&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Grant Grundler, Platforms Kernel Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-8158158249291964971?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=D_xv1W2sdsQ:mzZP9fKDgEY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=D_xv1W2sdsQ:mzZP9fKDgEY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=D_xv1W2sdsQ:mzZP9fKDgEY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/D_xv1W2sdsQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/8158158249291964971/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=8158158249291964971" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/8158158249291964971?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/8158158249291964971?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/D_xv1W2sdsQ/report-from-day-2-of-linux-storage-and.html" title="Report from Day 2 of the Linux Storage and Filesystem Workshop, April 6-7th, 2009" /><author><name>Ellen Ko</name><uri>http://www.blogger.com/profile/01259694314067375269</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04397124090885274713" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/05/report-from-day-2-of-linux-storage-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UNQ3c-eip7ImA9WxJRFE0.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-4846054663626591651</id><published>2009-05-15T10:35:00.000-07:00</published><updated>2009-05-15T10:41:32.952-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-15T10:41:32.952-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="zurich os jam" /><title>Zurich Open Source Jam 7</title><content type="html">We did it again, and we are getting better at it. Last Thursday, May 7th we hosted the 7th Open Source Jam in Zurich. It was probably our largest event, with close to 50 participants!&lt;br /&gt;&lt;br /&gt;It was a bit more than 3 hours of event, and 10 projects were presented: &lt;a href="http://evms.sourceforge.net/" target="_blank"&gt;EVMS&lt;/a&gt; (Enterprise Volume Management Software) which promises to be a new model of volume management for Linux, My paint - very interesting software to create images from scratch, &lt;a href="http://www.rtems.com/" target="_blank"&gt;RTEMS&lt;/a&gt; - a real time operating system for multiprocessor systems, Solid State Drives, Monitoring Systems, &lt;a title="Gurtle" href="http://code.google.com/p/gurtle/" id="f2bq"&gt;Gurtle&lt;/a&gt; - an issue tracker integration for &lt;a title="TortoiseSVN" href="http://tortoisesvn.tigris.org/" id="rv_o"&gt;TortoiseSVN&lt;/a&gt;, &lt;a title="RDKit" href="http://rdkit.org/" id="jlzj"&gt;RDKit&lt;/a&gt; - &lt;a title="cheminformatics" href="http://en.wikipedia.org/wiki/Cheminformatics" id="cv6n"&gt;cheminformatics&lt;/a&gt; and machine learning software, a very nice overview on the development model and features of &lt;a title="Drupal" href="http://drupal.org/" id="g92u"&gt;Drupal&lt;/a&gt;, SQL for Google App Engine, and &lt;a title="OSGi" href="http://www.osgi.org/" id="lizy"&gt;OSGi&lt;/a&gt;, the dynamic module system for Java.&lt;br /&gt;&lt;br /&gt;We would like to thank you all again for participating and sharing the interesting projects you are working on, and also invite you to subscribe to our &lt;a href="http://groups.google.com/group/open-source-jam-zurich" target="_blank"&gt;Open Source Jam Zurich Group&lt;/a&gt; to stay informed about other events in Zurich.&lt;br /&gt;&lt;br /&gt;Unfortunately, our official photographer was out of town, but we promise pictures for the next Open Source Jam!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Fernanda G. Weiden, Systems Administration Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-4846054663626591651?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=yrbT37EhQus:dJ8MVVhjIhU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=yrbT37EhQus:dJ8MVVhjIhU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=yrbT37EhQus:dJ8MVVhjIhU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/yrbT37EhQus" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/4846054663626591651/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=4846054663626591651" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/4846054663626591651?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/4846054663626591651?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/yrbT37EhQus/zurich-open-source-jam-7.html" title="Zurich Open Source Jam 7" /><author><name>Ellen Ko</name><uri>http://www.blogger.com/profile/01259694314067375269</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04397124090885274713" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/05/zurich-open-source-jam-7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UBQ3Y5fCp7ImA9WxJRGEk.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-1079449337707271269</id><published>2009-05-14T15:00:00.000-07:00</published><updated>2009-05-20T12:54:12.824-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-20T12:54:12.824-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="omaha" /><category scheme="http://www.blogger.com/atom/ns#" term="google update" /><title>Google Update Releases Update Controls</title><content type="html">&lt;div id="2r_sa" style="direction: ltr;"&gt; Whenever we build out new products and features at Google, we try to ensure that we provide users with two key components: transparency and control. About a month ago we &lt;a target="_blank" href="http://google-opensource.blogspot.com/2009/04/google-update-goes-open-source.html" id="cn43" title="released"&gt;released&lt;/a&gt; the Google Update source code to give users and developers transparency into Google's update mechanism. Today we hope to fulfill this second component by providing advanced users the ability to control the installation and updating of Google products via Google Update. Thanks to automatic updates, most users should already have this version of Google Update. &lt;/div&gt; &lt;div id="3r_sa"&gt;&lt;br /&gt;&lt;/div&gt; &lt;div id="wumw"&gt;  The update policy is controlled via &lt;a title="Windows Group Policy" target="_blank" href="http://en.wikipedia.org/wiki/Group_Policy" id="yowo"&gt;Windows Group Policy&lt;/a&gt;, allowing network administrators to apply policies to all computers on their domain and power users with administrative privileges to set the policy on individual machines. We provide an Administrative Template file that allows selection of policies using standard graphical user interfaces such as Group Policy Editor. &lt;/div&gt; &lt;div id="0wumw"&gt;&lt;br /&gt;&lt;/div&gt; &lt;div id="eb4o"&gt; The new Group Policy support allows an administrator to specify which Google applications can be installed and how they should be updated. You can select from one of three update options: automatically, manually, or not at all. Administrators can also control how frequently Google Update checks for software updates. &lt;/div&gt; &lt;div id="0eb4o"&gt;&lt;br /&gt;&lt;/div&gt; &lt;div id="iu-d"&gt;  Mac users have similar controls over Google Software Update. Mac users are able to change how often update checks occur or disable update checks all together. See the &lt;a target="_blank" href="http://www.google.com/support/installer/bin/answer.py?hl=en&amp;amp;answer=147176&amp;amp;ctx=go" id="e31e" title="Managing updates in Google Update Engine"&gt;Managing updates in Google Software Update&lt;/a&gt; Help Center article for details. &lt;/div&gt; &lt;div id="0iu-d"&gt;&lt;br /&gt;&lt;/div&gt; &lt;div id="dr90"&gt; We work hard to keep our users safe and secure when using our applications, and we believe that making sure users have the latest software available using automatic updates is a key component of that. However, we realize that there are situations where automatic updates may not be desirable so we wanted to provide the ability to control updates when necessary.  &lt;/div&gt; &lt;div id="pyus"&gt;&lt;br /&gt;&lt;/div&gt; &lt;div id="1pyus"&gt;  To get started, take a look at the &lt;a target="_blank" href="http://www.google.com/support/installer/go/enterprise" id="j__g" title="Google Update for Administrator documentation and ADM template"&gt;Google Update for Enterprise documentation&lt;/a&gt;. &lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt; By David Dorwin, Google Update Team&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-1079449337707271269?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=877Ce-cOx_8:2CSaX7WrCuU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=877Ce-cOx_8:2CSaX7WrCuU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=877Ce-cOx_8:2CSaX7WrCuU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/877Ce-cOx_8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/1079449337707271269/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=1079449337707271269" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/1079449337707271269?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/1079449337707271269?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/877Ce-cOx_8/google-update-releases-update-controls.html" title="Google Update Releases Update Controls" /><author><name>Ellen Ko</name><uri>http://www.blogger.com/profile/01259694314067375269</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04397124090885274713" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">8</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/05/google-update-releases-update-controls.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMFSXgycSp7ImA9WxJREUo.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-2534253611278194727</id><published>2009-05-12T16:18:00.000-07:00</published><updated>2009-05-12T16:20:18.699-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-12T16:20:18.699-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="gsoc2009" /><category scheme="http://www.blogger.com/atom/ns#" term="gsoc" /><category scheme="http://www.blogger.com/atom/ns#" term="meetups" /><title>Spreading the Summer Love in Chicago</title><content type="html">There are &lt;a target="_blank" title="many ways" href="http://google-opensource.blogspot.com/2009/03/spreading-summer-love.html" id="rs9_"&gt;many ways&lt;/a&gt; &lt;a title="to get the word out" href="http://google-opensource.blogspot.com/2009/03/spreading-summer-love-is-easy.html" id="i4g2"&gt;to get the word out&lt;/a&gt; about &lt;a target="_blank" title="Google Summer of Code™" href="http://code.google.com/soc/" id="ft:e"&gt;Google Summer of Code™&lt;/a&gt;, and one of the most fun ways is the &lt;i id="f1qz"&gt;Google Summer of Code&lt;/i&gt; meetups that participants organize around the world.  After a successful &lt;a target="_blank" title="meetup last year for University of Chicago students" href="http://google-opensource.blogspot.com/2008/06/university-of-chicago-meets-google.html" id="j60b"&gt;meetup last year for University of Chicago students&lt;/a&gt;, the University's &lt;a target="_blank" href="http://acm.cs.uchicago.edu/" id="l-7k" title="ACM student chapter"&gt;ACM student chapter&lt;/a&gt; decided to organize another meetup this year, open to other universities in the Chicago area and again hosted by Google. Thus, on April 30th, around 70 students from &lt;a title="ACM student chapter" target="_blank" href="http://www.uchicago.edu/" id="k9cz"&gt;The University of Chicago&lt;/a&gt;, &lt;a href="http://www.northwestern.edu/" id="p9ij"&gt;Northwestern University&lt;/a&gt;, &lt;a href="http://www.depaul.edu/" id="a41-"&gt;DePaul University&lt;/a&gt;, the &lt;a href="http://www.iit.edu/" id="d0d."&gt;Illinois Institute of Technology&lt;/a&gt;, and the &lt;a href="http://www.uic.edu/" id="t.cf"&gt;University of Illinois at Chicago&lt;/a&gt; converged upon Google's offices in downtown Chicago, who happily allowed us to use their space, eat their food, and consume their caffeinated beverages.&lt;br /&gt;&lt;br /&gt;Like last year, the event revolved around a series of lightning talks where &lt;i id="b2p:"&gt;Google Summer of Code&lt;/i&gt; students and mentors in Chicago talked about their upcoming work, and Google engineers talked about cool stuff they are involved in. Among the evening's highlights, there was mingling:&lt;br /&gt;&lt;br /&gt;&lt;div id="yqfa" style="text-align: left;"&gt;&lt;img style="width: 500px; height: 333px;" src="https://docs.google.com/a/google.com/File?id=dd5s8qw6_19dzpq43hr_b" id="ym1u" /&gt;&lt;br /&gt;&lt;br /&gt;Whereas last year we were greeted by the &lt;a target="_blank" title="Tower of Hanoi of Chinese Food" href="http://4.bp.blogspot.com/_fxRR_bT3LgA/SEh3aXZ0UTI/AAAAAAAABX0/pMls9mXW0jY/s1600-h/2.JPG" id="pz8-"&gt;Tower of Hanoi of Chinese Food&lt;/a&gt;, this year we were met by the Mexican Food Buffet of Awesomeness:&lt;br /&gt;&lt;br /&gt;&lt;div id="ytdc" style="text-align: left;"&gt;&lt;img style="width: 375px; height: 500px;" src="https://docs.google.com/a/google.com/File?id=dd5s8qw6_20cgd29z4k_b" id="i0tg" /&gt;&lt;br /&gt;&lt;br /&gt;The talks took place in Google's offices on the 17th floor of a downtown building, with stunning views of the city:&lt;br /&gt;&lt;br /&gt;&lt;div id="vl_s" style="text-align: left;"&gt;&lt;img style="width: 500px; height: 375px;" src="https://docs.google.com/a/google.com/File?id=dd5s8qw6_21dkcwgvc4_b" id="n0as" /&gt;&lt;br /&gt;(That tall black building is the &lt;a target="_blank" title="John Hancock Center" href="http://en.wikipedia.org/wiki/John_Hancock_Center" id="rxt6"&gt;John Hancock Center&lt;/a&gt; )&lt;br /&gt;&lt;br /&gt;&lt;div id="epmt" style="text-align: left;"&gt;&lt;img style="width: 500px; height: 375px;" src="https://docs.google.com/a/google.com/File?id=dd5s8qw6_22j5x3tqfm_b" id="rerk" /&gt;&lt;br /&gt;&lt;br /&gt;Our &lt;i id="hh0."&gt;Google Summer of Code&lt;/i&gt; speakers were (left to right, top to bottom):&lt;br /&gt;&lt;ul id="iy9-"&gt;&lt;li id="t9:8"&gt;Derek Schaefer (DePaul University), who will be working for &lt;a target="_blank" title="MySQL" href="http://socghop.appspot.com/org/home/google/gsoc2009/ccharles" id="c5bd"&gt;MySQL&lt;/a&gt; to &lt;a target="_blank" title="improve the import functionality of phpMyAdmin" href="http://socghop.appspot.com/student_project/show/google/gsoc2009/ccharles/t124022142289" id="mr1p"&gt;improve the import functionality of phpMyAdmin&lt;/a&gt; &lt;/li&gt;&lt;li id="pk4k"&gt;Chelsea Bingiel (University of Chicago), who will be &lt;a target="_blank" title="adding support for the Atom Publishing Protocol" href="http://socghop.appspot.com/student_project/show/google/gsoc2009/plone/t124024242411" id="eq3m"&gt;adding support for the Atom Publishing Protocol&lt;/a&gt; in &lt;a target="_blank" title="Plone" href="http://socghop.appspot.com/org/home/google/gsoc2009/plone" id="w44m"&gt;Plone&lt;/a&gt; .&lt;/li&gt;&lt;li id="r15."&gt;Dev Ghosh (Northwestern University), who will be &lt;a target="_blank" title="adding a new &amp;quot;mosaic mode&amp;quot;" href="http://socghop.appspot.com/student_project/show/google/gsoc2009/hugin/t124022489277" id="lymv"&gt;adding a new "mosaic mode"&lt;/a&gt; for &lt;a target="_blank" title="Hugin/Panotools" href="http://socghop.appspot.com/org/home/google/gsoc2009/hugin" id="mtro"&gt;Hugin/Panotools&lt;/a&gt; .&lt;/li&gt;&lt;li id="cor-"&gt;Dirk Eddelbuettel (R Foundation, mentor), who told us all about the cool &lt;i id="kl1g"&gt;Google Summer of Code&lt;/i&gt; projects the &lt;a target="_blank" title="R Foundation" href="http://socghop.appspot.com/org/home/google/gsoc2009/rf" id="umwe"&gt;R Foundation&lt;/a&gt; has mentored and will mentor this year.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div id="ktg:" style="text-align: left;"&gt;&lt;img style="width: 449px; height: 450px;" src="https://docs.google.com/a/google.com/File?id=dd5s8qw6_23sqtbprfz_b" id="xfu8" /&gt;&lt;br /&gt;&lt;br /&gt;Not pictured are a couple other &lt;i id="au4i"&gt;Google Summer of Code&lt;/i&gt; students from Chicago who couldn't make it to the meetup or did not give talks: &lt;a target="_blank" title="Joe Doliner" href="http://socghop.appspot.com/student_project/show/google/gsoc2009/brlcad/t124022093307" id="gafz"&gt;Joe Doliner&lt;/a&gt; (University of Chicago, student for &lt;a target="_blank" title="BRL-CAD" href="http://socghop.appspot.com/org/home/google/gsoc2009/brlcad" id="tfzx"&gt;BRL-CAD&lt;/a&gt;), &lt;a target="_blank" title="Caden Howell" href="http://socghop.appspot.com/student_project/show/google/gsoc2009/eff/t124022248520" id="z:ys"&gt;Caden Howell&lt;/a&gt; (DePaul University, student for the &lt;a target="_blank" title="Electronic Frontier Foundation" href="http://socghop.appspot.com/org/home/google/gsoc2009/eff" id="t_u1"&gt;Electronic Frontier Foundation&lt;/a&gt;), &lt;a target="_blank" title="Chandra Ramachandran" href="http://socghop.appspot.com/student_project/show/google/gsoc2009/ncsa/t124022776089" id="l8qm"&gt;Chandra Ramachandran&lt;/a&gt; (University of Illinois at Urbana-Champaign, student for the &lt;a target="_blank" title="National Center for Supercomputing Applications" href="http://socghop.appspot.com/org/home/google/gsoc2009/ncsa" id="yvyb"&gt;National Center for Supercomputing Applications&lt;/a&gt; ), and &lt;a target="_blank" title="Ori Rawlings" href="http://socghop.appspot.com/student_project/show/google/gsoc2009/nuigroup/t124022896142" id="qlvk"&gt;Ori Rawlings&lt;/a&gt; (Illinois Institute of Technology, student for the &lt;a target="_blank" title="Natural User Interface Group" href="http://socghop.appspot.com/org/home/google/gsoc2009/nuigroup" id="ag7a"&gt;Natural User Interface Group&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Our Google speakers were (left to right) Nathaniel Manista, Jon Trowbridge, and Jacob Lee, who provided us with a steady supply of very amusing slides.&lt;br /&gt;&lt;br /&gt;&lt;div id="m7-n" style="text-align: left;"&gt;&lt;img style="width: 600px; height: 190px;" src="https://docs.google.com/a/google.com/File?id=dd5s8qw6_24crpg3h8s_b" id="es9:" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="l2hg" style="text-align: left;"&gt;&lt;img style="width: 500px; height: 375px;" src="https://docs.google.com/a/google.com/File?id=dd5s8qw6_25frzvbcdc_b" id="x24v" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="j0dg" style="text-align: left;"&gt;&lt;img style="width: 500px; height: 375px;" src="https://docs.google.com/a/google.com/File?id=dd5s8qw6_26d689h7ds_b" id="vr1a" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="r6.d" style="text-align: left;"&gt;&lt;img style="width: 500px; height: 375px;" src="https://docs.google.com/a/google.com/File?id=dd5s8qw6_27gtpr7cdr_b" id="e-de" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Oodles of thanks go to Google for hosting this event (specially to Jon Trowbridge, organizer extraordinaire) and congratulations to our Chicago-area students for making it into &lt;i id="h2p:"&gt;Google Summer of Code&lt;/i&gt;!&lt;i id="dt.i"&gt;&lt;span id="9tdbf"  style="font-size:100%;"&gt;&lt;span id="ss7t2"  style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i id="wt-z"&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Borja Sotomayor, Ph.D. Candidate, University of Chicago and Google Summer of Code™ Organization Administrator (Globus Alliance)&lt;br /&gt;&lt;br /&gt;Photos by Anne Celestino, Lauren Ellsworth, and Borja Sotomayor.&lt;/span&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-2534253611278194727?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=mFWIDqW8UXw:eBsW4GpnfsE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=mFWIDqW8UXw:eBsW4GpnfsE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=mFWIDqW8UXw:eBsW4GpnfsE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/mFWIDqW8UXw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/2534253611278194727/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=2534253611278194727" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/2534253611278194727?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/2534253611278194727?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/mFWIDqW8UXw/spreading-summer-love-in-chicago.html" title="Spreading the Summer Love in Chicago" /><author><name>Ellen Ko</name><uri>http://www.blogger.com/profile/01259694314067375269</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04397124090885274713" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/05/spreading-summer-love-in-chicago.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMFSHg-cSp7ImA9WxJSGE8.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-2227603285334978035</id><published>2009-05-08T16:45:00.000-07:00</published><updated>2009-05-08T17:03:39.659-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-08T17:03:39.659-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="webdriver" /><category scheme="http://www.blogger.com/atom/ns#" term="selenium" /><category scheme="http://www.blogger.com/atom/ns#" term="releases" /><title>Introducing WebDriver</title><content type="html">WebDriver is a clean, fast framework for automated testing of webapps. Why is it needed? And what problems does it solve that existing frameworks don't address?&lt;br /&gt;&lt;br /&gt;For example, &lt;a target="_blank" href="http://seleniumhq.org/"&gt;Selenium&lt;/a&gt;, a popular and well established testing framework is a wonderful tool that provides a handy unified interface that works with a &lt;a target="_blank" href="http://seleniumhq.org/about/platforms.html#browsers"&gt;large number of browsers&lt;/a&gt;, and allows you to write your tests in almost every &lt;a target="_blank" href="http://seleniumhq.org/about/platforms.html#programming-languages"&gt;language&lt;/a&gt; you can imagine (from Java or C# through PHP to Erlang!). It was one of the first Open Source projects to bring browser-based testing to the masses, and because it's written in JavaScript it's possible to quickly add support for &lt;a target="_blank" href="http://www.microsoft.com/windows/Internet-explorer/default.aspx"&gt;new browsers&lt;/a&gt; that &lt;a target="_blank" href="http://www.google.co.uk/chrome"&gt;might be released&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Like every large project, it's not perfect. Selenium is written in JavaScript which causes a significant weakness: browsers impose a pretty strict security model on any JavaScript that they execute in order to protect a user from malicious scripts. Examples of where this security model makes testing harder are when trying to upload a file (IE prevents JavaScript from changing the value of an INPUT file element) and when trying to navigate between domains (because of the &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Same_origin_policy"&gt;single host origin policy&lt;/a&gt; problem).&lt;br /&gt;&lt;br /&gt;Additionally, being a mature product, the &lt;a target="_blank" href="http://release.seleniumhq.org/selenium-remote-control/1.0-beta-2/doc/java/com/thoughtworks/selenium/Selenium.html"&gt;API for Selenium RC&lt;/a&gt; has grown over time, and as it has done so it has become harder to understand how best to use it. For example, it's not immediately obvious whether you should be using "type" instead of "typeKeys" to enter text into a form control. Although it's a question of aesthetics, some find the large API intimidating and difficult to navigate.&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" href="http://webdriver.googlecode.com/"&gt;WebDriver&lt;/a&gt; takes a different approach to solve the same problem as Selenium. Rather than being a JavaScript application running within the browser, it uses whichever mechanism is most appropriate to control the browser. For Firefox, this means that WebDriver is implemented as an extension. For IE, WebDriver makes use of IE's Automation controls. By changing the mechanism used to control the browser, we can circumvent the restrictions placed on the browser by the JavaScript security model. In those cases where automation through the browser isn't enough, WebDriver can make use of facilities offered by the Operating System. For example, on Windows we simulate typing at the OS level, which means we are more closely modeling how the user interacts with the browser, and that we can type into "file" input elements.&lt;br /&gt;&lt;br /&gt;With the benefit of hindsight, we have developed a cleaner, &lt;a target="_blank" href="http://webdriver.googlecode.com/svn/javadoc/org/openqa/selenium/WebDriver.html"&gt;Object-based API&lt;/a&gt; for WebDriver, rather than follow Selenium's dictionary-based approach. A typical example using WebDriver in Java looks like this:&lt;br /&gt;&lt;br /&gt;// Create an instance of WebDriver backed by Firefox&lt;br /&gt;WebDriver driver = new FirefoxDriver();&lt;br /&gt;&lt;br /&gt;// Now go to the Google home page&lt;br /&gt;driver.get("http://www.google.com");&lt;br /&gt;&lt;br /&gt;// Find the search box, and (ummm...) search for something&lt;br /&gt;WebElement searchBox = driver.findElement(By.name("q"));&lt;br /&gt;searchBox.sendKeys("selenium");&lt;br /&gt;searchBox.submit();&lt;br /&gt;&lt;br /&gt;// And now display the title of the page&lt;br /&gt;System.out.println("Title: " + driver.getTitle());&lt;br /&gt;&lt;br /&gt;Looking at the two frameworks side-by-side, we found that the weaknesses of one are addressed by the strengths of the other. For example, whilst WebDriver's approach to supporting browsers requires a lot of work from the framework developers, Selenium can easily be extended. Conversely, Selenium always requires a real browser, yet WebDriver can make use of an implementation based on &lt;a target="_blank" href="http://htmlunit.sourceforge.net/"&gt;HtmlUnit&lt;/a&gt; which provides lightweight, super-fast browser emulation. Selenium has good support for many of the common situations you might want to test, but WebDriver's ability to step outside the JavaScript sandbox opens up some interesting possibilities.&lt;br /&gt;&lt;br /&gt;These complementary capabilities explain why the two projects are merging: Selenium 2.0 will offer WebDriver's API alongside the traditional Selenium API, and we shall be merging the two implementations to offer a capable, flexible testing framework. One of the benefits of this approach is that there will be an implementation of WebDriver's cleaner APIs backed by the existing Selenium implementation. Although this won't solve the underlying limitations of Selenium's current JavaScript-based approach, it does mean that it becomes easier to test against a broader range of browsers. And the reverse is true; we'll also be &lt;a target="_blank" href="http://code.google.com/p/webdriver/wiki/SeleniumEmulation"&gt;emulating the existing Selenium APIs&lt;/a&gt; with WebDriver too. This means that teams can make the move to WebDriver's API (and Selenium 2) in a managed and considered way.&lt;br /&gt;&lt;br /&gt;If you'd like to give WebDriver a try, it's as easy as &lt;a target="_blank" href="http://code.google.com/p/webdriver/downloads/list"&gt;downloading&lt;/a&gt; the zip files, unpacking them and putting the JARs on your CLASSPATH. For the Pythonistas out there, there's also a version of WebDriver for you, and a C# version is waiting in the wings. The project is hosted at &lt;a target="_blank" href="http://webdriver.googlecode.com/"&gt;http://webdriver.googlecode.com&lt;/a&gt;, and, like any project on &lt;a target="_blank" href="http://code.google.com/"&gt;Google Code&lt;/a&gt;, is Open Source (we're using the &lt;a target="_blank" href="http://www.apache.org/licenses/LICENSE-2.0"&gt;Apache 2 license&lt;/a&gt;) If you need help getting started, the &lt;a target="_blank" href="http://code.google.com/p/webdriver/wiki/GettingStarted"&gt;project's wiki&lt;/a&gt; contains useful guides, and the &lt;a target="_blank" href="http://groups.google.com/group/webdriver"&gt;WebDriver group&lt;/a&gt; is friendly and helpful (something which makes me feel very happy).&lt;br /&gt;&lt;br /&gt;So that's WebDriver: a clean, fast framework for automated testing of webapps. We hope you like it as much as we do!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;by Simon Stewart, Engineering Productivity Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-2227603285334978035?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=c119vLujnXY:AxDBX0Z4074:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=c119vLujnXY:AxDBX0Z4074:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=c119vLujnXY:AxDBX0Z4074:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/c119vLujnXY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/2227603285334978035/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=2227603285334978035" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/2227603285334978035?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/2227603285334978035?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/c119vLujnXY/introducing-webdriver.html" title="Introducing WebDriver" /><author><name>Ellen Ko</name><uri>http://www.blogger.com/profile/01259694314067375269</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04397124090885274713" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">11</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/05/introducing-webdriver.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcEQX45cSp7ImA9WxJSF04.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-7179781656284046310</id><published>2009-05-07T14:27:00.000-07:00</published><updated>2009-05-07T14:33:20.029-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-07T14:33:20.029-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bsdcan" /><category scheme="http://www.blogger.com/atom/ns#" term="bsd" /><title>O BSDCanada!</title><content type="html">&lt;a title="BSDCan 2009" target="_blank" href="http://www.bsdcan.org/2009/" id="szlh"&gt;BSDCan 2009&lt;/a&gt;, an annual BSD conference at the University of Ottawa in Ontario, Canada will be held this year on May 8th and 9th, 2009.  The Open Source Team's &lt;a title="Leslie Hawthorn" target="_blank" href="http://www.hawthornlandings.org/" id="vhs."&gt;Leslie Hawthorn&lt;/a&gt; and &lt;a title="Cat Allman" target="_blank" href="http://topicalrothko.blogspot.com/" id="ojid"&gt;Cat Allman&lt;/a&gt; will be there to mingle with the Open Source community and present a talk on &lt;a title="Getting Started in Free and Open Source" target="_blank" href="http://www.bsdcan.org/2009/schedule/events/149.en.html" id="hvhq"&gt;Getting Started in Free and Open Source&lt;/a&gt; on May 8th at 11 AM local time.  This talk is a fantastic introduction to the Open Source community for those who are new and want to get involved.  In addition, Open Source veterans will discover insights into the concerns of newbies and learn ways to improve retention and make their projects more welcoming.  By running projects such as &lt;a title="Google Summer of Code" target="_blank" href="http://code.google.com/soc/" id="rvb7"&gt;Google Summer of Code&lt;/a&gt;™ and the &lt;a href="http://code.google.com/opensource/ghop/"&gt;Google Highly Open Participation™ Contest&lt;/a&gt;,  Leslie and Cat have gathered a huge amount of experience working with Open Source newcomers, and they are excited to share their knowledge  with the rest of the community.&lt;br /&gt;&lt;br /&gt;This will mark Google's third year at BSDCan, with &lt;span class="person-name"&gt;&lt;a title="Brian 'Fitz' Fitzpatrick" target="_blank" href="http://www.red-bean.com/fitz/" id="y3tj"&gt;Brian 'Fitz' Fitzpatrick&lt;/a&gt; and &lt;/span&gt;&lt;a title="Ben Collins-Sussman" target="_blank" href="http://www.red-bean.com/sussman/" id="hpqr"&gt;Ben Collins-Sussman&lt;/a&gt; &lt;a title="speaking there in 2007" target="_blank" href="http://www.bsdcan.org/2007/schedule/events/35.en.html" id="u96s"&gt;speaking there in 2007&lt;/a&gt; and Leslie &lt;a title="presenting in 2008" target="_blank" href="http://www.bsdcan.org/2008/schedule/events/95.en.html" id="n4r1"&gt;presenting in 2008&lt;/a&gt;.  If you are in the area, make sure to attend this year's talk, and feel free to say hello or introduce yourself afterward!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Ellen Ko, Open Source Team&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-7179781656284046310?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=N1sguEf3MMg:vFaHpR_Hn-s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=N1sguEf3MMg:vFaHpR_Hn-s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=N1sguEf3MMg:vFaHpR_Hn-s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/N1sguEf3MMg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/7179781656284046310/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=7179781656284046310" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/7179781656284046310?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/7179781656284046310?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/N1sguEf3MMg/o-bsdcanada.html" title="O BSDCanada!" /><author><name>Ellen Ko</name><uri>http://www.blogger.com/profile/01259694314067375269</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04397124090885274713" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/05/o-bsdcanada.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYFSHs9cSp7ImA9WxJSEU4.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-504384497189992341</id><published>2009-04-30T17:13:00.001-07:00</published><updated>2009-04-30T17:35:19.569-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-30T17:35:19.569-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Linux kernel" /><category scheme="http://www.blogger.com/atom/ns#" term="LSF" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux Foundation" /><title>Report from Day 1 of the Linux Storage and Filesystems Workshop, April 6-7, 2009</title><content type="html">My karma was apparently very good three weeks ago. In the last minute I secured an invitation to &lt;a href="http://www.linuxfoundation.org/events/2009/04/linux-storage-filesystems-workshop-2009"&gt;Linux Storage and Filesystems Workshop 2009 (LSF)&lt;/a&gt;.  This year the invitation-only workshop was hosted by the &lt;a href="http://www.linuxfoundation.org/"&gt;Linux Foundation&lt;/a&gt; on April 6-7 in San Francisco, CA. It was, as always, an intense 2 days of non-stop information exchange and decision making.  I've attempted to summarize what I took away as the most interesting and important discussions of the first day.  These are my opinions, and your mileage may vary.&lt;br /&gt;&lt;br /&gt;The group of about 50 developers were nearly all present when &lt;a href="http://www.mefeedia.com/entry/meet-the-oracle-linux-kernel-experts-zach-brown/15607071"&gt;Zach&lt;br /&gt;Brown&lt;/a&gt; (Oracle)welcomed us and reminded folks about the ground rules of the event. Share the brownies. Wash your hands, ...just kidding. This event remains small so folks can participate and we were pretty "cozy" in the small conference room with 5 good sized round tables.  First step was to turn off the projector. :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mefeedia.com/entry/meet-the-oracle-linux-kernel-team-chris-mason/15607076"&gt;Chris Mason&lt;/a&gt; and &lt;a href="http://events.linuxfoundation.org/bottomley"&gt;James Bottomley&lt;/a&gt; then did a great summary and "scoring" of promises made at LSF2008. IO stack was up first and had some good initial scores with high points for Power management, Request Based Multipath, BIO's TRIM/ERASE support, T10 DIF/DIX (complete) and FCoE (also complete). Chris Mason managed to nearly match that with 4/4 points for Barriers, BTRFS (upstream but not stable yet), IPV6 NFS, NFS RDMA.&lt;br /&gt;&lt;br /&gt;The first problem/topic was how to cache device scanning in the kernel or how to properly export an API for device scanning. General problem is there are several methods the kernel exports info and it's very time consuming on large systems. This was followed by Async IO and Direct IO discussion led by Zach Brown (Oracle) and &lt;a href="http://fedoranews.org/mediawiki/index.php/Jeff_Moyer"&gt;Jeffrey Moyer&lt;/a&gt; (Redhat).  Zach has been the AIO maintainer "forever" and made it clear AIO was async in only a very few circumstances that happen to suit database developers.&lt;br /&gt;&lt;br /&gt;Joe Eykholt gave a summary of "FC/SCSI Targets", how to get initiator *and* target mode support from one FC HBA at the same time. Interesting stuff.  Nick Bellinger gave a concise summary of state of "LIO/iSCSI" code and the "tgt" driver.&lt;br /&gt;&lt;br /&gt;I was interested in &lt;a href="http://pipl.com/directory/people/Tejun/Heo"&gt;Tejun Heo's&lt;/a&gt; "libata status and issues" discussion. First we talked about the status of several patches: mvsas updates, "ATA Bus" transport class, SFF vs Native transport classes from my co-worker &lt;a href="http://www.linkedin.com/pub/1/641/098"&gt;Gwendal Grignou&lt;/a&gt;, and a pile of power management patches from &lt;a href="http://conferences.oreillynet.com/cs/os2007/view/e_spkr/3687"&gt;Kristen Accardi&lt;/a&gt; (Intel). Tejun then dove into the "Spurious Power Off" problem. The cause seems to be short loss of power from the PSU is causing massive FS corruption. He's documented 5 incidents so far. Additional symptoms are "clicking" sounds and START/STOP count increments (reported via SMART data). Tejun suspects the FS is issueing a FLUSH to all disks simultaneously. We further speculated that the drives might be in a low power (slower RPMpossibly) and suddenly all come to life. Currently no fix is available.&lt;br /&gt;&lt;br /&gt;Some possible workarounds we considered:&lt;br /&gt;- disable Write Cache Enable (and take a write perf hit on loads that are single threaded)&lt;br /&gt;- disable power management.&lt;br /&gt;&lt;br /&gt;He moved on to discuss ambiguities around libata/block layer data structures (e.g. hard_ vs w/o hard_ ) fields that have similar (but not the same) names.&lt;br /&gt;&lt;br /&gt;One of the last issues was something I raised: Can we reduce the CPU utilization of the block layer? I was asking since several new flash technologies are under development and they are all capable of 200+ *thousand* IOPS. The answer was &lt;a href="http://kerneltrap.org/node/7637"&gt;Jens Axboe&lt;/a&gt; was working on this already since about December 2008 had committed his initial results to his own git tree already. I just need to find the git tree and proper branch now. :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That wraps up day one.  I hope you find the information useful.  If you want to read about day two, please leave a comment and if demand warrants it, I'll cover that in a future post.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Grant Grundler, Platforms Kernel Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-504384497189992341?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=yS0wUzns53Y:U2ioXTvL2Mc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=yS0wUzns53Y:U2ioXTvL2Mc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=yS0wUzns53Y:U2ioXTvL2Mc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/yS0wUzns53Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/504384497189992341/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=504384497189992341" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/504384497189992341?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/504384497189992341?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/yS0wUzns53Y/report-from-day-1-of-linux-storage-and.html" title="Report from Day 1 of the Linux Storage and Filesystems Workshop, April 6-7, 2009" /><author><name>Cat Allman</name><uri>http://www.blogger.com/profile/03328856688494884083</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="09375904300230216223" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/04/report-from-day-1-of-linux-storage-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YMRX0yfSp7ImA9WxJSEE8.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-9119330718234218547</id><published>2009-04-29T10:13:00.000-07:00</published><updated>2009-04-29T10:13:04.395-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-29T10:13:04.395-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="season of usability" /><category scheme="http://www.blogger.com/atom/ns#" term="gsoc" /><category scheme="http://www.blogger.com/atom/ns#" term="summer of code meme" /><title>Student Applications Open for 2009 OpenUsability Season of Usability</title><content type="html">Inspired by &lt;a title="Google Summer of Code™" target="_blank" href="http://code.google.com/soc/" id="z10."&gt;Google Summer of Code™&lt;/a&gt;, the &lt;a title="OpenUsability" target="_blank" href="http://www.openusability.org/" id="j1tg"&gt;OpenUsability&lt;/a&gt; &lt;a title="Season of Usability" target="_blank" href="http://season.openusability.org/" id="r3ok"&gt;Season of Usability&lt;/a&gt; is a series of sponsored student projects to encourage students of usability, user-interface design, and interaction design to get involved with Free/Libre/Open Source Software (FLOSS) projects.  Students experience the interdisciplinary and collaborative development of user interface solutions in international software projects while getting into FLOSS development.&lt;br /&gt;&lt;br /&gt;If you are a student of design, usability, human factors, or other HCI-related field and you are interested in working on an open source project, you could work with an experienced usability mentor on a fun and interesting design project! As a bonus for working 10-15 hours a week between June 1 and August 31, there is a $1000 USD internship stipend at the end of the project.&lt;br /&gt;&lt;br /&gt;The OpenUsability Season of Usability will be supporting 10 students to work on 10 open source projects during the June 1 - August 31 2009 season.&lt;br /&gt;&lt;br /&gt;* &lt;a title="Amarok" target="_blank" href="http://amarok.kde.org/" id="en48"&gt;Amarok&lt;/a&gt;&lt;br /&gt;* &lt;a title="Drupal" target="_blank" href="http://drupal.org/" id="vhpw"&gt;Drupal&lt;/a&gt;&lt;br /&gt;* &lt;a title="Gallery" target="_blank" href="http://gallery.menalto.com/" id="b:y3"&gt;Gallery&lt;/a&gt;&lt;br /&gt;* &lt;a title="GeneMANIA" target="_blank" href="http://morrislab.med.utoronto.ca/mania/" id="uizh"&gt;GeneMANIA&lt;/a&gt;&lt;br /&gt;* &lt;a title="GNOME" target="_blank" href="http://www.gnome.org/" id="ojm-"&gt;GNOME&lt;/a&gt;&lt;br /&gt;* &lt;a title="Kadu" target="_blank" href="http://www.kadu.net/w/English:Main_Page" id="tt63"&gt;Kadu&lt;/a&gt;&lt;br /&gt;* &lt;a title="KOrganizer" target="_blank" href="http://userbase.kde.org/KOrganizer" id="m3lk"&gt;KOrganizer&lt;/a&gt;&lt;br /&gt;* &lt;a title="OLM" target="_blank" href="https://stanley.cdf.toronto.edu/drproject/csc49x/olm_rails" id="n7qt"&gt;OLM&lt;/a&gt;&lt;br /&gt;* &lt;a title="SemNotes" target="_blank" href="http://smile.deri.ie/projects/semn" id="nc:0"&gt;SemNotes&lt;/a&gt;&lt;br /&gt;* &lt;a title="Ubuntu" target="_blank" href="http://www.ubuntu.com/" id="hoof"&gt;Ubuntu&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Student applications are due May 20 2009&lt;/b&gt;. See &lt;a href="http://season.openusability.org/index.php/projects" target="_blank"&gt;http://season.openusability.org/index.php/projects&lt;/a&gt; for more information on the projects, student requirements, and how to apply. Questions about the projects or application process may be directed to &lt;a href="mailto:students@openusability.org" target="_blank"&gt;students@openusability.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;font class="byline-author"&gt;&lt;i&gt;by Celeste Lyn Paul, Season of Usability Mentor&lt;/i&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-9119330718234218547?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=zw2-WYNLUcc:cjAqUVxGLxA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=zw2-WYNLUcc:cjAqUVxGLxA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=zw2-WYNLUcc:cjAqUVxGLxA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/zw2-WYNLUcc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/9119330718234218547/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=9119330718234218547" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/9119330718234218547?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/9119330718234218547?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/zw2-WYNLUcc/student-applications-open-for-2009.html" title="Student Applications Open for 2009 OpenUsability Season of Usability" /><author><name>Ellen Ko</name><uri>http://www.blogger.com/profile/01259694314067375269</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04397124090885274713" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/04/student-applications-open-for-2009.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QCQn0zeSp7ImA9WxJSEU0.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-9001807130488555638</id><published>2009-04-24T15:09:00.000-07:00</published><updated>2009-04-30T08:29:23.381-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-30T08:29:23.381-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mercurial" /><category scheme="http://www.blogger.com/atom/ns#" term="project hosting git" /><title>Distributed Version Control for Project Hosting Users</title><content type="html">Love our &lt;a href="http://code.google.com/hosting/" target="_blank"&gt;Open Source project hosting service&lt;/a&gt; but wish it supported distributed version control? Pine no longer! You can find full details about &lt;a href="http://www.selenic.com/mercurial/wiki/" target="_blank"&gt;Mercurial&lt;/a&gt; support for hosted projects on the &lt;a href="http://google-code-updates.blogspot.com/2009/04/mercurial-support-for-project-hosting.html" target="_blank"&gt;Google Code Blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For those of you who are &lt;a href="http://git-scm.com/" target="_blank"&gt;Git&lt;/a&gt; fans, you may want to check out these articles: &lt;a href="http://google-opensource.blogspot.com/2008/05/develop-with-git-on-google-code-project.html" target="_blank"&gt;Develop with Git on a Google Code Project&lt;/a&gt; and &lt;a href="http://google-opensource.blogspot.com/2008/05/export-git-project-to-google-code.html" target="_blank"&gt;Exporting a Git Project to Google Code&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Happy hacking!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Leslie Hawthorn, Open Source Team&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Ed. Note: Post update to correct link.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-9001807130488555638?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=h9Gbhtr5D_M:Nr9PFMqoVAs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=h9Gbhtr5D_M:Nr9PFMqoVAs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=h9Gbhtr5D_M:Nr9PFMqoVAs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/h9Gbhtr5D_M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/9001807130488555638/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=9001807130488555638" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/9001807130488555638?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/9001807130488555638?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/h9Gbhtr5D_M/distributed-version-control-for-project.html" title="Distributed Version Control for Project Hosting Users" /><author><name>Leslie Hawthorn</name><uri>http://www.blogger.com/profile/04472868563053273609</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17288473024986932204" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/04/distributed-version-control-for-project.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8CQXY4fip7ImA9WxJTFE8.&quot;"><id>tag:blogger.com,1999:blog-8698702854482141883.post-1804823802711810564</id><published>2009-04-22T12:01:00.000-07:00</published><updated>2009-04-22T12:01:00.836-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-22T12:01:00.836-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source awards" /><category scheme="http://www.blogger.com/atom/ns#" term="oscon" /><title>Now Accepting Nominations for the 5th Annual Google-O'Reilly Open Source Awards</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_fxRR_bT3LgA/Se0HOIvTEOI/AAAAAAAAB8E/yAY6ahdaX-A/s1600-h/90308_google_ORM_OS_award_header.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 262px;" src="http://3.bp.blogspot.com/_fxRR_bT3LgA/Se0HOIvTEOI/AAAAAAAAB8E/yAY6ahdaX-A/s320/90308_google_ORM_OS_award_header.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5326921873694593250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://code.google.com/opensource/osa-hall-of-fame.html" target=blank&gt;Google-O'Reilly Open Source Awards&lt;/a&gt; are back again for 2009! These awards recognize individual contributors who have demonstrated exceptional leadership, creativity, and collaboration in the development of Open Source Software. Past recipients for 2005-2008 include &lt;a href="http://www.webchick.net/" target=blank&gt;Angela Byron&lt;/a&gt;, &lt;a href="http://www.samba.org/%7Etridge/" target=blank&gt;Andrew Tridgell&lt;/a&gt;, &lt;a href="http://gnumonks.org/%7Elaforge/weblog/" target=blank&gt;Harald Welte&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Julian_Seward" target=blank&gt;Julian Seward&lt;/a&gt;, &lt;a href="http://www.red-bean.com/kfogel/"target=blank&gt;Karl Fogel&lt;/a&gt;, &lt;a href="http://dougiamas.com/" target=blank&gt;Martin Dougiamas&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Pamela_Jones" target=blank&gt;Pamela Jones&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Paul_Vixie" target=blank&gt;Paul Vixie&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The nomination process is open to all, so please send your nominations to &lt;a href="mailto:osawards@oreilly.com" target="_blank"&gt;osawards@oreilly.com&lt;/a&gt;. Nominations should include the name of the recipient, any associated projects or organizations, suggested title for the award ("Best Hacker", "Best Community Builder", etc.), and a description of why you are nominating the individual. Google and O'Reilly employees are not eligible for the awards, though we thank you if you thought of us.&lt;br /&gt;&lt;br /&gt;Nominations close on May 22, 2009. The &lt;a href="http://en.oreilly.com/oscon2009/public/schedule/detail/9000" target=blank&gt;awards will be presented&lt;/a&gt; during the kickoff ceremonies for &lt;a href="http://en.oreilly.com/oscon2009" target=blank&gt;OSCON 2009&lt;/a&gt;. We look forward to hearing from you and having your help to honor those community members who make Open Source that much better for all of us!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;Leslie Hawthorn, Open Source Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8698702854482141883-1804823802711810564?l=google-opensource.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=2z3HLmtBLic:NrrbcSW4c_Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?a=2z3HLmtBLic:NrrbcSW4c_Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GoogleOpenSourceBlog?i=2z3HLmtBLic:NrrbcSW4c_Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~4/2z3HLmtBLic" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://google-opensource.blogspot.com/feeds/1804823802711810564/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8698702854482141883&amp;postID=1804823802711810564" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/1804823802711810564?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8698702854482141883/posts/default/1804823802711810564?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GoogleOpenSourceBlog/~3/2z3HLmtBLic/now-accepting-nominations-for-5th.html" title="Now Accepting Nominations for the 5th Annual Google-O'Reilly Open Source Awards" /><author><name>Leslie Hawthorn</name><uri>http://www.blogger.com/profile/04472868563053273609</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17288473024986932204" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_fxRR_bT3LgA/Se0HOIvTEOI/AAAAAAAAB8E/yAY6ahdaX-A/s72-c/90308_google_ORM_OS_award_header.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://google-opensource.blogspot.com/2009/04/now-accepting-nominations-for-5th.html</feedburner:origLink></entry></feed>
