Thursday, April 30, 2009

PPK: The Open Web Goes Mobile

Last week I was privileged to host PPK (Peter-Paul Koch) for a Google tech talk entitled "The Open Web Goes Mobile". Most developers building web apps have benefited from PPK's browser compatibility research hosted on his well known site quirksmode.org. Now, fortunately, PPK is turning his attention to the world of mobile web devices. To no one's surprise, browser compatibility on mobile devices is even worse than it is on the desktop. Or as PPK puts it on his opening slide "Hell is other browsers". Check out his slides or watch the video here.



PPK starts by identifying the four main problems with getting web sites to work well on mobile clients: small memory, small display, flaky browsers, and flaky connections. Memory is an area for more research, especially benchmarking. PPK offers some suggestions for dealing with a small display, including using media queries in CSS (@media all and (max-width: 300px) {}) and offsetWidth in JavaScript.

Mobile browsers themselves are flaky when it comes to advanced CSS and JavaScript. But PPK finds that even basic stuff, such as font-style: italic, has to be verified. As a result of his testing, PPK categorizes mobile browsers into three levels of compatibility:
  • top level: Android WebKit, Safari, Opera Mobile
  • mid level: S60 WebKit, Blackberry, Opera Mini
  • bottom level: NetFront, IE Mobile
Obviously, this is not an exhaustive list of mobile clients. PPK also mentions OpenWeb, Nokia S40, Palm Blazer, Iris, Bolt, Skyfire, Obigo, Fennec, and Teashark. This is the challenge in developing for the mobile web - there are a large number of clients and they exhibit diverse compatibility behavior.

When it comes to flaky connections, PPK points out that your connection speed is affected by the activity of the people around you. It's unlikely that this is going to change any time soon, so it's important to reduce the size of your downloads as much as possible. The problem is that caching on mobile devices isn't always reliable.

The impact of flaky connections can be mitigated by saving your core files on the mobile device. W3C Widgets offers a solution for achieving this. They're local applications written in HTML, CSS, and JavaScript that run inside the mobile browser. Ajax is used to download what's required: data. An advantage of using W3C Widgets is that, if the specification gets wide adoption, widgets will run across multiple mobile devices, and companies won't have to build a custom application for each target device. Right now, W3C Widgets work in Vodafone and Nokia S60 phones and Opera/T-Mobile phones for Windows Mobile, so evangelism to other mobile devices is needed. But the possibility of sharing applications across phones is compelling, for both the user experience as well as reduced development costs for mobile app developers.

Who's @ Google I/O - spotlight on AJAX and Google Data APIs

There are over 60 Google APIs across a wide range of products and technologies. The AJAX APIs include Google Search, Language, Maps, FriendConnect, and Visualization APIs. The team recently launched v2 of the AJAX APIs Playground, an app designed to show interactive code samples for some of our coolest Javascript APIs. The Google Data APIs provide a simple standard protocol for reading and writing data on the web and are used by many products including YouTube, Calendar, Picasa Web Albums, and as of last week, Analytics.

Google I/O will feature many sessions covering the AJAX and Google Data APIs. Here are a few of the developers who'll be leading sessions and/or demoing at the Developer Sandbox:
  • Redfin
    Redfin is an online brokerage site for buying and selling homes. Redfin uses the Google Maps, Charts, and Feeds APIs. Redfin actively talks about the behind-the-scenes development decisions, which can be found at the Redfin Developer Blog. (For example, they blogged about why they switched to the Google Maps API) Sasha Aickin, Engineering Manager, will be speaking on a session called Performance Tips for Geo API Mashups.

  • Lonely Planet
    Lonely Planet is known by travelers for producing informed and honest travel advice. Lonely Planet uses the Google Maps Javascript API to power interactive maps on lonelyplanet.com, the Google Static Maps API on its cross-device mobile site, m.lonelyplanet.com, and OpenSocial, App Engine, and Android in products soon to be launched. Ken Hoetmer, Lonely Planet's neogeographer in residence, will be speaking on a session called Maps APIs & Mobile.

  • Adobe
    Introduced with Adobe Creative Suite 4, Adobe Community Help utilizes Google Custom Search (a product which also supports the AJAX APIs) to aggregate the most relevant help content from the broader community. By integrating search directly within the application workflow, users can find answers to their software questions no matter where those answers may be found. Currently, Adobe is exploring ways of expanding Custom Search to include code samples directly within Adobe development environments for products like Flash and Flex. (Read Adobe's blog post about Adobe Community Help)

  • LuckyCal
    LuckyCal is a calendaring application which utilizes several of the Google Data APIs to create a dynamic calendar experience. They authenticate using OAuth to retrieve data from the Calendar and Contacts Data APIs. Based on where you'll be, who you know and what you like, LuckyCal finds events that are relevant to you. LuckyCal has also created a Google Gadget and uses the Maps API (both for UI and for Geocoding) extensively.

  • Eye.fi
    The Eye-Fi Card stores photos & videos like a traditional memory card, and fits in most cameras. When you turn your camera on within range of a configured Wi-Fi network, it wirelessly transfers your photos & videos to either your computer or services like YouTube, Picasa Web Albums, etc via the YouTube and Picasa Web Albums Data APIs.

  • Vast Rank
    Vast Rank is a college ranking website that utilizes the Google Maps API in their interactive ranking map (where visitors see rankings based on what is in view on the map). With the Client Location API, Vast Rank’s personalization engine can weigh the visitor’s location into the criteria used to suggest interesting colleges to the visitor. Vast Rank creator Jon Kragh will be leading a session, Using AJAX APIs to Navigate User-Generated Content.

  • 280 North
    280 North's application, 280 Slides, enables users to easily create web-based presentations. With the AJAX Search API and Google Data APIs, 280 Slides builds in the ability to search Google for images and YouTube for videos and drag media directly into a presentation. 280 North is also the creator of Cappuccino, an open source JavaScript-based web development framework. Check out co-founder Ross Boucher's videos where he talks about 280 Slides' implementation.
Finally, a friendly reminder that early (discounted) registration for Google I/O ends this Friday, May 1. Visit code.google.com/io to sign up and learn more about sessions and demos that'll be in store this year.

*Follow us for the latest I/O updates: @googleio.

Zemeckis considering Roger Rabbit Sequel

So Robert Zemeckis is mulling over the idea of making a sequel to Who Framed Roger Rabbit.

On the surface, that doesn't sound so bad I admit. However, the reason I am flagging this as a less than stellar move is the mention of something else.

Motion Capture.

Yep. He wants to replace the glorious, almost organic feel of the hand-drawn and painted work with computerized replacements.

I mean, what the hell is that about? I know he likely enjoyed working on Beowulf and such, but really, there is no call for motion capture on a movie that was based on the premise that ink and paint cartoon characters were real. I mean, the thing they were all afraid of was a chemical brew that broke down those two substances.

What is the dramatic devise that will work against the toons? A computer virus? Something that breaks down ping pong ball covered rubber suits? The Windows ME operating system?

Now, don't get me wrong... I am not completely adverse to computers having a part in such a movie. If Pixar/Disney was involved and they were animating the characters in that magical way they do, well, I am sure it would turn out well. But motion capture is just the laziest way of doing things.

Luckily, with Robert Zemeckis, he gives away all the plot points in the preview, so I might get away without seeing his motion capture *ahem* masterpiece. And let's face it, Kathleen Turner's voice isn't what it once was either.

Google Location Services now in Mozilla Firefox

With recent launches like Google Latitude and Google Toolbar with My Location, it's clear we think location-based services are useful and fun! We also want developers everywhere to be able to use location to build cool new features and applications.

I'm pleased to announce that Google's Location Service (the same service which powers the My Location feature in many Google products), is now the default location provider in Mozilla Firefox 3.5 beta 4. This means that developers can, with users' permission, gain access to their approximate location without requiring any additional plug-ins or setting configurations. It just works!

Mozilla Firefox 3.5 beta 4 uses the W3C geolocation API, a standard being adopted by many major browsers, so you won't have to branch code in the future.

For web developers, using geolocation services in Firefox is easy! Here's a simple example to get you started:
<html>
<head>
<script type="text/javascript">

function displayLocation(loc) {
var locDiv = document.getElementById("locationDiv");
locDiv.innerHTML = "lat: " + loc.coords.latitude + ", lon:" + loc.coords.longitude;
}

function getLocation() {
navigator.geolocation.getCurrentPosition(displayLocation);
}

</script>
</head>

<body>
<a href="#" onClick="getLocation()">Click here to display location</a><br>
<div id="locationDiv"></div>
</body>
</html>
When your site calls getCurrentPosition, a drop down will ask the user permission to get his or her location. Upon acceptance of the request, the callback function you specify will run with the machine's approximate location contained in the loc parameter. Here's a screenshot of the permission dropdown:


We hope you find the new and useful ways to use the new geolocation capabilities of Firefox!

Wednesday, April 29, 2009

Tech Talks on the Guts of Chromium

As a developer, one of the coolest things about working on the Google Chrome web browser is that there's very little difference between being a Googler working on it and being an external contributor. Most development happens via public wikis, mailing lists, bugs, and code under the Chromium project. Chomium's openness is something we take a lot of pride in.

Last Wednesday 5 of Chromium's top contributors gave tech talks on a wide range of very technical topics. Given our commitment to openness, it shouldn't surprise you that we went to great lengths to film them. None of us had filmed a tech talk before, but through a great team effort we were able to capture some really great presentations. If you're interested in the guts of Chromium's code base, I encourage you to check them out:

There's a bird in my radar!

Weather radar is a great tool for tracking areas of precipitation...but it can see much more. Sometimes it sees birds. In fact, birds are great radar targets, since the amount of radar signal scattered back increases by the sixth power of the diameter of the target...and birds are much bigger than raindrops!

Let me show you an example (see below). Lets go back to April 24th at 8:02 PM (0302 UTC or GMT). The radar is showing little of anything, even though it is in the supersensitive "clear air" mode. A half hour later there is a noticeable increase in the amount of echo (0331 UTC, 8:32 PM PDT), and by 9 PM echoes have really spread and strengthened. This intensification and extension of the radar echoes continued for the next hour.

So did a rainshower move in? Or did a front with rain make landfall? Nope.

The surface observing stations reported dry conditions and generally cloud free skies. It was birds! But why then?

Sunset on that day was 8:12 PM and that is key information. Songbirds like to fly at night (perhaps there are less predators then) and just after sunset they hit the skies for their migration north. And we see this pattern night after night in the spring...and night after night in the fall.

But wait a minute..this is a Doppler radar...we can tell which way they are flying! The Doppler velocity image is shown below for 11 PM. Greens indicate incoming (from the south) and yellows are outgoing (to the north). Thus, with greens south of the radar site (Camano Island) and yellows to the north of the radar, our birds are moving to the north...which makes sense in the spring.

Ornithologists use weather radars for monitoring bird migrations...and now so can you! Imagine when we get a radar on the coast...we will then be able to track the great migrations through Grays Harbor and vicinity. So write or email your Senator and congressman...we need that coastal radar!








Doppler radar below:

How I spent my Ad Revenue

As I am sure some of you have noticed, over the past year or so, there have been a few ads on my blog. It originally started because I wanted to make a little money to use to advertise my t-shirt designs, and well, I didn't really get around to doing that.

And because I am just making mad money from my ads doing this whole blogging thing... I mean, I could probably get a cup of coffee a week... not that fancy Starbucks stuff, or even a large one at a relatively reasonably priced chain that I am sure every Canadian is familiar with, but if I budgeted it right, I might be able to afford a small one every week. Might.

However, I just kept letting that loot build up in my account, and after my recent confessional post last week, well, I thought I should try something I hadn't done before and well, I went over to Ebay and parlayed the little bit of money I've made blogging to try to check at least one thing off that list.

Thus I bid on and won the following item:



I've fought the temptation since October 2007, but I finally gave in. Given this precedent, I guess I will start twittering sometime around October 2010.

Tuesday, April 28, 2009

Lombardi Blueprint: Client side code, server side execution with GWT

This post is part of the Who's @ Google I/O, a series of blog posts that give a closer look at developers who'll be speaking or demoing at Google I/O. Today's post is a guest post written by Alex Moffat, Chief Engineer - Blueprint, Lombardi Software

Lombardi has been using Google Web Toolkit (GWT for short) since January 2007 to build Lombardi Blueprint, an online, collaborative business process modeling and documentation tool. The client part of Blueprint is completely written using GWT and runs in any modern browser, that is IE6 and anything later, such as IE7, IE8 or Firefox. One of the biggest advantages of Blueprint is that it's easier to learn and quicker to use than a pure diagramming tool like Visio and it's more effective because it's focused on process mapping.

One of the things we do to make Blueprint more effective is automatic diagram layout. This allows the user to focus on describing their process instead of worrying about object positioning and line routing. You can see this in action in the video below as objects are added to the diagram.



Remember, this is JavaScript compiled by GWT from Java code, but it's as fast as, or faster than, anything you could write by hand, compact, and much, much, easier to maintain. The ability to use the excellent tooling available for Java is one of the great advantages of GWT.

One of the goals for our automated layout routines is to generate a flow diagram that looks like it was produced by a human. When the algorithms don't get it quite right, Blueprint also supports hinted layouts so that the user can drag and drop hints about where one object should be positioned in relation to another. Working out what the final layout should be and where the lines should go for large diagrams can be computationally expensive.

Modern browsers have very fast JavaScript engines. For these systems, there are no problems. However, we still need to support the browsers our customers use, which may not necessarily be the fastest or most up-to-date.

This is where GWT gives us a unique benefit. We can implement our algorithms in Java and compile this implementation twice, once with GWT to produce JavaScript to run on the client and once with javac to produce JVM bytecode to run on the server. This lets us use the much faster JVM if we need to without having to create, and maintain, separate client and server layout implementations. There's no other toolkit that makes this possible, never mind easy.

Blueprint client code continuously measures how long it takes to perform the layout and routing operation in the browser. If this exceeds our threshold value, then the code dynamically switches to trying a server side layout. We call the server code with GWT and the data structures returned, via the GWT serialization mechanism, are of course the same ones produced by the layout when executed on the client. The time required for a server layout is also measured, which includes both the execution time and any network delays so we account for the different connection experiences people have. After the first server layout, Blueprint chooses whichever method, client or server, has the lowest average elapsed time. I'm still amazed by how easy this was to implement.

Damon Lundin and I will be talking at Google I/O this year about how we built Blueprint, both what we do technically with GWT to get high performance and how we organize development so that we can make the most effective use of GWT. We look forward to meeting fellow GWT developers in person!

Gmail for mobile HTML5 Series: Using AppCache to Launch Offline - Part 1

On April 7th, Google launched a new version of Gmail for mobile for iPhone and Android-powered devices built on HTML5. We shared the behind-the-scenes story through this blog and would like to share more of our learnings in a brief series of follow up blog posts.

The HTML5 draft adds a lot of exciting functionality to browsers. Perhaps the most exciting is adding a way for websites to be launched offline. For devices that have a high bandwidth and highly available connection, offline functionality might not be so important. For web applications running on mobile devices however, being able to launch offline can dramatically improve the web application experience.
AppCache support on the iPhone is still under development, but as of firmware 2.2.1, it is usable.

To make use of AppCache, a webpage must provide a "manifest" to the browser that lists all of the URLs that it intends to use. Creating an HTML5 manifest file is extremely simple, as shown by the following example.
CACHE MANIFEST
jsfile1.js
jsfile2.js
styles.css
/images/image1.png
/images/image2.png
It is important to note that it is not necessary to list the URL of the main webpage in the manifest because it is treated as an implicit entry. However, if you have more than one top level URL that you want to be available offline, they must all be listed in the manifest. In addition, they must all set a manifest attribute on the HTML tag that points to the manifest. For example, if the manifest URL was "/sitemanifest", then each page in the site would have an HTML tag that looked like this:
<html manifest="/sitemanifest">
Finally, the manifest must be served using the content type "text/cache-manifest". And that's it!

So now that you know how to create a manifest for your site, it's a good idea to know what's going on during page load. When the page is loaded for the first time, it will load as if there is no application cache associated with it. Once it has finished loading, the browser will fetch the manifest and all resources listed in it that have not already been fetched during page load. From this point on, any GET request that your page makes that is not listed in the manifest will fail, and any GET request that is listed in it will not hit the network, but will be satisfied by the cache. Once your page is loaded into AppCache, the next time the user loads the site, all of the resources will be served out of the cache. The only GET request done on page load will be for the manifest file, in order to see if it has changed. If it has changed, then all of the resources in it are fetched in the background and will be used the next time the user refreshes the page.

Stay tuned for the next post where we will share more about what we know about AppCache and how we use it on the Gmail team. Also, we'll be at Google I/O, May 27-28 in San Francisco presenting a session on how we use HTML5. We'll also be available at the Developer Sandbox, and we look forward to meeting you in person.

References

The HTML5 working draft:
http://dev.w3.org/html5/spec/Overview.html

Apple's MobileSafari documentation: http://developer.apple.com/webapps/docs/documentation/AppleApplications/Reference/SafariJSRef/DOMApplicationCache/DOMApplicationCache.html

Webkit Source Code:
http://trac.webkit.org/browser/trunk/WebCore/loader/appcache

An Open Letter to Warner Music

In the past, I've addressed open letters to a number of celebrities and other individuals. However, this time, I cannot identify the single person who is responsible for the impetus of the letter, so I am going to just have to address an entire division of a major conglomerate, which I am fine with.

I am writing this letter to bring to your attention the reaction of a lot of people regarding your company's relatively recent work at Youtube.

Now, there have been a lot of videos pulled down from the site over the years, and you've done your share of that, but there always seemed to be some understanding that things would never go too far. Then you sort of went crazy. To paraphrase Marcellus Wallace, you went medieval on the collective asses of the Youtube userbase.

But was merely pulling videos down enough for you? No. You decided to play silly buggers thought it would be a gas to just take the audio off of videos. You know, that way, people could experience the music videos that are associated with your songs without all that pesky music getting in the way. And I am not referring to the mashups here, I am talking about the official music videos.

You know, it is always wonderful to go to visit a video you watched as a kid and discover that someone has been forced to put another song over it. I mean, that's just peachy keen.

If I remember correctly, videos were things you gave to music stations for promotional use. They are still being used in that capacity. I mean, it isn't like MTV or the various other stations who began their life with that purpose are doing that anymore. I mean, if you keep making them, and I can't see them, then that is an awful waste of money, is it not?

But in your infinite wisdom, you've decided that people shouldn't see music videos for artists under your umbrella of companies. Fine. Be that way. I mean, I've been slightly irked by the Universal Music Group not allowing the embedding of videos that feature their music, but at least the general public can see them.

And then there is the culture jamming.

There is a particular example with really sticks in my craw. There was an awesome, awesome video featuring clips from the three Mad Max videos accompanied by Motorhead's Ace of Spades. In the world of the mashup, it was a thing of beauty.

But could it survive at Youtube under your heavy handed tactics? No. You destroyed it.

Because let's be frank... I am sure that Motorhead was absolutely livid that their music was put over clips of Mad Max. I mean, we all know that Lemmy is a real stickler for rules and such... a real authoritarian.

Wait a minute, they aren't like that at all. In fact, let me quote the song that was stripped from that video: "I don't share your greed. The only card I need is the Ace of Spades."

And correct me if I am wrong, but aren't the Mad Max movies distributed by Warner? I wonder how many people have picked up a Mad Max movie after they saw that video? I am sure it is a statistically significant number.

So basically you are doing everything in your power to lose money by destroying your grassroots promotional base and discouraging a positive perception of your company in the demographic that is most likely to buy your products? My advice is to take a few steps back from the edge and think about what you are doing... because people are going to start doing things that cost you money directly, and no one wants that.

So soften your approach... everyone will be happier that way Warner Music.

Monday, April 27, 2009

New Chart Options for the Visualization API

The Visualization API is about charts and visualizations, so we try to push out new features and options to our growing list of charts every several weeks or so.

Here are a few examples of recently launched charting options and additions:
  • Lots of customization options for the Table visualization, so you can customize it any way you want. You can even make it look as ugly as this:


  • The popular Motion Chart has become even more interactive and appealing, now with zoom option, bars, and an option to save and restore the chart state.

    This way you can track your data over time with the default bubble view:



    Or dynamically switch to a bar view when it makes sense:


  • Plus, we've made all of our charts and visualizations easier to share with others through the toolbar helper element that enables you to export your data in a variety of formats, or embed the visualization in another page through a simple user oriented UI:


Check out our What's New page from time to time to see other new features we've added to the API.

At the upcoming Google I/O developer conference, we'll give in-depth sessions on creating Visualization API data sources, using the Visualization API with GWT, and more. We look forwarding to seeing you there!


Battletoads



No wonder that game was so hard. Look at what you were playing it with!?

Originally found at http://dontclickthis.whatingods.name/battletoads.jpg.

Google I/O: Hurry up and register! Discounted registration ends May 1

Heads up, early registration for Google I/O ends May 1. After this Friday, the rates increase $100 and even worse, you'll lose out on your Google Chrome Comic book.

Google I/O will feature 80+ sessions that cover Android, HTML5, App Engine, Chrome, AJAX APIs as well as special sessions for Enterprise and Social app developers. These technical sessions will be led by engineers from Google and a wide range of developers from the community. We'll also have Fireside Chats and Office Hours, giving attendees a chance to meet with Google engineers and get answers to all those pressing questions.

This year's newest addition to Google I/O is the Developer Sandbox. Over 100 developers representing a wide range of companies and apps will be on hand to demo their products, which they built using Google technologies. We've announced a few thus far and will continue to announce more over the coming weeks here on the Code Blog.

We've also worked really hard to make your visit to the San Francisco Bay Area as affordable as possible, including lower-than-usual hotel rates. Those rates expire on May 4 so register and make your hotel reservations today to secure them. For more information visit the Google I/O website.

If you plan to attend, register before the fee increases. We look forward to seeing you at I/O!

Sunday, April 26, 2009

An Ocean Full of Low Clouds


Take a look at the visible satellite picture for northeast Pacific Ocean (see image). Notice anything? Something that is quite different than a few months ago? Something that happens virtually every spring?

The answer:
The ocean is covered for thousands of miles by low stratus/stratocumulus clouds.

We are talking about millions of square miles of low clouds. Every spring we see these low clouds blossom and dominate into summer. And it is the movement of these low clouds into our area during June that produces the familiar June gloom (there are other terms but this is a family-oriented web page). And many of the summer phenomena that I talk about in my book (the onshore push, alongshore surge, etc) are connected with the stratus/stratocumulus of the Pacific.

Why the low clouds? A hint can be found in the surface pressure analysis for this morning at 11 AM (see graphic). A large high pressure area has formed over the northeast Pacific. High pressure is associated with sinking air (called subsidence in the business), and sinking air produces warming aloft since air warms when it is compressed (the air is going from low pressure aloft to higher pressure at lower elevations). The sinking weakens towards the surface since air can't go through the surface! With stronger sinking-warming occurring aloft then near the surface the atmosphere becomes more and more stable--which means there is less tendency for vertical mixing. If you think about it this makes sense, warm air is less dense than colder air...and in nature less dense fluids natural rise above dense ones. This is a stable situation. A dense fluid on top of a less dense one is an unstable configuration.

The stable atmosphere allows moisture to accumulate at low levels, leading to low clouds. Another factor, that is particularly strong near the coasts, is that the high pressure produces northerly winds near the coast, which results in upwelling (see my book for an explanation of this), which brings up cool water. Cool water helps saturate the lower atmosphere....that is why the densest stratus is often along the west coast..particularly central CA.
Anyway, getting back to the story, high pressure builds northward out of the subtropics during the spring and the stratus follows . In the wintertime, as the high retreats and cold air moves in aloft behind Pacific systems, the atmosphere is much better mixed and the low clouds don't form.

So watch the satellite pictures and Pacific pressure patterns...you will note a close association of the low clouds and high pressure areas.

Seattle Math Adoption Decision is Still Up in the Air

PS: I will have an update on the current Seattle high school math situation this week. You won't believe what happened at the school board meeting last week...they split 3-3 and will try again on May 5th. I was amazed that three of them are still considering a terrible math series (Discovering Algebra, Discovery Geometry) that was found by the State Board of Education to be unsuitable. And dropped by San Diego as a failure.

Sunday Night Video: Looking out My Backdoor

Megan mentioned the Eagles the other day in a comment, I replied with a quote from The Big Lebowski, and I was reminded of this song, which plays while The Dude is smoking the remnants of a joint, and given the general state of his life at the time, the scene does not end well for him.



I think that is as good a reason as any to post this song.

Saturday, April 25, 2009

A Cloudy Day West, But Sun East


Some people saw some fleeting sunshine this morning..but for most of western Washington, marine cloudiness will rule. Take a look at the visible satellite image this morning. Mostly cloudy from the Pacific to the crest of the Cascades--but generally sunny in eastern Washington. The spring is a great time for a trip east of the Cascades...generally sunny there and the temperatures are quite nice. In winter eastern Washington tends to cool and cloudy, while summer is hot. But grapes like the climate, so I won't complain. The only negative perhaps for eastern Washington this weekend will the winds in Ellensburg and vicinity...but they are used to it.
The current radar shows only a few light, showers ... and most of the them should be on the western slopes of the Cascades. There is a suggestion of a very weak convergence zone north of Seattle..which will probably strengthen later today as an upper trough moves through the region (see satellite image). That upper trough was the initiator of the change this morning.
One indicator of the influx of marine air is the difference in pressure between the coast and the western interior..and the Hoquiam-Seattle difference is probably the most valuable for the Seattle area. (see attached shot of the UW pressure difference web page from last night, times are in UTC/GMT...0000 GMT is 5 PM). If you look carefully, you will see that that difference was negative yesterday (higher pressure inland)...which prevents the marine air from moving in. But that changed later in the afternoon as the pressure difference went positive (marine air moving in). You will also notice the difference across the Cascades (Seattle-Yakima) went very positive....thus air from western Washington is being pushed to the east in any gaps (like the one upstream of Ellensburg). During the summer these pressure differences are crucial for short-term forecasting.Sunday should be better..with more sun and temps getting to around 60 in the lowlands.

Friday, April 24, 2009

Breastfeeding Economics

Yes, there is economics to breastfeeding. And here is an interesting review of the costs and benefits (I haven't looked at the main references myself). However, most of the costs and benefits are specific to the individual mother/child and so it is likely that the equation will be positive or negative for some and not for others. Nonetheless, there is food-for-thought there.

Week 50: Pageant of the Transmundane

This week, I read a story about a woman who sent a stripper in her place to a high school reunion and filmed the reactions people had to this woman who was supposed to be her to make a documentary. Was there something weirder than that this week, something a little more... transmundane? We shall soon find out.

This week's winner has been really bringing his A-game to the Homer Simpson Transmundanity Award as of late, as he has been short listing a lot of entries and come close to winning numerous times in the past few months. But this week he would not be denied.

I am of course talking about Jeremy Barker of Popped Culture.

It is almost like Jeremy isn't playing fair because he picked something that covers so many angles in the Transmundanity world. It is a movie mashup, which is always a good start. It features Muppets, which has always been a sure fire winner... and oh yeah, the movie being parodied is the remake of Ocean's Eleven. Yeah, I think that about covers most of the bases really. Sure, there are a few more areas of transmundanity it could have touched, but really, when you hit 3 big things in one little package, that is something special.

And since this week's winning entry has to do with robbery, well, I thought that Homer dressed in black clothes with a black skullcap would be the best complementing image for this particular slice of madness. I hope you agree.



And as is customary for such things, here is the award badge, of which Jeremy has collected more than his fair share.



It has been a while since I had to present one of these, so I had to get it out of storage. Hope it isn't too dusty. Of course, this is Jeremy's second, which is a milestone in and of itself.



Congrats Jeremy for breaking this barrier.
The rules of this little contest: Every week I will be selecting one blog post that I have seen from the vast reaches of the blogosphere to bestow with the Homer Simpson Transmundanity Award for being one of the freakiest(in a funny way) things I've seen or read during a 7 day period. It doesn't necessarily have to have been written during the week, I just had to have encountered it. That means that if you find something interesting and repost it like a movie or whatever, if I saw it at your blog first, you get the prize. Of course, creating your own content is also a very good way to win.

Now, if you see a post that you think is worthy of this illustrious prize, just drop me a line at campybeaver@gmail.com and we'll see if we can't get your suggestion up and award-ready while giving you some credit and a link to your own blog.

Implementing idleness

In Slate, there is a series of articles by Tom Hodgkinson (someone we have encountered before) about being an idle parent. He starts with a situation where he tries to delay interaction with his children.
I have noticed this tendency in myself: Sometimes I am staring at my computer screen and a child comes into my study and asks to play a game: "Will you play Tractor Ted with me?" Self-importantly, I sigh and say something along the lines of: "I'm working" or worse, a querulous: "Can't you see I'm working?" The child persists for a while and then gives up. I then look at my screen again and wonder whether checking the Amazon ranking of my last book can really be considered to be important work. Can it not be left for five minutes?
Been there! (Currently, 105,000. Doh!) Of course, you are supposed to think that perhaps you should be paying attention to your kids but Hodgkinson doesn't think that is the goal: he is all about being left alone. The surprising thing is that he argues that to achieve idleness you need to religiously say yes to your kids in precisely these situations.

The story goes that if you say yes and play with your child for 5 minutes, something unexpected will happen.
Give children whatever they want, whenever they want it, as soon as they ask. If children know they can have your undivided attention for any reason, no matter how paltry, at any time of day or night, lo and behold, miracle of miracles, they stop asking.
It is quite hard to understand this argument. Apparently, they don't come to you looking for some affirmation of love and instead only if they actually want to play which is, I guess, not often.

This seems a stretch for me. They may actually want to play most of the time. But I guess it can't hurt to try something counter-intuitive.

Hodgkinson does have other interesting ideas such as outsourcing parenting to pets (again, if it doesn't work, you face big costs), avoiding family days out, and not getting up from bed. There is more in his book, The Idle Parent (available in the UK).

A Friendly reminder

In lieu of a Friday favorite this week, I thought this space would be better served to remind people that ABC has changed their schedule and they are bringing Ugly Betty back one week early, so its new episodes start next Thursday or April 30th, which ever is easier to remember. I've been surprised by the sudden return of a show, and I didn't want that to happen to any of my readers.

And there was a lot of talk about it being on the bubble, but it has been renewed for a fourth season, so some of you out there can breathe a sigh of relief.

Mercurial support for Project Hosting on Google Code

We are happy to announce that Project Hosting on Google Code now supports the Mercurial version control system in addition to Subversion. This is being initially rolled out as a preview release to a few invited users on a per-project basis, so that we can iron out the kinks before making this available to the general public.


Mercurial, like Git and Bazaar, is a distributed version control system (DVCS) that enables developers to work offline and define more complex workflows such as peer-to-peer pushing/pulling of code. It also makes it easier for outside contributors to contribute to projects, as cloning and merging of remote repositories is really easy.

While there were several DVCSs that we could support, our decision to support Mercurial was based on two key reasons. The primary reason was to support our large base of existing Subversion users that want to use a distributed version control system. For these users we felt that Mercurial had the lowest barrier to adoption because of its similar command set, great documentation (including a great online book), and excellent tools such as Tortoise Hg. Second, given that Google Code's infrastructure is built for HTTP-based services, we found that Mercurial had the best protocol and performance characteristics for HTTP support. For more information, see our analysis.

If you would like to help us launch Mercurial and to try out the features as an invited user, please fill out the following form. We are currently looking for active projects with more than two users that are willing to try out Mercurial and work with us to identify issues and resolve them. For projects that plan on migrating from Subversion, see our conversion docs for the steps required for this process.

Our implementation of Mercurial is built on top of Bigtable, making it extremely scalable and reliable just like our Subversion on Bigtable implementation. For more information on our Mercurial implementation, we will have a TechTalk at Google IO that will be led by Jacob Lee, one of the core engineers working on Mercurial support. Let us know if you plan on attending and we'll give you access to Mercurial ahead of the talk.

Thursday, April 23, 2009

A few things about me

This is not a meme. There are no tags here. This is merely a list of a few things you might not know about me, that are somewhat related to this subject matter of this blog, and may in some senses color what I say here.

  • I very rarely ask other people to be my friends on social networks like Facebook and Myspace... I usually wait for them to ask me because I don't want to impose on people. I don't want to be one of those awkward requests like, I don't know, their mom or something.

  • Even though I haven't own a set in a long time, I keep considering going out and buying some Legos or some other similar kind of building toy. I don't know why this thought keeps occurring to me however.

  • As I get older, it seems like every song by the late Jim Croce I hear is somehow increasingly evocative to me. At first, it was just "Time in a Bottle," but it seems like its happening with almost all his songs now. I mean, "Operator" I understand, but even "Bad Bad Leroy Brown"? I'm going soft, I really am.

  • I have never played a Guitar Hero/Rock Band game... and in fact, my experience with rhythm based games is extremely limited. I never played Dance Dance Revolution or any of its predecessors or clones either.

  • Critically acclaimed television series I haven't seen an episode of: Veronica Mars, Lost, Battlestar Galactica, Heroes, Firefly, Angel, Rescue Me, Dexter, The L-Word, Nip/Tuck, Monk

  • While I am a fan of violent movies and video games, I can't really stand realistic gore, blood or depictions of pain at all.


Calling all JavaScripters: submit your Chrome Experiments for Google I/O!

We launched Chrome Experiments last month to feature some of the crazy things that are now possible with JavaScript. Since then, a number of developers have submitted additional experiments, many of which have made us smile -- take a look at a few of them.

In May, we're going to feature Chrome Experiments during Google I/O, our largest developer event (May 27 - 28), as well as on the Google Code blog.

So if you haven't already started experimenting, here's your chance to create something cool, fun, or quirky with JavaScript. Please submit it by May 26th. We'll reveal the top ten experiments here on the Google Code Blog during Google I/O.

Happy experimenting!

Wednesday, April 22, 2009

Shiptracks!


During the past several days there have been some odd lines apparent in the visible satellite photos off our coast (see examples). These lines are often seen off the U.S. west coast in thin stratus and stratocumulus cloud decks. Sometimes they look like someone is playing tic-tac-toe over the Pacific. What causes they strange lines? And why was the U.S. Navy concerned about them?

The answer...these are called shiptracks and they result from the particles produced by the combustion in ship engines . But why would smoke and engine effluent cause white lines?
Nearly all low level clouds (such as stratus and stratocumulus) are composed of small water droplets that form on small particles, called condensation nuclei. Over the ocean, where air is clean, there are relatively few of such particles--thus there are relatively few cloud droplets...that grow big and fat since they don't have much competition. But if you add lots of particles from the smokestacks of ships the situation changes greatly...now there are many cloud condensation nuclei and you get a very large number of small drops in the clouds.

It turns out that if you have a certain amount of liquid water in a cloud, the reflective properties of a cloud with lots of small droplets is very different than one with a fewer number of large droplets. Specifically, clouds with more small droplets are more reflective and thus appear whiter from space. The bottom line: the particles from smokestacks cause more reflective clouds. So as the ship moves it leaves a line of whiter, more reflective clouds...the shiptracks you see! These shiptracks move with the wind and eventually get distorted and faded.

Interestingly, with many ships moving across the world's oceans, this effect can add up...even neutralizing a small bit of global warming. And the Navy was quite concerned about shiptracks during the cold war, since enemies could see where U.S. ships were by following the tracks. Fortunately, nuclear ships have no such problem..they have no impact on the clouds.

Best. Email. Ever.

Last Friday, CaptnKurt and his blog Information Nation won the Pageant of the Transmundane. This morning, I received the following email which I thought was worth sharing.

Hi Matt,

Thanks for the mention of and link to Information Nation over at Culture/Cutlery, as well as the posthumous Transmundane Award. I will do my best not to sully the good name of my worthier predecessors. Memo to self: actually read a couple of the other award-winners' posts to see if the really are worthier.

Oh, wait. Did I say posthumous? That can't be right. Additional memo to self: Janine in Personnel needs to look into this...

Well, dead or alive, I think your blog is great, and I will keep an eye on it in the future. And by "keep an eye on it" I mean "steal content from and not attribute it to you".

Just kidding! And by "just kidding", I mean "I'm not kidding".

Regards,

captnkurt


I would consider that an acceptance speech, wouldn't you?

Who's @ Google I/O - spotlight on Google Web Toolkit

Google Web Toolkit, or GWT for short, recently went live with their 1.6 release, which also included a Google plugin for Eclipse and integration with App Engine's Java language support. Google I/O will be rich with GWT content, including a number of sessions on improving productivity and app performance with GWT. In addition, there will be a number of external GWT developers leading some of these sessions and/or part of the Developer Sandbox.

As mentioned last week, we're giving you a closer look at developers who'll be presenting or demoing at I/O. Here is a taste of these GWT developers below. (New to GWT? Check out this overview)
  • JBoss, a Division of Red Hat
    JBoss is well-known by developers for their enterprise open source middleware. Red Hat developer communities such as the Fedora Project and jboss.org have collaborated with Google on a number of developer initiatives over the years including Google Summer of Code, Hibernate Shards, integration with Drools and the Seam Framework and Google Gadgets integration with JBoss Portal. JBoss will be present at the Developer Sandbox.

  • Timefire
    Timefire produces highly scalable, interactive visualizations of up to millions of data points for business intelligence, analytics, finance, sensor networks, and other industries in what they like to call "Google Maps, but for the time dimension." Their platform's built on Google Web Toolkit from the ground up, but also runs natively on Android. Timefire also uses App Engine's new Java language support for their social charting tool, Gadgets, OpenSocial, GData, Google Maps, GViz, YouTube Player API, and Protocol Buffers. Ray Cromwell will be at the Developer Sandbox as well as speaking on 2 sessions - Building Applications on the Google OpenStack and Progressively Enhance AJAX Applications with Google Web Toolkit and GQuery

  • StudyBlue
    StudyBlue is an academic network which enables students to connect with each other and offers study tools. StudyBlue's website is built entirely with GWT. According to StudyBlue, GWT allows for complete AJAX integration without sacrificing usability or integration capabilities. StudyBlue will be at the Sandbox.

  • Lombardi Blueprint
    Lombardi Blueprint is a cloud-based process discovery and documentation platform accessible from any browser. They've used GWT since early 2007 to write the client side of Lombardi Blueprint. GWT has enabled Lombardi to focus on writing and maintaining their Java code, while taking care of creating the browser-specific optimized AJAX for them. Alex Moffat and Damon Lundin will be at the Developer Sandbox as well as leading a session, Effective GWT: Developing a complex, high-performance app with Google Web Toolkit. (Check out Alex Moffat's video about Lombardi's use of GWT)
Finally, one little known fact - a number of Google products were developed with the help of GWT. This includes Google Moderator, Health, Checkout, Image Labeler, and Base.

Don't forget - early registration for Google I/O ends May 1. This means $100 off the standard list price (and a copy of the Chrome comic book). To register, check out the latest sessions, or see more developers who'll be presenting at I/O, visit code.google.com/io.

*Follow us for the latest I/O updates: @googleio.

Tuesday, April 21, 2009

Attention Developers: Google Analytics now has an API!

Today we are pleased to announce the launch the Google Analytics Data Export API. This new API is being launched in Labs and is available to all Analytics users. If you haven't already heard, Google Analytics, is a free, powerful web analytics tool that provides a wealth of data about how visitors find your website, where they go and if they turn into customers.

So what's so exciting about this API?

The Analytics API will allow developers to extend Google Analytics in new and creative ways that benefit developers, organizations and end users. Large organizations and agencies now have a standardized platform for integrating Analytics data with other business data. Developers can integrate Google Analytics into their existing products and create standalone Google Analytics applications. Users could see snapshots of their Analytics data in developer created dashboards and gadgets. For example, how would you like to access Google Analytics from your phone? Now you can, with this Android application from Actual Metrics. How about accessing Analytics from your desktop? It's here from Desktop-Reporting.

So how does it work?

We made the API very easy to use. First, there are no complicated developer tokens, you only need to request an authentication token. Second the Analytics Export API is free and available for all Google Analytics users. The Analytics API is a GData API which is based on the Atom 1.0 and RSS 2.0 syndication formats. This is the same API protocol for Google Calendar, Finance and Webmaster Tools. If you've used any of these APIs in the past, the Analytics Export API will look very familiar to you.

Accessing your Google Analytics data generally follows these three steps:
  • Request an authentication token from your Google Account
  • Create a URL with the data you'd like to get back from the API
  • Make an HTTP request to the Export API using the authentication token and the URL you created
Currently the Google Analytics API supports two GData feeds: an Account Feed (which lists all the Google Analytics accounts and profiles you have access to) and a Data Feed (which allows access to all the data available through the GA interface). The Analytics data feed is very powerful and allows you to query which GA dimensions and metrics you want to access, for a specified date range and even across a subset of data.

So it's now simple to access data GA data to answer questions like:
  • What are the top referral sources by conversions to my site?
  • What are the top browser language settings in the United States vs. the United Kingdom?
  • What are the top keyword refinements and destination pages being used on my internal site search?
How do I get started?

There are three key resources you'll want to use when you start developing on top of the Google Analytics API. First we've provided two client libraries to abstract and simplify the process. The Java client library is available in the GData client library. And a JavaScript client library is now available through the Google AJAX APIs GData loader. We're also working on supporting more programming languages. In the meantime, for any programming language you want to use, you can make requests directly to the API over HTTP and access the data in XML. You can find example code, a developer guide, FAQ, and the complete API reference at Google Code.

Second, be sure to sign up for the Google Analytics API Notify email group so you get the key announcements on feature updates, code changes and other service related news that relate to the API. (Don't worry, this will be a low-traffic email list and we promise to only send emails when there is something important that affects developers.)

Finally, you'll want to become a part of the Google Analytics Developer community by joining the Google Analytics APIs Group for developers. This user forum is a great way to share ideas and get feedback from other developers. We also check in on these forums so let us know what you think about the API there, and share your ideas and your applications with us. We look forward to seeing your creativity!

Express Checkout: Fighting, Jackie Chan, Miss California

  • I think I liked the movie Fighting better when I played it as Def Jam: Fight For NY. I mean, seriously... they look like the same kind of story... only DJ:FFNY has more stars than Fighting.

  • There is a lot of controversy about Jackie Chan saying that he thought that the people of China needed to be controlled and was unsure about people having freedom. I thought it was a weird thing to say as well, but then I realized that he was in mainland China, giving a speech to a group of businessmen who liked what he said. Considering that the Chinese government can make decisions that can affect if his movies are available or even open in the country, of course, he is going to take a neutral position. I think people forget that he grew up in Hong Kong before the Chinese takeover and his parents worked at the American Embassy in Canberra, so it seems to me he was playing the situation in a rather smart way. He knew the audience, knew what sort of comment would play well and basically did what he needed to do for his career in mainland China.

  • Speaking of boneheaded remarks, there is a lot of furor about the answer Miss California gave at the recent Miss USA pageant. She was asked by Perez Hilton about gay marriage and she said that she believed that marriage should be between a man and a woman. I disagree with her stance strongly, but it was her right as a contestant to give that answer. And really, does anyone have any expectation that what a beauty queen says while trying to win a title has any real merit, because we all remember those epic answers that some have given in the past that have led to widespread changes in the world. Wait, I don't remember any insightful answer... ever. I mean, wasn't it a few years ago when we were all laughing about a contestant from South Carolina talking about maps.